28
1 3. 데데데 데데 데데 SQL 데데데데데 데데데데 데데데데 데데데 데데 데데데 데데 데데데 데데데데 데데데데 데데 (insert) 데데 , 데데데데데 데데데 데데데데 데데 (select) 데데 , 데데데 데데데데 데데 (delete) 데데데 데데데 데데데 데데 데데 (update) 데데 데데데데 . 3.1 데데데 데데 [select] - 데데데 : select - 데데데데 select [distinct] 데데 _ 데데데 [as 데데 _ 데데데 ] from 데데데데 _ 데데데 [where 데데 ] [group by 데데 _ 데데데 [having 데데 ] ] [order by 데데 _ 데데데 [ asc | desc ] ] ;

3. 데이터 조작 기능

Embed Size (px)

DESCRIPTION

3. 데이터 조작 기능. SQL 질의어에서 지원하는 대표적인 데이터 조작 기능은 크게 기존의 데이터에 데이터를 삽입 (insert) 하고 , 테이블에서 원하는 데이터를 검색 (select) 하며 , 필요한 데이터를 삭제 (delete) 하거나 변경된 데이터 값을 갱신 (update) 하는 기능이다 . 3.1 데이터 검색 [select] - 명령어 : select - 구문형식. - PowerPoint PPT Presentation

Citation preview

Page 1: 3.  데이터 조작 기능

1

3. 데이터 조작 기능3. 데이터 조작 기능

SQL 질의어에서 지원하는 대표적인 데이터 조작 기능은 크게 기존의 데이터에 데이터를 삽입 (insert) 하고 , 테이블에서 원하는 데이터를 검색 (select) 하며 , 필요한 데이터를 삭제 (delete) 하거나 변경된 데이터 값을 갱신 (update) 하는 기능이다 . 3.1 데이터 검색 [select]

- 명령어 : select

- 구문형식

select [distinct] 속성 _ 리스트 [as 제목 _ 리스트 ]from 릴레이션 _ 리스트[where 조건 ][group by 속성 _ 리스트[having 조건 ] ][order by 속성 _ 리스트 [ asc | desc ] ] ;

select [distinct] 속성 _ 리스트 [as 제목 _ 리스트 ]from 릴레이션 _ 리스트[where 조건 ][group by 속성 _ 리스트[having 조건 ] ][order by 속성 _ 리스트 [ asc | desc ] ] ;

Page 2: 3.  데이터 조작 기능

2

select 명령에서 이용가능한 명령어 요약select 명령에서 이용가능한 명령어 요약

명 령 어 의 미

all중복을 포함한 속성 결과 검색 ( 아무런 표시를 하지 않을 경우 기본 값으로 all 을

지니게 된다 .

distinct 중복을 제거한 속성 결과 검색

as 검색결과의 제목을 지정하는 명령

where 조건을 지정할 수 있는 명령

group by 그룹별 검색 기능을 수행하는 명령

having 그룹별 검색 기능에 조건을 추가한 명령

order by 정렬 기능을 수행하는 명령

ascOrder by 명령 사용 시에 오름차순 명령을 지정하는 것으로 , ascending 의 약자이다 .

만약 아무런 표시를 하지 않을 경우 기본 값으로 asc 값을 가지게 된다 .

desc Order by 명령 사용 시에 내림차순 명령을 지정하는 것으로 , descending 의 약자이다 .

Page 3: 3.  데이터 조작 기능

3

3.1.1 하나의 릴레이션에서의 검색3.1.1 하나의 릴레이션에서의 검색

예제 ] 특정 필드 데이터 모두 검색예제 데이터베이스의 “사원” 릴레이션에 “사원번호” , “ 이름”을 검색하라 .

답 ) select 사원번호 , 이름 from 사원

결 과 :

사원번호 이름

C0101 유승우

C0102 박웅신

C0103 허영무

C0104 황민규

C0201 차승익

C0202 이재우

Page 4: 3.  데이터 조작 기능

4

3.1.1 하나의 릴레이션에서의 검색3.1.1 하나의 릴레이션에서의 검색

