6장. sql - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-sql(1).pdf · 테이블 이름과...

75
6장. SQL

Upload: others

Post on 09-Sep-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

Page 2: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

SQL이 무엇인지 개념을 설명

할 수 있다.SQL이 무엇인지 개념을 설명

할 수 있다.테이블을 생성, 변경, 제거할

수 있다.테이블을 생성, 변경, 제거할

수 있다.

데이터를 검색, 갱신, 삽입, 삭

제할 수 있다.데이터를 검색, 갱신, 삽입, 삭

제할 수 있다.

뷰, 시스템 카탈로그, 저장 프

로시저, 트리거에 대한 개념

을 설명할 수 있다.

뷰, 시스템 카탈로그, 저장 프

로시저, 트리거에 대한 개념

을 설명할 수 있다.

학습목표

2

Page 3: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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

Page 4: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

SECTION 03 데이터 조작어(DML)

- 3-1 데이터 검색(SELECT)

- 3-2 데이터 삽입(INSERT)

- 3-3 데이터 갱신(UPDATE)

- 3-4 데이터 삭제(DELETE)

SECTION 04 뷰

- 4-1 뷰의 생성

- 4-2 뷰의 내부 구조

- 4-3 뷰의 수정과 제거

목차

4

Page 5: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

SECTION 05 저장 프로시저

- 5-1 저장 프로시저 생성하기

- 5-2 저장 프로시저 수정하기

- 5-3 저장 프로시저 제거하기

-

SECTION 06 트리거

- 4-1 트리거 생성

- 4-2 DDL 트리거 수정

목차

5

Page 6: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

SQL

데이터베이스와 SQL문

SQL

- 데이터베이스에 저장된 데이터를 조회, 입력, 수정, 삭제하는 등의 조작이나, 테이블을 비롯한

다양한 객체(시퀀스, 인덱스 등)를 생성 및 제어하는 역할

1 SQL

6

SQL은 사용자와 데이터베이스 시스템 간에 의사소통을 하기 위한 언어.SQL

129 Page

Page 7: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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년 객체 개념을 지원하는 기능 추가

Page 8: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

대화식 SQL

- 화면에 명령을 넣고, 결과가 바로 화면으로 나오는 방식(T-SQL, PL/SQL)

내포된 SQL

- Java, COBOL, C, C++ 등과 같은 고급 프로그래밍 언어 사이에 SQL문을 끼어 넣는 방식

1-2 SQL의 유형별 종류

6 SQL

8

131 Page

Page 9: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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. . .내용 ;

Page 10: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

DDL, DML, DCL

1-2 SQL의 유형별 종류

6 SQL

10

131 Page

Page 11: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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 (데이터베이스에 대한 일련의 권한 취소)

Page 12: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

SQL의 인터페이스와 구성요소

1-2 SQL의 유형별 종류

6 SQL

12

132 Page

Page 13: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

데이터 정의어(DDL)

DDL 명령문의 종류

2 데이터 정의어(DDL)

13

133 Page

SQL문 내용

CREATE 데이터베이스 및 객체 생성

DROP 데이터베이스 및 객체 삭제

ALTER 기존에 존재하는 데이터베이스 객체를 변경

Page 14: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

스키마

- 하나의 응용(사용자)에 속하는 테이블과 기타 구성요소(릴레이션, 도메인, 제약조건, 뷰, 권한)

등을 그룹 짓기 위해서 나온 개념

- 사용자 개체와 데이터베이스 개체 사이에 스키마 개체라는 독립적인 저장소 개체를 지정하고,

이를 통해 사용자 개체와 특정 데이터베이스 개체들 간의 독립성을 보장하고 권한 관리의 효

율성을 높임

2-1 스키마

2 데이터 정의어(DDL)

14

Page 15: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

스키마

- 스키마는 CREATE SCHEMA 명령문으로 생성

이름이 SCOTT인 사용자가 MY_SCHEMA를 생성한 예

사용하던 스키마를 제거

2-1 스키마

2 데이터 정의어(DDL)

15

