Presentation is loading. Please wait.

Presentation is loading. Please wait.

데이터베이스 담당교수 신정식 Chapter 4 SQL(1).

Similar presentations


Presentation on theme: "데이터베이스 담당교수 신정식 Chapter 4 SQL(1)."— Presentation transcript:

1 데이터베이스 담당교수 신정식 Chapter 4 SQL(1)

2 학습내용 1. SQL 소개 SQL(structured query language) 의 머리글자를 딴 말이며, SQL(에쓰큐엘 )로 읽는다. SQL은 1970년대에 처음 구현되기 시작하여 그 뒤 많이 바뀌었다. 현재 SQL은 국제 표준화 기구(ISO; International Organization for Standardization) 에서 만들었다. SQL에 들어 있는 주요 기능 - 스키마릉 정의하는 자료 정의어(DDL) -질의어 또는 자료 조작어(DML) 상호 작용적(interactive) 자료 조작어 : 화면에서 명령을 넣고, 결과 가 바로 화면으로 나오는 방식인데, 이 방식은 거의 늘 지원된다. 보기를 들어, Oracle 경우에는 이를 SQL*Plus라고 부른다. 내포된(embedded) 자료 조작어 : 일반 고급 프로그래밍 언어(보기: C/C++, JAVA)로 짠 프로그램 안에 SQL명령을 사이사이에 끼워 넣 은 방식, 작은 데이터베이스 관리 시스템에서는 이를 지원하지 않 는다. 은행업무등과 같이 늘 되풀이 되는 실제의 업무 전산화에서는 이런 방식을 아주 많이 쓴다.

3 학습내용 1. SQL 소개 -트랜잭션 제어(transaction control)
-그 밖에 : 뷰 정의, 무결성 제어, 권한주기 등

4 학습내용 1. SQL 소개 데이터 정의어 ( DDL: Data Definition Language)는 물리적 구조의 데이터베이스를 가지고 여러 사용자들이 요구하는 다양한 형태의 데이터를 지원할 수 있는 데이터베이스 구조를 정의하는데 사용하는 언어이다. 예 : CREATE : 데이터베이스 객체 생성 ALTER : 변경 DROP : 삭제 데이터 조작어( DML : Data Manipulation Language) 는 사용자가 데이터를 처리하는데 사용하는 언어이다. 여기서 데이터 처리는 데이터의 삽입, 갱신, 삭제, 검색 등을 의미한다. 예 : INSERT 데이터 입력 UPDATE 수정 DELETE 삭제 SELECT 검색

5 학습내용 1. SQL 소개 데이터 제어어 ( DCL: Data Control Language)는 데이터를 올바르게 공유 하도록 하는 규정이나 기법을 정의하는데 사용하는 언어이다. 데이터를 보호하는 명령어들로 구성되어 있다. 예 : GRANT : 데이터베이스 객체에 대한 접근 권한 부여 REVOKE : 취소

6 학습내용 2. 자료의 형(domain, type)
Select,insert,delete, update 등은 데이터베이스의 자료를 다루는 DML (data manipulation language) 명령이다. 그런데 이러한 자료를 테이블에 담으로면 테이블의 속성에 대한 자료의 형(도메인=범위) 을 포함하여 스키마를 정의하는 DDL을 알아야 한다.다음은 많이 사용하는 자료 형이다. -char(n) : fixed-lenth character string으로 저정하며, 이 때 N은 기억 장소의 크기를 나타내는데, 보기를 들어, char(3)에 ‘ab’를 저장하고자 하면 ‘ab ‘가 저장된다. -varchar2(n) : variable-lenth character string으로 저장하며, 이 때 n은 최대길이지만, 그보다 짧은 문자열이 들어 오면 마지막에 빈칸으로 덧붙이지 않고, 짧은 문자열 그대로 저장한다. -numeric(p,d), number(p,d), decimal(p,d), dec(p,d) : 십진수를 정확하게 저장할 수 있는 자료형이다. P는 전체 자리수, d는 그 가운데 소수점 아래의 자리수이다. 보기를 들어 numeric(3,2)라고 하면 정수 부분 한자리, 소수점 아래 2자리를 저장할 수 있으며, 이는 평균평점 (보기: 3.45)을 저장 하기에 좋다. -real, double, float(p) : 실수 형이다. Real은 보통의 실수이고, double 은 real 보다 바이트 수가 많은 실수 형이다.