예제 ] 테이블의 모든 속성 데이터 검색

사원의 모든 정보를 검색하라 .

Select 사원번호 , 이름 , 부서코드 , 주소 ,

호봉

From 사원=

Select *

From 사원

결과 테이블

사원번호 이름부서코

드주소 호봉

C0101 유승우 C01 서울 25

C0102 박웅신 C01 인천 18

C0103 허영무 C01 경기 16

C0104 황민규 C01 12

C0201 차승익 C02 서울 22

C0202 이재우 C02 서울 15

Page 5: 3.  데이터 조작 기능

5

3.1.1 하나의 릴레이션에서의 검색3.1.1 하나의 릴레이션에서의 검색

예 ) 사원들의 주소를 중복 없이 검색하라

Select Distinct 주소From 사원

결과테이블

주소

경기

서울

인천

Page 6: 3.  데이터 조작 기능

6

3.1.2 조건을 지정한 검색3.1.2 조건을 지정한 검색

예제 ] 조건 ( where ) 절을 이용한 검색 Where 명령문 다음에 조건절을 기술하여 검색한다 .

예 ) 부서 테이블에서 부서명이 총무부인 정보를 검색하라 .Select * From 부서Where 부서명 = “ 총무부”

결과테이블

부서코드 부서명 사무실 전화

C02 총무부 A602 1181

Page 7: 3.  데이터 조작 기능

7

3.1.2 조건을 지정한 검색3.1.2 조건을 지정한 검색

예 ) 조건을 지정한 검색사원 테이블에서 부서코드가 C01 이고 호봉이 20 이상 사원의 사원번호와이름을 검색하라 .

Select 사원번호 , 이름From 사원Where 부서코드 = “C01” AND 호봉 >= 20

결과테이블

사원번호 이름

C0101 유승우

Page 8: 3.  데이터 조작 기능

8

3.1.3 집단 함수를 이용한 검색3.1.3 집단 함수를 이용한 검색

SQL 질의어를 이용하여 데이터 검색시에 자주 사용하는 계산 기능들 ( 예 : 개수 , 계산 , 합산 , 평균 , 최대 최소값 계산 등 ) 집단함수 또는

열 함수로 제공한다 . 집단함수 요약 집단 함수 의 미

COUNT 값의 개수

SUM 값의 총합

AVG 평균값

MAX 최대값

MIN 최소값

# 집단함수는 select 문장에만 쓸 수 있다 .

Page 9: 3.  데이터 조작 기능

9

3.1.3 집단 함수를 이용한 검색3.1.3 집단 함수를 이용한 검색

예 ) 주소가 서울인 사원들의 수는 몇 명인가 검색하라

Select Count(*)From 사원Where 주소 = “ 서울”

예 ) 중복을 제거한 개수 세기사원들은 몇 개의 도시에 사는지 검색하라

Select Count(distinct 주소 )From 사원

결과테이블

3

결과테이블

3

1 차결과

주소

경기

서울

인천

Page 10: 3.  데이터 조작 기능

10

3.1.6 문자열 연산식을 이용한 검색 (like)3.1.6 문자열 연산식을 이용한 검색 (like)

SQL 질의어 작성 시에 문자열 (string) 을 포함한 조건식을 이용할 경우 , like 명령어를 사용한다 .

SQL 문자열 연산자

구 분 연 산 자

%(percent)0 개 이상의 문자 ( 문자열 ) 를 매칭시키는 연산자 ( 예 , DOS 명령어의 * 와

동일한 의미 ).

- (underscore) 한 개의 문자를 매칭시키는 연산자에 ( 예 , DOS 명령의 ? 와 동일한 의미 ).

\ (backslash)

특수 문자 ( 문자열 연산자 ) 를 일반 문자로 사용할 수 있도록 지정하는 연산자예를 들어 , 문자열 연산자인 %, _ , \ 를 일반문자로 사용하고자 할 때 , \ 를

문자의 앞부분에 기압한다 .

Page 11: 3.  데이터 조작 기능

