학부 때 데이터베이스 강의를 들으면서 Oracle을 사용했었다. 그 때는 DDL, DML, DCL을 공부하며 익숙했었다. 사용 안 한지 오래 되다 보니까 잊혀지려 하는 것이 두려워 다시 리마인드 시키고자 한다.
SQL은 Structured Query Language(구조적 질의 언어)의 줄임말로, RDBMS(관계형 데이터베이스 시스템)에서 자료를 관리 및 처리하기 위해 설계된 언어다.
SQL 언어적 특성
테이블 생성
CREATE TABLE PERSON
(
NAME VARCHAR(10)
AGE INT
);
테이블 수정
ALTER TABLE PERSON ADD ADDRESS VARCHAR(10);
ALTER TABLE PERSON MODIFY ADDRESS VARCHAR(30);
ALTER TABLE PERSON DROP COLUMN ADDRESS;
테이블 삭제
DROP TABLE PERSON;
테이블이 생성되어 있다는 가정하에 데이터 조회
SELECT * FROM [테이블명];
SELECT * FROM [테이블명] WHERE [컬럼] = ['값'];
SELECT * FROM [테이블명] ORDER BY [컬럼] [ASC/DESC];
SELECT [GROUP BY 절에 지정된 컬럼] [GROUP BY 별로 집계할 컬럼]
FROM [테이블명]
GROUP BY [그룹화할 컬럼];
SELECT [GROUP BY 절에 지정된 컬럼] [GROUP BY 별로 집계할 컬럼]
FROM [테이블명]
GROUP BY [그룹화할 컬럼]
HAVING [그룹 내 조건 추가];
데이터 입력
INSERT INTO [테이블명](컬럼1, 컬럼2, ...) VALUES ('값1', '값2', ...);
데이터 수정
UPDATE [테이블명] SET [수정할 컬럼] = ['수정할 값'] WHERE [조건 줄 컬럼] = ['값'];
데이터 삭제
DELETE [테이블명] WHERE [조건 줄 컬럼] = ['값'];
권한 부여
GRANT [권한1, 권한2, ...] TO [권한 줄 사용자];
권한 삭제
REVOKE [권한1, 권한2, ...] FROM [권한 삭제할 사용자];
참고
“SQL이란? - 한 눈에 끝내는 SQL.” 구름EDU, https://edu.goorm.io/learn/lecture/15413/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-sql/lesson/767683/sql%EC%9D%B4%EB%9E%80.
승미니1024 곱슬 곰탱. “[Oracle] SQL의 종류 (DDL, DML, DCL).” 돼민이, TISTORY, 24 Dec. 2016, https://jink1982.tistory.com/31.
A, B 두 개의 테이블이 있다고 가정
A
ID | NAME |
---|---|
1 | KIM |
2 | LEE |
3 | PARK |
B
ID | AGE |
---|---|
2 | 21 |
3 | 22 |
4 | 23 |
교집합, 공통적인 부분만 SELECT
SELECT A.ID, A.NAME, B.AGE
FROM A INNER JOIN B
ON (A.ID = B.ID);
ID | NAME | AGE |
---|---|---|
2 | LEE | 21 |
3 | PARK | 22 |
SELECT A.ID, A.NAME, B.AGE
FROM A LEFT OUTER JOIN B
ON (A.ID = B.ID);
ID | NAME | AGE |
---|---|---|
1 | KIM | NULL |
2 | LEE | 21 |
3 | PARK | 22 |
SELECT A.ID, A.NAME, B.AGE
FROM A LEFT OUTER JOIN B
ON (A.ID = B.ID)
WHERE B.ID IS NULL;
ID | NAME | AGE |
---|---|---|
1 | KIM | NULL |
SELECT A.ID, A.NAME, B.AGE
FROM A RIGHT OUTER JOIN B
ON (A.ID = B.ID);
ID | NAME | AGE |
---|---|---|
2 | LEE | 21 |
3 | PARK | 22 |
4 | NULL | 23 |
SELECT A.ID, A.NAME, B.AGE
FROM A RIGHT OUTER JOIN B
ON (A.ID = B.ID)
WHERE A.ID IS NULL;
ID | NAME | AGE |
---|---|---|
4 | NULL | 23 |
SELECT A.ID, A.NAME, B.AGE
FROM A FULL OUTER JOIN B
ON (A.ID = B.ID);
ID | NAME | AGE |
---|---|---|
1 | KIM | NULL |
2 | LEE | 21 |
3 | PARK | 22 |
4 | NULL | 23 |
SELECT A.ID, A.NAME, B.AGE
FROM A FULL OUTER JOIN B
ON (A.ID = B.ID)
WHERE A.ID IS NULL OR B.ID IS NULL;
ID | NAME | AGE |
---|---|---|
1 | KIM | NULL |
4 | NULL | 23 |
참고
Godpearl. “DB Join 정리(Inner/Left/Right/Outer).” 그럼에도 불구하고🔥💎, TISTORY, 18 May 2021, https://pearlluck.tistory.com/46.