1. Trang chủ
  2. » Giáo án - Bài giảng

SQL (Structured Query Language) NGÔN NGỮ ĐẠI SỐ QUAN HỆ

134 200 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 134
Dung lượng 740,2 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Giới thiệu  Đị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) Ngôn ngữ ĐSQH  Cách thức truy vấn dữ liệu  Khó khăn cho ngƣời sử dụng  SQL (Structured Query Language)  Ngôn ngữ cấp cao  Ngƣời sử dụng chỉ cần đƣa ra nội dung cần truy vấn  Đƣợ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  SQL86  SQL92  SQL99 3 ĐỊNH NGHĨA DỮ LIỆU  Là ngôn ngữ mô tả  Lƣợc đồ cho mỗi quan hệ  Miền giá trị tƣơng ứng của từng thuộc tính  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 

Trang 1

CHƯƠNG 5

Trang 2

NOI DUNG CHI TIET

Trang 3

GIỚI THIỆU

s Ngôn ngữ ĐSQH

-_ Cách thức truy van dữ liệu

e Kho khăn cho người sử dụng

o SQL (Structured Query Language)

- Ngôn ngữ cấp cao

-_ Người sử dụng chỉ cần đưa ra nội dung cân truy vẫn

Được phát triển bởi IBM (19703)

Được gọi là SEQUEL

Được ANSI công nhận và phát triển thành chuẩn

o SQL-86

o SQL-92

o SQL-99

Trang 4

e Rang bu6éc toan ven

e Phan quyén va bao mat

-_ Điều khién giao tác

Trang 5

NOI DUNG CHI TIET

o Gio’ thiệu

o Dinh nghia dv liệu

e Kiéu d@ liéu

e Cac lénh dinh nghia dt liéu

o Truy vân dữ liệu

o Cập nhật dữ liệu

ö Khung nhìn (view)

o Chi muc (index)

Trang 6

ĐINH NGHĨA DU’ LIEU

Là ngôn ngữ mô tả

- Lược đồ cho mỗi quan hệ

-_ Miền giá trị tương ứng của từng thuộc tính

e Rang bu6éc toan ven

-_ Chỉ mục trên mỗi quan hệ

s Gỗm

e CREATE TABLE (tao bang)

DROP TABLE (x6éa bang)

ALTER TABLE (sua bang)

CREATE DOMAIN (tao mién gia tri)

CREATE DATABASE

Trang 7

KIEU DU’ LIEU

o S6 (numeric)

e INTEGER

e SMALLINT

» NUMERIC, NUMERIC(p), NUMERIC(p,s)

» DECIMAL, DECIMAL(p), DECIMAL(p,s)

e REAL

e DOUBLE PRECISION

» FLOAT, FLOAT(p)

Trang 8

o Ngay gio’ (datetime)

° DATE gém ngay, thang va nam

° TIME gồm giờ, phút và giây

° TIMESTAMP gém ngày và giờ

Trang 9

LENH TAO BANG

o Bé dinh nghia mét bang

