제 2 강 sql 데이터 정의어

23
제제제제제제 제제 임임임 임임

Upload: cian

Post on 08-Feb-2016

91 views

Category:

Documents


0 download

DESCRIPTION

제 2 강 SQL 데이터 정의어. 데이터베이스 개론. 임덕성 교수. 복습. 복습. 프로그래밍 언어와 데이터 접근 언어. 1. SQL 언어의 기원과 특성. 2. 3. SQL 언어의 표준화. 학습목표. 학습 목표. 테이블 생성. 1. 테이블 제거. 2. 3. 테이블 변경. 1 . 데이터 정의어 개요. SQL 에서 지원하는 대표적인 데이터 정의 기능 테이블 생성 (create ) 테이블 변경 (alter ) 테이블 삭제 (drop). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 제 2 강  SQL  데이터  정의어

제 2 강 SQL 데이터 정의어

데이터베이스 개론임덕성 교수

Page 2: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

복습복습

프로그래밍 언어와 데이터 접근 언어

SQL 언어의 기원과 특성

SQL 언어의 표준화

1

2

3

Page 3: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

학습 목표학습목표

테이블 생성

테이블 제거

테이블 변경

1

2

3

Page 4: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

SQL 에서 지원하는 대표적인 데이터 정의 기능

- 테이블 생성 (create)

- 테이블 변경 (alter)

- 테이블 삭제 (drop)

1. 데이터 정의어 개요

Page 5: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

명령어 : CREATE TABLE구문 형식

CREATE TABLE 테이블 이름 ( 열 이름 데이터유형 [not null], ... [primary key ( 열 이름 리스트 )] [check( 조건식 )] );

2.1 테이블 생성 구문 형식

Page 6: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

not null- not null 로 표기된 열 이름은 속성 값으로 널 (null) 값을 가질 수

없음을 나타냄

primary key- primary key 로 지정한 열 이름 리스트는 해당 테이블을 유일하게

식별할 수 있는 기본키임을 나타냄

check- check 절은 테이블의 특정 열 ( 속성 ) 이 지켜져야 할 조건을 지정

dept_no number(4) not null

primary key(c_no, p_no)

check( 1 <= year <= 4 )

2.2 무결성 제약 검사

Page 7: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

데이터 유형 설 명VARCHAR2(size) 가변 길이 문자 데이터 ( 최소크기 :1, 최대크기 :4000)

CHAR(size) 고정 길이 문자 데이터 ( 최소크기 :1, 최대크기 :2000)

NUMBER(p,s) 가변 길이 숫자 데이터 (p: 전체 자릿수 , s: 소수점 이하 자릿수 )

DATE 날짜 및 시간 값 (BC 4712 년 1월 1 일 ~AD 9999 년 12 월 31일 )

LONG 최고 2GB 의 가변 길이 문자 데이터

CLOB 최고 4GB 의 단일 바이트 문자 데이터

RAW(size) 길이인 size 의 원시 이진 데이터 (최대크기 :2000)

LONG RAW 최고 2GB 의 가변 길이 원시 이진 데이터

BLOB 최고 4GB 의 이진 데이터

BFILE 외부 파일에 저장된 이진 데이터 ( 최대크기 :4GB)

ROWID 테이블에서 행의 고유 주소를 나타내는 64 진수

2.3 데이터 유형 ( 오라클 )

Page 8: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

예제 1예제 테이블의 학과 (department) 릴레이션을 생성하는 SQL 질의어를 작성하라 . 단 , 기본키는 dept_no 이고 , 학과 이름 (dept_name) 은 널 값을 가질 수 없다 .

CREATE TABLE department(

dept_no NUMBER(4),dept_name VARCHAR2(30) NOT NULL,chief NUMBER(5),assistant VARCHAR2(10),dept_tel NUMBER(5),location VARCHAR2(6),

CONSTRAINT department_dept_no_pk PRIMARY KEY(dept_no));

2.4 테이블 생성 예제

Page 9: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

CREATE TABLE department(

dept_no NUMBER(4),dept_name VARCHAR2(30) NOT NULL,chief NUMBER(5),assistant VARCHAR2(10),dept_tel NUMBER(5),location VARCHAR2(6),

CONSTRAINT department_dept_no_pk PRIMARY KEY(dept_no));

2.4 테이블 생성 예제

Name Null? Type DEPT_NO NOT NULL NUMBER(4) DEPT_NAME NOT NULL VARCHAR2(30) CHIEF NUMBER(5) ASSISTANT VARCHAR2(10) DEPT_TEL NUMBER(5) LOCATION VARCHAR2(6)

테이블의 스키마 확인 : desc department

Page 10: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

예제 2예제 테이블의 교수 (professor) 릴레이션을 생성하는 SQL 질의어를 작성하라 . 단 , 기본키는 p_no 이고 , 교수 이름 (p_name) 은 널 값을 가질 수 없다 .

2.4 테이블 생성 예제 ( 계속 )

교수 (PROFESSOR): 교수에 대한 정보를 포함하는 테이블 교수번호 (p_no) : 교수를 유일하게 식별할 수 있는 속성 값 이름 (p_name) : 교수의 이름 직급 (grade) : 교수의 직급 소속학과 (dept_no) : 교수가 소속된 학과의 학과코드 연구실 (room_no) : 교수의 연구실이 위치한 건물의 방 번호 전화 (p_tel) : 교수 연구실의 전화번호 주소 (p_address) : 교수의 집 주소 생년월일 (p_birth) : 교수의 생년월일 입사일 (join_date) : 교수의 입사일 호봉 (pay_step) : 교수의 호봉