7 학습내용 3. Create table 명령을 써서 스키마 정의 하기
스키마를 정의하는 명령은 create table이고, 스키마를 지우는 명령은 drop table 명령인데, 이 명령의 일반 형식이 알아 보자. create table 테이블_이름 ( 속성_이름1 자료_형1, 속성_이름2 자료_형2, …., primary key (속성11, 속성12, …), unique key (속성21, 속성 22,…), foreing key (속성31,…) references 테이블_이름2 ); drop table 테이블_이름; 어떤 테이블에 primary key절이 나오면 그 키 값이 같은 투플이 그 테이블 안에 두 개 이상 있을 수 없다. 키는 하나 또는 여러 개의 속성으로 이루어져 있다.

8 학습내용 3. Create table 명령을 써서 스키마 정의 하기
Primary key와 unique key 절이 있는 보기를 알아 보자. create table 학생 (학번 char(7) not null, 이름 char(20) not null, 주민등록번호 char(14) not null, primary key (학번), unique key (주민등록번호)); 위의 학생 테이블에서 학번에 대한 not null은 명시 하지 않더라도, primary key(학번)에 의하여 not null이 묵시적으로 선언된다.주민등록번호는 일차키가 되지 못한 후보키이다.

9 학습내용 3. Create table 명령을 써서 스키마 정의 하기
Primary key와 unique key 절이 있는 보기를 알아 보자. create table 수강 (학번 char(7) not null, 이름 char(20) not null, 과목번호 char(7) not null, primary key (학번, 과목번호), foreign key (학번) references 학생, foreign key (과목번호) references 과목); ); 위의 수강 테이블에서 학번과 과목번호는 각각 학생과 과목 테이블에서 일차키이고, 따라서 수강 테이블에서 외래키로 선언 하였다.

10 학습내용 3. Create table 명령을 써서 스키마 정의 하기
테이블에 투플을 넣을 때는 insert into 명령을 쓰는데, 일반 형식은 다음과 같다. insert into 테이블_이름 values (속성값1, 속성값2 …. 속성값n); create table 학생 (학번 char(7) not null, 이름 char(20) not null, ); insert into 학생 values (‘ ’ , ‘홍길동’ ); Insert 명령의 values 절에 속성값을 넣게 된다.

11 학습내용 3. Create table 명령을 써서 스키마 정의 하기
이미 있는 테이블과 스키마도 꼭 같고, 투플의 내용도 꼭 같은 새 테이블을 만들고자 하면 다음과 같이 하면 된다. create tmp as select * from 학생 ; 만일 이미 있는 테이블에서 복사하되, 조건에 맞는 일부 투플만 복사하려면 다음과 같이 where 절에 조건만 더 넣으면 된다. create table tmp as select 학번 from 수강 where 과목번호 = ‘CS001’ ;

12 학습내용 4. select-from-where 명령 실행 원리
엄밀한 뜻에서의 질의어, 다시 말하여 이미 있는 자료를 가져오는 SQL명령은 select 명령이다. Select 명령에는 여러 가지 절이 들어갈 수 있지만, 가장 많이 쓰는 중요한 절은 from절과 where절이며, select 명령 형식은 다음과 같다. select 속성1, 속성2,….. from 테이블1, 테이블2,…. where 조건1 and/or 조건2…… Select 명령에서 from절은 반드시 있어야 한다. where절은 보통 있지만 반드시 있어야 하는 것은 아니다.

13 학습내용 4. select-from-where 명령 실행 원리
[학생] 학번 이름 강충희 강현욱 고지영 select 학번 from 학생;

14 학습내용 4. select-from-where 명령 실행 원리

15 학습내용 4. select-from-where 명령 실행 원리
수강 테이블이 다음과 같이 있을 때, 여기서 과목번호 CS001 또는 CS002과목을 듣는 학생의 학번을 찍어내는 select명령이 아래와 같다. [수강] 학번 과목번호 CS001 CS002 CS002 CS003 CS004 select 학번 from 수강 where 과목번호 = ‘CS001’ or 과목번호 =‘CS002’;

16 학습내용 4. select-from-where 명령 실행 원리
where 조건1 and/or 조건2…… ∏ 속성1, 속성2, …(б 조건1 and/or 조건2 …(테이블1 X 테이블2,…)) SQL select 명령에서는 입력테이블이 한 개, 또는 여러 개 될 수 있으며, 결과 테이블은 하나이다. 1단계 2단계 1단계

