Chương 5 Chương 5

Ngôn ngữ SQL Ngôn ngữ SQL

Nội dung chi tiết

i thi u

 Gi ệ  Đ nh nghĩa d li u ữ ệ ị  Truy v n d li u ữ ệ ấ  C p nh t d li u ậ ữ ệ  Khung nhìn (view)  Ch m c (index)

ỉ ụ

2 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Giới thiệu

ữ ệ

i s d ng

 Ngôn ng Đ i s quan h ệ ữ ạ ố - Cách th c truy v n d li u ấ ứ - Khó khăn cho ng ườ ử ụ

 SQL (Structured Query Language)

i s d ng ch c n đ a ra n i dung c n truy v n

ư

ỉ ầ ở

- Ngôn ng c p cao ữ ấ - Ng ườ ử ụ - Đ c phát tri n b i IBM (1970s) ể - Đ c g i là SEQUEL - Đ c ANSI công nh n và phát tri n thành chu n ậ

ượ ượ ượ

 SQL-86  SQL-92  SQL-99

3 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Giới thiệu (tt)

 SQL g mồ ị

ữ ệ

ữ ệ

Lý thuyết : Chuẩn SQL­92

Ví dụ : SQL Server

ả ộ

- Đ nh nghĩa d li u (DDL) - Thao tác d li u (DML) - Đ nh nghĩa khung nhìn - Ràng bu c toàn v n ẹ ộ - Phân quy n và b o m t ề ậ ả - Đi u khi n giao tác ể  SQL s d ng thu t ng ậ ử ụ - B ng ~ quan h ệ - C t ~ thu c tính ộ - Dòng ~ bộ

4 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Nội dung chi tiết

i thi u

ữ ệ

ữ ệ

 Gi ệ ớ  Đ nh nghĩa d li u ị - Ki u d li u ữ ệ - Các l nh đ nh nghĩa d li u ị ệ  Truy v n d li u ữ ệ ấ  C p nh t d li u ậ ữ ệ  Khung nhìn (view)  Ch m c (index)

ỉ ụ

5 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Định nghĩa dữ liệu

c đ cho m i quan h

 Là ngôn ng mô t ỗ ng ng c a t ng thu c tính

ượ ề

ệ ủ ừ

ị ươ

- L - Mi n giá tr t ứ - Ràng bu c toàn v n ẹ ộ - Ch m c trên m i quan h ệ

ỉ ụ

 G mồ

- CREATE TABLE (t o b ng) ả - DROP TABLE (xóa b ng)ả - ALTER TABLE (s a b ng) - CREATE DOMAIN (t o mi n giá tr ) ị ề ạ - CREATE DATABASE - … ậ

6 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ

Kiểu dữ liệu

 S (numeric)

-

ố INTEGER - SMALLINT - NUMERIC, NUMERIC(p), NUMERIC(p,s) - DECIMAL, DECIMAL(p), DECIMAL(p,s) - REAL - DOUBLE PRECISION - FLOAT, FLOAT(p)

7 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Kiểu dữ liệu (tt)

 Chu i ký t ỗ

(character string) - CHARACTER, CHARACTER(n) - CHARACTER VARYING(x)

 Chu i bit (bit string)

ỗ - BIT, BIT(x) - BIT VARYING(x)

 Ngày gi

(datetime) - DATE g m ngày, tháng và năm ồ - TIME g m gi ờ ồ - TIMESTAMP g m ngày và gi

, phút và giây ồ

8 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Lệnh tạo bảng

 Đ đ nh nghĩa m t b ng

ộ ả

ể ị

ộ ữ ệ

- Tên b ngả - Các thu c tính ộ  Tên thu c tính  Ki u d li u  Các ràng bu c toàn v n trên thu c tính (RBTV) ẹ

 Cú pháp

CREATE TABLE  (

  [],   [], … []

)

9 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ ­ Tạo bảng

CREATE TABLE NHANVIEN (

MANV CHAR(9),

HONV VARCHAR(10),

TENDEM VARCHAR(20),

TENNV VARCHAR(10),

NS DATETIME,

DCHI VARCHAR(50),

GT CHAR(3),

LUONG INT,

MA_NQL CHAR(9),

PHG INT

)

10 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Lệnh tạo bảng (tt)

- NOT NULL - NULL - UNIQUE - DEFAULT - PRIMARY KEY - FOREIGN KEY / REFERENCES - CHECK

 Đ t tên cho RBTV

CONSTRAINT  

11 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ ­ RBTV

CREATE TABLE NHANVIEN (

HONV VARCHAR(10) NOT NULL,

TENDEM VARCHAR(20) NOT NULL,

TENNV VARCHAR(10) NOT NULL,

MANV CHAR(9) PRIMARY KEY,

NS DATETIME,

DCHI VARCHAR(50),

GT CHAR(3) CHECK (GT IN (‘Nam’, ‘Nu’)),

LUONG INT DEFAULT (10000),

MA_NQL CHAR(9),

PHG INT

)

12 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ ­ RBTV

CREATE TABLE PHONGBAN (

TENPB VARCHAR(20) UNIQUE,

MAPHG INT NOT NULL,

TRPHG CHAR(9),

NG_NHANCHUC DATETIME DEFAULT (GETDATE())

)

CREATE TABLE PHANCONG (

MA_NVIEN CHAR(9) FOREIGN KEY (MA_NVIEN)

REFERENCES NHANVIEN(MANV),

SODA INT REFERENCES DEAN(MADA),

THOIGIAN DECIMAL(3,1)

)

13 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ ­ Đặt tên cho RBTV

CREATE TABLE NHANVIEN (

HONV VARCHAR(10) CONSTRAINT NV_HONV_NN NOT NULL,

TENDEM VARCHAR(20) NOT NULL,

TENNV VARCHAR(10) NOT NULL,

MANV CHAR(9) CONSTRAINT NV_MANV_PK PRIMARY KEY,

NS DATETIME,

DCHI VARCHAR(50),

GT CHAR(3) CONSTRAINT NV_GT_CHK

CHECK (GT IN (‘Nam’, ‘Nu’)),

LUONG INT CONSTRAINT NV_LUONG_DF DEFAULT (1000000),

MA_NQL CHAR(9),

PHG INT

14 ) Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ ­ Đặt tên cho RBTV