11

3.1.6 문자열 연산식을 이용한 검색 (like)3.1.6 문자열 연산식을 이용한 검색 (like)

구 분 연 산 자

“ 서울 % “ ‘ 서울’ 로 시작하는 문자열 (‘ 서울역’ , ‘ 서울시민’ , … ‘ 서울’ 도 포함 )

“% 시 % ” ‘ 시’ 를 포함하는 문자열 (‘ 시’ , ‘ 시간’ , ‘ 서울시’ , ‘ 서울시민’… )

“%0301” ‘0301’ 로 끝나는 문자열 (‘022340301’, … ‘0301’ 도 포함 ).

“_ _ _ ” 3 개의 문자로 구성된 문자열 ( ‘Art’, ‘cat’, ‘man’, … )

“c _ _” 3 개의 문자로 구성된 문자열인데 시작이 c 인것 ( ‘cat’, ‘can’, ‘chr’ … )

“96 \% %” ’96%’ 로 시작하는 문자열

“100\\%” ‘100\’ 로 시작하는 문자열

문자열 연산식 사용 예

Page 12: 3.  데이터 조작 기능

12

3.1.7 정렬 기능을 이용한 검색 (order by)3.1.7 정렬 기능을 이용한 검색 (order by)

order by 명령을 이용하여 사용자가 지정한 기준으로 검색결과를 출력할 수 있다 .

- 오름차순 : order by 명령만 추가 .

- 내림차순 : desc 를 추가 .

Page 13: 3.  데이터 조작 기능

13

3.1.8 그룹별 검색 기능을 이용한 검색 (group by)3.1.8 그룹별 검색 기능을 이용한 검색 (group by)

SQL 명령중 group by 는 지정된 속성 ( 열 ) 의 값이 일치하는 값들을

모아서 그룹을 만드는 역할을 수행한다 .

예 ) 사원 테이블에서 사원들은 각 도시별로 몇 명 사는지 검색하라 .

Select 주소 , Count(*) AS [ 사원 수 ]From 사원Group by 주소

결과테이블

주소 사원 수

경기 1

서울 3

인천 1

Page 14: 3.  데이터 조작 기능

14

3. 1. 9 그룹별 검색 기능에 조건을 추가한 검색 (having)3. 1. 9 그룹별 검색 기능에 조건을 추가한 검색 (having)

예 ) 사원 테이블에서 사원들은 각 도시별로 몇 명 사는지 검색하라 . 단 2 명 이상 사는 곳의 정보를 검색하라 .

Select 주소 , Count(*) AS [ 사원 수 ]From 사원Group by 주소Having Count(*) >= 2

SQL 질의어에서 그룹별 검색 기능을 이용하기 위하여 group by 명령을 이용할 때 , 검색 조건을 추가하기 위해서는 having 절을

이용한다 .

결과테이블

주소 사원 수

서울 3

Page 15: 3.  데이터 조작 기능

15

3. 1. 10 Null 값을 이용한 검색3. 1. 10 Null 값을 이용한 검색

아직 결정되지 않은 값 (unknown value) 을 의미하는 Null 값을 이용하여 SQL 질의어를 작성할 수 있으며 , 이 때 사용하는 명령이 is [not] null 이다 .

예 ) 사원 테이블에서 주소 정보가 등록되지 않은 사원의 모든 정보를 검색하라 .

Select *From 사원Where 주소 is NULL

결과테이블

사원번호 이름 부서코드 주소 호봉

C0104 황민규 C01 12

Page 16: 3.  데이터 조작 기능

16

3. 1. 11 조인 연산을 이용한 검색3. 1. 11 조인 연산을 이용한 검색

하나의 릴레이션 만으로는 정보를 검색할 수 없으나 두개의 릴레이션으로 원하는 정보를 찾을 수 있는 경우 두개의 릴레이션을 조인 (JOIN) 하는 과정을 거쳐 정보를 검색하게 된다 .

SQL 명령어 표현

1

Select *

From 사원 , 부양가족

Where 사원번호 = 부양사원

