SQL 기본 문법 정리(DDL, DML, DCL, JOIN, 기타문법)

728x90
반응형

 SQL

SQL (Structured Query Language) 는 관계형 데이터베이스 관리 시스템, RDBMS의 데이터를 관리하기 위해 개발된 프로그래밍 언어이다. 관계형 데이터베이스에서 데이터의 검색과 관리, 스키마 생성과 수정, DB 객체 접근 조정 관리 등을 위해 고안되었다.

DDL(Data Define Language, 데이터 정의어)

- DDL은 새로운 데이터의 정의 및 제거, 기존에 존재하는 데이터의 재정의 등의 역할을 하는 언어

- 논리적 데이터 구조와 물리적 데이터 구조의 사상을 정의

- 데이터베이스 관리자나 데이터베이스 설계자가 사용함.

명령어 기능
CREATE SCHEMA, DOMAIN, TABLE, VIEW, INDEX 정의 ex) CREATE 
ALTER TABLE에 대한 정의를 변경 (테이블에 컬럼을 추가하거나 제한을 추가하는 경우)
DROP SCHEMA, DOMAIN, TABLE, VIEW, INDEX 삭제
TRUNCATE  

 

CREATE 예제


Query문 CREATE DATABASE 데이터베이스명;
설명 데이터베이스명을 가지는 데이터베이스 생성
Query문 CREATE TABLE 테이블명 (컬럼명 데이터타입);
설명 테이블에 들어갈 컬럼명해당 컬럼데이터 타입을 정의하고 테이블명을 가지는 테이블 생성

 

ALTER 예제


Query문 ALTER TABLE 테이블명 ADD 컬럼명 데이터타입;
설명 해당 테이블에 컬럼데이터타입을 추가

 

DROP 예제


Query문 DROP DATABASE 데이터베이스명;
설명 해당 이름을 가진 데이터베이스를 제거한다.
Query문 DROP TABLE 테이블명;
설명 해당 이름을 가진 테이블 제거한다.

 

DML(Data Manipulation Language, 데이터 조작어)

- DML은 데이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는 데 사용하는 언어.

- 데이터 검색, 등록, 삭제, 갱신 등을 수행

- 데이터베이스 사용자와 데이터베이스 관리 시스템 간의 인터페이스를 제공.

 

명령어 기능
SELECT 테이블에서 조건에 맞는 튜플 검색
INSERT 테이블에 새로운 튜플 삽입
UPDATE 테이블에서 조건에 맞는 튜플의 내용 변경
DELETE 테이블에서 조건에 맞는 튜플 삭제

SELECT  예제


Query문 SELECT 컬럼명 FROM 테이블명;
설명 해당 테이블에 속하는 컬럼의 데이터들을 검색
Query문 SELECT 컬럼명 FROM 테이블명 WHERE 조건;
설명 해당 테이블에 속하는 컬럼 중 조건에 맞는 데이터들을 검색
Query문 SELECT 컬럼명 FROM 테이블명 WHERE 조건 ORDER BY 컬럼명 ASC or DESC
설명 해당 테이블에 속하는 컬럼 중 조건에 맞는 데이터들의 검색결과를 ASC(오른차순) or DESC(내림차순) 정렬
Query문 SELECT 컬럼명 FROM 테이블명 WHERE 조건 ORDER BY 컬럼명 ASC or DESC LIMIT 개수
설명 Limit으로 개수를 제한

 

- Where절에서 사용되는 조건연산자와 연산자 우선순위

  • 비교 연산자
연산자 = <> > < >= <=
의미 같다 같지 않다 크다 작다 크거나 같다 작거나 같다
  • 논리 연산자 : NOT, AND, OR
  • LIKE 연산자 : 대표 문자를 이용해 지정된 속성의 값이 문자 패턴과 일치하는 튜플을 검색하기 위해 사용됨.
대표 문자 % _ #
의미 모든 문자를 대표함 문자 하나를 대표함 숫자 하나를 대표함
  • 연산자 우선순위
종류 연산자 우선순위
산술 연산자 *, /, +, - 왼쪽에서 오른쪽으로 갈수록 낮아짐.
관계 연산자 =, <>, > , <, >=, <= 모두 같음
논리 연산자 NOT, AND, OR 왼쪽에서 오른쪽으로 갈수록 낮아짐.

※ 산술, 관계, 논리 연산자가 함께 사용되었을 때는 산술> 관계 > 논리 연산자 순서로 연산자 우선순위가 정해짐.

 

- 그룹함수 : GROUP BY절에 지정된 그룹별 속성의 값을 집계할 때 사용

- WINDOW 함수 : GROUP BY절을 이용하지 않고 속성의 값을 집계할 함수를 기술

그룹함수 설명
COUNT(속성명) 그룹별 튜플 수를 구하는 함수
SUM(속성명) 그룹별 합계를 구하는 함수
AVG(속성명) 그룹별 평균을 구하는 함수
MAX(속성명) 그룹별 최대값을 구하는 함수
MIN(속성명) 그룹별 최소값을 구하는 함수
STDEV(속성명) 그룹별 표준편차를 구하는 함수
VARIANCE(속성명) 그룹별 분산을 구하는 함수

 

INSERT 예제


