New World
[데이터베이스시스템#4,5,6] SQL 본문
1. 데이터베이스 언어
SQL
- 관계대수에 기초하여 RDBMS의 데이터 관리를 위해 설계된 언어
- 비절차적(선언형)언어, 필요한 데이터만 기술
- 구성 : DDL, DML
- DDL : DB의 객체 생성 및 삭제, 조작하는 명령어의 집합
- DML : DDL에 의해 정의된 테이블에 데이터를 조작하는 명령어의 집합, CRUD(생성, 검색, 삭제, 수정) 명령 포함
2. 데이터 정의 언어(DDL)
데이터 저장 : 테이블, 인덱스, 뷰
데이터 조작 : 트리거, 프로시저, 함수
CREATE : 객체 생성
ALTER : 객체 수정
DROP : 객체 삭제
스키마 (=DB) : DB의 운영에 필요한 테이블, 인덱스, 뷰 등의 DB 객체의 집합
스키마 생성 : CREATE SCHEMA 스키마명
스키마 삭제 : DROP SCHEMA 스키마명
데이터 타입의 개념
- 도메인 결정, 컬럼이 가질 수 있는 값의 범위
- 프로그래밍 언어에서의 변수를 생성하는 데이터 타입의 사용목적과 방법이 매우 유사
- 기본 데이터 타입
정수 | 실수 | 날짜 및 시간 | 문자 |
TINYINY : 1바이트 정수(-128~127) |
고정 소수형 - DECIMAL(M, N) : 전체 M 자리, 소수점 이하 N 자리의 숫자 |
날짜 DATE : ‘YYYY-MM-DD’ YEAR : ‘YYYY' |
CHAR(N) : 최대 길이가 N인 고정 길이 VARCHAR(N) : 최대 길이가 N인 가변 길이 |
SMALLINT : 2바이트 정수 (-32768~32767) |
시간 TIME : ‘HH:MI:SS’ |
TEXT, CLOB : 길이가 최대 2~4GB인 가변길이 | |
INT : 4바이트 정수 (약 -20억~20억) |
부동 소수형 - FLOAT : 4바이트 - FLOAT(P) : 소수점 이하 P개 자리 - DOUBLE : 8바이트 |
날자 및 시간 DATETIME(= TIMESTAMP) : ‘YYYY-MM-DD HH:MI:SS’ |
ENUM : 유한개의 문자열 집합 중 하나의 값 선택 |
BIGINT : 8바이트 정수 |
테이블 생성 | 테이블 수정 |
- 존재하는 테이블을 스키마에서 삭제 - 삭제할 테이블의 모든 데이터가 소실, 복구가 불가능 |
제약 조건
- PRIMARY KEY: 기본키 지정, UNIQUE와 NOT NULL 특성
- FOREIGN KEY: 외래키 지정, 참조 컬럼 정의
- NOT NULL : NULL이 될 수 없는 컬럼에 지정
- UNIQUE : 동일한 컬럼값을 가질 수 없음을 지정
- AUTO_INCREMENT : 레코드가 추가될 때 자동적으로 속성값이 1부터 1씩 증가되어 입력
- CHECK : 컬럼값이 특정 조건 준수 여부 지정
3. 데이터 삽입, 수정, 삭제
데이터 조작언어(DML) : 삽입, 수정, 삭제 및 검색에 관여
INSERT : 새로운 레코드를 삽입 | UPDATE : 특정 컬럼값을 수정 |
테이블명만 주어질 때 - INSERT INTO 테이블이름 VALUES(값1 , 값2 , … 값n ) 컬럼명도 주어질 때 - INSERT INTO 테이블이름(컬럼1 , 컬럼2 , … 컬럼m) VALUES(값1 , 값2 , … 값m) |
값만 주어질 때 - UPDATE 테이블이름 SET 컬럼1=값1 [, 컬럼2=값2 , … , 컬럼n =값n ] [WHERE 조건] 수식이 주어질 때 - UPDATE 테이블_이름 SET컬럼1=수식1 [, 컬럼2=수식2 , …, 컬럼n =수식n ] [WHERE 조건] |
DELETE : 레코드 집합을 테이블에서 삭제 | SAFE UPDATES |
DELETE FROM 테이블이름 [WHERE 조건] | - where 절이 없는 update/delete 문은 테이블의 전체 레코드를 변경/삭제 - 의도하지 않은 데이터 변경/삭제 방지를 위해 제공 - 기본키가 아닌 컬럼을 대상으로 수정/삭제 조건을 명시할 경우 실행 여부를 결정 SET SQL_SAFT_UPDATES = 0 또는1 |
4. 데이터 검색
select
- 조건에 만족하는 레코드를 출력
- 관계 대수의 연산자 기능을 모두 포함하는 명령문
- 여러 절을 혼합하여 검색 기능을 구체화
SELECT : 결과에 포함되는 컬럼을 지정 FROM : 질의를 적용할 테이블을 지정 ON/WHERE : 조인 조건/검색할 레코드 조건을 지정 GROUP BY : 레코드를 그룹화하기 위한 그룹 조건을 지정 HAVING : GROUP BY 절이 적용된 결과에 대한 조건을 지정 ORDER BY : 검색 결과의 정렬 기준을 지정 DISTINCT : 중복되는 값 한번만 나오도록 |
단순질의문 : 테이블 내의 컬럼이나 전체 테이블을 검색
조건질의문 : where 절에 조건을 기술하여 검색 (산술, 비교, 논리연산자)
데이터 정렬 : order by 절 이용 (오름차순 : asc, 내림차순 : desc)
특수연산자 : RDB에서만 사용되도록 고안된 연산자 (BETWEEN, LIKE, IN)
함수 : 특정 목적을 수행하도록 반환하는 명령어 집합 (문자, 숫자, 날짜 및 시간함수, 집계함수)
그룹 질의 : 특정 기준으로 레코드를 그룹화하고 각 레코드 그룹에 대해 집계 함수를 적용
중첩 질의 : select 문 내에 select 문이 내포
조인 질의 : 두 개 이상의 테이블에서 데이터를 검색 (내부, 외부 조인)
- 내부 조인 (inner join) : 레코드만 결합
- 자연 조인 (natural join) : 동일한 이름의 컬럼
- 외부 조인 (outer join) : 조인조건에 맞지 않는 레코드도 질의의 결과에 포함 (왼쪽, 오른쪽, 완전 외부)
- 셀프 조인 : 자기 자신과 조인되는 형태, 별칭이 의무적으로 사용
5. 뷰의 사용
뷰 : 가상의 테이블
생성 | 수정 및 삭제 |
'Self-Study > Study' 카테고리의 다른 글
[데이터베이스시스템#9]데이터 저장과 파일 (0) | 2022.05.17 |
---|---|
[데이터베이스시스템#7] 정규화 (0) | 2022.05.17 |
[데이터베이스시스템#3] 관계형 모델 (0) | 2022.05.09 |
[데이터베이스시스템#1, 2] DB의 이해, DB 모델링 (0) | 2022.05.08 |
[이산수학#14] 오토마타와 형식 언어 (0) | 2022.05.08 |