CREATE TABLE <Tén_bang> (

<Tên_cột> <Kiểu dữ liệu> [<RBTV>],

<Tên_cột> <Kiểu dữ liệu> [<RBTV>],

[<RBTV>]

Trang 10

Vi DU - TAO BANG

CREATE TABLE NHANVIEN (

MANV CHAR(9), HONV VARCHAR(10), TENLOT VARCHAR(20), TENNV VARCHAR(10), NGSINH DATETIME, DCHI VARCHAR(50), PHAI CHAR(3),

LUONG INT, MA_NQL CHAR(9), PHG INT

Trang 12

VÍ DỤ - HBTV

CREATE TABLE NHANVIEN (

HONV VARCHAR(10) NOT NULL, TENLOT VARCHAR(20) NOT NULL, TENNV VARCHAR(10) NOT NULL, MANV CHAR(9) PRIMARY KEY, NGSINH DATETIME,

DCHI VARCHAR(50), PHAI CHAR(3) CHECK (PHAI IN (‘Nam’, ‘Nu’)), LUONG INT DEFAULT (10000),

MA_NQL CHAR(9), PHG INT

Trang 13

VÍ DỤ - HBTV

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)

Trang 14

Vi DU - DAT TEN CHO RBTV

CREATE TABLE NHANVIEN (

HONV VARCHAR(10) CONSTRAINT NV_HONV_NN NOT NULL, TENLOT VARCHAR(20) NOT NULL,

TENNV VARCHAR(10) NOT NULL, MANV CHAR(9) CONSTRAINT NV_MANV_PK PRIMARY KEY, NGSINH DATETIME,

DCHI VARCHAR(50), PHAI CHAR(3) CONSTRAINT NV_PHAI CHK

CHECK (PHAI IN (‘Nam’, ‘Nu’)), LUONG INT CONSTRAINT NV_LUONG_DF DEFAULT (10000), MA_NQL CHAR(9),

PHG INT

Trang 15

Vi DU - DAT TEN 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)

)

©

Trang 16

LENH SU’A BANG

o Duoc dung dé

° Thay ddi cau trúc bang

- Thay đổi RBTV

o Them cot ALTER TABLE <Tén_bang> ADD

<Tên_cột> <Kiểu dữ liệu> [<RBTV>]

Trang 17

LỆNH SỬA BẢNG (TT)

o Them RBTV

ALTER TABLE <Tén_bang> ADD

CONSTRAINT <Ten_RBIV> <RBIV>, CONSTRAINT <Ten_RBIV> <RBIV>,

Trang 18

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)

Trang 19

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())

CONSTRAINT PB_TENPB_UNI UNIQUE (TENPB)

Trang 20

LENH XOA BANG

o Duoc dùng đề xóa câu trúc bảng

e Tat cả dữ liệu của bảng cũng bị xóa

DROP TABLE NHANVIEN

DROP TABLE PHONGBAN

DROP TABLE PHANCONG

Trang 21

LENH XOA BANG (TT)

Trang 22

LỆNH TẠO MIỄN GIÁ TRỊ

o Tao ra mot kiểu dữ liệu mới kế thừa những kiểu dữ liệu

Trang 23

NOI DUNG CHI TIET

©o Giới thiệu

©o Định nghĩa dữ liệu

Trang 24

TRUY VẤN DU’ LIEU

s Là ngôn ngữ rút trích dữ liệu thỏa một số điều kiện nao

- Cho phép 1 bảng có nhiêu dòng trùng nhau

e Bang la bag # quan hé la set

Trang 25

TRUY VÂN CƠ BẢN

o Biểu thức boolean xác định dòng nào sẽ được rút trích

o Nối các biểu thức: AND, OR, và NOT

o Phép toan:<,>,<,2,#,=, LIKE va BETWEEN

Trang 26

TRUY VẤN CƠ BẢN (TT)

o SQL va DSQH

'|'ểÊLECT <danh sách các cột>

oan nnn ‘PROM <danh sach cac bang>

WOERE <diéu kién>

Trang 27

VÍ DỤ

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

SELECT * FROM NHANVIEN

WHERE PHG=5

MANV | HONV | TENLOT | TENNV |_ NGSINH DCHI | PHAI | LUONG | MA_NQL | PHG

333445555 | Nguyen | Thanh Tung 12/08/1955 | 638 NVC Q5] Nam 40000 | 888665555 5

987987987 | Nguyen} Manh Hung | 09/15/1962 | Ba Ria VT Nam 38000 | 333445555 5

Trang 28

MENH DE SELECT

SELECT MANV, HONV, TENLOT, TENNV FROM NHANVIEN

WHERE PHG=5 AND PHAI='"Nam’

MANV | HONV | TENLOT | TENNV

333445555 | Nguyen Thanh Tung

987987987 | Nguyen Manh Hung

