Tài liệu ôn thi cao học - thạc sĩ khoa học máy tính, hệ thống thông tin trường ĐH KHTN TP.HCM;p2 - Pdf 13

1
SQL
SQL
-
-
Structured Query Language
Structured Query Language
 Giớithiệu
 Truy vấndữ liệu
 Cậpnhậtdữ liệu
3/6/2008 Ôn thi Cao học 2008 2
Giới
Giới
thiệu
thiệu
 Ngôn ngữ khai báo
{ Cài đặtdựatrên ĐSQH
 Chuẩn hoá cho các HQTCSDL quan hệ
{ Được phát triểnbởi IBM (1970s)
{ Các version Standard ANSI/ISO
 SQL-86 (SQL1)
 SQL-92 (SQL2)
 SQL-99 (SQL3)
 Nhiều phiên bản cài đặt
{ SQL Server
{ Oracle
2
3/6/2008 Ôn thi Cao học 2008 3
Giới
Giới
thiệu

 Là ngôn ngữ mô tả
{ Lược đồ cho mỗi quan hệ
{ Miềngiátrị tương ứng củatừng thuộctính
{ Ràng buộctoànvẹn
{ Chỉ mụctrênmỗi quan hệ
 Gồm
{ CREATE TABLE (tạobảng)
{ DROP TABLE (xóa bảng)
{ ALTER TABLE (sửabảng)
{ CREATE DOMAIN (tạomiền giá trị)
{ CREATE DATABASE
{ …
3
3/6/2008 Ôn thi Cao học 2008 5
Truy
Truy
vấn
vấn
dữ
dữ
liệu
liệu
 Là ngôn ngữ rút trích dữ liệuthỏamộtsốđiềukiệnnàođó
 Dựa trên các phép toán đạisố quan hệ + mộtsố mở rộng
{ Bảng là bag ≠ quan hệ là set
 Cho phép 1 bảng có nhiều dòng trùng nhau
 Hỗ trợ các truy vấn
{ Cơ bản: Chọn, Chiếu, Kết
{ Tậphợp, so sánh tậphợpvàtruyvấnlồng
{ Hàm kếthợp và gom nhóm

c
c
ơ
ơ
bản
bản
(
(
tt
tt
)
)
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điềukiện>
σ
π
×
SELECT L
FROM R
WHERE C
π
L

C
(R))
 SQL và ĐSQH
3/6/2008 Ôn thi Cao học 2008 8
CSDL
CSDL

TENLOT
Thanh
Manh
3/6/2008 Ôn thi Cao học 2008 10
Mệnh
Mệnh
đ
đ


SELECT
SELECT
SELECT MANV, HONV, TENLOT, TENNV
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’
π
MANV,HONV,TENLOT,TENNV

PHG=5 ∧ PHAI=‘Nam’
(NHANVIEN))
TENNVHONV
TungNguyen
HungNguyen
TENLOT
Thanh
Manh
333445555
987987987
MANV
6

987987987
MANV
Tên bí danh
3/6/2008 Ôn thi Cao học 2008 12
Mệnh
Mệnh
đ
đ


SELECT (
SELECT (
tt
tt
)
)
SELECT MANV, HONV + ‘ ’ + TENLOT + ‘ ’ + TENNV AS ‘HO TEN’
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’
ρ
MANV,HO TEN

MANV,HONV+TENLOT+TENNV

PHG=5∧PHAI=‘Nam’
(NHANVIEN)))
HO TEN
Nguyen Thanh Tung
Nguyen Manh Hung
333445555

333445555
987987987
MANV
Mở rộng
3/6/2008 Ôn thi Cao học 2008 14
Mệnh
Mệnh
đ
đ


SELECT (
SELECT (
tt
tt
)
)
SELECT LUONG
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’
Loạibỏ các dòng trùng nhau
-Tốnchi phí
-Người dùng muốnthấy
LUONG
30000
25000
25000
38000
LUONG
30000

Mệnh
đ
đ


WHERE
WHERE
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG
Biểuthứcluậnlý
TRUE
TRUE
9
3/6/2008 Ôn thi Cao học 2008 17
Mệnh
Mệnh
đ
đ


WHERE (
WHERE (
tt
tt
)
)
SELECT MANV, TENNV
FROM NHANVIEN
WHERE LUONG>20000 AND LUONG<30000

WHERE (
tt
tt
)
)
SELECT MANV, TENNV
FROM NHANVIEN
WHERE DCHI LIKE ‘Nguyen _ _ _ _’
LIKE
SELECT MANV, TENNV
FROM NHANVIEN
WHERE DCHI LIKE ‘Nguyen %’
Chuỗibấtkỳ
Ký tự bấtkỳ
3/6/2008 Ôn thi Cao học 2008 20
Mệnh
Mệnh
đ
đ


WHERE (
WHERE (
tt
tt
)
)
SELECT MANV, TENNV
FROM NHANVIEN
WHERE HONV LIKE ‘Nguyen’

WHERE (
WHERE (
tt
tt
)
)
Ngày giờ
SELECT MANV, TENNV
FROM NHANVIEN
WHERE NGSINH BETWEEN ‘1955-12-08’ AND ‘1966-07-19’
YYYY-MM-DD
MM/DD/YYYY
‘1955-12-08’
’12/08/1955’
‘December 8, 1955’
HH:MI:SS
’17:30:00’
’05:30 PM’
‘1955-12-08 17:30:00’
12
3/6/2008 Ôn thi Cao học 2008 23
Mệnh
Mệnh
đ
đ


WHERE (
WHERE (
tt

NULL
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MA_NQL IS NULL
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MA_NQL IS NOT NULL
13
3/6/2008 Ôn thi Cao học 2008 25
WHERE TRUE
Mệnh
Mệnh
đ
đ


FROM
FROM
SELECT MANV, MAPHG
FROM NHANVIEN, PHONGBAN
Không sử dụng mệnh đề WHERE
MAPHG
1
4
333445555
333445555
MANV
5
1987987987
987987987

PHONGBAN(TENPHG,MAPHG,TRPHG,NG_NHANCHUC)
DIADIEM_PHG(MAPHG,DIADIEM)
NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,LUONG,MA_NQL,PHG)
THANNHAN(MA_NVIEN,TENTN,PHAI,NGSINH,QUANHE)
14
3/6/2008 Ôn thi Cao học 2008 27


dụ
dụ
1
1
 Vớinhững đề án ở ‘Ha Noi’, cho biếtmãđề án, mã phòng ban chủ trì
đề án, họ tên trưởng phòng cùng với ngày sinh và địachỉ củangười ấy
R1
← π
MADA, PHONG

DDIEM_DA=‘Hanoi’
(DEAN))
R2 ← R1
PHONG=MAPHG
PHONGBAN
NHANVIEN(HONV,TENLOT,TENNV,MANV,NGSINH,DCHI,PHAI,LUONG,MA_NQL,PHG)
PHONGBAN(TENPHG,MAPHG,TRPHG,NG_NHANCHUC)
DEAN(TENDA,MADA,DDIEM_DA,PHONG)
R1(MADA, PHONG)
R2(MADA,PHONG,TENPHG,MAPHG,TRPHG,NG_NHANCHUC)
KQ ← π
HONV, TENNV, NGSINH,DCHI

 Tìm họ tên của nhân viên phòng số 5 có tham gia vào đề án “Sảnphẩm
X” vớisố giờ làm việc trên 10 giờ
SELECT
FROM
WHERE
HONV, TENNV
PHANCONG AS PC, DEAN AS DA, NHANVIEN AS NV
(NV.PHG=5)
(PC.THOIGIAN>10)
AND
NV.MANV=PC.MA_NVIENAND
(PC.SODA=DA.MADA)
AND
(TENDA= “SảnphẩmX” )
AND
3/6/2008 Ôn thi Cao học 2008 30
Mệnh
Mệnh
đ
đ


ORDER BY
ORDER BY
 Dùng để hiểnthị kếtquả câutruyvấntheomộtthứ tự nào đó
 Cú pháp
{ ASC: tăng (mặc định)
{ DESC: giảm
SELECT <danh sách các cột>
FROM <danh sách các bảng>

10
20987654321
30987654321
3/6/2008 Ôn thi Cao học 2008 32
Phép
Phép
toán
toán
tập
tập
hợp
hợp
trong
trong
SQL
SQL
 SQL có cài đặt các phép toán
{ Hội (UNION)
{ Giao (INTERSECT)
{ Trừ (EXCEPT)
 Kếtquả trả về là tậphợp
{ Loạibỏ các bộ trùng nhau
{ Để giữ lạicácbộ trùng nhau
 UNION ALL
 INTERSECT ALL
 EXCEPT ALL
17
3/6/2008 Ôn thi Cao học 2008 33
Phép
Phép

5
 Cho biết các mã đề án có
{ Nhân viên vớihọ là ‘Nguyen’ tham gia hoặc,
{ Trưởng phòng chủ trì đề án đóvớihọ là ‘Nguyen’
SELECT SODA
FROM NHANVIEN, PHANCONG
WHERE MANV=MA_NVIEN AND HONV=‘Nguyen’
UNION
SELECT MADA
FROM NHANVIEN, PHONGBAN, DEAN
WHERE MANV=TRPHG AND MAPHG=PHONG
AND HONV=‘Nguyen’
18
3/6/2008 Ôn thi Cao học 2008 35


dụ
dụ
6
6
 Tìmnhânviêncóngười thân cùng tên và cùng giớitính
SELECT TENNV, PHAI, MANV FROM NHANVIEN
INTERSECT
SELECT TENTN, PHAI, MA_NVIEN FROM THANNHAN
3/6/2008 Ôn thi Cao học 2008 36


dụ
dụ
7

vấn
lồng
lồng
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <so sánh tậphợp> (
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điềukiện>)
Câu truy vấncha
(Outer query)
Câu truy vấncon
(Subquery)
20
3/6/2008 Ôn thi Cao học 2008 39
Truy
Truy
vấn
vấn
lồng
lồng
(
(
tt
tt
)
)
 Các câu lệnh SELECT có thể lồng nhau ở nhiềumức
 Các câu truy vấn con trong cùng mộtmệnh đề WHERE đượckết
hợpbằng phép nối logic

{ Khi thựchiện, câutruyvấn con sẽđượcthựchiện nhiềulần, mỗilầntương
ứng vớimộtbộ củatruyvấncha
21
3/6/2008 Ôn thi Cao học 2008 41


dụ
dụ
-
-
Lồng
Lồng
phân
phân
cấp
cấp
SELECT MANV, TENNV
FROM NHANVIEN, DIADIEM_PHG
WHERE DIADIEM=‘TP HCM’ AND PHG=MAPHG
SELECT MANV, TENNV
FROM NHANVIEN
WHERE PHG IN
(
SELECT MAPHG
FROM DIADIEM_PHG
WHERE DIADIEM=‘TP HCM’ )
(1, 5)
3/6/2008 Ôn thi Cao học 2008 42



AND HONV=‘Nguyen’ )
3/6/2008 Ôn thi Cao học 2008 44


dụ
dụ
7
7
SELECT *
FROM NHANVIEN
WHERE MANV NOT IN (
SELECT MA_NVIEN
FROM THANNHAN )
 Tìm những nhân viên không có thân nhân nào
SELECT *
FROM NHANVIEN
WHERE MANV <> ALL (
SELECT MA_NVIEN
FROM THANNHAN )
23
3/6/2008 Ôn thi Cao học 2008 45


dụ
dụ
8
8
SELECT *
FROM NHANVIEN
WHERE LUONG > ANY (

10
 Tìm những trưởng phòng có tốithiểumột thân nhân
SELECT *
FROM NHANVIEN
WHERE MANV IN (SELECT MA_NVIEN FROM THANNHAN)
AND MANV IN (SELECT TRPHG FROM PHONGBAN)
3/6/2008 Ôn thi Cao học 2008 48


dụ
dụ
-
-
Lồng
Lồng
t
t
ươ
ươ
ng
ng
quan
quan
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG
SELECT MANV, TENNV
FROM NHANVIEN
WHERE EXISTS (
SELECT *

FROM THANNHAN
WHERE MANV=MA_NVIEN)
 Tìm những nhân viên không có thân nhân nào


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status