CREATE TABLE PHANCONG (

MA_NVIEN CHAR(9),

SODA INT,

THOIGIAN DECIMAL(3,1),

CONSTRAINT PC_MANVIEN_SODA_PK PRIMARY KEY (MA_NVIEN,

SODA),

CONSTRAINT PC_MANVIEN_FK FOREIGN KEY (MA_NVIEN)

REFERENCES NHANVIEN(MANV),

CONSTRAINT PC_SODA_FK FOREIGN KEY (SODA)

REFERENCES DEAN(MADA)

)

15 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Lệnh sửa bảng

 Đ c dùng đ ể

ượ

- Thay đ i c u trúc b ng - Thay đ i RBTV

ổ ấ ổ

 Thêm c tộ

ALTER TABLE  ADD COLUMN

  []

 Xóa c tộ

 M r ng c t ộ ở ộ

ALTER TABLE  DROP COLUMN 

ALTER TABLE  ALTER COLUMN  

16 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Lệnh sửa bảng (tt)

 Thêm RBTV

ALTER TABLE  ADD

CONSTRAINT  ,

CONSTRAINT  ,

 Xóa RBTV

ALTER TABLE  DROP 

17 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ ­ Thay đổi cấu trúc bảng

ALTER TABLE NHANVIEN ADD

NGHENGHIEP CHAR(20)

ALTER TABLE NHANVIEN DROP COLUMN  NGHENGHIEP

ALTER TABLE NHANVIEN ALTER COLUMN

NGHENGHIEP CHAR(50)

18 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ ­ Thay đổi RBTV

CREATE TABLE PHONGBAN (

TENPB VARCHAR(20),

MAPHG INT NOT NULL,

TRPHG CHAR(9),

NG_NHANCHUC DATETIME

)

ALTER TABLE PHONGBAN ADD

CONSTRAINT PB_MAPHG_PK PRIMARY KEY (MAPHG),

CONSTRAINT PB_TRPHG FOREIGN KEY (TRPHG)

REFERENCES NHANVIEN(MANV),

CONSTRAINT PB_NGNHANCHUC_DF DEFAULT

(GETDATE())

FOR (NG_NHANCHUC),

CONSTRAINT PB_TENPB_UNI UNIQUE (TENPB) 19 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Lệnh xóa bảng

ượ

 Đ c dùng đ xóa c u trúc b ng - T t c d li u c a b ng cũng b xóa ủ

ể ấ ả ữ ệ

ấ ả

ả ị

 Cú pháp

 Ví dụ

DROP TABLE 

DROP TABLE NHANVIEN

DROP TABLE PHONGBAN

DROP TABLE PHANCONG

20 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Lệnh xóa bảng (tt)

NHANVIEN

TENDEM

NS

GT

MA_NQL PHG

HON V

TENN V

MAN V

DCH I

LUON G

PHONGBAN

MAPHG

TENPH G

TRPH G

NG_NHANCHU C

21 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Lệnh tạo miền giá trị

 T o ra m t ki u d li u m i k th a nh ng ki u d ữ

ớ ế ừ

ữ ệ

ộ ạ li u có s n ẳ ệ

 Cú pháp

 Ví dụ

CREATE DOMAIN  AS 

CREATE DOMAIN Kieu_Ten AS  VARCHAR(30)

22 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Nội dung chi tiết

i thi u

ấ ồ

 Gi ệ  Đ nh nghĩa d li u ữ ệ ị  Truy v n d li u ữ ệ ấ - Truy v n c b n ơ ả ấ - T p h p, so sánh t p h p và truy v n l ng ậ ợ - Hàm k t h p và gom nhóm ế ợ - M t s ki u truy v n khác ộ ố ể  C p nh t d li u ậ ữ ệ  Khung nhìn (view)  Ch m c (index)

ỉ ụ

23 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Truy vấn dữ liệu

 Là ngôn ng rút trích d li u th a m t s đi u ki n ữ ệ

ộ ố ề

nào đó  D a trên ự

nhi u dòng trùng nhau

set

- Cho phép 1 b ng có bag „ - B ng là ả

quan h là ệ

+ Phép toán ĐSQH Một số bổ sung

24 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Truy vấn cơ bản

 G m 3 m nh đ

SELECT 

FROM 

c hi n th trong k t qu truy v n

ế

ộ ầ

- ộ  Tên các c t c n đ ượ -

 Tên các b ng liên quan đ n câu truy v n

ế

c rút trích

ệ ứ

ẽ ượ

ả - <đi u ki n> ề ể ố

, ‡

, = , LIKE và BETWEEN

WHERE <điều kiện>

 Bi u th c boolean xác đ nh dòng nào s đ  N i các bi u th c: AND, OR, và NOT , „  Phép toán: < , > , £ Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ

25 ậ

Truy vấn cơ bản (tt)

 SQL và ĐSQH

p SELECT 

· FROM 

s WHERE <điều kiện>

SELECT L

L (s

C (R))

p FROM R

WHERE C

26 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ

Lấy tất cả các cột  của quan hệ kết quả

SELECT *

FROM NHANVIEN

TENDEM

MANV

HONV

TENNV

NS

DCHI

GT

LUONG

MA_NQL

PHG

Nguyen

Thanh

Tung

12/08/1955

Nam

40000

5

Nguyen

Manh

Hung

09/15/1962

638 NVC  Q5 Ba Ria VT

Nam

38000

5

33344555 5 98798798 7

88866555 5 33344555 5

WHERE PHG=5

27 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề SELECT

SELECT MANV, HONV, TENDEM,  TENNV

FROM NHANVIEN

TENDEM

MANV

HONV

TENNV

Nguyen

Thanh

Tung

Nguyen

Manh

Hung

33344555 5 98798798 7

WHERE PHG=5 AND GT=‘Nam’

28 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề SELECT (tt)

Tên bí danh

SELECT MANV, HONV AS HO, TENDEM AS ‘TEN DEM’, TENNV AS  TEN

FROM NHANVIEN

MANV

HO

TEN DEM

TEN

Nguyen

Thanh

Tung

Nguyen

Manh

Hung

33344555 5 98798798 7

WHERE PHG=5 AND GT=‘Nam’

29 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề SELECT (tt)

Mở rộng

SELECT MANV, HONV + ‘ ’ + TENDEM + ‘ ’ + TENNV AS ‘HO TEN’

FROM NHANVIEN

MANV

HO TEN

Nguyen Thanh Tung

Nguyen Manh Hung

33344555 5 98798798 7

WHERE PHG=5 AND GT=‘Nam’

30 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề SELECT (tt)

Mở rộng

SELECT MANV, LUONG*1.1 AS ‘LUONG10%’

FROM NHANVIEN

