이번 포스팅에서는 SQL에 대해 알아본다.
SQL이란? Structured Query Language의 약자로, 관계형 데이터베이스를 만들고 쿼리하기 위한 표준 언어이다.
SQL은 3가지의 종류로 나눌 수 있다.
DDL, DML, DCL이다.
DDL이란 Data Definition Language의 약자로, 테이블 생성, 변경 및 삭제와 제약 조건 설정을 포함하여 데이터베이스를 정의하는 기능이다.
DML이란 데이터베이스를 유지 관리하고 쿼리하는 명령이다. SQL의 핵심이다.
DCL이란 권한 관리 및 데이터 커밋을 포함하여 데이터베이스를 제어하는 명령이다. DBA가 사용한다.
목차
1. DDL
2. DML
1. DDL
CREATE
CREATE는 테이블을 생성할 때 사용하며 사용법은 위의 그림과 같다.
예시로는 위의 그림과 같다.
ALTER
ALTER는 테이블의 구조를 변경할 때 사용한다.
예시로는 다음과 같다.
DROP
DROP은 테이블을 삭제할 때 사용한다.
2. DML
INSERT
INSERT는 테이블에 데이터를 집어넣을 때 사용한다.
예시로는 다음과 같다.
DELETE
DELETE는 테이블의 데이터를 지우고자 할 때 사용한다.
예시로는 다음과 같다.
UPDATE
UPDATE는 테이블의 데이터를 변경하고자 할 때 사용한다.
예시로는 다음과 같다.
Syntax for querying tables
추가적으로 다음과 같은 명령어들을 사용할 수 있다.
먼저, SELECT는 다음과 같이 사용한다.
중복을 제거하기 위해선 distinct를 사용하는데 아래 그림과 같다.
결과 테이블에서 이름을 바꿔보고 싶을 땐 다음과 같이 사용한다.
WHERE절은 아래 그림과 같이 사용한다.
추가적인 연산자는 아래 그림과 같이 사용할 수 있다.
WHERE절에서 같은지를 비교하기 위해선 다음과 같이 사용한다.
만약 시작하는 글자를 찾고 싶으면 like 명령어를 사용한다.
끝나는 글자로 찾고 싶으면 아래 그림과 같이 사용한다.
날짜를 조건으로 사용하고 싶을 땐 다음과 같이 사용한다.
and, or, not을 where 절에 넣고 싶을 땐 아래 그림과 같이 사용한다.
카운트를 사용하고 싶을 땐 아래 그림과 같다.
중복된 것을 카운트하지 않기 위해선 아래 그림과 같이 사용한다.
최소값 최대값은 아래 그림과 같이 사용한다.
평균, 합은 다음과 같이 사용한다.
값이 A부터 B까지인 것을 찾고 싶으면 아래와 같이 사용한다.
IN을 이용해 괄호 집합안의 값들에 해당하는지를 파악한다.
NOT IN을 사용할 수도 있다.
IN 뒤의 괄호에 숫자를 넣을 수도 있다.
아래 그림과 같이 쿼리를 넣을 수도 있다.
ORDER BY를 이용해 오름차순 정렬을 할 수 있다.
ORDER BY DESC를 이용해 내림차순으로 정렬할 수 있다.
GROUP BY를 이용해 그룹별로 나누어 볼 수 있다. group by state는 state를 그룹별로 나눈 다는 이야기이다.
2개 이상의 그룹별로 나누는 것도 가능하다.
GROUP BY에 조건절을 적용시키기 위해선, WHERE이 아니라 HAVING명령어를 이용한다.
CROSS JOIN을 이용해, 6-1에서 배운 cartesian product가 가능하다.
select * from customer cross join ordertable;
아래 그림과 같은 방식으로 EQUIJOIN이 가능하다.
아래 그림과 같은 방식으로 natural join이 가능하다.
natural join은 중복된 컬럼을 지워주는것까지 한다. 추가적으로, natural join을 사용하기 위해선 join 할 때 컬럼 이름이 같아야한다. 예를 들어 cust_id로 join하면, EQUIJOIN은 2개의 속성이 보이나, NATURAL JOIN은 1개의 컬럼만 보인다.
Left Outer Join은 아래 그림과 같이 사용한다.
이번 시간에는 SQL의 기본에 대해서 알아보았다. JPA를 사용하건, MyBatis를 사용하건 JDBC만 사용하건 중요한 개념들이니 잘 알아두려고 노력하자!
'Dev > Database' 카테고리의 다른 글
[Database] DB Transaction Isolation Level(트랜잭션 격리 수준) 완전타파 (0) | 2022.11.23 |
---|---|
[Database] Database Index에 대한 고찰 (0) | 2022.08.13 |
[Database] 6-1. Relational Algebra (0) | 2022.02.26 |
[Database] 5. Physical Database Design (0) | 2022.02.25 |
[Database] 4-2. Logical Database Design (0) | 2022.01.30 |