SQL 명령어 표현

2

Select *

From 사원 INNER JOIN 부양가족 ON 사원번호 = 부양사원

Page 17: 3.  데이터 조작 기능

17

3. 1. 12 한정된 열이름을 사용한 검색3. 1. 12 한정된 열이름을 사용한 검색

예 ) 사원과 부서 테이블을 죠인하여 유승우 사원의 소속 부서명과 전화번호정보를 검색하라 .

Select 부서명 , 전화

From 사원 , 부서

Where 사원 . 부서코드 = 부서 . 부서코드 And 이름 = “ 유승우”

두 개 이상의 릴레이션을 조인한 경우 공교롭게도 동일한 이름의 속성들이 서로 다른 릴레이션에 존재할 수 있다 . 이러한 경우 동일한 이름의 속성이 어느 릴레이션에 속하는 것인지를 나타내기 위하여 한정자 표기법을 사용한다 . ( 릴레이션명 . 속성명 )

Page 18: 3.  데이터 조작 기능

18

3. 1. 13 릴레이션 별칭 (correlation name) 을 사용한 검색3. 1. 13 릴레이션 별칭 (correlation name) 을 사용한 검색

동일한 이름의 속성들이 서로 다른 릴레이션에 존재하여 한정자 표기법을 사용할 경우 , 릴레이션의 전체이름을 사용하지 않고 별칭 (correlation name) 을 정의하여 사용할 수 있다 . 릴레이션의 별칭을 사용할 경우 from 절에서 목표 릴레이션 이름 뒤에 별칭을 정의한다 .

별칭을 사용하지 않은 표현 별칭을 사용한 표현

Select department.dept_code,

dept_name

From employee, department

Where employee.dept_code =

department.dept_code

And name = “ 유승우”

Select d.dept_code, dept_name

From employee e, department d

Where e.dept_code =

d.dept_code

And name = “ 유승우”

Page 19: 3.  데이터 조작 기능

19

3. 1. 14 부속질의 (subquery) 를 이용한 검색3. 1. 14 부속질의 (subquery) 를 이용한 검색

부속질의 (subquery) 란 다른 SQL 명령 ( 예 , select, insert, delete, update 등 ) 의 where 절에 내포된 (nested) 질의를 일컫는 것으로 , 부속 질의에는 select 절과 from 절이 꼭 포함되어야 한다 . 이와 같은 부속 질의는 상위 질의보다 먼저 실행되어야 하기 때문에 괄호 (())로 묶여야 한다 .

부속질의 작성 시 이용되는 키워드부속질의에 사용되는

조건 명령 의 미

IN부속질의에서 검색된 결과에 대하여 일치하는 경우 참 (TRUE)

Where 비교속성 [NOT] IN ( 부속질의 )

ALL부속질의에서 검색된 모든 결과를 만족할 경우 참 (TRUE)

Where 비교속성 비교연산자 ALL ( 부속질의 )

ANY부속질의에서 검색된 결과 중 하나라도 만족할 경우 참 (TRUE)

Where 비교속성 비교연산자 ANY ( 부속질의 )

EXISTS부속질의에서 검색된 결과가 존재하는지 검사

Where [NOT] Exists ( 부속질의 )

Page 20: 3.  데이터 조작 기능

20

3. 1. 14 부속질의 (subquery) 를 이용한 검색3. 1. 14 부속질의 (subquery) 를 이용한 검색

예 ) 박웅신 사원의 소속 부서명을 검색하라 .

[ 일반 죠인 명령 ]

Select 부서명

From 사원 , 부서

Where 사원 . 부서코드 =

부소 . 부서코드

And 이름 = “ 박웅신”

[ 부속질의 표현 ]

Select 부서명

From 부서

Where 부서코드 IN ( Select 부서코드

From 사원

Where 이름 = “

박웅신” )

Page 21: 3.  데이터 조작 기능

21

3. 2 데이터 삽입3. 2 데이터 삽입

SQL 질의어에서 테이블에 데이터를 삽입하기 위해서 사용하는 명령어는 insert 이다 .