MANV

LUONG10%

33000

27500

33344555 5 98798798 7

WHERE PHG=5 AND GT=‘Nam’

31 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề SELECT (tt)

Loại bỏ các dòng trùng nhau

SELECT DISTINCT LUONG SELECT LUONG

FROM NHANVIEN FROM NHANVIEN

LUONG LUONG

30000 30000

WHERE PHG=5 AND GT=‘Nam’ WHERE PHG=5 AND GT=‘Nam’

25000 25000

38000 25000

­ Tốn chi phí

38000

­ Người dùng muốn thấy

32 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ

 Cho bi

t MANV và TENNV làm vi c

phòng

ế

ệ ở

‘Nghien cuu’

33 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề WHERE

Biểu thức logic

SELECT MANV, TENNV

FROM NHANVIEN, PHONGBAN

WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG

TRUE TRUE

34 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề WHERE (tt)

Độ ưu tiên

SELECT MANV, TENNV

FROM NHANVIEN, PHONGBAN

WHERE (TENPHG=‘Nghien cuu’ OR TENPHG=‘Quan ly’) AND  PHG=MAPHG

35 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề WHERE (tt)

BETWEEN

SELECT MANV, TENNV

FROM NHANVIEN

WHERE LUONG>20000 AND LUONG<30000

SELECT MANV, TENNV

FROM NHANVIEN

WHERE LUONG BETWEEN 20000 AND 30000

36 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề WHERE (tt)

NOT BETWEEN

SELECT MANV, TENNV

FROM NHANVIEN

WHERE LUONG NOT BETWEEN 20000 AND  30000

37 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề WHERE (tt)

LIKE

SELECT MANV, TENNV

FROM NHANVIEN

Ký tự bất kỳ

WHERE DCHI LIKE ‘Nguyen _ _ _ _’

SELECT MANV, TENNV

FROM NHANVIEN

Chuỗi bất kỳ

WHERE DCHI LIKE ‘Nguyen %’

38 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề WHERE (tt)

NOT LIKE

SELECT MANV, TENNV

FROM NHANVIEN

WHERE HONV LIKE ‘Nguyen’

SELECT MANV, TENNV

FROM NHANVIEN

WHERE HONV NOT NOT LIKE ‘Nguyen’

39 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề WHERE (tt)

ESCAPE

SELECT MANV, TENNV

FROM NHANVIEN

WHERE DCHI LIKE ‘% Nguyens_%’  ESCAPE  ‘s’

‘Nguyen_’

40 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề WHERE (tt)

Ngày giờ

SELECT MANV, TENNV

FROM NHANVIEN

WHERE NGSINH BETWEEN ‘1955­12­08’ AND ‘1966­07­19’

HH:MI:SS

YYYY­MM­DD

’17:30:00’ ‘1955­12­08’

MM/DD/YYYY

’12/08/1955’ ’05:30 PM’

‘December 8, 1955’

‘1955­12­08 17:30:00’

41 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề WHERE (tt)

NULL

- S d ng trong tr

ng h p

ử ụ

ườ

 Không bi t (value unknown)  Không th áp d ng (value inapplicable)  Không t n t

- Nh ng bi u th c tính toán có liên quan đ n giá tr NULL

ế

i (value withheld) ứ

ế ể ồ ạ ể

s cho ra k t qu là NULL ẽ 

ợ ệ

- Nh ng bi u th c so sánh có liên quan đ n giá tr NULL

trong SQL ế

ế

ế

trong SQL

ế x có giá tr là NULL ị x + 3 cho ra k t qu là NULL ả ế x + 3 là m t bi u th c không h p l ể ứ ứ ữ s cho ra k t qu là UNKNOWN ả ẽ x = 3 cho ra k t qu là UNKNOWN  x = 3 là m t so sánh không h p l ợ ệ

42 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề WHERE (tt)

NULL

SELECT MANV, TENNV

FROM NHANVIEN

WHERE MA_NQL IS NULL

SELECT MANV, TENNV

FROM NHANVIEN

WHERE MA_NQL IS NOT NULL

43 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề FROM

Không sử dụng mệnh đề WHERE

SELECT MANV, MAPHG

FROM NHANVIEN, PHONGBAN

MANV

MAPHG

1

4

5

1

4

5

33344555 5 33344555 5 33344555 5 98798798 7 98798798 7 98798798 7 …

WHERE TRUE

44 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề FROM (tt)

Tên bí danh

SELECT TENPHG, DIADIEM SELECT TENPHG, DIADIEM

FROM PHONGBAN, DDIEM_PHG FROM PHONGBAN AS PB, DDIEM_PHG AS  DD WHERE MAPHG=MAPHG WHERE PB.MAPHG=DD.MAPHG

SELECT TENNV, NV.NGSINH, TENTN, TN.NGSINH SELECT TENNV, NGSINH, TENTN,  NGSINH FROM NHANVIEN NV, THANNHAN TN FROM NHANVIEN, THANNHAN WHERE MANV=MA_NVIEN WHERE MANV=MA_NVIEN

45 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 1

 V i nh ng đ án ữ

t mã đ án, mã ề ng phòng cùng

‘Ha Noi’, cho bi phòng ban ch trì đ án, h tên tr ọ ề ủ v i ngày sinh và đ a ch c a ng ớ

ế ưở i y ườ ấ

ỉ ủ

46 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 2

 Tìm h tên c a nhân viên phòng s 5 có tham gia ố làm vi c trên 10

ọ ề

ớ ố ờ

ủ ả

vào đ án “S n ph m X” v i s gi giờ

47 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 3

 Tìm h tên c a t ng nhân viên và ng

i ph trách

ủ ừ

ườ

tr c ti p nhân viên đó

ọ ế

48 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 4

 Tìm h tên c a nh ng nhân viên đ

c “Nguyen

ượ

ủ Thanh Tung” ph trách tr c ti p ụ

ế

49 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề ORDER BY

 Dùng đ hi n th k t qu câu truy v n theo m t th ứ ả

ể ể

ị ế

t ự

nào đó  Cú pháp

SELECT 

FROM 

WHERE <điều kiện>

- ASC: tăng (m c đ nh) - DESC: gi mả

ORDER BY 

50 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Mệnh đề ORDER BY (tt)

 Ví dụ

SELECT MA_NVIEN, SODA

FROM PHANCONG

MA_NVIEN

SODA

10

30

10

30

10

20

30

