SQL/개념
01. SQL 개념과 기초
by Merware
2023. 5. 2.
01. SQL 문법 종류
1) 데이터 제어 언어 (DCL: Data Control Language)
- 데이터베이스에 대한 권한을 부여하거나 회수하는 명령어
- 보안 및 권한 관리와 관련된 작업을 수행
- 주요 명령어:
GRANT
: 사용자에게 특정 작업에 대한 권한을 부여.
REVOKE
: 사용자에게 부여된 권한을 회수.
2) 데이터 정의 언어 (DDL: Data Definition Language)
- 데이터베이스 구조를 정의하거나 수정하는 명령어
- 테이블, 인덱스, 뷰 등 객체를 생성, 수정, 삭제하는 데 사용
- 주요 명령어:
CREATE
: 테이블, 뷰, 인덱스 등의 데이터베이스 객체를 생성.
ALTER
: 기존 데이터베이스 객체의 구조를 수정.
DROP
: 데이터베이스 객체를 삭제.
TRUNCATE
: 테이블의 모든 데이터를 삭제하지만, 테이블 구조는 유지 (복구 불가능).
3) 데이터 조작 언어 (DML: Data Manipulation Language)
- 데이터를 조회, 삽입, 수정, 삭제하는 명령어
- 주로 테이블 내의 데이터 조작에 사용
- 주요 명령어:
SELECT
: 테이블에서 데이터를 조회.
INSERT
: 테이블에 새로운 데이터를 삽입.
UPDATE
: 테이블의 기존 데이터를 수정.
DELETE
: 테이블의 데이터를 삭제.
4) 트랜잭션 제어 언어 (TCL: Transaction Control Language)
- 데이터베이스에서의 트랜잭션을 제어하는 명령어
- 트랜잭션의 처리 여부를 결정하여 데이터 무결성을 유지
- 주요 명령어:
COMMIT
: 트랜잭션에서 수행한 작업을 확정하고, 데이터베이스에 반영.
ROLLBACK
: 트랜잭션에서 수행한 작업을 취소하고, 이전 상태로 되돌림.
SAVEPOINT
: 트랜잭션 내에서 특정 시점으로 돌아가기 위한 저장점 설정.
SET TRANSACTION
: 트랜잭션의 특성을 설정 (예: 격리 수준).
02. 키(Key)의 종류
1) 기본키 (Primary Key)
- 테이블에서 각 레코드를 유일하게 식별하기 위한 키.
- 중복될 수 없고, NULL 값을 가질 수 없음.
2) 복합키 (Composite Key)
- 두 개 이상의 칼럼을 조합하여 만든 키로, 개별적으로는 유일하지 않지만 조합하면 유일한 레코드를 식별할 수 있음.
3) 보조키 (Alternate Key)
- 기본키로 선택되지 않은 후보키 중 하나.
- 기본키의 대안으로 사용할 수 있는 키.
4) 외래키 (Foreign Key)
- 한 테이블의 필드가 다른 테이블의 기본키와 연결될 때, 외래키로 사용됨.
- 외래키를 사용하는 이유: 데이터의 무결성을 유지하고 데이터 중복을 피하기 위함.
03. 자료형 (Data Types)
- VARCHAR2(길이) : 가변 길이 문자열 데이터, 최대 4000바이트까지 저장 가능.
- NUMBER : 숫자 데이터 타입, 정수 및 소수점 포함 가능.
- DATE : 날짜와 시간 데이터를 저장.
- CHAR(길이) : 고정 길이 문자열 데이터.
- NVARCHAR2(길이) : 가변 길이의 유니코드 문자열 데이터를 저장.
- BLOB : 최대 4GB의 대용량 이진 데이터를 저장 (Binary Large Object).
- CLOB : 최대 4GB의 대용량 텍스트 데이터를 저장 (Character Large Object).
- BFILE : 외부 파일 시스템에 저장된 대용량 이진 데이터를 참조하는 포인터. 파일 자체는 데이터베이스 밖에 저장됨.
04. 객체 (Objects)
- 테이블 (Table) : 데이터를 저장하는 기본 객체. 행(Row)과 열(Column)로 구성됨.
- 인덱스 (Index) : 테이블의 검색 성능을 높이기 위한 객체.
- 뷰 (View) : 하나 또는 여러 개의 테이블에서 선택된 데이터를 논리적으로 연결하여 제공. 가상의 테이블로 취급됨.
- 시퀀스 (Sequence) : 자동으로 일련 번호를 생성하는 객체. 주로 기본키 값 자동 생성을 위해 사용.
- 시노님 (Synonym) : 데이터베이스 객체에 대한 별칭을 제공하여 참조를 용이하게 함.
그 외 객체 (일반적으로 자주 사용하지 않음)
- 프로시저 (Procedure) : 특정 작업을 수행하기 위해 저장된 일련의 SQL 문.
- 함수 (Function) : 입력값을 받아 처리 후 결과를 반환하는 프로그램 코드.
- 패키지 (Package) : 관련된 프로시저, 함수, 변수 등을 하나로 묶은 집합체.
- 트리거 (Trigger) : 테이블에 데이터가 삽입, 수정, 삭제될 때 자동으로 실행되는 프로시저.
05. SELECT 문의 기본 형식
SELECT DEPT.DNAME, SUM(EMP.SAL)
FROM DEPT, EMP
GROUP BY DEPT.DNAME
SELECT JOB
FROM EMP;
SELECT E.*
FROM EMP E;
SELECT E.DNO, D.DNAME
FROM EMP E, DEPT D
WHERE E.DNO = D.DEPTNO;
SELECT E.DNO "부서코드", D.DNAME "부서이름"
FROM EMP E, DEPT D
WHERE E.DNO = D.DEPTNO;
!https://blog.kakaocdn.net/dna/KH1Ms/btsdzhP3aNr/AAAAAAAAAAAAAAAAAAAAADWJ4IN4F4421kJwPEligvHTxP9_6XxptxSb1gzzpMYj/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1751295599&allow_ip=&allow_referer=&signature=3OcM%2FZDaQXswQ0CSn9aFlbQVISY%3D
===Q2.
SELECT DISTINCT JOB
FROM EMP;
!https://blog.kakaocdn.net/dna/dd2SLI/btsdIH6Yq9A/AAAAAAAAAAAAAAAAAAAAAJaIzyRbcLHq1dxIquS8CX_djHcKhh5p6VHfcjLPQah-/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1751295599&allow_ip=&allow_referer=&signature=w1Akbng57ctEsEWSYMPKjnAfNFs%3D
===Q3.
SELECT EMPNO AS EMPLOYEE_NO,
ENAME AS EMPLOYEE_NAME,
JOB,
MGR AS MANAGER,
HIREDATE,
SAL AS SALARY,
COMM AS COMMISSION,
DNO AS DEPARTMENT_NO
FROM EMP
ORDER BY DNO DESC, ENAME ASC;
06. 연산자 (Operators)
1) 조건 연산자
WHERE
: 특정 조건을 만족하는 데이터를 필터링.
AND
: 모든 조건을 만족하는 경우 TRUE.
OR
: 하나 이상의 조건을 만족하는 경우 TRUE.
2) 산술 연산자
+
: 덧셈
-
: 뺄셈
*
: 곱셈
/
: 나눗셈
3) 비교 연산자
=
: 두 값이 같으면 TRUE.
!=
, <>
, ^=
: 두 값이 다르면 TRUE.
<
, >
, <=
, >=
: 대소 비교 연산.
4) 범위 및 집합 연산자
BETWEEN A AND B
: 값이 A와 B 사이에 있으면 TRUE.
NOT BETWEEN A AND B
: 값이 A와 B 사이에 없으면 TRUE.
IN (값1, 값2, ...)
: 값이 집합 내에 있으면 TRUE.
NOT IN (값1, 값2, ...)
: 값이 집합 내에 없으면 TRUE.
5) 패턴 매칭 연산자
LIKE '패턴'
: 문자열이 주어진 패턴과 일치하면 TRUE.
%
: 0개 이상의 문자를 의미.
_
: 단일 문자를 의미.
NOT LIKE '패턴'
: 패턴과 일치하지 않으면 TRUE.
6) NULL 연산자
IS NULL
: 값이 NULL이면 TRUE.
IS NOT NULL
: 값이 NULL이 아니면 TRUE.
7) 집합 연산자
UNION
: 두 쿼리의 결과를 합집합으로 반환, 중복 제거.
UNION ALL
: 중복 허용하는 합집합.
MINUS
: 첫 번째 쿼리에서 두 번째 쿼리를 뺀 차집합.
INTERSECT
: 두 쿼리의 교집합.
연산자 우선 순위
- 산술 연산자 > 비교 연산자 > 논리 연산자 순으로 처리됨.