CREATE SCHEMA MY_SCHEMA AUTHORIZATION SCOTT;예

DROP SCHEMA MY_SCHEMA;예

Page 16: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

SQL Server에서 SSMS를 사용한 데이터베이스 생성하기

- 쿼리 편집기

- 쿼리 편집기에 다음과 같이 입력한 후 <실행>을 클릭

2-1 스키마

2 데이터 정의어(DDL)

16

USE masterGO

135 Page

Page 17: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

SQL Server Management Studio의 각 창과 역할

2-1 스키마

2 데이터 정의어(DDL)

17

개체 탐색기 서버 탐색, 개체 작성 및 로그 보기 등을 수행할 수 있다.

쿼리 편집기개체들을 액세스하거나 생성하는 쿼리를 작성하는 부분이며 작성된 스크립트는 별도의 스크립트(.sql) 파일로 저장 가능하다.

결과 및 메시지 창개체를 SELECT 하면 결과를 표나 텍스트 등으로 보여주며 개체를생성하거나 삭제, 업데이트 등의 결과를 나타낸다.

Page 18: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

SQL Server Management Studio의 각 창

2-1 스키마

2 데이터 정의어(DDL)

18

136 Page

Page 19: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

쿼리 분석기를 실행한 후 아래 T-SQL 구문을 작성

- 데이터베이스 생성

2-1 스키마

2 데이터 정의어(DDL)

19

CREATE DATABASE EduManager예

136 Page

Page 20: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

쿼리 편집기 살피기

2-1 스키마

2 데이터 정의어(DDL)

20

SQL Server에서 SQL문을 입력하는 곳이 쿼리 편집기이다. 쿼리 편집기는SQL문을 입력하고,실행하는 텍스트 에디터이다. 쿼리 편집기를 사용하기 위한방법은 다음과 같다.

① 쿼리를 실행할 대상 서버(인스턴스)를 선택한다.② <새 쿼리>를 클릭하여 쿼리 편집기를 연다.③ SQL 구문을 입력한다.④ <실행> 버튼을 눌러 SQL 문장을 실행한다.

Tip

Page 21: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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(조건식)]);

Page 22: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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. 한 테이블 안에서 칼럼 이름은 같을 수 없으며 다른 테이블에서의 칼럼이름과는 같을 수 있다.

Page 23: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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 기타 데이터 형식

Page 24: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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

Page 25: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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 데이터를 저장하는 데이터 형식

Page 26: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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

Page 27: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

SQL 주석문

2-2 테이블 생성(CREATE TABLE)

2 데이터 정의어(DDL)

27

각 줄에 기술한 문장이 무엇인지를 개발자에게 설명하기 위해서는 주석문을작성해야 한다. 한 줄 주석은 하이픈 두개(--), 여러 줄 주석은(/* ~ */) 로 시작하며실행을 시켰을 경우 주석 처리한 문장은 실행하지 않는다.

Tip

Page 28: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

SQL Server에서 테이블 생성하기

- 과정 테이블 생성

2-2 테이블 생성(CREATE TABLE)

2 데이터 정의어(DDL)

28

140 Page

Page 29: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

SQL Server에서 테이블 생성하기

- 학생 테이블 생성

2-2 테이블 생성(CREATE TABLE)

2 데이터 정의어(DDL)

29

141 Page

Page 30: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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';

Page 31: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

테이블 구조 변경

2-3 테이블 변경(ALTER TABLE)

2 데이터 정의어(DDL)

31

142 Page

Page 32: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

DROP TABLE 명령

테이블 제거 실패

2-4 테이블 제거(DROP TABLE)

2 데이터 정의어(DDL)

32

DROP TABLE COURSE;예

142 Page

Page 33: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

DROP TABLE 명령

테이블 제거 성공

2-4 테이블 제거(DROP TABLE)

2 데이터 정의어(DDL)

33

1:2:3:

DROP TABLE STUDENTDROP TABLE COURSEGO

143 Page

Page 34: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

데이터 무결성 제약 조건(Data Integrity Constraint Rule)

정확성을 유지

2-5 제약조건