TU anv Honv;tentor,tennvi O pye=s A PHAI=`Nam' (NHANVIEN)) ©}

Trang 29

WHERE PHG=5 AND PHAI="Nam’

MANV | HO | TENLOT | TEN

333445555 | Nguyen Thanh Tung

987987987 | Nguyen Manh Hung

p MANVHO,TEN Lor;Ten( JU MANV,HONV,TENLOT,TENNV( pho=5APHAI='Nam(Ñ Oo

Trang 30

333445555 Nguyen Thanh Tung

987987987 Nguyen Manh Hung

ĐuAnvHo re Tarren sree Or 5 PHAT="Nam' N Oo

Trang 32

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

38000

Trang 33

VÍ DỤ

e Cho biết MANV và TENNV làm việc ở phòng ‘Nghien

J

cuu

Rl NHANVIEN !I ;„c-wapac PHONGBAN

KQ <— TU many, TENNV (O tenpHG='Nghien cuuXR1))

SELECT MANV, TENNV FROM NHANVIEN, PHONGBAN WHERE TENPHG='"Nghien cuu’ PHG=MAPHG

Trang 34

MENH DE WHERE

SELECT MANV, TENNV „Biểu thức luận lý

ow -_

OT TTT een meee ese

Trang 35

MẸNH ĐÈ WHERE (TT)

Độ ưu tiên

SELECT MANV, TENNV

FROM NHANVIEN, PHONGBAN

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

Trang 36

WHERE LUONG>20000 AND LUONG<30000

SELECT MANV, TENNV FROM NHANVIEN

WHERE LUONG BETWEEN 20000 AND 30000

Trang 38

WHERE DCHI LIE "Nguyen _ _ _ _’

SELECT MANV, TENNV Ky ty bat ky

FROM NHANVIEN WHERE DCHI LIKE ‘Nguyen %‘_

Chuỗi bất kỳ

Trang 39

WHERE HONV LIKE ‘Nguyen’

SELECT MANV, TENNV FROM NHANVIEN

WHERE HONV NOT NOT LIKE ‘Nguyen’

Trang 42

o Không biết (value unknown)

o Không thể áp dụng (value inapplicable)

o Không tôn tại (value withheld)

- _ Những biểu thức tính toán có liên quan đến giá trị NULL sẽ

cho ra kết quả là NULL

o X co gia tri la NULL

o x + 3 cho ra kết qua la NULL

o x + 3 là một biêu thức không hợp lệ trong SQL

- _ Những biểu thức so sánh có liên quan dén gia tri NULL sé cho

ra kết quả là UNKNOWN

o X= 3 cho ra kết quả là UNKNOWN

Trang 43

WHERE MA_NQL IS NULL

SELECT MANV, TENNV FROM NHANVIEN

WHERE MA_NQL IS NOT NULL

Trang 45

SELECT TENNV, NSEBESEINFENTENTINGSIWQ{GSINH

FROM NHANVIEN,NWIARMNANIAN TN WHERE MANV=MA_NVIEN

Trang 46

VÍ DỤ

© Với những đề án ở ‘Ha Noi’, cho biết mã đề án, mã

phòng ban chủ trì đê án, họ tên trưởng phòng cùng với

ngày sinh và địa chỉ của người ây

s Tìm họ tên của nhân viên phòng sô 5 có tham gia vào đề

án “Sản phẩm X” với số giờ làm việc trên 10 giờ

° 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 đó

© Tìm họ tên của những nhân viên được "Nguyen Thanh

Tung’ phụ trách trực tiêp

Trang 49

NOI DUNG CHI TIET

©o Giới thiệu

©o Định nghĩa dữ liệu

o Truy vân dữ liệu

Trang 50

PHEP TOAN TAP HOP TRONG SQL

o SQL co cai dat cac phep toan tap hop:

° Hdi (UNION)

e Giao (INTERSECT)

© Trtv (EXCEPT)

o Két gua tra vé la tap hop

e Loai b6 cac bé trung nhau

- Đề giữ lại các bộ trùng nhau

o UNION ALL

o INTERSECT ALL

o EXCEPT ALL

Trang 52

VÍ DỤ 5

o Cho biết các mã đề án có

s_ 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’

SELECT SODA

FROM NHANVIEN, PHANCONG

WHERE MANV=MA_NVIEN HONV='‘Nguyen’

UNION

SELECT MADA

FROM NHANVIEN, PHONGBAN, DEAN

WHERE MANV=TRPHG MAPHG=PHONG

HONV='Nguyen’

Trang 53

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

SELECT TENNV, PHAI FROM NHANVIEN

Trang 54

VÍ DỤ Z7

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

SELECT MANV FROM NHANVIEN

peg SELECT MA_NVIEN AS MANV FROM THANNHAN

Trang 55

TRUY VAN LONG

SELECT MANV, TENNV FROM NHANVIEN, PHONGBAN WHERE TENPHG='"Nghien cuu’ PHG=MAPHG

Cau truy van cha

Trang 56

TRUY VẤN LỎNG (TT)

o Các câu lệnh SELECT có thể lồng nhau ở nhiều mức

© Câu truy vẫn con thường trả về một tập các giá trị

© Các câu truy vẫn con trong cùng một mệnh đề WHERE

được kết hợp bằng phép nôi logic

o Ménh dé WHERE cua cau truy van cha

-_ <biêu thức> <so sánh tập hợp> <truy van con>

e So sanh tap hợp thường đi cùng với một số toán tử

o IN, NOT IN

o ALL

o ANY hoac SOME

e Kiém tra sự tôn tại

o EXISTS

o NOT EXISTS

Trang 57

TRUY VẤN LỎNG (TT)

e Có 2 loại truy vân lông

- Lồng phân cấp

o Mệnh đề WHERE của truy van con không tham chiêu đến thuộc tính

của các quan hệ trong mệnh đê FROM ở truy vân cha

o Khi thực hiện, câu truy vẫn con sẽ được thực hiện trước

-_ Lồng tương quan

o Mệnh đề WHERE của truy van con tham chiéu it nhất một thuộc tinh

của các quan hệ trong mệnh đê FROM ở truy vân cha

o Khi thực hiện, câu truy vẫn con sẽ được thực hiện nhiều lần, mỗi lần

tương ứng với một bộ của truy vân cha

Trang 58

Vi DU - LONG PHAN CAP

SELECT MANV, TENNV

FROM NHANVIEN, PHONGBAN

WHERE TENPHG='Nghien cuu’ AND PHG=MAPHG

_ -SELECT MANV, TENNV `” ¬ ề FROM NHANVIEN

