6장. sql - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-sql(1).pdf · 테이블 이름과...
TRANSCRIPT
6장. SQL
SQL이 무엇인지 개념을 설명
할 수 있다.SQL이 무엇인지 개념을 설명
할 수 있다.테이블을 생성, 변경, 제거할
수 있다.테이블을 생성, 변경, 제거할
수 있다.
데이터를 검색, 갱신, 삽입, 삭
제할 수 있다.데이터를 검색, 갱신, 삽입, 삭
제할 수 있다.
뷰, 시스템 카탈로그, 저장 프
로시저, 트리거에 대한 개념
을 설명할 수 있다.
뷰, 시스템 카탈로그, 저장 프
로시저, 트리거에 대한 개념
을 설명할 수 있다.
학습목표
2
SECTION 01 SQL의 개요
- 1-1 SQL의 역사
- 1-2 SQL의 유형별 종류
SECTION 02 데이터 정의어(DDL)
- 2-1 스키마
- 2-2 테이블 생성(CREATE TABLE)
- 2-3 테이블 변경(ALTER TABLE)
- 2-4 테이블 제거(DROP TABLE)
- 2-5 제약조건
목차
3
SECTION 03 데이터 조작어(DML)
- 3-1 데이터 검색(SELECT)
- 3-2 데이터 삽입(INSERT)
- 3-3 데이터 갱신(UPDATE)
- 3-4 데이터 삭제(DELETE)
SECTION 04 뷰
- 4-1 뷰의 생성
- 4-2 뷰의 내부 구조
- 4-3 뷰의 수정과 제거
목차
4
SECTION 05 저장 프로시저
- 5-1 저장 프로시저 생성하기
- 5-2 저장 프로시저 수정하기
- 5-3 저장 프로시저 제거하기
-
SECTION 06 트리거
- 4-1 트리거 생성
- 4-2 DDL 트리거 수정
목차
5
6장. SQL
SQL
데이터베이스와 SQL문
SQL
- 데이터베이스에 저장된 데이터를 조회, 입력, 수정, 삭제하는 등의 조작이나, 테이블을 비롯한
다양한 객체(시퀀스, 인덱스 등)를 생성 및 제어하는 역할
1 SQL
6
SQL은 사용자와 데이터베이스 시스템 간에 의사소통을 하기 위한 언어.SQL
129 Page
6장. SQL
SQL
- 1974년에 IBM 연구소에서 데이터베이스 시스템, “시스템 R”을 질의하기 위해서 만들어진 구
조화된 언어
- Structured English Query Language라고 이름을 지음
- SQL은 이후 IBM의 DB2와 SQL/DS 데이터베이스 시스템에서도 구현
SQL 발전 역사
1-1 SQL의 역사
6 SQL
7
SEQUELStructured English Query Language의 약어로서 시스템 R 프로젝트에서 처음 제안됨
SQLStructured Query Language의 약어로서 1983년 IBM의 DB2, 1991년 IBM의SQL/DS에서 사용됨
SQL-861986년 미국 표준 연구소(ANSI)와 1987년 국제 표준 기구(ISO)에서 표준 언어로채택
SQL-89 무결성 제약조건 강화
SQL2(SQL-92) 1992년 새로운 데이터베이스 조작어 기능 추가
SQL3(SQL-99) 1999년 객체 지향과 순환 멀티미디어 기능 추가
SQL4(SQL-2003) 2003년 객체 개념을 지원하는 기능 추가
6장. SQL
대화식 SQL
- 화면에 명령을 넣고, 결과가 바로 화면으로 나오는 방식(T-SQL, PL/SQL)
내포된 SQL
- Java, COBOL, C, C++ 등과 같은 고급 프로그래밍 언어 사이에 SQL문을 끼어 넣는 방식
1-2 SQL의 유형별 종류
6 SQL
8
131 Page
6장. SQL
내포된 SQL
- Java, COBOL, C, C++ 등과 같은 고급 프로그래밍 언어 사이에 SQL문을 끼어 넣는 방식
1-2 SQL의 유형별 종류
6 SQL
9
131 Page
SQL이 호스트 언어의 완전한 표현력을 갖고
있지않기때문에모든질의를 SQL로표현할수는없음
C, 자바 등의 언어로 작성하는 프로그램에
SQL문을 삽입하여, 데이터베이스를 접근하는
부분을 SQL이 맡고 SQL에 없는 기능은 호스트언어로작성하는것이필요
호스트 언어에 포함되는 SQL문을 내포된
SQL이라부름
호스트 언어로 작성 중인 프로그램에 SQL문을내포시킬 때 해당 호스트 언어의 컴파일러가 어떻게
호스트언어의문과 SQL문을구별할것인가? 호스트언어로작성중인프로그램에포함된
SQL문에는 반드시 문장의 앞부분에 EXECSQL을붙여서구별함 EXEC SQL은 EXEC SQL부터 세미콜론(;)사이에 들어 있는 문장이 내포된 SQL문임을전컴파일러에게알림
EXEC SQL 내포된. . .SQL. . .내용 ;
6장. SQL
DDL, DML, DCL
1-2 SQL의 유형별 종류
6 SQL
10
131 Page
6장. SQL
SQL 명령문의 유형
1-2 SQL의 유형별 종류
6 SQL
11
유형 명령문
DQL:Data Query Language(데이터 검색) SELECT(데이터 검색 시 사용)
DML:Data Manipulation Language(데이터 조작어)-데이터 변경 시 사용
INSERT (데이터 입력)UPDATE (데이터 수정)DELETE (데이터 삭제)
DDL:Data Definition Language(데이터 정의어)-객체 생성 및 변경 시 사용
CREATE (데이터베이스 생성)ALTER (데이터베이스 변경)DROP (데이터베이스 삭제)RENAME (데이터베이스 객체이름 변경)TRUNCATE (데이터베이스 저장 공간 삭제)
TCL:Transaction Control Language(트랜잭션 처리어)
COMMIT (트랜잭션의 정상적인 종료처리)ROLLBACK (트랜잭션 취소)SAVEPOINT (트랜잭션 내에 임시 저장점 설정)
DCL:Data Control Language(데이터 제어어)
GRANT (데이터베이스에 대한 일련의 권한 부여)REVOKE (데이터베이스에 대한 일련의 권한 취소)
6장. SQL
SQL의 인터페이스와 구성요소
1-2 SQL의 유형별 종류
6 SQL
12
132 Page
6장. SQL
데이터 정의어(DDL)
DDL 명령문의 종류
2 데이터 정의어(DDL)
13
133 Page
SQL문 내용
CREATE 데이터베이스 및 객체 생성
DROP 데이터베이스 및 객체 삭제
ALTER 기존에 존재하는 데이터베이스 객체를 변경
6장. SQL
스키마
- 하나의 응용(사용자)에 속하는 테이블과 기타 구성요소(릴레이션, 도메인, 제약조건, 뷰, 권한)
등을 그룹 짓기 위해서 나온 개념
- 사용자 개체와 데이터베이스 개체 사이에 스키마 개체라는 독립적인 저장소 개체를 지정하고,
이를 통해 사용자 개체와 특정 데이터베이스 개체들 간의 독립성을 보장하고 권한 관리의 효
율성을 높임
2-1 스키마
2 데이터 정의어(DDL)
14
6장. SQL
스키마
- 스키마는 CREATE SCHEMA 명령문으로 생성
이름이 SCOTT인 사용자가 MY_SCHEMA를 생성한 예
사용하던 스키마를 제거
2-1 스키마
2 데이터 정의어(DDL)
15
CREATE SCHEMA MY_SCHEMA AUTHORIZATION SCOTT;예
DROP SCHEMA MY_SCHEMA;예
6장. SQL
SQL Server에서 SSMS를 사용한 데이터베이스 생성하기
- 쿼리 편집기
- 쿼리 편집기에 다음과 같이 입력한 후 <실행>을 클릭
2-1 스키마
2 데이터 정의어(DDL)
16
USE masterGO
예
135 Page
6장. SQL
SQL Server Management Studio의 각 창과 역할
2-1 스키마
2 데이터 정의어(DDL)
17
개체 탐색기 서버 탐색, 개체 작성 및 로그 보기 등을 수행할 수 있다.
쿼리 편집기개체들을 액세스하거나 생성하는 쿼리를 작성하는 부분이며 작성된 스크립트는 별도의 스크립트(.sql) 파일로 저장 가능하다.
결과 및 메시지 창개체를 SELECT 하면 결과를 표나 텍스트 등으로 보여주며 개체를생성하거나 삭제, 업데이트 등의 결과를 나타낸다.
6장. SQL
SQL Server Management Studio의 각 창
2-1 스키마
2 데이터 정의어(DDL)
18
136 Page
6장. SQL
쿼리 분석기를 실행한 후 아래 T-SQL 구문을 작성
- 데이터베이스 생성
2-1 스키마
2 데이터 정의어(DDL)
19
CREATE DATABASE EduManager예
136 Page
6장. SQL
쿼리 편집기 살피기
2-1 스키마
2 데이터 정의어(DDL)
20
SQL Server에서 SQL문을 입력하는 곳이 쿼리 편집기이다. 쿼리 편집기는SQL문을 입력하고,실행하는 텍스트 에디터이다. 쿼리 편집기를 사용하기 위한방법은 다음과 같다.
① 쿼리를 실행할 대상 서버(인스턴스)를 선택한다.② <새 쿼리>를 클릭하여 쿼리 편집기를 연다.③ SQL 구문을 입력한다.④ <실행> 버튼을 눌러 SQL 문장을 실행한다.
Tip
6장. SQL
CREATE TABLE 형식
- “[ ]”로 묶인 부분은 생략 가능한 부분이고, “{ }”로 묶인 부분은 중복 가능 부분을 나타냄
- +는 1번 이상, *는 0번 이상 반복을 나타냄
- +나 * 앞에 ,는 요소들이 여러 번 반복되어 형식 될 수 있음을 나타냄
2-2 테이블 생성(CREATE TABLE)
2 데이터 정의어(DDL)
21
CREATE TABLE 테이블이름
( {열이름 데이터타입 [NOT NULL] [DEFAULT 값], }+
[PRIMARY KEY (열이름_리스트),]
{[UNIQUE (열이름_리스트),] }*
{[FOREIGN KEY(열이름_리스트)
REFERENCES 기본테이블[(열이름_리스트)]
[ON DELETE 옵션]
[ON UPDATE 옵션] ,] } *
[CONSTRAINT 이름] [CHECK(조건식)]);
6장. SQL
CREATE TABLE
- CREATE TABLE문 다음에는 테이블 이름을 기술
- 칼럼에 대해서 칼럼 이름과 함께 데이터 타입과 제약조건을 명시
- CREATE TABLE 문은 세미콜론 “;”으로 끝나야 함
이름을 주는 기본 규칙
- 1개의 테이블에는 여러 개의 칼럼이 존재하므로 각 칼럼들은 콤마”,”로 구분되고, 각 칼럼의 데
이터 타입은 반드시 지정되어야 함
2-2 테이블 생성(CREATE TABLE)
2 데이터 정의어(DDL)
22
1. 테이블 이름과 칼럼은 A~Z까지의 문자, 0~9까지의 숫자,그리고$,#,_(Under Bar)를 사용할 수 있다. 그러나 공백은 사용할 수 없다.
2. 테이블의 칼럼은 30자를 초과할 수 없고, 예약어를 사용할 수 없다.
3. 한 테이블 안에서 칼럼 이름은 같을 수 없으며 다른 테이블에서의 칼럼이름과는 같을 수 있다.
6장. SQL
SQL Server의 대표 데이터 타입의 종류
2-1 스키마
2 데이터 정의어(DDL)
23
이름 범위 및 설명 비고
bigint-263(-9,223,372,036,854,775,808) ~263-1(9,223,372,036,854,775,807)
정확한 수치
int-231(-2,147,483,648) ~231-1(2,147,483,647)
고정 실수형
smallint -215(-32,768) ~ 215-1(32,767) 통화
tinyint 0 ~ 255 근사치
bit 0,1 날짜 및 시간
decimal - 1038+1 ~ 1038-1 문자열
numeric - 1038+1 ~ 1038-1 유니코드 문자열
money-922,337,203,685,477.5808 ~922,337,203,685,477.00
이진 문자열
smallmoney - 214,748.3648 ~ 214,748.3647 기타 데이터 형식
6장. SQL
SQL Server의 대표 데이터 타입의 종류
2-1 스키마
2 데이터 정의어(DDL)
24
float[n]- 1.79E+308 ~ -2.23E-308,0과 2.23E-308 ~ 1.79E+308
n=1~244바이트
n=25~538바이트
real- 3.40E+38 ~ 1.18E-38,0과 1.18E-38 ~ 3.40E+38
4바이트
datetime 1753/1/1~9999/12/31 8바이트
smalldatetime 1900/1/1~2079/6/6 4바이트
char[n] n=1~8000 n바이트
varchar[n] n=1~8000 실제 데이터 값
text 최대 231 - 1(2,147,483,647)자최대 2,147,483,647바이트
nchar n=1~4000 n바이트*2
nvarchar n=1~4000 실제 데이터 값*2
ntext 최대 230 - 1(1,073,741,823)자 입력된 문자 수의 두 배
binary[n] n=1~8000 n바이트+4
varbinary 1부터 8,000 실제 데이터 값+4
6장. SQL
SQL Server의 대표 데이터 타입의 종류
2-1 스키마
2 데이터 정의어(DDL)
25
이름 범위 및 설명 비고
image 최대 231-1(2,147,483,647)자
cursor커서에 대한 참조가 들어 있는 변수 또는 저장 프로시저OUTPUT 매개 변수의 데이터 형식
sql_varianttext, ntext, image, timestamp 및 sql_variant를 제외한, SQLServer 2005에서 지원하는 여러 가지 데이터 형식의 값을 저장하는 데이터 형식
table 결과 집합을 저장할 수 있는 특별한 데이터 형식
timestamp데이터베이스 내에서 자동으로 생성된 고유 이진 숫자를 표시하는 데이터 형식
uniqueidentifier 16바이트 GUID
XML XML 데이터를 저장하는 데이터 형식
6장. SQL
과정 정보를 저장하는 COURSE 테이블을 생성
학생 정보를 저장하는 STUDENT 테이블을 생성
2-2 테이블 생성(CREATE TABLE)
2 데이터 정의어(DDL)
26
1:2:3:4:5:6:7:
CREATE TABLE COURSE (COU_ID INT NOT NULL, -- 과정 번호COU_NAME VARCHAR(20) NULL, -- 과정명TEA_NAME VARCHAR(20) NULL, -- 강사명PRIMARY KEY(COU_ID) -- 과정 번호를 기본키로 지정
)GO
1:2:3:4:5:6:7:8:9:10:11:
CREATE TABLE STUDENT (STU_ID INTEGER NOT NULL, -- 학생번호, 널 값 허용 안 함STU_NAME VARCHAR(20) NULL, -- 학생명AGE INTEGER NULL, -- 나이STU_EMAIL VARCHAR(20) NULL, -- 이메일COU_ID INTEGER NULL, -- 소속된 과정의 과정 번호PRIMARY KEY(STU_ID), -- 학생번호를 기본키로 지정-- -- 과정 번호를 외래키로 지정FOREIGN KEY(COU_ID) REFERENCES COURSE(COU_ID)
)GO
6장. SQL
SQL 주석문
2-2 테이블 생성(CREATE TABLE)
2 데이터 정의어(DDL)
27
각 줄에 기술한 문장이 무엇인지를 개발자에게 설명하기 위해서는 주석문을작성해야 한다. 한 줄 주석은 하이픈 두개(--), 여러 줄 주석은(/* ~ */) 로 시작하며실행을 시켰을 경우 주석 처리한 문장은 실행하지 않는다.
Tip
6장. SQL
SQL Server에서 테이블 생성하기
- 과정 테이블 생성
2-2 테이블 생성(CREATE TABLE)
2 데이터 정의어(DDL)
28
140 Page
6장. SQL
SQL Server에서 테이블 생성하기
- 학생 테이블 생성
2-2 테이블 생성(CREATE TABLE)
2 데이터 정의어(DDL)
29
141 Page
6장. SQL
ALTER TABLE 명령
- 학생(STUDENT) 테이블에 성별을 구분하기 위한 칼럼을 추가
- ALTER TABLE 명령문을 사용
2-3 테이블 변경(ALTER TABLE)
2 데이터 정의어(DDL)
30
ALTER TABLE 테이블명
([ADD 칼럼명 데이터_타입] [DEFAULT 값] |
[DROP 칼럼명] [CASCADE] |
[ALTER 칼럼명 (DROP DEFAULT | SET DEFAULT 값)]);
1:2:
ALTER TABLE STUDENTADD SEX VARCHAR DEFAULT 'M';
6장. SQL
테이블 구조 변경
2-3 테이블 변경(ALTER TABLE)
2 데이터 정의어(DDL)
31
142 Page
6장. SQL
DROP TABLE 명령
테이블 제거 실패
2-4 테이블 제거(DROP TABLE)
2 데이터 정의어(DDL)
32
DROP TABLE COURSE;예
142 Page
6장. SQL
DROP TABLE 명령
테이블 제거 성공
2-4 테이블 제거(DROP TABLE)
2 데이터 정의어(DDL)
33
1:2:3:
DROP TABLE STUDENTDROP TABLE COURSEGO
143 Page
6장. SQL
데이터 무결성 제약 조건(Data Integrity Constraint Rule)
정확성을 유지
2-5 제약조건
2 데이터 정의어(DDL)
34
ㆍ테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서ㆍ테이블을 생성할 때 각 칼럼에 대해서 형식 하는 여러 가지 규칙
데이터 무결성제약 조건
(Data IntegrityConstraint
Rule)
ㆍ데이터베이스 내에 데이터의 정확성을 유지하는 것을 의미한다.무결성
6장. SQL
기본키 제약 조건
- 과정 번호 칼럼이 반드시 입력되고 유일한 값만을 가질 수 있도록 하는 다양한 무결성 제약 조
건들 중의 한 가지
NOT NULL을 명시
- SQL 칼럼 값으로 널 값을 허용하기 때문에 만일 특정 칼럼에 널 값을 허용하지 않도록 하려면
제약조건
기본키
- 과정(COURSE) 테이블에서 과정들을 구분하기 위해서 과정 번호는 널 값을 저장할 수 없음
- 중복된 값을 저장할 수 없도록 하는 개체 무결성을 유지하기 위해서 과정 번호(COU_ID)를
기본키로 지정
2-5 제약조건
2 데이터 정의어(DDL)
35
6장. SQL
과정 테이블의 기본키 제약조건-1
2-5 제약조건
2 데이터 정의어(DDL)
36
145 Page
과정 번호(COU_ID) 칼럼은 중복된값을 저장할 수 없는 기본키이다.
COURSE 테이블에10번 과정이 이미존재하고 있기때문에 10번 과정을추가하려고 했을 때에러가 발생한다.
6장. SQL
과정 테이블의 기본키 제약조건-2
2-5 제약조건
2 데이터 정의어(DDL)
37
145 Page
6장. SQL
기본키
2-5 제약조건
2 데이터 정의어(DDL)
38
ㆍ과정 번호 칼럼이 반드시 입력되고 유일한 값만을 가질 수 있도록 하는 것ㆍ데이터베이스에서 제공하는 다양한 무결성 제약 조건들 중의 한 가지
기본키
6장. SQL
제약 조건을 5가지
2-5 제약조건
2 데이터 정의어(DDL)
39
NULL을 허용하지 않음
중복된 값을 허용하지 않고, 항상 유일한 값을 갖도록 함
NULL을 허용하지 않음. 중복된 값을 허용하지 않음NOT NULL 조건과 UNIQUE 조건을 결합한 형태임
참조되는 테이블의 칼럼의 값이 존재하면 허용함
저장 가능한 데이터 값의 범위나 조건을 지정해 설정한 값만을 허용함
146 Page
6장. SQL
필수 입력을 위한 NOT NULL 제약 조건
- 널 값 허용
2-5 제약조건
2 데이터 정의어(DDL)
40
147 Page
6장. SQL
필수 입력을 위한 NOT NULL 제약 조건
- 부정확한 회원 정보
NOT NULL 제약 조건
- 해당 칼럼에 데이터를 추가하거나 수정할 때 NULL 값이 저장되지 않게 제약을 걸어주는 것
- 주민번호와 이름과 같이 자료가 꼭 입력되게 하고 싶을 때 사용
2-5 제약조건
2 데이터 정의어(DDL)
41
147 Page
ㆍ해당 칼럼에 데이터를 추가하거나 수정할 때 NULL 값이 저장되지않게 제약을 걸어주는 것
ㆍ아이디나 이름과 같이 자료가 꼭 입력되게 하고 싶을 때 사용
NOT NULL제약 조건
6장. SQL
NOT NULL 제약조건을 설정하지 않고 테이블 생성하기
- 회원 테이블을 생성
2-5 제약조건
2 데이터 정의어(DDL)
42
CREATE TABLE member(
id varchar(20),
pwd varchar(20),
name varchar(20),
email varchar(20),
hp varchar(20)
)
6장. SQL
NOT NULL 제약조건을 설정하지 않고 테이블 생성하기
- 널 허용한 테이블 생성
2-5 제약조건
2 데이터 정의어(DDL)
43
148 Page
6장. SQL
NOT NULL 제약조건을 설정하지 않고 테이블 생성하기
- 테이블 생성 확인
2-5 제약조건
2 데이터 정의어(DDL)
44
SELECT * FROM member
148 Page
6장. SQL
NOT NULL 제약조건을 설정하지 않고 테이블 생성하기
- 제약조건이 불충분한 테이블로 의미 없는 정보 입력
2-5 제약조건
2 데이터 정의어(DDL)
45
INSERT INTO member
VALUES(NULL,NULL,NULL, ’[email protected]’, ’1063385361’)
SELECT * FROM member
INSERT문에자료가삽입될칼럼을지정하지않았으므로기본칼럼순서대로 VALUES 절의자료가삽입됨.칼럼에NULL값이저장됨
6장. SQL
NOT NULL 제약조건을 설정하지 않고 테이블 생성하기
- 제약조건이 불충분한 테이블로 의미 없는 정보 입력
2-5 제약조건
2 데이터 정의어(DDL)
46
149 Page
6장. SQL
제약조건 지정형식
NOT NULL 제약조건을 설정하여 테이블 생성하기
- NOT NULL 제약 조건을 설정
2-5 제약조건
2 데이터 정의어(DDL)
47
column_name data_type constraint_type
DROP TABLE member
GO
CREATE TABLE member(
id varchar(20) NOT NULL,
pwd varchar(20) NOT NULL,
name varchar(20) NOT NULL,
email varchar(20) NULL,
hp varchar(20) NULL
)
member테이블이존재하면다시생성되지않기에일단member테이블제거
테이블생성시칼럼에 NOT NULL제약조건설정
6장. SQL
필수 입력을 위한 NOT NULL 조건 지정
- 필수 입력을 위한 NOT NULL 조건 지정
2-5 제약조건
2 데이터 정의어(DDL)
48150 Page
6장. SQL
필수 입력을 위한 NOT NULL 조건 지정
- 성한 member 테이블에 데이터를 추가
필수 입력을 위한 NOT NULL 조건 지정
- 필수 입력 요구
2-5 제약조건
2 데이터 정의어(DDL)
49
NSERT INTO member
VALUES(NULL, NULL, NULL, ‘[email protected]’, ’01063385361’)
INSERT문에자료가삽입될칼럼을지정하지않았으므로기본칼럼순서대로 VALUES 절다음에기술한값을저장.
151 Page
6장. SQL
필수 입력을 위한 NOT NULL 조건 지정
- member 테이블에 아이디와 패스워드, 이름에 NULL 값이 아닌 값을 지정
필수 입력을 위한 NOT NULL 조건 지정
- 정확한 정보 입력
2-5 제약조건
2 데이터 정의어(DDL)
50
INSERT INTO member
VALUES(‘moon’, ‘Y’, ’문종헌’, ’[email protected]’, ’01063385361’)
SELECT * FROM member
151 Page
6장. SQL
유일한 값만을 저장하기 위한 UNIQUE 제약 조건
- UNIQUE 제약 조건이란 특정 칼럼에 대해 자료가 중복되지 않게 하는 것
2-5 제약조건
2 데이터 정의어(DDL)
51
ㆍ 특정 칼럼에 대해 자료가 중복되지 않게 하는 것ㆍ 지정된 칼럼에는 유일한 값이 수록되게 하는 것
UNIQUE제약 조건
6장. SQL
동일한 아이디로 구분 불가능
2-5 제약조건
2 데이터 정의어(DDL)
52
ㆍ 아이디 칼럼에 UNIQUE KEY 제약 조건을 지정하면 중복된 값을 저장할 수 없음
152 Page
6장. SQL
UNIQUE 제약조건을 설정하여 테이블 생성하기
- member 테이블을 생성하되 아이디를 유일키로 지정
- 제약 조건은 칼럼 명과 자료형을 기술한 후에 연이어서 UNIQUE를 기술
2-5 제약조건
2 데이터 정의어(DDL)
53
DROP TABLE member
GO
CREATE TABLE member(
id varchar(20) UNIQUE,
pwd varchar(20) NOT NULL,
name varchar(20) NOT NULL,
email varchar(20) NULL,
hp varchar(20) NULL
)
GO
테이블생성시칼럼에 UNIQUE를기술하면해당칼럼은중복된값을허용하지않는제약조건이설정된다.
6장. SQL
UNIQUE 제약조건을 설정하여 테이블 생성하기
- UNIQUE 제약조건 설정
2-5 제약조건
2 데이터 정의어(DDL)
54153 Page
6장. SQL
UNIQUE 제약조건을 설정하여 테이블 생성하기
- 생성한 member 테이블에 데이터를 추가
UNIQUE 제약조건을 설정하여 테이블 생성하기
- 데이터 삽입
2-5 제약조건
2 데이터 정의어(DDL)
55
INSERT INTO member
VALUES(‘moon’, ‘Y’, ’문종헌’, ’[email protected]’, ’01063385361’)
SELECT * FROM member
154 Page
6장. SQL
UNIQUE 제약조건을 설정하여 테이블 생성하기
- ‘moon’이란 자료를 입력하였는데 다시 동일한 아이디를 입력
UNIQUE 제약조건을 설정하여 테이블 생성하기
- 아이디 중복 허용 안 함
2-5 제약조건
2 데이터 정의어(DDL)
56
INSERT INTO member
VALUES(‘moon’, ‘SOL’, ’ 오한솔’, ’[email protected]’, ’01011113121’)
154 Page
6장. SQL
개체의 무결성을 위한 PRIMARY KEY 제약 조건
- 유일키 제약 조건의 널 값 허용
2-5 제약조건
2 데이터 정의어(DDL)
57
테이블 내의 해당 행을 다른 행과 구분할 수 있도록 하는 칼럼은 반드시 존재해야 함
유일하면서도 NULL값을허용하지말아야함155 Page
6장. SQL
개체의 무결성을 위한 PRIMARY KEY 제약 조건
2-5 제약조건
2 데이터 정의어(DDL)
58
ㆍ UNIQUE 제약 조건과 NOT NULL 제약 조건을 모두 갖는 것기본키
(PRIMARY KEY)제약 조건
PRIMARY KEY는 NOT NULL 조건과 UNIQUE 조건을 결합한 형태로서 NULL을허용하지 않고 중복된 값을 허용하지 않는다. 테이블에 하나만 선언할 수 있다.
6장. SQL
PRIMARY KEY 제약조건 설정하기
- 칼럼 명과 자료형을 기술한 후에 연이어서 PRIMARY KEY를 기술
2-5 제약조건
2 데이터 정의어(DDL)
59
CREATE TABLE member(
id varchar(20) CONSTRAINT PK_id PRIMARY KEY,
pwd varchar(20) CONSTRAINT NN_pwd NOT NULL,
name varchar(20) CONSTRAINT NN_name NOT NULL,
email varchar(20) NULL,
hp varchar(20) NULL
)
GO
6장. SQL
PRIMARY KEY 제약조건 설정하기
- 기본키 제약 조건 설정
2-5 제약조건
2 데이터 정의어(DDL)
60156 Page
6장. SQL
PRIMARY KEY 제약조건 설정하기
- 기본키로 지정된 아이디에 동일한 값을 저장
2-5 제약조건
2 데이터 정의어(DDL)
61
INSERT INTO member
VALUES(‘moon’, ‘Y’,’문종헌’,’[email protected]’,’01063385361’)
INSERT INTO member
VALUES(‘moon’, ‘SOL’,’ 오한솔’,’[email protected]’,’01011113121’)
6장. SQL
PRIMARY KEY 제약조건 설정하기
- 중복 허용하지 않는 기본키 제약 조건
2-5 제약조건
2 데이터 정의어(DDL)
62
157 Page
6장. SQL
PRIMARY KEY 제약조건 설정하기
- 본키로 지정된 아이디에 NULL 값을 저장
PRIMARY KEY 제약조건 설정하기
- 널 값 허용하지 않는 기본키 제약 조건
2-5 제약조건
2 데이터 정의어(DDL)
63
INSERT INTO member
VALUES(NULL, ‘Y’,’문종헌’,’[email protected]’,’01063385361’)
157 Page
6장. SQL
참조의 무결성을 위한 FOREIGN KEY 제약 조건
참조의 무결성을 위한 FOREIGN KEY 제약 조건
- 과정 테이블
2-5 제약조건
2 데이터 정의어(DDL)
64
ㆍ테이블 사이의 관계에서 발생하는 개념참조의 무결성
ㆍ일반적으로 업무 규칙에서 주종 관계가 있는두 테이블 간에 사용되며 종속되는 테이블의키 칼럼이 주가 되는 테이블의 PRIMARY KEY또는 UNIQUE 칼럼을 참조함
FOREIGN KEY
158 Page
6장. SQL
참조의 무결성을 위한 FOREIGN KEY 제약 조건
- 학생 테이블
2-5 제약조건
2 데이터 정의어(DDL)
65
[학생 테이블과 과정 테이블의 관계]
ㆍ과정 테이블에 존재하지 않는 과정 번호 존재
- 이치에 맞지 않음.
- 무결해야 한다는 조건에 위배됨.
ㆍ과정 테이블에 존재하는 과정 번호만 입력
- 참조의 무결성
- 학생 테이블의 과정 번호 칼럼에 외래키 제약 조
건 명시
159 Page
6장. SQL
참조의 무결성을 위한 FOREIGN KEY 제약 조건
- 참조의 무결성을 위한 외래키 제약 조건을 설정할 때 중요한 개념
2-5 제약조건
2 데이터 정의어(DDL)
66
160 Page
6장. SQL
ERD를 보고 데이터베이스를 구현할 때
- 과정이나 학생과 같은 개체는 테이블로, 형식하고 소속이란 관계
- 조의 무결성을 위한 특정 칼럼에 외래키 제약 조건으로 정의
- “학생은 교육센터 내에 존재하는 과정에 수강해야 한다.”
참조의 무결성을 위한 부모, 자식 테이블 관계
2-5 제약조건
2 데이터 정의어(DDL)
67
161 Page
6장. SQL
과정 테이블과 학생 테이블 관계
2-5 제약조건
2 데이터 정의어(DDL)
68
161 Page
COU_ID가 부모 키가되려면 기본키 혹은UNIQUE 제한 조건으로지정되어야 함
학생 테이블에서외래키인 COU_ID는과정 테이블의기본키인 COU_ID를참조하므로 과정테이블에 존재하는과정 번호만 입력가능함. 과정 테이블내의 COU_ID를부모 키라고 함
6장. SQL
무결성 제약 조건에 위배
2-5 제약조건
2 데이터 정의어(DDL)
69
162 Page
COURSE 테이블에는 10,20, 30, 40만 존재하기에50번 과정에 새로운학생을 추가할 수 없다.
6장. SQL
참조 무결성을 유지하기 위해서 학생(STUDENT) 테이블의 과정 번호(COU_ID)
를 외래키로 지정
칼럼 값의 조건 지정을 위한 CHECK 제약 조건
2-5 제약조건
2 데이터 정의어(DDL)
70
CREATE TABLE STUDENT (
STU_ID INTEGER NOT NULL, -- 학생번호, 널 값 허용 안 함
STU_NAME VARCHAR(20) NULL, -- 학생명
AGE INTEGER NULL, -- 나이
STU_EMAIL VARCHAR(20) NULL, -- 이메일
COU_ID INTEGER NULL, -- 소속된 과정의 과정 번호
PRIMARY KEY(STU_ID), -- 학생번호를 기본키로 지정
-- -- 과정 번호를 외래키로 지정
FOREIGN KEY(COU_ID) REFERENCES COURSE(COU_ID)
)
GO
ㆍ 입력되는 값을 체크하여 설정된 값 이외의 값이 들어오면 오류메시지와함께 명령이 수행되지 못하게 하는 것
ㆍ 조건: 데이터의 값의 범위나 특정 패턴의 숫자나 문자값을 설정
CHECK제약 조건
6장. SQL
CHECK 제약조건 설정하기
2-5 제약조건
2 데이터 정의어(DDL)
71
CREATE TABLE STUDENT (
STU_ID INTEGER NOT NULL, -- 학생번호, 널 값 허용 안 함
STU_NAME VARCHAR(20) NULL, -- 학생명
AGE INTEGER NULL CHECK(AGE < 30), -- 나이
STU_EMAIL VARCHAR(20) NULL, -- 이메일
COU_ID INTEGER NULL, -- 소속된 과정의 과정 번호
SEX VARCHAR NULL DEFAULT ‘M’, -- 성별
PRIMARY KEY(STU_ID), -- 학생번호를 기본키로 지정
-- -- 과정 번호를 외래키로 지정
FOREIGN KEY(COU_ID) REFERENCES COURSE(COU_ID)
)
GO
6장. SQL
CHECK 제약조건
2-5 제약조건
2 데이터 정의어(DDL)
72
164 Page
6장. SQL
CHECK 제약조건 설정하기
- 생성한 테이블에 데이터를 추가
CHECK 제약조건 설정하기
- check 제약 조건 위배-1
2-5 제약조건
2 데이터 정의어(DDL)
73
NSERT INTO STUDENT VALUES(116,’장희성’, 34,’[email protected]’,10,’M’)
164 Page
6장. SQL
SQL Server에서 SQL 파일 실행하여 샘플 테이블 생성하기
- SQL 파일을 불러오기
3 데이터 조작어(DML)
74
165 Page
6장. SQL
SQL Server에서 SQL 파일 실행하여 샘플 테이블 생성하기
- SQL 파일 실행하기
3 데이터 조작어(DML)
75
166 Page