2 데이터 정의어(DDL)

34

ㆍ테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서ㆍ테이블을 생성할 때 각 칼럼에 대해서 형식 하는 여러 가지 규칙

데이터 무결성제약 조건

(Data IntegrityConstraint

Rule)

ㆍ데이터베이스 내에 데이터의 정확성을 유지하는 것을 의미한다.무결성

Page 35: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

기본키 제약 조건

- 과정 번호 칼럼이 반드시 입력되고 유일한 값만을 가질 수 있도록 하는 다양한 무결성 제약 조

건들 중의 한 가지

NOT NULL을 명시

- SQL 칼럼 값으로 널 값을 허용하기 때문에 만일 특정 칼럼에 널 값을 허용하지 않도록 하려면

제약조건

기본키

- 과정(COURSE) 테이블에서 과정들을 구분하기 위해서 과정 번호는 널 값을 저장할 수 없음

- 중복된 값을 저장할 수 없도록 하는 개체 무결성을 유지하기 위해서 과정 번호(COU_ID)를

기본키로 지정

2-5 제약조건

2 데이터 정의어(DDL)

35

Page 36: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

과정 테이블의 기본키 제약조건-1

2-5 제약조건

2 데이터 정의어(DDL)

36

145 Page

과정 번호(COU_ID) 칼럼은 중복된값을 저장할 수 없는 기본키이다.

COURSE 테이블에10번 과정이 이미존재하고 있기때문에 10번 과정을추가하려고 했을 때에러가 발생한다.

Page 37: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

과정 테이블의 기본키 제약조건-2

2-5 제약조건

2 데이터 정의어(DDL)

37

145 Page

Page 38: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

기본키

2-5 제약조건

2 데이터 정의어(DDL)

38

ㆍ과정 번호 칼럼이 반드시 입력되고 유일한 값만을 가질 수 있도록 하는 것ㆍ데이터베이스에서 제공하는 다양한 무결성 제약 조건들 중의 한 가지

기본키

Page 39: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

제약 조건을 5가지

2-5 제약조건

2 데이터 정의어(DDL)

39

NULL을 허용하지 않음

중복된 값을 허용하지 않고, 항상 유일한 값을 갖도록 함

NULL을 허용하지 않음. 중복된 값을 허용하지 않음NOT NULL 조건과 UNIQUE 조건을 결합한 형태임

참조되는 테이블의 칼럼의 값이 존재하면 허용함

저장 가능한 데이터 값의 범위나 조건을 지정해 설정한 값만을 허용함

146 Page

Page 40: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

필수 입력을 위한 NOT NULL 제약 조건

- 널 값 허용

2-5 제약조건

2 데이터 정의어(DDL)

40

147 Page

Page 41: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

필수 입력을 위한 NOT NULL 제약 조건

- 부정확한 회원 정보

NOT NULL 제약 조건

- 해당 칼럼에 데이터를 추가하거나 수정할 때 NULL 값이 저장되지 않게 제약을 걸어주는 것

- 주민번호와 이름과 같이 자료가 꼭 입력되게 하고 싶을 때 사용

2-5 제약조건

2 데이터 정의어(DDL)

41

147 Page

ㆍ해당 칼럼에 데이터를 추가하거나 수정할 때 NULL 값이 저장되지않게 제약을 걸어주는 것

ㆍ아이디나 이름과 같이 자료가 꼭 입력되게 하고 싶을 때 사용

NOT NULL제약 조건

Page 42: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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)

)

Page 43: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

NOT NULL 제약조건을 설정하지 않고 테이블 생성하기

- 널 허용한 테이블 생성

2-5 제약조건

2 데이터 정의어(DDL)

43

148 Page

Page 44: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

NOT NULL 제약조건을 설정하지 않고 테이블 생성하기

- 테이블 생성 확인

2-5 제약조건

2 데이터 정의어(DDL)

44

SELECT * FROM member

148 Page

Page 45: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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값이저장됨

Page 46: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

NOT NULL 제약조건을 설정하지 않고 테이블 생성하기