99988777 7 99988777 7 98798798 7 98798798 7 98765432 1 98765432 1 98765432 1

ORDER BY MA_NVIEN DESC, SODA

51 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Nội dung chi tiết

i thi u

ấ ồ

 Gi ệ  Đ nh nghĩa d li u ữ ệ ị  Truy v n d li u ữ ệ ấ - Truy v n c b n ơ ả ấ - T p h p, so sánh t p h p và truy v n l ng ợ ậ ợ - Hàm k t h p và gom nhóm ế ợ - M t s d ng truy v n khác

ậ ữ ệ

ộ ố ạ  C p nh t d li u  Khung nhìn (view)  Ch m c (index)

ỉ ụ

52 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Phép toán tập hợp trong SQL

 SQL có cài đ t các phép toán ặ - H p (UNION) - Giao (INTERSECT) - Tr (EXCEPT)

ế

 K t qu tr v là t p h p ả ả ề - Lo i b các b trùng nhau ộ - Đ gi

i các b trùng nhau

ạ ỏ l ể ữ ạ  UNION ALL

INTERSECT ALL

 EXCEPT ALL

53 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Phép toán tập hợp trong SQL (tt)

 Cú pháp

SELECT  FROM  WHERE <điều  kiện>

UNION [ALL]

SELECT  FROM  WHERE <điều  kiện> SELECT  FROM  WHERE <điều  kiện>

INTERSECT [ALL]

SELECT  FROM  WHERE <điều  kiện> SELECT  FROM  WHERE <điều  kiện>

EXCEPT [ALL]

SELECT  FROM  WHERE <điều  kiện>

54 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 5

 Cho bi

t các mã đ án có

ế

ớ ọ

- Nhân viên v i h là ‘Nguyen’ tham gia ho c, - Tr

ng phòng ch trì đ án đó v i h là ‘Nguyen’

ớ ọ

ưở

55 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 6

 Tìm nhân viên có ng

i thân cùng tên và cùng gi

ườ

i ớ

tính

56 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 7

 Tìm nh ng nhân viên không có thân nhân nào

57 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Truy vấn lồng

SELECT MANV, TENNV

FROM NHANVIEN, PHONGBAN

WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG

SELECT 

FROM  Câu truy vấn ngoài  (Outer query)

WHERE  (

SELECT 

FROM  Câu truy vấn trong  (Subquery)

WHERE <điều kiện>)

58 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Truy vấn lồng (tt)

ể ồ

nhi u m c ứ

ệ ấ

ng tr v m t t p các giá tr ị

ả ề ộ ậ

ườ

ộ c k t h p b ng phép n i logic

WHERE đ

 Các câu l nh SELECT có th l ng nhau  Câu truy v n con th  Các câu truy v n trong trong cùng m t m nh đ ề ằ

ượ

ấ ế ợ  M nh đ WHERE c a câu truy v n ngoài ủ

ậ ng đi cùng v i m t s toán t ớ

ấ ộ ố

ườ

- ứ - So sánh t p h p th IN, NOT IN

- Ki m tra s t n t

 ALL  ANY ho c SOME ặ i ự ồ ạ

 EXISTS  NOT EXISTS

59 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Truy vấn lồng (tt)

 Có 2 lo i truy v n l ng

ấ ồ

ạ - L ng phân c p

ế

 M nh đ WHERE c a truy v n trong không tham chi u đ n ấ truy v n

ế ấ

thu c tính c a các quan h trong m nh đ FROM ộ ngoài

 Khi th c hi n, câu truy v n trong s đ

c th c hi n tr

ẽ ượ

c ướ

ự ươ

- L ng t ồ ệ

ệ ng quan ề

ế

 M nh đ WHERE c a truy v n trong tham chi u ít nh t m t ấ truy v n

ộ ấ

thu c tính c a các quan h trong m nh đ FROM ộ ngoài

ẽ ượ

c th c hi n nhi u ệ ng ng v i m t b c a truy v n ngoài

 Khi th c hi n, câu truy v n trong s đ ứ

ệ ự l n, m i l n t ỗ ầ ươ ầ

ộ ộ ủ

60 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ ­ Lồng phân cấp

SELECT MANV, TENNV

FROM NHANVIEN, DIADIEM_PHG

WHERE DIADIEM=‘TP HCM’ AND PHG=MAPHG

SELECT MANV, TENNV

FROM NHANVIEN

(1, 5) WHERE PHG IN(

SELECT MAPHG

FROM DIADIEM_PHG

WHERE DIADIEM=‘TP HCM’

)

61 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 7

 Tìm nh ng nhân viên không có thân nhân nào

62 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 8

 Tìm nh ng nhân viên có l

ng l n h n l

ng c a

ơ ươ

ươ ộ nhân viên phòng 4

ít nh t m t ấ

63 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 9

 Tìm nh ng nhân viên có l

ng l n h n l

ng c a

ươ

ơ ươ

t c nhân viên phòng 4

t ấ ả

64 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 10

 Tìm nh ng tr

ng phòng có

i thi u m t

ưở

t ố

ộ thân nhân

65 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ ­ Lồng tương quan

SELECT MANV, TENNV

FROM NHANVIEN, PHONGBAN

WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG

SELECT MANV, TENNV

FROM NHANVIEN

WHERE EXISTS (

SELECT *

FROM PHONGBAN

WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG )

66 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 6

 Tìm nhân viên có ng

i thân cùng tên và cùng gi

ườ

i ớ

tính

67 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 7

 Tìm nh ng nhân viên không có thân nhân nào

68 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 8

 Tìm nh ng nhân viên có l

ng l n h n l

ng c a

ơ ươ

ươ ộ nhân viên phòng 4

ít nh t m t ấ

69 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 10

 Tìm nh ng tr

ng phòng có

i thi u m t

ưở

t ố

ộ thân nhân

70 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Nhận xét IN và EXISTS

 IN

ở ệ

- IN - Thu c tính ở ệ ộ ể ấ

m nh đ SELECT c a truy v n trong ph i ả ủ m nh đ WHERE có cùng ki u d li u v i thu c tính ề ữ ệ c a truy v n ngoài ủ  EXISTS

- Không c n có thu c tính, h ng s hay bi u th c nào

t kê tên thu c tính

m nh đ ề

SELECT c a truy v n trong

khác đ ng tr c ướ ứ - Không nh t thi ấ ế ủ

t li ấ

- Nh ng câu truy v n có = ANY hay IN đ u có th chuy n

thành câu truy v n có EXISTS

71 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Phép chia trong SQL