Page 11: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

CREATE TABLE professor(

p_no NUMBER(5),p_name VARCHAR2(10) NOT NULL,grade VARCHAR2(10),dept_no NUMBER(4),room_no VARCHAR2(15),p_tel NUMBER(5),p_address VARCHAR2(30),p_birth DATE,join_date DATE,pay_step NUMBER(3),

CONSTRAINT professor_p_no_pk PRIMARY KEY(p_no), CONSTRAINT professor_dept_no_fk FOREIGN KEY(dept_no)

REFERENCES department(dept_no));

2.4 테이블 생성 예제 ( 계속 )

Page 12: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

2.4 테이블 생성 예제 ( 계속 )

테이블의 스키마 확인 : desc professor

Name Null? Type P_NO NOT NULL NUMBER(5)

P_NAME NOT NULL VARCHAR2(8) GRADE VARCHAR2(8)

DEPT_NO NUMBER(4) ROOM_NO VARCHAR2(5)

P_TEL NUMBER(5) P_ADDRESS VARCHAR2(8)

P_BIRTH DATE JOIN_DATE DATE PAY_STEP NUMBER(3)

Page 13: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

DROP TABLE 테이블 _ 이름 cascade | restrict ;

SQL 질의어에서 생성되어 있는 릴레이션 ( 테이블 ) 을 제거하기 위해서 사용하는 명령어

명령어 : DROP TABLE구문 형식

- Cascade : 제거하려는 테이블을 참조하고 있는 다른 테이블도 자동으로 함께 제거

- restrict : 제거하려는 테이블을 다른 테이블이 참조하고 있으면 제거 명령이 실행되지 않음

- 오 라 클 의 경 우 : 기 본 restrict, cascade 의 경 우 종 속 된 제약조건을 삭제하고 테이블 삭제 (cascade CONSTRAINTS )

3.1 테이블 제거 구문 형식

Page 14: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

예제 4예제 테이블의 학과 (department) 릴레이션을 제거하는 SQL 질의어를 작성하라 . 먼저 참조하고 있는 테이블 (professor) 을 삭제한다 .

DROP TABLE professor;DROP TABLE department;

3.2 테이블 제거 예제

DROP TABLE professor;Table dropped.DROP TABLE department;Table dropped.

Page 15: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

예제 3예제 테이블의 학과 (department) 릴레이션을 제거하는 SQL 질의어를 작성하라 .

DROP TABLE department ;에러 발생

3.2 테이블 제거 예제

Page 16: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

예제 5예제 테이블의 학과 (department) 릴레이션을 제거하는 SQL 질의어를 작성하라 . ( 먼저 종속된 제약조건을 제거한뒤 테이블 삭제 ) DROP TABLE department cascade CONSTRAINTS

3.2 테이블 제거 예제

두 테이블이 존재

Page 17: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

예제 5예제 테이블의 학과 (department) 릴레이션을 제거하는 SQL 질의어를 작성하라 . ( 먼저 종속된 제약조건을 제거한뒤 테이블 삭제 ) DROP TABLE department cascade CONSTRAINTS

3.2 테이블 제거 예제

department 테이블 삭제

Page 18: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

예제 5예제 테이블의 학과 (department) 릴레이션을 제거하는 SQL 질의어를 작성하라 . ( 먼저 종속된 제약조건을 제거한뒤 테이블 삭제 ) DROP TABLE department cascade CONSTRAINTS

3.2 테이블 제거 예제

Professor테이블 존재제약조건 삭제됨

Page 19: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

SQL 질의어에서 생성되어 있는 릴레이션 ( 테이블 ) 을 변경하기 위해서 사용하는 명령어명령어 : ALTER TABLE구문 형식

< 속성 추가 >ALTER TABLE 테이블 이름 ADD 열 이름 데이터 유형 ;

< 속성 제거 >ALTER TABLE 테이블 이름 DROP ( 열 이름 )

4.1 테이블 변경 구문 형식

Page 20: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

예제 5예제 테이블의 학과 (department) 릴레이션에 교수수 (nbrOfFaculty) 속 성 을 추 가 하 는 SQL 질 의 어 를 작 성 하 라 . 단 , 교 수 수(nbrOfFaculty) 속성의 데이터 유형은 number 로 지정하라 .

ALTER TABLE department ADD nbrOfFaculty NUMBER;

4.2 테이블 변경 예제

Select * from department;

Page 21: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

예 제 6 예 제 테 이 블 의 학 과 (department) 릴 레 이 션 에 서 전 화(dept_tel) 속성을 제거하는 SQL 질의어를 작성하라 .

ALTER TABLE department DROP(DEPT_TEL)

4.2 테이블 변경 예제 ( 계속 )

DEPT_NO DEPT_NAME CHIEF ASSISTANT LOCATI

1 컴퓨터정보계열 1 최수연 M303 2 간호학과 2 박소연 M404

DEPT_NO DEPT_NAME CHIEF ASSISTANT DEPT_TEL LOCATI 1 컴퓨터정보계열 1 최수연 5290 M303 2 간호학과 2 박소연 5317 M404

변경전

변경후

Page 22: 제 2 강  SQL  데이터  정의어

SQL 데이터 정의어2 강 SQL 데이터 정의어

요 약요약

테이블 생성

테이블 제거

테이블 변경

1

2

3

Page 23: 제 2 강  SQL  데이터  정의어

끝 ~