[데이터베이스] SQL 정의어, 조작어 SELECT 문법 정리
목차
1. SQL 정의어
2. SQL 조작어 SELECT
SQL 정의어
개념
데이터베이스를 정의하는 언어이며, 데이터를 생성, 수정, 삭제하는 등의 데이터 전체의 골격을 결정하는 역할을 하는 언어 로 CREATE, ALTER, DROP이 있다.
코드 예시
1. CREATE
CREATE TABLE address(
ID int not null,
name varchar(20) not null,
age int not null,
address char(25),
primary key(ID)
);
2. ALTER
ALTER TABLE address
ADD (birth date);
3. DROP
DROP TABLE address
SQL 조작어 SELECT
개념
데이터 조작어는 조회,삽입, 수정, 삭제할 때 사용하는 명령어로 SELECT, INSERT, UPDATE, DELETE 등이 있다. 여기선 SELECT에 대해 알아본다.
1) SELECT - 전체
예시
CUSTOMER 테이블 전체 출력하기
SELECT * FROM CUSTOMER
2) SELECT - 산술식 이용
예시
CUSTOMER 테이블에서 NAME, POINT 속성만 찾아 출력하되, POINT에 500추가하기
SELECT NAME, POINT+500 AS 수정POINT FROM CUSTOMER
산술식 이용 시 기존의 데이터는 바뀌지 않으며, 출력할 때 산술이 계산된 결과가 나온다.
3) SELECT - 조건 WHERE 검색
WHERE을 사용한다.
예시
POINT가 2000이상인 CUSTOMER 찾기
SELECT * FROM CUSTOMER WHERE POINT >=2000
WHERE을 사용하고, 조건 연산자인 >=을 사용해 조건 2000을 만족하는 데이터만 꺼내왔다.
조건 검색 연산자는 아래 표를 참고하자.
4) SELECT - 문자열 조건 검색 LIKE
LIKE를 사용해 부분적으로 일치하는 데이터를 검색할 수 있다. 오직 문자열을 이용하는 조건에서만 사용가능하다.
기호
기호 | 설명 |
* | 0개 이상의 문자 |
? | 한 개의 문자 |
이해가 되지 않으니, 아래의 예시를 통해 확인해보자.
예시
이름이 김으로 시작하는 CUSTOMER 찾기
SELECT * FROM CUSTOMER WHERE LIKE '김%';
* 대신 %을 썼는데, SQL마다 각 문법이 다르다. 나는 H2를 쓰기 때문에 %를 사용하였다. 유연하게 이해하면 좋을 것같다.
5) SELECT - 오름차순/내림차순
ASC, DESC를 통해 오름차순, 내림차순으로 결과 데이터를 정렬할 수 있다.
예시
POINT가 2000이상인 손님을 내림차순으로 정렬하기
SELECT * FROM CUSTOMER WHERE POINT >= 2000
ORDER BY POINT DESC;
6) SELECT - 집계함수
특정 속성 값을 통계적으로 계산한 결과를 검색하기 위해 집계 함수를 이용할 수 있다.
주의사항
- Null인 속성은 제외하고 계산한다.
- 집계함수는 WHERE절에서 사용X, SELECT 절이나, HAVING 절에서만 사용O
종류
함수 | 의미 | 사용가능한 속성 타입 |
COUNT | 속성 값의 개수 | 모든 데이터 |
MAX | 속성 값의 최대값 | |
MIN | 속성 값의 최소값 | |
SUM | 속성 값 개수의 합계 | 숫자 데이터 |
AVG | 속성 값의 평균 |
예시
CUSTOMER 테이블에서 나이가 25살 이상인 고객수 찾기
SELECT COUNT(AGE) FROM CUSTOMER WHERE AGE >=25
7) SELECT - 그룹별 검색
GROUP BY 키워드를 이용해 특정 속성의 값이 같은 튜플을 모아 그룹을 만들고, 그룹별로 검색할 수 있다.
주의사항
- HAVING 키워드를 함께 이용해그룹에 대한 조건을 작성해야한다. (HAVING 절에는 집계 함수만 사용할 수 있다.)
- 그룹을 나누는 기준이 되는 속성을 SELECT 절에도 작성하는 것이 좋다.
예시
COMPANY 테이블에서 부서별 포인트의 총합이 4000 이상인 부서를 부서로 그룹화해 출력하기
SELECT DEPARTMENT, SUM(POINT) AS 부서별포인트총합
FROM COMPANY
GROUP BY DEPARTMENT HAVING SUM(POINT)>=4000;
8) SELECT - JOIN
'CS > 데이터베이스' 카테고리의 다른 글
MySql 중복 행 서브 쿼리문에 join이 사용되는 이유 (0) | 2022.08.12 |
---|---|
[데이터베이스] SQL JOIN 정리 및 예제 (2) | 2022.08.05 |
[데이터베이스] 관계 대수 정리 (0) | 2022.08.03 |
[데이터베이스] 이상현상과 함수 종속성, 정규화 (0) | 2022.08.03 |
[데이터베이스] 관계형 데이터베이스 모델링 (0) | 2022.08.02 |