Query문 INSERT INTO 테이블명(칼럼명1, 칼럼명2, 칼럼명3) VALUES(값1, 값2, 값3);
설명 테이블명에 있는 컬럼명에 순서에 맞게 값 입력(단, 칼럼명과 값의 개수는 동일해야함.)
Query문 INSERT INTO 테이블명 VALUES(값1, 값2, 값3);
설명 칼럼명을 입력하지 않은 경우, 테이블에 모든 칼럼에 값을 입력한다는 의미!(단, 칼럼명과 값의 개수는 동일해야함.)

 

UPDATE 예제


Query문 UPDATE 테이블명 SET 컬럼명 = 변경할 값;
설명 테이블에 있는 모든 데이터의 컬럼 값 변경
Query문 UPDATE 테이블명 SET 컬럼명 = 변경할 값 WHERE 조건;
설명 WHERE절 조건에 해당하는 데이터만 변경
Query문 UPDATE 테이블명 SET 컬럼명1 = 변경할 값1, 컬럼명2 = 변경할 값2 WHERE 조건;
설명 변경할 컬럼이 여러 개일 경우 콤마(,)를 사용해 여러 개의 값을 변경 가능

 

DELETE 예제


Query문 DELETE FROM 테이블명;
설명 테이블에 있는 모든 데이터 삭제
Query문 DELETE  FROM 테이블명 WHERE 조건;
설명 WHERE절 조건에 해당하는 데이터만 삭제

 

 

 

DCL(Data Manipulation Language, 데이터 제어어)

- DCL은 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의하는 데 사용되는 언어.

- 데이터 베이스 관리자가 데이터에 대한 액세스를 제어를 목적으로 사용

명령어 기능
COMMIT 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고,
데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려줌
ROLLBACK
데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래 상태로 복구
GRANT 데이터베이스 사용자의 사용 권한 부여
REVOKE 데이터베이스 사용자의 사용 권한 취소

 

GRANT 예제


Query문 GRANT {SYS_AUTH}  TO {USER} {WITH ADMIN OPTION};
설명 사용자에게 해당 시스템의 권한을 부여
# with admin option 을 사용하면 권한을 부여받은 사용자가 다른 사용자에게 해당 권한을 부여할 수 있게 된다.

 

REVOKE 예제


Query문 REVOKE {SYS_AUTH} FROM {USER}
설명 사용자에게서 해당 권한을 회수

 

 

 

JOIN 문

조인문은 두 테이블을 비교하여 매칭되는 값이 있는 경우에만 값을 반환하도록 하는 문법이다. 조인문은 매칭을 성사하는 방식에 따라 inner join, outer join 으로 나뉜다.

 

명령어 기능
(INNER) JOIN 두 테이블의 교집합들로 해당 컬럼들이 모두 매칭 되는 경우에만 반환
OUTER JOIN 한 테이블의 데이터를 기준으로 매칭하여 반환
한쪽에만 값이 있고 다른 쪽 테이블에는 값이 없는 경우 null 로 표현
LEFT JOIN 왼쪽의 테이블을 기준으로 조인
RIGHT JOIN 오른쪽 테이블을 기준으로 조인
FULL JOIN 양쪽 테이블의 데이터를 모두 포함하여 반환

 조인문은 on 키워드와 함께 사용하는데, on 뒤에는 양 테이블에서 비교할 컬럼들의 조건이 작성된다.

 

 

 

기타 문법

명령어 기능
WHERE 절 쿼리에 조건을 부여할 때 사용하는 문법이다. WHERE 뒤에 조건을 적어서 사용
조건에는 =, <, >, BETWEEN, LIKE, IN 등의 연산자를 사용
IN 조건을 줄 때 주로 사용한다. 해당 데이터 행 중에 조건으로 준 값이 있는 지 확인
BETWEEN 두 값 사이에 존재하는 값만 선택하도록 조건을 줄 때 사용
LIKE 정규표현식과 같이 문자의 패턴을 비교하는데 사용
%는 0개 이상의 문자, _는 문자 1개를 의미
AND, OR, NOT 조건에서 사용할 수 있는 키워드 연산자
ORDER BY ORDER BY 뒤에 나오는 속성들을 기준으로 콤마를 사용해 정렬

 

WHERE, IN 예제


 
# TABLE1 에서 COL1 을 조회한다.
# 이때 해당 행의 COL2 값이 서브쿼리 데이터 셋에 존재하는 경우만 조회한다.
SELECT {COL1}
  FROM {TABLE1}
 WHERE {COL2} IN (
SELECT {COL3}
  FROM {TABLE2}
)

 

BETWEEN 예제


# TABLE1 에서 COL1 을 조회한다.
# 이때 해당 행의 COL2 값이 VAL1 과 VAL2 사이에 존재하는 경우만 조회한다.
SELECT {COL1}
  FROM {TABLE1}
 WHERE {COL2} BETWEEN {VAL1} AND {VAL2}

 

LIKE 예제


# A로 시작하는 col을 찾는다.
...
WHERE COL LIKE 'A%'

# A로 시작하고 뒤에 다른 문자가 하나 더 위치하는 col을 찾는다.
...
WHERE COL LIKE 'A_'

 

ORDER BY 예제


# 데이터들을 COL1, COL2, COL3 열의 값들을 기준으로 정렬한다.
SELECT *
  FROM TABLE
 ORDER BY COL1, COL2, COL3

 

728x90
반응형

댓글