SQL 기초2- 기본 문법
SQL 기초1에서는 SQL이 무엇인지, KEY와 자료형에 어떤 것이 있는지에 대해 작성하였다.
SQL 기초2에서는 RDBMS에서 SQL의 기본적인 문법에 대하여 다루어 보도록 하겠다.
학습하기 전에, SQL 문법에 대해서 중요한 점을 말해보자면,
1) 대소문자 구분을 안함
2) 입력 후 맨 마지막에 ; 필수
3) 문자 입력시 " " 큰 따옴표가 아닌 ' '작은 따옴표로 감쌀 것
4) -- 주석~~~
그럼 이제 학습해보자!

0. 테이블의 구조 파악하기
DESC EMP; -- DESC+대상 테이블;
여기서 DESC는 order by desc; 이와 같이 내림차순 정렬시에도 사용되는데
테이블 구조의 desc는 describe의 약자/내림차순의 desc는 내림차순을 나타내는 descending의 약자이다.
SELECT * FROM EMP;
테이블을 파악할 수 있는 두 번째 방법으로는 해당 테이블의 모든 데이터를 가지고 오는 것이다.
여기서 *는 all을 뜻한다.
1. 테이블 만들기
CREATE TABLE + 테이블 이름(칼럼명1 자료형1, 칼럼명2 자료형2, ...);
CREATE TABLE dept_temp as select * from dept -- dept테이블을 복사하여 새로운 테이블 생성
2. 데이터 검색하기(선택하기, 가져오기)
SELECT + 가져오고 싶은 컬럼 + FROM + 대상 테이블;
SELECT empno, ename FROM EMP; -- EMP테이블에서 empno와 ename을 택하여 가져옴
가져오고 싶은 컬럼에는 , 로 구분하여 여러 개의 칼럼을 쓸 수도 있다.
만약, 중복 데이터를 삭제하고 가져오고 싶으면, 컬럼 앞에 DISTINCT를 쓰면 된다.
SELECT DISTINCT empno FROM EMP; -- EMP테이블에서 empno를 중복없이 가져옴
DISTINCT를 안썼을 경우에는 ALL이 기본적으로 사용되는데, ALL은 중복되는 열 제거 없이 모든 데이터를 가져온다.
3. 조건을 추가하여 검색하기
SELECT + 조회할 열 + FROM + 테이블명 + WHERE + 조건식;
SELECT * FROM book WHERE title='돈키호테'; -- 제목이 돈키호테인 데이터를 book 테이블에서 검색
조건은 WHERE을 사용하여 추가한다.
조건으로는 비교연산자, 복합조건 연산자(AND, OR, NOT),
기타 연산자(BETWEEN, IN, NOT IN), 산술 연산자 등을 사용할 수 있다.
WHERE + 열이름 + IN(데이터1, 데이터2, 데이터3, ...); -- 특정 열에 포함된 데이터를 여러 조건으로 검색할 때 사용
-- 수학 성적이 80~90사이인 데이터를 모두 검색
SELECT * FROM score WHERE math BETWEEN 80 AND 90;
-- 조건이 여러 개일 경우, OR 대신 IN을 사용하기
SELECT * FROM EMP WHERE JOB IN('MANAGER','SALEMAN', 'CLERK');
LIKE 연산자: 찾으려는 데이터가 기억나지 않을 때, 유사한 값으로 검색할 때 사용.
_ 와 %를 함께 사용한다.
WHERE + 열이름 + LIKE + 조건(' %~', '~%' 등등..)
SELECT * FROM EMP WHERE ename LIKE 'L%'; -- L로 시작하는~
SELECT * FROM EMP WHERE ename LIKE '%L'; -- L로 끝나는~
SELECT * FROM EMP WHERE ename LIKE '%L%'; -- L이 포함되어 있는~
SELECT * FROM EMP WHERE ename LIKE '_L%'; -- 두 번째 글자가 L인~
SELECT * FROM EMP WHERE ename LIKE '__L%'; -- 세 번째 글자가 L인~
IS NULL 연산자: 데이터의 값이 NULL일 때 조건을 걸어 검색할 때 사용
주의) NULL은 값이 없다는 것을 의미하므로, 연산 자체가 불가능하다.
따라서 IS NULL 또는 IS NOT NULL을 사용해야 된다.
SELECT * FROM EMP WHERE COMM=NULL; -- 연산 불가능
SELECT * FROM EMP WHERE COMM IS NULL; -- 가능
집합 연산자
SELECT+칼럼1,,2, +WHERE+조건+FROM+테이블+집합 연산자+SELECT+ 칼럼1,2, ,,+WHERE+조건 +FROM+ 테이블
요약하자면, A 집합연산자 B 이다.
집합 연산자에는
UNION: 합집합 → 중복제거
UNION ALL: 합집합 → 중복 제거 X
MINUS: 차집합
INTERSECT: 교집합
CROSS JOIN: 카티션 곱
이 있다.
SELECT empno, ename, sal, deptno FROM EMP WHERE DEPTNO=10
UNION
SELECT empno, ename, sal FROM EMP WHERE DEPTNO=20
4. 데이터 정렬하기
데이터를 정렬하여 추출하고 싶을 때 사용
SELECT~FROM~ ORDER BY 컬럼명 DESC(내림차순)/ASC(오름차순);
defult는 오름차순(asc)로 되어 있기 때문에 기준을 안쓰면 자동으로 오름차순 정렬이 된다.
SELECT * FROM score ORDER BY math DESC; -- 수학 성적을 내림차순으로 정렬
5. 데이터 삽입하기
INSERT INTO +테이블+(칼럼들.,,단, 생략가능)+VALUES+(넣고자 하는 데이터들..);
주의할 점은, 칼럼들의 순서와 넣고자 하는 값들의 순서를 맞춰야 하는 것이다.
INSERT INTO book VALUES('3', '햄릿', '윌리엄 셰익스피어', '엘리스 출판');
문자열은 반드시 '작은 따옴표 '로 감쌀 것!
컬럼을 생략할 경우, 원래 컬럼 순서대로 데이터를 삽입한다.
6. 데이터 수정하기
이미 저장된 데이터를 수정할 때 사용
UPDATE+테이블+ SET 변경할 컬럼=변경할 값 WHERE 조건;
UPDATE book SET title ='돈키호테 1' WHERE title ='돈키호테';
-- 제목이 돈키호테인 데이터의 제목을 돈키호테 1로 변경
7. 데이터 삭제하기
이미 저장된 값을 삭제할 때 사용
DELETE+FROM+테이블+WHERE+조건;
DELETE FROM book WHERE title='돈키호테 1';
-- 제목이 돈키호테1인 책 데이터를 book 테이블에서 삭제
만약, 조건이 없을 시에는 모든 데이터가 삭제된다.
TRUNCATE table user; -- 전체 데이터 삭제
데이터를 삭제할 때 사용하는 문법으로 TRUNCATE도 있는데, DELETE와 차이점은 다음과 같다.
참고