A

B

C

D

E

D

E

A

C

B

R

S

R‚ S

a

1

a

a

a

1

b

1

a

a

a

1

a a a g bi ai a g g g

a

b

1

a g

a

a

1

b g

a

b

3

b g

a

a

1

g g

a

b

1

g g

a

b

1

 R‚ S là t p các giá tr a

i trong R sao cho không có ồ ạ i

i nào trong S làm cho b (aộ i, bi) không t n t

giá tr bị trong R

g b

72 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Phép chia trong SQL (tt)

 S d ng NOT EXISTS đ bi u di n

ể ể

ử ụ

SELECT R1.A, R1.B, R1.C

FROM R, R1

WHERE NOT EXISTS (

SELECT *

FROM S

WHERE NOT EXISTS (

SELECT *

FROM R R2

WHERE R2.D=S.D AND R2.E=S.E

AND R1.A=R2.A AND R1.B=R2.B AND R1.C=R2.C ))

73 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 11

 Tìm tên các nhân viên đ

c phân công làm

ượ

t cấ ả t

các đ ánồ

- Tìm tên các nhân viên mà không có đ án nào là

không

đ

c phân công làm

ế

- T p b chia: PHANCONG(MA_NVIEN, SODA) - T p chia: DEAN(MADA) - T p k t qu : KQ(MA_NVIEN) ả - K t KQ v i NHANVIEN đ l y ra TENNV ể ấ

ượ ậ ậ ậ ế

74 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 11 (tt)

 Tìm tên các nhân viên đ

c phân công làm

ượ

t cấ ả t

các đ ánồ

75 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Nội dung chi tiết

i thi u

ấ ồ

 Gi ệ  Đ nh nghĩa d li u ữ ệ ị  Truy v n d li u ữ ệ ấ - Truy v n c b n ơ ả ấ - T p h p, so sánh t p h p và truy v n l ng ậ ợ - Hàm k t h p và gom nhóm ế ợ - M t s d ng truy v n khác

ậ ữ ệ

ộ ố ạ  C p nh t d li u  Khung nhìn (view)  Ch m c (index)

ỉ ụ

76 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Hàm kết hợp

 COUNT

ế

- COUNT(*) đ m s dòng - COUNT() đ m s giá tr khác NULL c a ế

ố ộ

thu c tính

ế

nhau và khác NULL c a thu c tính

- COUNT(DISTINCT ) đ m s giá tr khác ộ ộ

 MIN  MAX  SUM  AVG

 Các hàm k t h p đ

c đ t

ế ợ

ượ

ặ ở ệ

m nh đ SELECT ề

77 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 12

 Tìm t ng l

ng cao nh t, l

ng, l

ng th p nh t và

ươ

ấ ươ

l

ươ ng trung bình c a các nhân viên ủ

ươ

78 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 13

t s l

ế

ố ượ

ng nhân viên c a phòng ‘Nghien ủ

 Cho bi cuu’

79 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 14

 Cho bi

t s l ế ố ượ

ng nhân viên c a t ng phòng ban ủ ừ

PHG

SL_NV

5

3

4

3

1

1

MANV

HONV

TENNV

NGSINH

DCHI

PHAI

LUONG

MA_NQL

PHG

TENLO T Thanh

Nguyen

Tung

12/08/1955

Nam

5

40000

Nguyen

Manh

Hung

09/15/1962

638 NVC  Q5 Ba Ria VT

Nam

5

38000

Tran

Thanh

Tam

07/31/1972

Nu

5

25000

Ngoc

Hang

07/19/1968

Bui

543 MTL  Q1 33 NTH Q1

Nu

4

38000

Le

Nu

Quynh

Nhu

07620/1951

219 TD Q3

4

43000

Tran

Hong

Quang

04/08/1969

Nam

4

25000

Pham

Van

Vinh

11/10/1945

980 LHP  Q5 450 TV HN

Nam

88866555 5 33344555 5 33344555 5 98765432 1 88866555 5 98765432 1 NULL

1

55000

33344555 5 98798798 7 45345345 3 99988777 7 98765432 1 98798798 7 88866555 5

80 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Gom nhóm

 Cú pháp

SELECT 

FROM 

WHERE <điều kiện>

 Sau khi gom nhóm

i các thu c tính

- M i nhóm các b s có cùng giá tr t ộ ẽ

ị ạ

gom nhóm

GROUP BY 

81 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 14

 Cho bi

t s l ế ố ượ

ng nhân viên c a t ng phòng ban ủ ừ

82 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 15

t mã s , h tên, s l

ng

ố ọ

ế

ố ượ

đ án và t ng th i gian mà h tham gia

 V i m i nhân viên cho bi ổ

ớ ề

SODA THOIGIAN

1

32.5

2

7.5

2

10.0

3

10.0

10

10.0

20

20.0

10

35.0

30

5.0

30

20.0

20

15.0

1

20.0

2

20.0

MA_NVIE N 12345678 9 12345678 9 33344555 5 33344555 5 33344555 5 88866555 5 98798798 7 98798798 7 98765432 1 98765432 1 45345345 3 45345345 3 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ

83 ậ

Ví dụ 16

t nh ng nhân viên tham gia t

ế

2 đ án tr ở

 Cho bi lên

SODA THOIGIAN

1

32.5

2

7.5

2

10.0

3

10.0

10

10.0

20

20.0

bị loại ra

10

35.0

30

5.0

30

20.0

20

15.0

1

20.0

2

20.0

MA_NVIE N 12345678 9 12345678 9 33344555 5 33344555 5 33344555 5 88866555 5 98798798 7 98798798 7 98765432 1 98765432 1 45345345 3 45345345 3

84 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Điều kiện trên nhóm

 Cú pháp

SELECT 

FROM 

WHERE <điều kiện>

GROUP BY 

HAVING <điều kiện trên nhóm>

85 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 16

t nh ng nhân viên tham gia t

ế

2 đ án tr ở

 Cho bi lên

86 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 17

 Cho bi

t nh ng phòng ban (TENPHG) có l

ng

ế

ươ

trung bình c a các nhân viên l n h n 2tr

ơ

87 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Nhận xét

 M nh đ GROUP BY ộ

ệ ế ợ

ừ ệ

- S d ng các hàm k t h p trong m nh đ SELECT đ ể

ế

- Các thu c tính trong m nh đ SELECT (tr nh ng thu c ề tính trong các hàm k t h p) ph i xu t hi n trong m nh đ GROUP BY  M nh đ HAVING ề ệ ử ụ ể

