SQL에는 DML, DDL, DCL, TCL구문으로 분류된다.
- DML 구문
- 데이터 조작 언어
- 테이블의 행에 사용하는 구문이므로 테이블 정의가 선행되어야 함
- SELECT, INSERT, UPDATE, DELETE가 여기에 속함
- ROLLBACK, COMMIT 가능 - DDL 구문
- 데이터 정의 언어
- 데이터 베이스 개체(데이터베이스, 테이블, 뷰, 인덱스)를 생성, 삭제, 변경
- CREATE, DROP, ALTER가 여기에 속함
- ROLLBACK, COMMIT 불가능 - DCL 구문
- 데이터 제어 언어
- 사용자에게 어떠한 권한을 부여하거나 빼앗을 때 사용
- GRANT, REVOKE
- DDL구문과 마찬가지로 ROLLBACK, COMMIT 불가능 - TCL 구문
- 트랜잭션 제어 언어
- 데이터의 보안, 무결성, 회복, 병행 수행제어 등을 정의하는데 사용
- COMMIT, ROLLBACK, SAVEPOINT가 여기에 속함
DML 구문
SELECT
테이블에서 원하는 데이터를 추출해내는 구문
SELECT select_expr
[FROM tabel_references]
[WHERE where_condition]
[GROUP BY{col_name | expr | position}]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}]
- select_expr : 테이블에서 추출을 원하는 컬럼
여러개를 원할 시에 콤마로 구분하며 출력하고 싶은 순서대로 작성
테이블의 전체 컬럼 출력을 원할 시에는 * 입력
DISTINCT 명령어를 컬럼명 앞에 붙이면 중복 제외 - FROM 절 : 데이터를 추출해 오고자 하는 테이블 지정
- WHERE 절 : 특정한 조건을 충족하는 데이터를 조회하고자 할 때 사용
//조건 연산자
WHERE Populatoin < 80000000;
//관계연산자(AND,OR,NOT 등)
WHERE Populatoin < 80000000 AND Population > 70000000;
//범위 검색 BETWEEN AND
WHERE Population BETWEEN 70000000 AND 80000000;
//비교 연산자 =
WHERE CountryCode = 'KOR';
//이산적인 값 검색 IN
WHERE Name IN('Seoul','NEW YORK', 'TOKYO');
WHERE CountryCode IN('KOR','JPN');
//문자열 검색 LIKE
WHERE CountryCode LIKE'KO_'; //_는 하나의 문자만 매칭
WHERE Name LIKE 'S %'; //%는 여러개의 문자 매
//서브 쿼리(쿼리 내부에 또다른 쿼리)
WHERE CountryCode = (
SELECT CountryCode
FROM city
WHERE Name = 'Seoul');
//서브 쿼리의 결과 중 하나라도 만족하면 출력 ANY, SOME
WHERE CountryCode > ANY (
SELECT CountryCode
FROM city
WHERE Name = 'S %');
//서브 쿼리의 결과를 모두 만족하면 출력 ALL
WHERE CountryCode > ALL (
SELECT CountryCode
FROM city
WHERE Name = 'S %');
- GROUP BY 절 : 그룹으로 묶어주는 역할이며 집계 함수와 함께 사용
- AVG(), MIN(), MAX(), COUNT(), COUNT(DISTINCT), STDEV(), VARIANCE()
- AS를 통해 별칭 지정 가능
- 동시에 여러 컬럼을 지정하여서 그룹화 가능
SELECT CountryCode, MAX(Population) AS Max_Popu
FROM city
GROUP BY CountryCode
- HAVING 절 : GROUP BY절에 대한 조건 제한. 따라서 무조건 GROUP BY 뒤에 나와야 함.
- ORDER BY 절 : 결과가 출력되는 순서를 조절
기본적으로는 오름차순, DESC 입력 시에 내림차순 정렬
여러개의 순서 정렬 혼합 가능 - LIMIT : 출력 개수를 제한하여 상위 n개만 출력 (ex. LIMIT 10)
INSERT
테이블에 데이터를 삽입하는 구문
INSERT INTO 테이블명 VALUES (값1, 값2, ...);
INSERT INTO 테이블명 (컬럼1, 컬럼2) VALUES (값1, 값2);
INSERT INTO 테이블명 SELECT * FROM 다른 테이블명;
컬럼명 미지정 시, VALUE 다음에 나오는 값들의 순서 및 개수는 테이블에 정의된 컬럼의 순서 및 개수와 동일해야 한다.
SELECT문을 사용하여 INSERT 할 경우에는 두 테이블의 형태가 같아야 한다.
UPDATE
기존에 입력되어 있는 값을 변경하는 구문
UPDATE 테이블명 SET 수정할 컬럼 = 변경할 데이터
WHERE 변경 조건;
이때 WHERE절을 생략할 경우, 테이브르이 전체 행의 내용이 변경되니 주의하자.
DELETE
행 단위로 데이터를 삭제하는 구문
DELETE FROM 테이블명
WHERE 삭제컬럼 조건;
UPDATE와 마찬가지로 WHERE절을 생략할 경우, 모든 값이 날라가니 주의하자. 또한 데이터가 지워진다해서 테이블의 용량 자체가 줄어들지 않는 다는점을 기억해두자.
'프로그래밍 > SQL' 카테고리의 다른 글
[프로그래머스] 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2024.02.21 |
---|---|
[프로그래머스] 12세 이하인 여자 환자 목록 출력하기 문제 (0) | 2024.02.21 |
[SQL] JOIN 구문 (0) | 2024.02.21 |
[SQL] DCL 구문 (0) | 2024.02.20 |
[SQL] DDL 구문 (0) | 2024.02.20 |