정보처리기사/데이터베이스 구축
SQL 1
RangA
2023. 5. 27. 04:30
01. SQL 명령어
01. SQL(Structured Query Language)의 개념
1) SQL의 정의
- 관계형 데이터 모델을 따르는 DBMS의 표준 데이터베이스 언어
- 관계 대수를 기초로 만들어진 데이터베이스 관련 명령어 형식
- 입력 릴레이션으로부터 원하는 출력 릴레이션을 얻어내는 명령어 형식
2) SQL의 특징
- 영어 문장과 유사하여 초보자들도 쉽게 사용할 수 있음
- 질의 기능 뿐만 아니라 데이터 정의 기능과 조작 기능을 갖추고 있음
3) 내장 SQL
- 프로그래밍 언어인 COBOL, C, Visual Basic, ASP, PHP 등에 포함하여 사용하는 SQL
- 응용 프로그램(혹은 호스트 프로그램) 내에 데이터를 정의하거나 질의하는 SQL 문장을 내포하여 프로그램이 실행될 때 함께 실행되도록 함
- 내장 SQL을 포함한 응용 프로그램을 할 때 컴파일 시 선행 처리기에 의해 내장 SQL문은 분리되어 컴파일됨
- 프로그래밍 언어에서 사용하는 변수와 데이터베이스 필드(속성)의 이름은 같아도 됨
- 내장 SQL문의 호스트 변수의 데이터 타입은 이에 대응하는 데이터베이스 필드의 SQL 데이터 타입과 일치해야 함
- 프로그래밍 언어에서 실행문이 기술되는 곳이면 어느 곳에서든 사용할 수 있음
4) SQL 명령어의 분류
- 데이터 정의어(DDL : Data Definition Language)
- 데이터베이스를 정의하거나 그 정의를 수정할 목적으로 사용하는 언어
- 데이터를 저장하고 있는 테이블 등의 구조를 생성하고 변경하기 위하여 사용되는 명령어들
- 논리적, 물리적 데이터의 구조를 정의함
- DBA(데이터베이스 관리자)가 사용하는 언어
- 명령어가 수행되면 이전 상태로 복귀할 수 없으므로 신중히 사용해야 함
- 데이터 조작어(DML : Data Manipulation Language)
- 데이터를 검색, 삽입, 삭제, 갱신할 수 있도록 지원하는 언어
- 사용자와 데이터베이스 관리 시스템 간의 인터페이스를 제공함
- 일반 사용자나 응용 프로그래머가 사용하는 언어
- 트랜잭션 제어어를 활용하여 실행 전 상태로 복귀 가능한 명령어
- 데이터 제어어(DCL : Data Control Language)
- 여러 사용자가 데이터를 공유하여 병행 수행을 제어함
- 무결성을 유지시키면서 내부적으로 여러 가지 규정이나 제약조건 등을 기술하기 위해 사용되는 언어
- 사용자별로 데이터베이스에 접근할 수 있는 권한을 부여하거나 회수함
- DBA가 사용하는 언어
- 데이터 보안을 유지함
02. 데이터 정의어(DDL)
1) DDL 명령어 종류
- 생성
- CREATE : 데이터베이스 오브젝트를 생성함
- 변경
- ALTER : 데이터베이스 오브젝트를 변경함
- 삭제
- DROP : 데이터베이스 오브젝트를 삭제함
- TRUNCATE : 데이터베이스 오브젝트의 내용을 삭제함
2) 테이블 생성(CREATE)
- 신규 생성
// [] : 생략 가능, {} : 반복 가능
CREATE TABLE 테이블명 (
필드명 데이터타입 [DEFAULT 값] [NOT NULL]
{ 필드명 데이터타입 [DEFAULT 값] [NOT NULL] }
[ PRIMARY KEY (필드 리스트)]
{ [ FOREIGN KEY (필드 리스트) REFERENCES 테이블명 [(필드명)]
[ ON DELETE 옵션]
[ ON UPDATE 옵션]}
[ CHECK (조건식) | UNIQUE(필드명) ]);
- 다른 테이블 정보를 이용한 테이블 생성
CREATE TABLE 테이블명 AS SELECT 문;
3) 테이블 변경(ALTER)
- 필드 추가
ALTER TABLE 테이블명 ADD 필드명 데이터타입 [DEFAULT 값];
- 맨 뒤에 필드 추가
ALTER TABLE 테이블명 ADD 필드명 데이터타입;
- 맨 앞에 필드 추가
ALTER TABLE 테이블명 ADD 필드명 데이터타입 FIRST;
- 지정 필드 뒤에 필드 추가
ALTER TABLE 테이블명 ADD 필드명 데이터타입 AFTER 앞 필드명;
- 필드 데이터 타입 변경
ALTER TABLE 테이블명 MODIFY 필드명 데이터타입 [DEFAULT 값];
- 필드 삭제
ALTER TABLE 테이블명 DROP 필드명;
4) 테이블의 삭제와 변경
- 테이블 삭제
DROP TABLE 테이블명 [CASCADE/RESTRICT];
- 테이블 내용 삭제
TRUNCATE TABLE 테이블명;
- 테이블명 변경
RENAME TABLE 이전_테이블명 TO 새로운_테이블명;
ALTER TABLE 이전_테이블명 RENAME 새로운_테이블명;
5) 삭제, 갱신의 제약조건(Constraint)
- 참조된 기본키의 값이 삭제될 경우
- CASCADE : 참조한 테이블에 있는 외래키와 일치하는 모든 행이 삭제됨
- RESTRICT : 참조한 테이블에 있는 외래키에 없는 것만 삭제 가능
- NULLIFY : 참조한 테이블에 정의된 외래키와 일치하는 것을 NULL로 수정함
- 참조된 기본키의 값이 수정될 경우
- CASCADE : 참조한 테이블에 있는 외래키와 일치하는 모든 행이 수정됨
- RESTRICT : 참조한 테이블에 있는 외래키에 없는 것만 수정 가능
- NULLIFY : 참조한 테이블에 정의된 외래키와 일치하는 것을 NULL로 수정함(해당 컬럼이 NULL을 허용할 경우만 수정 가능)
6) 제약조건 유형
- PRIMARY KEY(기본키)
- 테이블의 기본키를 정의함
- 기본으로 NOT NULL, UNIQUE 제약이 포함
- FOREIGN KEY(외래키)
- 외래키를 정의함
- 참조 대상을 테이블명(필드명)으로 명시해야 함
- 참조 무결성 위배 상황 발생 시 처리 방법으로 옵션 지정이 가능함
- 옵션 : NO ACTION, SET DEFAULT, SET NULL, CASCADE
- UNIQUE(유일키)
- 테이블 내에서 필드는 유일한 값을 가져야 함
- 테이블 내에서 동일한 값을 가져서는 안 되는 항목을 지정함
- NOT NULL
- 테이블 내에서 관련 필드의 값은 NULL일 수 없음
- 필수 입력 항목에 대해 제약조건으로 설정함
- CHECK
- 개발자가 정의하는 제약조건
- 상황에 따라 다양한 조건 설정이 가능함
7) 제약조건 변경 SQL 명령문
- 제약조건 추가
ALTER TABLE 테이블명
ADD [CONSTRAINT 제약조건명] 제약조건(필드명);
- 제약조건 삭제
ALTER TABLE 테이블명 CONSTRAINT 지약조건명|테이블명
PRIMARY KEY|FOREIGN KEY(필드명)|UNIQUE(필드명);
- 제약조건 비활성화
ALTER TABLE 테이블명
DISABLE CONSTRAINT 제약조건명;
- 제약조건 활성화
ALTER TABLE 테이블명
ENABLE CONSTRAINT 제약조건명;