- 제약조건이 불충분한 테이블로 의미 없는 정보 입력

2-5 제약조건

2 데이터 정의어(DDL)

46

149 Page

Page 47: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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제약조건설정

Page 48: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

필수 입력을 위한 NOT NULL 조건 지정

- 필수 입력을 위한 NOT NULL 조건 지정

2-5 제약조건

2 데이터 정의어(DDL)

48150 Page

Page 49: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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

Page 50: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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

Page 51: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

유일한 값만을 저장하기 위한 UNIQUE 제약 조건

- UNIQUE 제약 조건이란 특정 칼럼에 대해 자료가 중복되지 않게 하는 것

2-5 제약조건

2 데이터 정의어(DDL)

51

ㆍ 특정 칼럼에 대해 자료가 중복되지 않게 하는 것ㆍ 지정된 칼럼에는 유일한 값이 수록되게 하는 것

UNIQUE제약 조건

Page 52: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

동일한 아이디로 구분 불가능

2-5 제약조건

2 데이터 정의어(DDL)

52

ㆍ 아이디 칼럼에 UNIQUE KEY 제약 조건을 지정하면 중복된 값을 저장할 수 없음

152 Page

Page 53: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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를기술하면해당칼럼은중복된값을허용하지않는제약조건이설정된다.

Page 54: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

UNIQUE 제약조건을 설정하여 테이블 생성하기

- UNIQUE 제약조건 설정

2-5 제약조건

2 데이터 정의어(DDL)

54153 Page

Page 55: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

UNIQUE 제약조건을 설정하여 테이블 생성하기

- 생성한 member 테이블에 데이터를 추가

UNIQUE 제약조건을 설정하여 테이블 생성하기

- 데이터 삽입

2-5 제약조건

2 데이터 정의어(DDL)

55

INSERT INTO member

VALUES(‘moon’, ‘Y’, ’문종헌’, ’[email protected]’, ’01063385361’)

SELECT * FROM member

154 Page

Page 56: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

UNIQUE 제약조건을 설정하여 테이블 생성하기

- ‘moon’이란 자료를 입력하였는데 다시 동일한 아이디를 입력

UNIQUE 제약조건을 설정하여 테이블 생성하기

- 아이디 중복 허용 안 함

2-5 제약조건

2 데이터 정의어(DDL)

56

INSERT INTO member

VALUES(‘moon’, ‘SOL’, ’ 오한솔’, ’[email protected]’, ’01011113121’)

154 Page

Page 57: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

개체의 무결성을 위한 PRIMARY KEY 제약 조건

- 유일키 제약 조건의 널 값 허용

2-5 제약조건

2 데이터 정의어(DDL)

57

테이블 내의 해당 행을 다른 행과 구분할 수 있도록 하는 칼럼은 반드시 존재해야 함

유일하면서도 NULL값을허용하지말아야함155 Page

Page 58: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

개체의 무결성을 위한 PRIMARY KEY 제약 조건

2-5 제약조건

2 데이터 정의어(DDL)

58

ㆍ UNIQUE 제약 조건과 NOT NULL 제약 조건을 모두 갖는 것기본키

(PRIMARY KEY)제약 조건

PRIMARY KEY는 NOT NULL 조건과 UNIQUE 조건을 결합한 형태로서 NULL을허용하지 않고 중복된 값을 허용하지 않는다. 테이블에 하나만 선언할 수 있다.

Page 59: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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

Page 60: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

PRIMARY KEY 제약조건 설정하기

- 기본키 제약 조건 설정

2-5 제약조건

2 데이터 정의어(DDL)

60156 Page

Page 61: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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’)

Page 62: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

PRIMARY KEY 제약조건 설정하기

- 중복 허용하지 않는 기본키 제약 조건

2-5 제약조건

2 데이터 정의어(DDL)

62

157 Page

Page 63: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

PRIMARY KEY 제약조건 설정하기

- 본키로 지정된 아이디에 NULL 값을 저장

PRIMARY KEY 제약조건 설정하기

- 널 값 허용하지 않는 기본키 제약 조건

2-5 제약조건