- Ch ki m tra đi u ki n trên nhóm, không là đi u ki n l c

ki m tra m t s đi u ki n nào đó ộ ố ề ề

ệ ọ

ỉ ể trên t ng b ừ

- Sau khi gom nhóm đi u ki n trên nhóm m i đ ề

ớ ượ

c th c ự

hi n ệ

88 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Nhận xét (tt)

 Th t

th c hi n câu truy v n có m nh đ GROUP

ứ ự ự

-

-

c gom thành nhi u nhóm

ẽ ượ

-

ng ng v i m nh đ GROUP BY ỗ

-

-

ế ợ

ị ủ

ệ BY và HAVING (1) Ch n ra nh ng dòng th a đi u ki n trong m nh đ ề ỏ ọ WHERE (2) Nh ng dòng này s đ ữ t ề ớ ứ ươ (3) Áp d ng các hàm k t h p cho m i nhóm ế ợ (4) B qua nh ng nhóm không th a đi u ki n trong ề ữ m nh đ HAVING ề (5) Rút trích các giá tr c a các c t và hàm k t h p trong m nh đ SELECT ề

89 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 18

 Tìm nh ng phòng ban có l

ươ

ng trung bình cao nh t ấ

90 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 19

 Tìm 3 nhân viên có l

ươ

ng cao nh t ấ

91 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 12

 Tìm tên các nhân viên đ

c phân công làm

ượ

t cấ ả t

các đ ánồ

92 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Nội dung chi tiết

i thi u

ấ ồ

ậ ữ ệ

 Gi ệ  Đ nh nghĩa d li u ữ ệ ị  Truy v n d li u ữ ệ ấ - Truy v n c b n ơ ả ấ - T p h p, so sánh t p h p và truy v n l ng ậ ợ - Hàm k t h p và gom nhóm ế ợ - M t s d ng truy v n khác ộ ố ạ  C p nh t d li u  Khung nhìn (view)  Ch m c (index)

ỉ ụ

93 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Một số dạng truy vấn khác

 Truy v n con

ở ệ

m nh đ FROM ề

m nh đ FROM ề

ế ở ệ nhiên

 Đi u ki n k t - Phép k t t - Phép k t ngoàI

ế ự ế

 C u trúc CASE

94 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Truy vấn con ở mệnh đề FROM

 K t qu tr v c a m t câu truy v n ph là m t

ả ả ề ủ

ế b ngả - B ng trung gian trong quá trình truy v n ả - Không có l u tr th t s ư

ữ ậ ự

 Cú pháp

SELECT 

FROM R1, R2, () AS tên_bảng

WHERE <điều kiện>

95 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Điều kiện kết ở mệnh đề FROM

 K t b ng ế ằ

SELECT 

FROM R1 [INNER] JOIN R2 ON  

 K t ngoài

ế

WHERE <điều kiện>

SELECT 

FROM R1 LEFT|RIGHT [OUTER] JOIN R2 ON  

WHERE <điều kiện>

96 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 20

 Tìm mã và tên các nhân viên làm vi c t

i phòng

‘Nghien cuu’

97 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 21

 Tìm h tên các nhân viên và tên các đ án nhân

viên tham gia n u có

ế

98 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Cấu trúc CASE

 Cho phép ki m tra đi u ki n và xu t thông tin theo

ể ng h p

t ng tr ừ

ườ

 Cú pháp

CASE 

WHEN  THEN 

WHEN  THEN 

[ELSE ]

END

99 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 22

 Cho bi

t h tên các nhân viên đã đ n tu i v h u

ổ ề ư

ế

ế ọ (nam 60 tu i, n 55 tu i) ổ

100 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 23

 Cho bi

t h tên các nhân viên và năm v h u

ế ọ

ề ư

101 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Kết luận

SELECT 

FROM 

[WHERE <điều kiện>]

[GROUP BY ]

[HAVING <điều kiện trên nhóm>]

[ORDER BY ]

102 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Nội dung chi tiết

i thi u

 Gi ệ  Đ nh nghĩa d li u ữ ệ ị  Truy v n d li u ấ ữ ệ ậ ữ ệ  C p nh t d li u

- Thêm (insert) - Xóa (delete) - S a (update)  Khung nhìn (view)  Ch m c (index)

ỉ ụ

103 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Lệnh INSERT

 Dùng đ thêm 1 hay nhi u dòng vào b ng

ữ ệ

ữ ệ

 Đ thêm d li u - Tên quan hệ - Danh sách các thu c tính c n thêm d li u ộ - Danh sách các giá tr t

ầ ng ng ứ

ị ươ

104 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Lệnh INSERT (tt)

 Cú pháp (thêm 1 dòng)

INSERT INTO ()

VALUES ()

105 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ

INSERT INTO NHANVIEN(HONV, TENDEM, TENNV, MANV)

VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’)

INSERT INTO NHANVIEN(HONV, TENDEM, TENNV, MANV, DCHI)

VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, NULL)

INSERT INTO NHANVIEN

VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, ’12/30/1952’, ’98 HV’, ‘Nam’, ‘37000’,  4)

106 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Lệnh INSERT (tt)

 Nh n xét ậ - Th t ứ ự

các giá tr ph i trùng v i th t ả

ứ ự

các c t ộ

nh ng thu c tính không là

- Có th thêm giá tr NULL khóa chính và NOT NULL

- Câu l nh INSERT s g p l

ẽ ặ ỗ ế

i n u vi ph m RBTV ạ

ệ  Khóa chính  Tham chi uế  NOT NULL - các thu c tính có ràng bu c NOT NULL b t

bu c ph i có giá tr ả

107 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Lệnh INSERT (tt)

 Cú pháp (thêm nhi u dòng)

INSERT INTO ()

108 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ

CREATE TABLE THONGKE_PB (

TENPHG VARCHAR(20),

SL_NV INT,

LUONG_TC INT

)

INSERT INTO THONGKE_PB(TENPHG, SL_NV, LUONG_TC)

SELECT TENPHG, COUNT(MANV), SUM(LUONG)

FROM NHANVIEN, PHONGBAN

WHERE PHG=MAPHG

GROUP BY TENPHG

109 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Lệnh DELETE

 Dùng đ xóa các dòng c a b ng

 Cú pháp

DELETE FROM 

[WHERE <điều kiện>]

110 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ

DELETE FROM NHANVIEN

WHERE HONV=‘Tran’

DELETE FROM NHANVIEN

WHERE MANV=‘345345345’

