본문 바로가기
oracle

oracle(기본문법)_2024-06-24

by 앵보몬 2024. 6. 24.
728x90
반응형

MySQL 구문

MySQL에서 데이터베이스에 대한 작업 명령은 SQL 구문을 이용하여 처리됩니다. 

예제
SELECT * FROM Reservation;

서버와의 연결을 끊는 구문인 QUIT와 같은 경우를 제외한 일반적인 구문 뒤에는 세미콜론(;)을 붙입니다. 이러한 세미콜론은 SQL 구문을 구분하는 기준이 됩니다. 또한, MySQL은 키워드와 구문에서 대소문자를 구분하지 않습니다.

예제
1. SELECT * FROM Reservation;

2. select * from Reservation;

3. SeLeCt * FrOm Reservation;

위의 예제는 모두 같은 결과를 보여주겠지만, 되도록이면 1번이나 2번처럼 대소문자를 일관되게 사용하는 것이 좋습니다. MySQL에서 키워드와 구문, 문자열은 대소문자를 구분하지 않습니다. 하지만 테이블 명과 필드의 이름은 대소문자를 구분하므로, 주의해서 사용해야 합니다.

 

MySQL 주석

주석이란 코드에 대한 이해를 돕는 설명을 적거나 디버깅을 위해 작성하는 일종의 메모입니다. MySQL 서버는 주석을 무시하므로, 실제 실행 결과에는 아무런 영향을 주지 않습니다. MySQL에서 주석을 작성하는 방법은 다음과 같습니다.

문법
1. # 한 줄 주석

2. -- 한 줄 주석

3. /* 두 줄

   이상의

   주석 */

 

위의 두 번째 방법에서 두 개 이상의 하이픈(-) 뒤에는 반드시 한 칸의 공백이 존재해야만 주석으로 정상 인식됩니다.

 

MySQL 주요 구문

MySQL에서 자주 사용하는 주요 구문에 대해 알아보기 위해 예제를 통해 다음과 같은 테이블을 작성해 볼 것입니다.

IDNameDateRoomNum

1 홍길동 2016-01-05 2014
2 임꺽정 2016-02-12 918
3 장길산 2016-01-16 1208
4 홍길동 2016-03-17 504

이를 통해 살펴볼 MySQL 주요 구문은 다음과 같습니다.

1. CREATE DATABASE

2. ALTER DATABASE

3. CREATE TABLE

4. ALTER TABLE

5. DROP TABLE

6. INSERT INTO

7. UPDATE

8. DELETE

9. SELECT

10. CREATE INDEX

11. DROP INDEX

 

MySQL 코딩 연습

우리가 수업에서 사용할 코딩 연습에서의 MySQL은 다음과 같이 동작합니다.

1. MySQL 코딩 연습은 데이터베이스 정보가 사용자별로 유지되므로, 쿼리의 결과가 계속 누적됩니다. 따라서 처음의 데이터베이스 정보로 돌아가기 위해서는 브라우저를 닫고 다시 열어야 합니다.

2. MySQL 코딩 연습은 한 번에 한 개의 쿼리만을 처리할 수 있습니다. 여러 개의 쿼리를 실행해 보려면, 실행하고자 하는 쿼리만을 주석 해지하고 나머지 쿼리는 모두 주석 처리해야 합니다.

3. 우리가 앞으로 예제에서 사용할 데이터베이스의 기본 스키마는 다음과 같습니다.

기본 스키마
CREATE TABLE Reservation(ID INT, Name VARCHAR(30), ReserveDate DATE, RoomNum INT);

CREATE TABLE Customer (ID INT, Name VARCHAR(30), Age INT, Address VARCHAR(20));



INSERT INTO Reservation(ID, Name, ReserveDate, RoomNum) VALUES(1, '홍길동', '2016-01-05', 2014);

INSERT INTO Reservation(ID, Name, ReserveDate, RoomNum) VALUES(2, '임꺽정', '2016-02-12', 918);