2 데이터 정의어(DDL)

63

INSERT INTO member

VALUES(NULL, ‘Y’,’문종헌’,’[email protected]’,’01063385361’)

157 Page

Page 64: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

참조의 무결성을 위한 FOREIGN KEY 제약 조건

참조의 무결성을 위한 FOREIGN KEY 제약 조건

- 과정 테이블

2-5 제약조건

2 데이터 정의어(DDL)

64

ㆍ테이블 사이의 관계에서 발생하는 개념참조의 무결성

ㆍ일반적으로 업무 규칙에서 주종 관계가 있는두 테이블 간에 사용되며 종속되는 테이블의키 칼럼이 주가 되는 테이블의 PRIMARY KEY또는 UNIQUE 칼럼을 참조함

FOREIGN KEY

158 Page

Page 65: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

참조의 무결성을 위한 FOREIGN KEY 제약 조건

- 학생 테이블

2-5 제약조건

2 데이터 정의어(DDL)

65

[학생 테이블과 과정 테이블의 관계]

ㆍ과정 테이블에 존재하지 않는 과정 번호 존재

- 이치에 맞지 않음.

- 무결해야 한다는 조건에 위배됨.

ㆍ과정 테이블에 존재하는 과정 번호만 입력

- 참조의 무결성

- 학생 테이블의 과정 번호 칼럼에 외래키 제약 조

건 명시

159 Page

Page 66: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

참조의 무결성을 위한 FOREIGN KEY 제약 조건

- 참조의 무결성을 위한 외래키 제약 조건을 설정할 때 중요한 개념

2-5 제약조건

2 데이터 정의어(DDL)

66

160 Page

Page 67: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

ERD를 보고 데이터베이스를 구현할 때

- 과정이나 학생과 같은 개체는 테이블로, 형식하고 소속이란 관계

- 조의 무결성을 위한 특정 칼럼에 외래키 제약 조건으로 정의

- “학생은 교육센터 내에 존재하는 과정에 수강해야 한다.”

참조의 무결성을 위한 부모, 자식 테이블 관계

2-5 제약조건

2 데이터 정의어(DDL)

67

161 Page

Page 68: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

과정 테이블과 학생 테이블 관계

2-5 제약조건

2 데이터 정의어(DDL)

68

161 Page

COU_ID가 부모 키가되려면 기본키 혹은UNIQUE 제한 조건으로지정되어야 함

학생 테이블에서외래키인 COU_ID는과정 테이블의기본키인 COU_ID를참조하므로 과정테이블에 존재하는과정 번호만 입력가능함. 과정 테이블내의 COU_ID를부모 키라고 함

Page 69: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

무결성 제약 조건에 위배

2-5 제약조건

2 데이터 정의어(DDL)

69

162 Page

COURSE 테이블에는 10,20, 30, 40만 존재하기에50번 과정에 새로운학생을 추가할 수 없다.

Page 70: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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제약 조건

Page 71: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

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

Page 72: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

CHECK 제약조건

2-5 제약조건

2 데이터 정의어(DDL)

72

164 Page

Page 73: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

CHECK 제약조건 설정하기

- 생성한 테이블에 데이터를 추가

CHECK 제약조건 설정하기

- check 제약 조건 위배-1

2-5 제약조건

2 데이터 정의어(DDL)

73

NSERT INTO STUDENT VALUES(116,’장희성’, 34,’[email protected]’,10,’M’)

164 Page

Page 74: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

SQL Server에서 SQL 파일 실행하여 샘플 테이블 생성하기

- SQL 파일을 불러오기

3 데이터 조작어(DML)

74

165 Page

Page 75: 6장. SQL - pds23.egloos.compds23.egloos.com/pds/201209/24/12/06-SQL(1).pdf · 테이블 이름과 칼럼은 a~z까지의 문자, 0~9까지의 숫자, 그리고$,#,_(Under Bar)를

6장. SQL

SQL Server에서 SQL 파일 실행하여 샘플 테이블 생성하기

- SQL 파일 실행하기

3 데이터 조작어(DML)

75

166 Page