FROM NHANVIEN -" ¬ WHERE PHG IN ( 1, 4, 5)

~~ WHERE PHG IN (SELECT MAPHG-“ “ vơ ` Tene T7

Trang 59

FROM NHANVIEN, PHANCONG SELECT MADA

WHERE MANV=MA_NVIEN HONV='Nguyen’) MADA A CEN NV; PHONGBAN PB, DEAN DA

WHERE NV.MANV=PB.TRPHG PB.MAPHG=DA.PHONG

SELECT MADA NV.HONV= Hài Nguyen

NHANVIEN, PHONGBAN DEAN WHERE MANV=TRPHG MAPHG=PHONG

HONV='"Nguyen’)

Trang 60

VÍ DỤ Z7

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

SELECT * FROM NHANVIEN WHERE MANV NOIL ïN (

SELECT MA_NVIEN FROM THANNHAN )

SELECT * FROM NHANVIEN WHERE MANV <> ALL (

SELECT MA_NVIEN FROM THANNHAN )

Trang 61

VÍ DỤ 8

© Tìm những nhân viên có lương lớn hơn lương cua it

nhật một nhân viên phòng 4

SELECT * FROM NHANVIEN WHERE LUONG > ANY (

SELECT LUONG FROM NHANVIEN WHERE PHG=4 )

SELECT NV1.*

FROM NHANVIEN NV1, NHANVIEN NV2 WHERE NV1.LUONG > NV2.LUONG NV2.PHG=4

Trang 62

Ví DỤ 9

s Tìm những nhân viên có lương lớn hơn lương của tất

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

SELECT * FROM NHANVIEN WHERE LUONG > ALL (

SELECT LUONG FROM NHANVIEN WHERE PHG=4 )

Trang 63

Vi DU 10

o Tim những trưởng phòng có tối thiêu một thân nhân

SELECT * FROM NHANVIEN WHERE MANV IN (SELECT MA_NVIEN FROM THANNHAN) AND MANV IN (SELECT TRPHG FROM PHONGBAN)

Trang 64

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 )

Trang 65

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

SELECT * FROM NHANVIEN NV WHERE EXISTS (

SELECT * FROM THANNHAN TN WHERE NV.MANV=TN.MA_NVIEN AND NV.TENNV=TN.TENTN

AND NV.PHAI=TN.PHALI )

Trang 66

VÍ DỤ Z7

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

SELECT * FROM NHANVIEN WHERE NOT EXISTS (

SELECT * FROM THANNHAN WHERE MANV=MA_NVIEN)

Trang 67

SELECT * FROM NHANVIEN NV2 WHERE NV2PHG=4 AND NV1,LUONG>NV2.LUONG)

Trang 68

Vi DU 10

o Tim những trưởng phòng có tối thiêu một thân nhân

SELECT * FROM NHANVIEN WHERE EXISTS (

SELECT * FROM THANNHAN WHERE MANV=MA_NVIEN ) AND EXISTS (

SELECT * FROM PHONGBAN

Trang 69

NHAN XET IN VA EXISTS

o IN

-_ <tên cột> IN <câu truy vẫn con>

-_ Thuộc tính ở mệnh dé SELECT của truy van con phải có cùng

kiêu dữ liệu với thuộc tính ở mệnh đê WHERE của truy van

cha

o EXISTS

-_ Không cần có thuộc tính, hằng số hay biêu thức nào khác

đứng trước

° Khong nhất thiết liệt kê tên thuộc tính ở mệnh đề SELECT của

truy vân con

-_ 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

Trang 70

PHEP CHIA TRONG SQL

o R+S la tap cac gia trị a, trong H sao cho không có giá trị

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

Trang 71

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 )) ©

Trang 73

SELECT * FROM PHANCONG PC2 WHERE PC2.SODA=DA.MADA AND PC1.MA_NVIEN=PC2.MA_NVIEN J) @

Trang 74

NOI DUNG CHI TIET

©o Giới thiệu

©o Định nghĩa dữ liệu

o Truy vân dữ liệu

Trang 75

HAM KET HOP

o COUNT

e COUNT(*) dém sé dong

-_ COUNT(<tên thuộc tính>) đêm số giá trị khác NULL của thuộc

tính

- COUNT(DISTINCT <tên thuộc tính>) đêm số giá trị khác nhau

và khác NULL của thuộc tính

Trang 76

Vi DU 13

© Tìm tổng lương, lương cao nhất, lương thập nhất va

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

SELECT SUM(LUONG), MAX(LUONG), MIN(LUONG), AVG(LUONG)

FROM NHANVIEN

Trang 77

Vi DU 14

o Cho biét số lượng nhân viên của phòng 'Nghien cuư”

SELECT COUNT(*) AS SL_NV FROM NHANVIEN, PHONGBAN WHERE PHG=MAPHG AND TENPHG='Nghien cuu”

Trang 78

MANV HONV | TENLOT | TENNV NGSINH DCHI PHAI | LUONG MA_NQL | PHG

333445555 | Nguyen | Thanh Tung 12/08/1955 | 638 NVCQ5 | Nam 40000 | 888665555 5

987987987 | Nguyen} Manh Hung | 09/15/1962 | Ba Ria VT Nam 38000 | 333445555 5

453453453 | Tran Thanh Tam 07/31/1972 | 543 MTL Q1 Nu 25000 | 333445555 `

999887777 Bui Ngoc Hang | 07/19/1968 | 33 NTH Q1 Nu 38000 | 987654321 4

987654321 Le Quynh Nhu 07620/1951 | 219 TD Q3 Nu 43000 | 888665555 4

987987987 | Tran Hong Quang | 04/08/1969 | 980 LHP Q5 | Nam 25000 | 987654321 4)

888665555 | Pham Van Vinh 11/10/1945 | 450 TVHN | Nam 55000 NULL 1

"mg

Ngày đăng: 23/03/2019, 15:29

TỪ KHÓA LIÊN QUAN