INSERT INTO Reservation(ID, Name, ReserveDate, RoomNum) VALUES(3, '장길산', '2016-01-16', 1208);

INSERT INTO Reservation(ID, Name, ReserveDate, RoomNum) VALUES(4, '홍길동', '2016-03-17', 504);



INSERT INTO Customer (ID, Name, Age, Address) VALUES (1, '홍길동', 17, '서울');

INSERT INTO Customer (ID, Name, Age, Address) VALUES (2, '임꺽정', 11, '인천');

INSERT INTO Customer (ID, Name, Age, Address) VALUES (3, '장길산', 13, '서울');

INSERT INTO Customer (ID, Name, Age, Address) VALUES (4, '전우치', 17, '수원');

https://www.tcpschool.com/mysql/mysql_basic_syntax

 

오라클 연습문제 2024-06-24.hwp
0.07MB

 

DB 생성

--drop table members;
--drop table buy;
-- 회원 테이블 생성
CREATE TABLE members
( mem_id      VARCHAR2(8) NOT NULL PRIMARY KEY, -- 사용자 아이디(PK)
  mem_name    VARCHAR2(20) NOT NULL, -- 이름
  mem_number  NUMBER(3) NOT NULL,  -- 인원수
  addr        VARCHAR2(10) NOT NULL, -- 지역(경기,서울,경남 식으로 2글자만입력)
  phone1      CHAR(3), -- 연락처의 국번(02, 031, 055 등)
  phone2      CHAR(8), -- 연락처의 나머지 전화번호(하이픈제외)
  height      NUMBER(3),  -- 평균 키
  debut_date  DATE  -- 데뷔 일자
);

-- 구매 테이블 생성
CREATE TABLE buy
( num         NUMBER(8) PRIMARY KEY, -- 순번(PK)
  mem_id      VARCHAR2(8) NOT NULL, -- 아이디(FK)
  prod_name   VARCHAR2(20) NOT NULL, -- 제품이름
  group_name  VARCHAR2(10), -- 분류
  price       NUMBER NOT NULL, -- 가격
  amount      NUMBER(5) NOT NULL, -- 수량
  CONSTRAINT fk_members FOREIGN KEY (mem_id) REFERENCES members(mem_id)
);

-- member 테이블에 데이터 삽입
INSERT INTO members VALUES('TWC', '트와이스', 9, '서울', '02', '11111111', 167, TO_DATE('2015-10-19', 'YYYY-MM-DD'));
INSERT INTO members VALUES('BLK', '블랙핑크', 4, '경남', '055', '22222222', 163, TO_DATE('2016-08-08', 'YYYY-MM-DD'));
INSERT INTO members VALUES('WMN', '여자친구', 6, '경기', '031', '33333333', 166, TO_DATE('2015-01-15', 'YYYY-MM-DD'));
INSERT INTO members VALUES('OMY', '오마이걸', 7, '서울', NULL, NULL, 160, TO_DATE('2015-04-21', 'YYYY-MM-DD'));
INSERT INTO members VALUES('GRL', '소녀시대', 8, '서울', '02', '44444444', 168, TO_DATE('2007-08-02', 'YYYY-MM-DD'));
INSERT INTO members VALUES('ITZ', '잇지', 5, '경남', NULL, NULL, 167, TO_DATE('2019-02-12', 'YYYY-MM-DD'));
INSERT INTO members VALUES('RED', '레드벨벳', 4, '경북', '054', '55555555', 161, TO_DATE('2014-08-01', 'YYYY-MM-DD'));
INSERT INTO members VALUES('APN', '에이핑크', 6, '경기', '031', '77777777', 164, TO_DATE('2011-02-10', 'YYYY-MM-DD'));
INSERT INTO members VALUES('SPC', '우주소녀', 13, '서울', '02', '88888888', 162, TO_DATE('2016-02-25', 'YYYY-MM-DD'));
INSERT INTO members VALUES('MMU', '마마무', 4, '전남', '061', '99999999', 165, TO_DATE('2014-06-19', 'YYYY-MM-DD'));

