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