insertinto 테이블 [( 열 _ 이름 _ 리스트 )]values ( 열값 _ 리스트 );

예 ) “ 부서” 테이블에 부서코드 C03, 부서명 생산부 , 사무실 A603, 전화 1191 정보를 삽입하라 .

Insert Into 부서Values (“C04”, “ 생산부” , “A603”, “1191”)

Page 22: 3.  데이터 조작 기능

22

3. 3 데이터 삭제 (delete)3. 3 데이터 삭제 (delete)

SQL 질의어에서 테이블의 데이터를 삭제하기 위해서 사용하는 명령어는 delete 이다 . 구문형식은 다음과 같다 .

delete from 테이블 [where 조건 ];

Page 23: 3.  데이터 조작 기능

23

3. 3 .1 전체 투플 삭제3. 3 .1 전체 투플 삭제

예제 ] 예제 데이터베이스의 “사원” 릴레이션에 포함된 모든 투플을 삭제하라 .

deletefrom “ 사원”

3. 3 .2 조건을 지정한 투플 삭제3. 3 .2 조건을 지정한 투플 삭제

예제 ] 예제 데이터베이스의 “사원” 릴레이션에서 “사번”이 C0104 인 투플을 삭제하라 .

deleteFrom 사원 where 사원번호 = “C0104”

Page 24: 3.  데이터 조작 기능

24

3. 4 데이터 갱신 [update]3. 4 데이터 갱신 [update]

update 테이블 set 열 _ 이름 = 산술식 + [where 조건 ];

SQL 질의어에서 에 저장된 데이터의 내용을 갱신하기 위해서 사용하는 명령어는 update이며 구문형식은 아래와 같다 .

Page 25: 3.  데이터 조작 기능

25

3. 4 .1 전체 투플 변경3. 4 .1 전체 투플 변경

예 ) 사원 테이블의 모든 사원의 호봉을 1 올리게 수정하라 .

Update 사원Set 호봉 = 호봉 + 1

3. 4 .2 조건을 지정한 투플 변경3. 4 .2 조건을 지정한 투플 변경

예 ) 부서 테이블에서 부서코드 C01 의 사무실을 B101, 전화를 2171 로 변경하여라 .

Update 부서Set 사무실 = “B601”, 전화 = “2171”Where 부서코드 = “C01”

Page 26: 3.  데이터 조작 기능

26

4. 뷰 (View)4. 뷰 (View)

뷰 (view) 란 create table 명령으로 생성한 릴레이션 ( 기본 테이블 : base table) 으로부터 특정 조건에 맞는 내용들을 추출하여 생성한 가상의 (virtual) 릴레이션 ( 테이블 ) 이다 .

4.1 뷰의 생성4.1 뷰의 생성

SQL 질의어에서 뷰를 생성하기 위해서 사용하는 명령어는 create view 이며 구문형식은 다음과 같다 .

create view 뷰 _ 이름 [( 열 _ 이름 _ 리스트 )]as select 문

Page 27: 3.  데이터 조작 기능

27

4.1 뷰의 생성4.1 뷰의 생성

인사부

예 ) 사원 테이블을 기본으로 부서코드가 C01 인 사원의 사원번호 , 이름 속성을 추출하여 인사부라는 이름의 뷰 테이블을 생성하는 SQL 명령어를 작성하라 .

Create View 인사부as Select 사원번호 , 이름From 사원Where 부서코드 = “C01”

사원

사원번호 이름부서코

드주소 호봉

C0101 유승우 C01 서울 25

C0102 박웅신 C01 인천 18

C0103 허영무 C01 경기 16

C0104 황민규 C01 12

C0201 차승익 C02 서울 22

C0202 이재우 C02 서울 15

인사부

Page 28: 3.  데이터 조작 기능

28

4.2 뷰의 제거4.2 뷰의 제거

drop view 뷰 _ 이름

SQL 질의어에서 뷰를 제거하기 위해서 사용하는 명령어는 drop view 이며 구문 형식은 다음과 같다 .