-- buy 테이블에 데이터 삽입
INSERT INTO buy VALUES(1, 'BLK', '지갑', NULL, 30000, 2);
INSERT INTO buy VALUES(2, 'BLK', '맥북프로', '디지털', 10000, 1);
INSERT INTO buy VALUES(3, 'APN', '아이폰', '디지털', 200000, 1);
INSERT INTO buy VALUES(4, 'MMU', '아이폰', '디지털', 20000, 5);
INSERT INTO buy VALUES(5, 'BLK', '청바지', '패션', 50000, 3);
INSERT INTO buy VALUES(6, 'MMU', '에어팟', '디지털', 80000, 10);
INSERT INTO buy VALUES(7, 'GRL', '노트북2', '서적', 1500, 5);
INSERT INTO buy VALUES(8, 'APN', 'e-사전', '서적', 2500, 2);
INSERT INTO buy VALUES(9, 'APN', '청바지', '패션', 3800, 1);
INSERT INTO buy VALUES(10, 'MMU', '지갑', NULL, 1500, 1);
INSERT INTO buy VALUES(11, 'APN', '모두의 sql', '서적', 150, 1);
INSERT INTO buy VALUES(12, 'MMU', '지갑', NULL, 300, 4);

-- member 테이블 조회
SELECT * FROM members;

-- buy 테이블 조회
SELECT * FROM buy;

 

 

기본문법 연습문제 정답

1.
SELECT employee_id, first_name, last_name, email, phone_number
from employees;

2.
SELECT employee_id, first_name, last_name, email, phone_number
FROM employees
WHERE job_id = 'SH_CLERK';

3.
SELECT employee_id, first_name, last_name, salary
FROM employees
WHERE department_id = 50
ORDER BY employee_id DESC;

4. 
SELECT employee_id, first_name, last_name, salary
FROM employees
where department_id in (80, 90);

5.
SELECT employee_id, first_name, last_name, commission_pct
FROM employees
where commission_pct IS NOT NULL;

6.
SELECT employee_id, first_name, last_name, salary
FROM employees
WHERE department_id = 80 AND salary >= 10000;

7.
SELECT employee_id, first_name, last_name, hire_date
FROM employees
WHERE hire_date > '2001-01-13';

8.
SELECT employee_id, first_name, last_name, job_id
FROM employees
where job_id in ('MK_REP', 'PU_CLERK');

9.
SELECT employee_id, first_name, last_name, salary, commission_pct
FROM employees
where salary > 5000
and salary < 10000;

10.
SELECT employee_id, first_name, last_name, department_id
FROM employees
WHERE department_id IN (20, 50, 80)
ORDER BY employee_id ASC;

11.
SELECT employee_id, first_name, last_name, job_id
FROM employees
where job_id != 'SA_REP';

12. 
SELECT employee_id, first_name, last_name, manager_id
FROM employees
where manager_id IS NULL;

13.
SELECT employee_id, first_name, last_name, salary, department_id
FROM employees
where salary >= 10000
and department_id = 80;

14.
SELECT employee_id, first_name, last_name, job_id, salary
FROM employees
WHERE (job_id = 'SA_REP' OR job_id = 'ST_CLERK')
AND salary >= 10000;

15.
SELECT employee_id, first_name, last_name, job_id, department_id
FROM employees
WHERE LOWER(first_name) LIKE '%a%';

16.
SELECT employee_id, first_name, last_name, job_id, salary
FROM employees
where LOWER(first_name) LIKE '%e%e%';

17.
SELECT employee_id, first_name, last_name, job_id, department_id
FROM employees
WHERE job_id LIKE '%CLERK%';

 

728x90
반응형

'oracle' 카테고리의 다른 글

oracle(subquery)_2024-06-26  (2) 2024.06.26
oracle(JOIN)_2024-06-25  (0) 2024.06.25
oracle(집계함수)_2024-06-25  (2) 2024.06.25
oracle(문자열)_2024-06-24  (0) 2024.06.24
oracle(SQL기초)_2024-06-21  (0) 2024.06.21