DELETE FROM NHANVIEN

111 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Lệnh DELETE (tt)

ệ ở

 Nh n xét ậ - S l ố ượ ệ

ng s dòng b xóa ph thu c vào đi u ki n ụ m nh đ WHERE ề

m nh đ WHERE, t

ế

ệ ở ệ

t c ấ ả

- N u không ch đ nh đi u ki n ỉ các dòng trong b ng s b xóa

ề ẽ ị

ị ả

- L nh DELETE có th gây ra vi ph m RB tham chi u

ế

 Không cho xóa  Xóa luôn nh ng dòng có giá tr đang tham chi u đ n

ế

ế

CASCADE

 Đ t NULL cho nh ng giá tr tham chi u ữ

ế

*

112 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Lệnh DELETE (tt)

MANV

HONV

TENNV

NGSINH

DCHI

PHAI

LUONG

MA_NQL

PHG

TENLO T Thanh

Nguyen

Tung

12/08/1955

Nam

40000

5

Nguyen

Manh

Hung

09/15/1962

638 NVC  Q5 Ba Ria VT

Nam

38000

5

Tran

Thanh

Tam

07/31/1972

Nu

25000

5

Ngoc

Hang

07/19/1968

Bui

543 MTL  Q1 33 NTH Q1

Nu

38000

4

Le

Nu

Quynh

Nhu

07620/1951

219 TD Q3

43000

4

Tran

Hong

Quang

04/08/1969

Nam

25000

4

Pham

Van

Vinh

11/10/1945

980 LHP  Q5 450 TV HN

Nam

55000

88866555 5 33344555 5 33344555 5 98765432 1 88866555 5 98765432 1 NULL

1

33344555 5 98798798 7 45345345 3 99988777 7 98765432 1 98798798 7 88866555 5

SODA THOIGIAN

10

10.0

20

20.0

10

35.0

30

5.0

30

20.0

1

20.0

MA_NVIE N 33344555 5 88866555 5 98798798 7 98798798 7 98765432 1 45345345 3

113 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Lệnh DELETE (tt)

TENPHG MAPHG

MA_NVIEN

Nghien cuu

5

NG_NHANCHU C 05/22/1988

333445555

Dieu hanh

4

987987987

01/01/1995

Quan ly

1

888665555

06/19/1981

MANV

HONV

TENNV

NGSINH

DCHI

PHAI

LUONG

MA_NQL

PHG

TENLO T Thanh

12/08/1955

Tung

Nguyen

Nam

40000

09/15/1962

Hung

Manh

Nguyen

638 NVC  Q5 Ba Ria VT

Nam

38000

Tam

Tran

Thanh

07/31/1972

Nu

25000

Bui

Hang

Ngoc

07/19/1968

543 MTL  Q1 33 NTH Q1

Nu

38000

5 NUL L NUL 5 L NUL 5 L 4

Quynh

Nhu

Le

Nu

43000

4

07620/1951

219 TD Q3

Quang

Hong

Tran

04/08/1969

Nam

25000

4

Pham

Vinh

Van

11/10/1945

980 LHP  Q5 450 TV HN

Nam

55000

88866555 5 33344555 5 33344555 5 98765432 1 88866555 5 98765432 1 NULL

1

33344555 5 98798798 7 45345345 3 99988777 7 98765432 1 98798798 7 88866555 5 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ

114 ậ

Lệnh UPDATE

 Dùng đ thay đ i giá tr c a thu c tính cho các

ị ủ

ể dòng c a b ng ủ

 Cú pháp

UPDATE 

SET =,

=,

[WHERE <điều kiện>]

115 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ

UPDATE NHANVIEN

SET NGSINH=’08/12/1965’

WHERE MANV=‘333445555’

DELETE NHANVIEN

SET LUONG=LUONG*1.1

116 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ 25

ổ ơ

ớ ề ề

 V i đ án có mã s 10, hãy thay đ i n i th c hi n đ án thành ‘Vung Tau’ và phòng ban ph trách là phòng 5

UPDATE DEAN

SET DIADIEM_DA=’Vung Tau’, PHONG=5

WHERE MADA=10

117 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Lệnh UPDATE

 Nh n xét ậ

i m nh đ WHERE s ẽ

đ

- Nh ng dòng th a đi u ki n t ề c c p nh t giá tr m i ị ớ ậ

ữ ượ

m nh đ WHERE, t

ế

t c ấ ả

- N u không ch đ nh đi u ki n ề ỉ ẽ ị ậ

ệ ở ệ ị các dòng trong b ng s b c p nh t ậ ả

- L nh UPDATE có th gây ra vi ph m RB tham chi u

ế

 Không cho s aử  S a luôn nh ng dòng có giá tr đang tham chi u đ n

ế

ế

CASCADE

*

118 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Nội dung chi tiết

i thi u

 Gi ệ  Đ nh nghĩa d li u ữ ệ ị  Truy v n d li u ữ ệ ấ  C p nh t d li u ậ ữ ệ  Khung nhìn (view)

 Ch m c (index)

- Đ nh nghĩa - Truy v nấ - C p nh t ậ ậ ỉ ụ

119 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Khung nhìn

ệ ượ t c

ch c l u tr ứ ư

ữ v t lý ậ

 B ng là m t quan h đ ộ trong CSDL

 Khung nhìn cũng là m t quan h ệ ộ c l u tr v t lý (b ng o) ả

ữ ậ

ượ ư ứ

ượ

- Không đ - Không ch a d li u ữ ệ - Đ c đ nh nghĩa t ữ ừ ị - Có th truy v n hay c p nh t thông qua khung nhìn

nh ng b ng khác ả ậ

120 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Khung nhìn (tt)

ả ử ụ

ứ ạ

ữ ệ ấ ệ

ướ ạ

ơ ể

i d ng ti n d ng nh t ấ

 T i sao ph i s d ng khung nhìn? - Che d u tính ph c t p c a d li u ấ - Đ n gi n hóa các câu truy v n ả - Hi n th d li u d ị ữ ệ - An toàn d li u ữ ệ

121 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Định nghĩa khung nhìn

 Cú pháp

CREATE VIEW   AS

- Danh sách thu c tính trùng v i các thu c tính trong m nh

 B ng o này có ả ộ

m nh đ WHERE ề

các b ng

đ SELECT ề - S dòng ph thu c vào đi u ki n ố ộ ụ c l y t - D li u đ ượ ấ ừ ữ ệ

ề ả

ệ ở ệ m nh đ FROM ề ở ệ