17 학습내용 5. select 명령에서 속성을 추출하기
개념적으로 테이블은 투플의 집합이므로, 꼭 같은 투플이 한테이블 안에 있어서는 않된다. 그러나 그건 어디까지나 개념이고, 실제 데이터베이스 관리 시스템에서는 테이블 안에 허용되기도 한다. Insert /update 명령의 결과로 표 안에 겹치는 투풀이 생기는 것을 허용한다. select 속성1, 속성2,….. : 겹치는 투플 허용 select all 속성1, 속성2,….. : 겹치는 투플 허용 select distinct 속성1, 속성2,….. : 겹치는 투플 허용 하지 않음

18 학습내용 5. select 명령에서 속성을 추출하기
겹치는 투플을 허용하는지 않는지를 보기 위하여, 아래 수강 테이블을 보기로 풀이 하겠다. [수강] 학번 과목번호 CS001 CS002 CS002 CS003 CS004 select all 학번 from 수강; select 학번 from 수강;

19 학습내용 5. select 명령에서 속성을 추출하기 겹치는 투플을 허용하는데 ,그 결과가 아래에 나와 있다. 학번

20 학습내용 5. select 명령에서 속성을 추출하기
아래 select distinct 명령을 겹치는 투플을 허용하지 않으며, 그 결과가 아래에 나와 있다. [수강] 학번 select distinct 학번 from 수강;

21 학습내용 6. where 절에서 조건을 나타내기 Where절에서 조건을 나타내는 보기가 아래에 나와 있다.
where 과목번호 = ‘CS001’

22 학습내용 6. where 절에서 조건을 나타내기 관계대수에서 자연 조인을 배웠는데, 이제 SQL에서 자연조인을 어떻게 나타내는지 배워보자. 구체적으로 학생과 수강테이블 사이의 자연조인을 아래에서 살펴보자. 학생 = (학번, 이름) 수강 = (학번, 과목번호) 관계대수에서 자연 조인은 세 단계를 거친다고 하였는데, 각 단계를 SQL에서 어떻게 나타날 수 있는지 생각해보자. 학생과 수강 테이블의 카디전 곱 : from 학생, 수강 학생.학번과 수강.학번이 같은 투플을 선택하기 : where 학생.학번 = 수강.학번 두 테이블의 공통 속성 추출하기 : select 학생.학번, 학생.이름, 수강.과목번호

23 학습내용 6. where 절에서 조건을 나타내기 따라서 from, where, select 명령을 하나로 묶으면 다음과 같다.

24 학습내용 7. 속성의 이름을 정하거나 바꾸기 꼭 같은 속성이름이 테이블 두 개에 각각 있을 때 :
select 학생.학번, 수강.학번 from 학생, 수강 where 학생.학번 = 수강.학번; 속성이름을 바꿀 수 있다. select 학생.학번 as 학생_학번, 수강.학번 as 수강_학번 from 학생, 수강 where 학생.학번 = 수강.학번;

25 학습내용 7. 속성의 이름을 정하거나 바꾸기 Select 다음에 속성 대신 수식이 올 때 : 보기를 들어 과목 스키마에서, 학점 수에 1.5를 곱한 값을 찍으려면 아래와 같이 하면 된다. 과목 = (과목번호, 과목이름, 학점수, 교과구분) select 과목번호, 학점수 * 1.5 from 과목 ; 그런데, 수식* “학점수 * 1.5 “의 값을 계산하여 찍기는 하지만, 그 수식에 대한 속성이름이 없다. 따라서 그 수식의 결과에 대하여 “조정된_학점수”라는 속성이름을 주려면 다음과 같이 하면 된다. select 과목번호, 학점수 * 1.5 as 조정된_학점수 from 과목 ;

26 학습내용 7. 속성의 이름을 정하거나 바꾸기 이미 있는 속성이름과 다른 속성이름을 주고자 할 때: 성적등급이라는 속성이 있는데, 이 속성을 찍으려면 아래와 같이 하면 된다. select 성적 등급 from 수강 ; 그런데, 만일 이 속성이름을 성적 등급 대신 성적으로 찍고자 하면 다음과 같이 하면 된다. select 성적 등급 as 성적 from 수강 ;

27 학습내용 참고문헌 이종만, 사례로 배우는 데이터베이스 설계와 구축,이한출판사, 2006
김경석,윤흥원,이중화, 데이터베이스론, 이한출판사,2004


Download ppt "데이터베이스 담당교수 신정식 Chapter 4 SQL(1)."

Similar presentations


Ads by Google