DROP VIEW 

122 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ

CREATE VIEW NV_P5 AS

SELECT MANV, HONV, TENDEM,

TENVN

FROM NHANVIEN

WHERE PHG=5

CREATE VIEW TONGLNG_SLNV_PB AS

SELECT MAPHG, TENPB, COUNT(*) AS SLNV,  SUM(LUONG) AS TONGLNG

FROM NHANVIEN, PHONGBAN

WHERE PHG=MAPHG

GROUP BY TENPHG

123 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Truy vấn trên khung nhìn

 Tuy không ch a d li u nh ng có th th c hi n các

ể ự

ữ ệ

ư ứ câu truy v n trên khung nhìn

SELECT TENNV

FROM NV_P5

WHERE HONV LIKE ‘Nguyen’

NV_P5 ‹

PHG=5 (NHANVIEN))

p

MANV,HONV, TENDEM, TENNV (s  TENNV (s

HONV=‘Nguyen’ (NV_P5))

p

124 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Truy vấn trên khung nhìn (tt)

khung nhìn và

ể ế

t câu truy v n d li u t ấ

ữ ệ ừ

 Có th vi b ngả

SELECT HONV, TENVN, TENDA, THOIGIAN

FROM NV_P5, PHANCONG, DEAN

WHERE MANV=MA_NVIEN AND  SODA=MADA

NV_P5 ‹

MANV,HONV, TENDEM, TENNV (s

PHG=5 (NHANVIEN))

TMP ‹

p

NV_P5     MANV=MA_NVIEN PHONGBAN     SODA=MADADEAN

TENNV,TENDA,THOIGIAN(TMP)

p

125 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Cập nhật trên khung nhìn

 Có th dùng các câu l nh INSERT, DELETE và ệ

ơ

ượ

c xây d ng trên 1 b ng và có khóa chính ả

UPDATE cho các khung nhìn đ n gi n - Khung nhìn đ c a b ng ả ủ

 Không th c p nh t d li u n u

ậ ữ ệ ừ

ế khóa DISTINCT ế ợ ở ộ

b ng có RB trên c t ộ nhi u b ng

ể ậ - Khung nhìn có dùng t - Khung nhìn có s d ng các hàm k t h p ử ụ - Khung nhìn có m nh đ SELECT m r ng ề ệ c xây d ng t - Khung nhìn đ ự c xây d ng t - Khung nhìn đ ự

ừ ả ừ

ượ ượ

126 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Cập nhật trên khung nhìn (tt)

 S a l

i h cho nhân viên mã ‘123456789’

phòng 5

ử ạ ọ

là ‘Pham’

UPDATE NV_P5

SET HONV=‘Pham’

WHERE MANV= ‘123456789’

127 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Nội dung chi tiết

i thi u

 Gi ệ  Đ nh nghĩa d li u ữ ệ ị  Truy v n d li u ữ ệ ấ  C p nh t d li u ậ ữ ệ  Khung nhìn (view)  Ch m c (index)

ỉ ụ - Đ nh nghĩa ị - Ch n l a ch m c

ọ ự

ỉ ụ

128 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Chỉ mục

ỉ ụ

ữ ệ

ộ ấ ứ

ế

 Ch m c trên thu c tính A là m t c u trúc d li u làm cho vi c tìm ki m m u tin có ch a A hi u qu ả ẫ h nơ

SELECT *

Đọc 10.000 bộ FROM NHANVIEN

WHERE PHG=5 AND  GT=‘Nu’

Đọc 200 bộ

Bảng NHANVIEN có 10.000 bộ

Đọc 70 bộ Có 200 nhân viên làm việc cho phòng 5

129 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Chỉ mục (tt)

 Cú pháp

CREATE INDEX  ON ()

 Ví dụ

DROP INDEX 

CREATE INDEX PHG_IND ON  NHANVIEN(PHG)

CREATE INDEX PHG_GT_IND ON NHANVIEN(PHG, GT)

130 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Chỉ mục (tt)

- Tìm ki m nhanh trong tr

 Nh n xét ậ ế

ườ

ng h p so sánh v i h ng s ố

ớ ằ

và phép k tế

- Làm ch m đi các thao tác thêm, xóa và s a - T n chi phí ư

L u tr ch m c ỉ ụ  Truy xu t đĩa nhi u ấ

 Ch n l a cài đ t ch m c h p lý???

ọ ự

ỉ ụ

131 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ

 Xét quan h ệ

- PHANCONG(MA_NVIEN, SODA, THOIGIAN)

 Gi

sả ử

c l u tr trong 10 block

ượ ư

ữ  Chi phí đ đ c toàn b d li u c a PHANCONG là 10 ộ ữ ệ

- Trung bình m t nhân viên tham gia 3 đ án và m t đ án

ộ ề

c tr i đ u trong 10 block

- PHANCONG đ ể ọ ộ có kho ng 3 nhân viên làm ả  D li u đ ữ ệ  Chi phí đ tìm m t nhân viên hay m t đ án là 3

ượ ể

ộ ề

- Khi s d ng ch m c

ử ụ

ả ề ộ ỉ ụ  Chi phí đ c hay c p nh t ch m c ỉ ụ ậ - Thao tác thêm c n 2 l n truy xu t đĩa ấ ầ

132 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ (tt)

 Gi

s có 3 thao tác đ

c th c hi n th

ng xuyên

ả ử

ượ

ườ

- Q1

SELECT SODA, THOIGIAN

FROM PHANCONG

- Q2

WHERE MA_NVIEN=‘123456789’

SELECT MANV

FROM PHANCONG

- Q3

WHERE SODA=1 AND THOIGIAN=20.5

INSERT INTO PHANCONG

VALUES ( 123456789’, 1, 20.5)

133 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

Ví dụ (tt)

 B ng so sánh chi phí

Thao tác

Không có  chỉ mục

Chỉ mục trên  MA_NVIEN

Chỉ mục  trên SODA

Chỉ mục trên  cả 2 thuộc tính

Q1

10

4

10

4

Q2

10

10

4

4

Q3

2

4

4

6

2 + 8p1 + 8p2

4 + 6p2

4 + 6p1

6 ­ 2p1 – 2p2

Chí phí TB

Khoảng thời gian thực hiện Q1 là p1

Khoảng thời gian thực hiện Q2 là p2

Khoảng thời gian thực hiện Q3 là 1 ­ p1 ­ p2

134 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ

135 Nh p môn C s d li u - Khoa CNTT ơ ở ữ ệ ậ