Professional Documents
Culture Documents
Ctt102 Chuong 5 SQL
Ctt102 Chuong 5 SQL
! Giới"thiệu"
! Định"nghĩa"dữ"liệu""
'
CHƯƠNG'5'
! Truy"vấn"dữ"liệu""
SQL'(Structured'Query'Language)' ! Cập"nhật"dữ"liệu""
! Khung"nhìn"(view)"
! Chỉ"mục"(index)"
Bài$giảng$môn$Cơ$sở$dữ$liệu$$
©"Bộ"môn"Hệ"Thống"Thông"Tin"/"Khoa"Công"Nghệ"Thông"Tin"/"Trường"Đại"học"Khoa"học"Tự"nhiên""" ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 2$
Giới'thiệu' Giới'thiệu'(=)'
! Ngôn"ngữ"ĐSQH"" ! SQL"gồm"
- Cách"thức"truy"vấn"dữ"liệu" - Định"nghĩa"dữ"liệu"(DDL)"
- Khó"khăn"cho"người"sử"dụng" - Thao"tác"dữ"liệu"(DML)"
! SQL"(Structured"Query"Language)" - Định"nghĩa"khung"nhìn" Lý$thuyết$:$Chuẩn$SQL@92$
- Ngôn"ngữ"cấp"cao" - Ràng"buộc"toàn"vẹn""
- Người"sử"dụng"chỉ"cần"đưa"ra"nội"dung"cần"truy"vấn" - Phân"quyền"và"bảo"mật"
- Được"phát"triển"bởi"IBM"(1970s)" - Điều"khiển"giao"tác"
- Được"gọi"là"SEQUEL" ! SQL"sử"dụng"thuật"ngữ" Thương"mại":"SQL"Server""
- Được"ANSI"công"nhận"và"phát"triển"thành"chuẩn" - Bảng"~"quan"hệ"
" SQL/86" - Cột"~"thuộc"tính"
" SQL/92" - Dòng"~"bộ"
" SQL/99"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 3$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 4$
Nội'dung'chi'>ết' Định'nghĩa'dữ'liệu'
! Giới"thiệu" ! Là"ngôn"ngữ"mô"tả"
! Định$nghĩa$dữ$liệu$ - Lược"đồ"cho"mỗi"quan"hệ"
- Kiểu"dữ"liệu" - Miền"giá"trị"tương"ứng"của"từng"thuộc"tính"
- Các"lệnh"định"nghĩa"dữ"liệu" - Ràng"buộc"toàn"vẹn"
! Truy"vấn"dữ"liệu"" - Chỉ"mục"trên"mỗi"quan"hệ""
! Cập"nhật"dữ"liệu"" ! Gồm"
! Khung"nhìn"(view)" - CREATE"TABLE"(tạo"bảng)"
- DROP"TABLE"(xóa"bảng)"
! Chỉ"mục"(index)"
- ALTER"TABLE"(sửa"bảng)"
- CREATE"DOMAIN"(tạo"miền"giá"trị)"
- CREATE"DATABASE"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 5$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 6$
Kiểu'dữ'liệu' Kiểu'dữ'liệu'(=)'
! Số"(numeric)" ! Chuỗi"ký"tự"(character"string)"
- INTEGER" - CHARACTER"hoặc"CHAR""
- SMALLINT" - CHARACTER(n)"hoặc"CHAR"(n)""
- NUMERIC,"NUMERIC(p),"NUMERIC(p,s)" - CHARACTER"VARYING(n)"hoặc"VARCHAR(n)"
- DECIMAL,"DECIMAL(p),"DECIMAL(p,s)" - NATIONAL"CHARACTER"(n)"hoặc"NCHAR(n)"""
- REAL" ! Chuỗi"bit"(bit"string)"
- DOUBLE"PRECISION" - BIT,"BIT(x)"
- FLOAT,"FLOAT(p)" - BIT"VARYING(x)"
! Ngày"giờ"(datetime)"
- DATE"gồm"ngày,"tháng"và"năm"
- TIME"gồm"giờ,"phút"và"giây"
- TIMESTAMP"gồm"ngày"và"giờ"
- DATETIME:"gồm"DATE"và"TIME"(Chỉ"có"trong"SQL"của"SQL"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 7$ ©"Bộ môn Server)""
HTTT - Khoa CNTT - Trường ĐH KHTN" 8$
Lệnh'tạo'bảng' Ví'dụ'N'Tạo'bảng'
! Để"định"nghĩa"một"bảng" ! Tạo"bảng"lưu"trữ"thông"tin"giáo"viên"với"các"thuộc"tính"và"
- Tên"bảng" quy"định"sau:"
- Các"thuộc"tính" - MaGV":"Khoá"chính""
" Tên"thuộc"tính" - HoTen:"Họ"tên"của"giáo"viên"không"được"để"trống"
" Kiểu"dữ"liệu" - Luong:"Mặc"định"là"1000""
" Các"RBTV"trên"thuộc"tính" - Phai:"Phải"là"Nam"hoặc"Nữ""
! Cú"pháp" - NgaySinh:$Ngày"tháng"năm"sinh"của"giáo"viên""
- SoNha,$Duong,$Quan,$ThanhPho":"địa"chỉ"của"giáo"viên""
CREATE$TABLE"<Tên_bảng>"($ - GVQLCM:"mã"giáo"viên"quản"lý"chuyên"môn"của"giáo"viên"
$<Tên_cột>"<Kiểu_dữ_liệu>"[<RBTV>],$ (khoá"ngoại)"
$<Tên_cột>"<Kiểu_dữ_liệu>"[<RBTV>],$ - MaBM:"mã"bộ"môn"của"giáo"viên"(khoá"ngoại)"
"…$
"[<RBTV>]$
)$
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 9$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 10$
Ví'dụ'N'Tạo'bảng' Lệnh'tạo'bảng'(=)'
CREATE"TABLE"GIAOVIEN"(" ! <RBTV>""
"MaGV" " "CHAR(9)," - NOT"NULL"
"HoTen " "NVARCHAR(50)," - NULL"
"Luong" " "INT," - UNIQUE"
"Phai" " "CHAR(3)," - DEFAULT"
"NgaySinh" "DATETIME," - PRIMARY"KEY"
"SoNha" " "NVARCHAR(10)," - FOREIGN"KEY"/"REFERENCES"
"Duong" "NVARCHAR(50)," - CHECK"
"Quan" " "NVARCHAR(50),"
"ThanhPho "NVARCHAR(50)," ! Đặt"tên"cho"RBTV"
"GVQLCM "CHAR(9),"
"MaBM " "CHAR(9)" CONSTRAINT$<Ten_RBTV>"<RBTV>$
)"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 11$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 12$
Ví'dụ'N'RBTV' Ví'dụ'N'RBTV'
CREATE"TABLE"CONGVIEC"("
CREATE"TABLE"GIAOVIEN"(" "MADT" "VARCHAR(10),"
"STT" "INT,"
"MAGV" " "CHAR(9)"PRIMARY$KEY," "TENCV" "NVARCHAR(50),"
"HOTEN " "NVARCHAR(50)"NOT$NULL," "NGAYBD"DATETIME,"
"LUONG""INT"DEFAULT$(1000),$ "NGAYKT"DATETIME,"
"PRIMARY$KEY(MADT,$STT)"
"PHAI" " """CHAR(3)"CHECK$(PHAI$IN( Nam ,$ Nu )),"
")"
"NGAYSINH" "DATETIME,"
CREATE"TABLE"DETAI"("
"SONHA""NVARCHAR(10)," "MADT" ""VARCHAR"(10)"PRIMARY$KEY,"
"DUONG""NVARCHAR(50)," "TENDT"""NVARCHAR"(50)"UNIQUE,"
"QUAN" " "NVARCHAR(50)," "KINHPHI"INT,"
"CAPQL" ""NVARCHAR"(50),"
"THANHPHO "NVARCHAR(50)," "NGAYBD""DATETIME,"
"GVQLCM "CHAR(9)," "NGAYKT""DATETIME,"
"MABM " "CHAR(9)" "MACD" ""VARCHAR"(10),"
"GVCNDT""CHAR"(9)"
)" """)"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 13$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 14$
Ví'dụ'N'Đặt'tên'cho'RBTV' Ví'dụ'N'Đặt'tên'cho'RBTV'
CREATE"TABLE"GIAOVIEN"($
"MAGV " "CHAR(9)"CONSTRAINT"PK_GV"PRIMARY"KEY," CREATE"TABLE"CONGVIEC("
"HOTEN " "NVARCHAR(50)"CONSTRAINT"NN_HOTEN"NOT"NULL," "MADT" "VARCHAR(10),"
"LUONG"" "INT"CONSTRAINT"DE_LUONG"DEFAULT"(10000)," "STT" "INT,"
"PHAI" "CHAR(3)""CONSTRAINT"CK_PHAI"CHECK"(PHAI"IN('Nam',"'Nu'))"" "TENCV" "NVARCHAR(50),"
CONSTRAINT"NN_PHAI"NOT"NULL," "NGAYBD"DATETIME,"
"NGAYSINH" "DATETIME," "NGAYKT"DATETIME,"
"SONHA"" "NVARCHAR(10)," "
"DUONG"" "NVARCHAR(50)," "CONSTRAINT"PK_CV"PRIMARY"KEY(MADT,"STT),"
"QUAN" " "NVARCHAR(50)," "CONSTRAINT"FK_CONGVIEC_DETAI""
"THANHPHO "NVARCHAR(50)," " "FOREIGN"KEY"MADT"REFERENCES"DETAI(MADT)"
"GVQL " "CHAR(9)," )"
"MABM " "CHAR(9)"
)$©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 15$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 16$
Lệnh'sửa'bảng' Lệnh'sửa'bảng'(=)'
! Được"dùng"để"" ! Thêm"RBTV"
- Thay"đổi"cấu"trúc"bảng"" ALTER$TABLE"<Tên_bảng>"ADD$
- Thay"đổi"RBTV" $CONSTRAINT"<Ten_RBTV>"<RBTV>,"
"CONSTRAINT"<Ten_RBTV>"<RBTV>,"
! Thêm"cột" "…"
ALTER$TABLE"<Tên_bảng>"ADD$$ ! Xóa"RBTV"
$<Tên_cột>"<Kiểu_dữ_liệu>"[<RBTV>]" "
! Xóa"cột" ALTER$TABLE"<Tên_bảng>"DROP$<Tên_RBTV>""
ALTER$TABLE"<Tên_bảng>"DROP$COLUMN$<Tên_cột>""
! Cập"nhật"cột"
ALTER$TABLE"<Tên_bảng>"ALTER$COLUMN$
$<Tên_cột>"<Kiểu_dữ_liệu_mới>"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 17$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 18$
Ví'dụ'N'Thay'đổi'cấu'trúc'bảng' Ví'dụ'N'Thay'đổi'RBTV'
CREATE"TABLE"BOMON("
"MABM " "INT"NOT"NULL," Phải$xác$định$NOT$NULL$
trước$khi$tạo$khóa$chính$
"TENBM " "NVARCHAR(50),"
ALTER"TABLE"GIAOVIEN"ADD"TUOI"INT"" "PHONG " "CHAR(10),"
CONSTRAINT"CK_TUOI"CHECK"(TUOI">="23"AND"TUOI"<=60)"NOT"NULL" "DIENTHOAI "CHAR(15),"
"TRUONGBM "CHAR(9
"TABLE"BOMON("
"MABM " "
INT"NOT
ALTER"TABLE"GIAOVIEN"DROP"COLUMN"HOTEN"
"NULL,"
ALTER"TABLE"BOMON"ADD"
ALTER"TABLE"GIAOVIEN"ALTER"COLUMN"HOTEN" "CONSTRAINT"PK_BOMON"PRIMARY$KEY"(MABM),"
NVARCHAR(100)" "CONSTRAINT"FK_TRBOMON"FOREIGN"KEY"(TRUONGBM)" Cần$có$bảng$$
ALTER" " "REFERENCES"GIAOVIEN( )," GIAOVIEN$trước$
CONSTRAINT"PK_BOMON"PRIMARY$KEY"(
( "KEY"(TRUONGBM)"
MABM),"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 19$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 20$
Lệnh'xóa'bảng' 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" GIÁOVIÊN"
MãGV" HọTên" Lương" Phái" NgàySinh" SốNhà" Đường" Quận" ThànhPhố" GVQL" MãBM"
! Cú"pháp"
DROP$TABLE"<Tên_bảng>" BỘMÔN"
MãKhoa" TrưởngBM" NgàyNhậnChức" ĐiệnThoại" MãBM$ TênBM" Phòng"
! Ví"dụ" KHOA"
TrưởngKhoa" NgàyNhậnChức" TênKhoa" NămTL" Phòng" ĐiệnThoại" MãKhoa"
DROP"TABLE"GIAOVIEN""
DROP"TABLE"BOMON""
DROP"TABLE"THAMGIADT"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 21$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 22$
Lệnh'tạo'miền'giá'trị' Nội'dung'chi'>ết'
! Tạo"ra"một"kiểu"dữ"liệu"mới"kế"thừa"những"kiểu"dữ"liệu"có" ! Giới"thiệu"
sẳn"
! Cú"pháp" ! Định"nghĩa"dữ"liệu"
! Truy$vấn$dữ$liệu$
CREATE DOMAIN <Tên_kdl_mới> AS <Kiểu_dữ_liệu>
- Truy"vấn"cơ"bản"
! Ví"dụ" - 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"
CREATE"DOMAIN"MyString30"AS"VARCHAR(30)"
- Một"số"kiểu"truy"vấn"khác"
! Cập"nhật"dữ"liệu""
! Khung"nhìn"(view)"
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 23$
! Chỉ"mục"(index)"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 24$
Truy'vấn'dữ'liệu' Truy'vấn'cơ'bản'
! Là"ngôn"ngữ"rút"trích"dữ"liệu"thỏa"một"số"điều"kiện"nào"đó" ! Gồm"3"mệnh"đề"
! Dựa"trên"
SELECT"<danh"sách"các"cột>"
Phép"toán"ĐSQH" +$ Một"số"bổ"sung" FROM"<danh"sách"các"bảng>"
WHERE"<điều"kiện>"
- Cho"phép"1"bảng"có"nhiều"dòng"trùng"nhau"
- Bảng"là"bag"≠"quan"hệ"là"set" - <danh"sách"các"cột>"
" Tên"các"cột"cần"được"hiển"thị"trong"kết"quả"truy"vấn"
- <danh"sách"các"bảng>"
" Tên"các"bảng"liên"quan"đến"câu"truy"vấn"
- <điều"kiện>"
" Biểu"thức"boolean"xác"định"dòng"nào"sẽ"được"rút"trích"
" Nối"các"biểu"thức:"AND,"OR,"và"NOT""
" Phép"toán:"<",">","≤","≥","≠","=,"LIKE"và"BETWEEN"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 25$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 26$
Truy'vấn'cơ'bản'(=)' Mệnh'đề'SELECT''
! SQL"và"ĐSQH"
Lấy$ra$tất$cả$các$cột$$ Lấy"tất"cả"các"
cột"của"quan"hệ"
π SELECT"*" kết"quả"
FROM"KHOA"
SELECT"<danh"sách"các"cột>"
WHERE"PHONG='I53'"
× FROM"<danh"sách"các"bảng>"
AND"NAMTL"="'1995'"
WHERE"<điều"kiện>"
MaKhoa" TenKhoa" Phong" NamTL" DienThoai" TruongKhoa" NgayNhanChuc"
σ CNTT" Công"nghệ"thông"tin" I53" 1995" 08313964145" GV130" 01/01/2007"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 27$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 28$
Mệnh'đề'SELECT'(=)'' Mệnh'đề'SELECT'(=)'
Lấy$ra$một$số$cột$ Tên$bí$danh$
SELECT"MAKHOA,"TENKHOA,"PHONG"
SELECT"MAKHOA"AS"'Mã"khoa',"TENKHOA"AS"'Tên"khoa',"PHONG"AS"'Mã"phòng'"
FROM"KHOA" FROM"KHOA"
WHERE"PHONG='I53'" WHERE"PHONG='I53'"AND"NAMTL"="'1995'"
AND"NAMTL"="'1995'"
Mã" Tên"khoa" Mã"phòng"
khoa"
MaKhoa" TenKhoa" Phong"
CNTT" Công"nghệ"thông" I53"
CNTT" Công"nghệ"thông"tin" I53" tin"
ρ
Mã"khoa,"Tên"khoa,"Mã"phòng(π MANV,HONV,TENLOT,TENNV( σ PHG='I53'∧NamTL='1995'"(KHOA)))"
π MAKHOA,"TENKHOA,"PHONG( σ PHG='I53'∧NamTL='1995'"(KHOA))"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 29$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 30$
Mệnh'đề'SELECT'(=)' Mệnh'đề'SELECT'(=)'
Mở$rộng$ Mở$rộng$
SELECT"MAGV,"HOTEN,"SONHA"+"','"+"DUONG"+"','"+"','"+"QUAN"+"','"+" SELECT"MAGV,"LUONG*1.1"AS"'LUONG10%'"
THANHPHO"AS"'DIA"CHI'" FROM"GIAOVIEN"
FROM"GIAOVIEN" WHERE"PHAI='Nam'"
WHERE"PHAI='Nam'"
ρ
MAGV,HOTEN,DIA CHI( π MAGV,HOTEN,SONHA+DUONG+QUAN+THANHPHO( σ PHAI= Nam (GIAOVIEN))) ρ MAGV,LUONG10%( π MAGV,LUONG*1.1( σ PHAI= Nam (GIAOVIEN)))
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 31$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 32$
Mệnh'đề'SELECT'(=)' Ví'dụ'
! Cho"biết"MAGV"và"TENGV"làm"việc"ở"bộ"môn" Hệ"thống"
Loại$bỏ$các$dòng$trùng$nhau$
thông"tin "
SELECT"LUONG" SELECT"DISTINCT"LUONG"
FROM"GIAOVIEN" FROM"GIAOVIEN" R1 ← GIAOVIEN GIAOVIEN.MABM=BOMON.MABM BOMON
WHERE"PHAI= Nam " WHERE"PHAI= Nam " KQ ← πMAGV, HOTEN (σTENBM='Hệ thống thông tin' (R1))
LUONG" LUONG"
30000" 30000"
25000" 25000" SELECT"" MAGV,"HOTEN"
25000" 38000" FROM" GIAOVIEN,"BOMON"
38000" WHERE" TENBM="N'Hệ"thống"thông"tin'"
AND" GIAOVIEN.MABM=BOMON.MABM"
/ "Tốn"chi"phí"
/ "Người"dùng"muốn"thấy"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 33$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 34$
Mệnh'đề'WHERE' Mệnh'đề'WHERE'(=)'
! Sử"dụng"các"phép"toán"AND,"OR"để"nối"các"biểu"thức"điều"
Độ$ưu$tiên$
kiện"lại"với"nhau"""
SELECT"MAGV,"HOTEN"
SELECT"MAGV,"HOTEN" FROM"GIAOVIEN,"BOMON"
FROM"GIAOVIEN,"BOMON" TRUE" WHERE"(TENBM"="N'Hệ"thống"thông"tin'"OR"TENBM"="N'Mạng"máy"tính')"
Biểu$
thức$
WHERE"TENBM"="N'Hệ"thống"thông"tin'" AND"GIAOVIEN.MABM"="BOMON.MABM"
AND"
luận$lý$ AND"GIAOVIEN.MABM"="BOMON.MABM"
TRUE"
Độ"ưu"tiên"mặc"định"của"các"phép"toán:"từ"trái"qua"phải.""
Nên"sử"dụng"dấu"ngoặc"thể"hiện"tường"minh"sự"ưu"tiên"của"các"phép"toán.""
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 35$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 36$
Mệnh'đề'WHERE'(=)' Mệnh'đề'WHERE'(=)'
BETWEEN$ NOT$BETWEEN$
SELECT"MAGV,"HOTEN"
FROM"GIAOVIEN" SELECT"MANV,"TENNV""
WHERE"LUONG">="20000"AND"LUONG"<="30000" FROM"NHANVIEN"
WHERE"LUONG"NOT"BETWEEN"20000"AND"
30000"
SELECT"MAGV,"HOTEN"
FROM"GIAOVIEN"
SELECT"MAGV,"HOTEN"
WHERE"LUONG"BETWEEN"20000"AND"30000"
FROM"GIAOVIEN"
"
WHERE"LUONG"<"20000"OR"LUONG">"30000"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 37$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 38$
Mệnh'đề'WHERE'(=)' Mệnh'đề'WHERE'(=)'
LIKE$ NOT$LIKE$
SELECT"MAGV,"HOTEN" SELECT"MAGV,"HOTEN"
FROM"GIAOVIEN" HOTEN"LIKE" nguyen"_"_"_"_ " FROM"GIAOVIEN"
WHERE"HOTEN"LIKE" Nguyen"_"_"_"_ " WHERE"HOTEN"LIKE" Nguyen "
" "
phủ"định"
4"ký"tự"bất"kỳ"
SELECT"MAGV,"HOTEN"
FROM"GIAOVIEN" SELECT"MAGV,"HOTEN"
WHERE"HOTEN"LIKE" Nguyen"% " FROM"GIAOVIEN"
" WHERE"HOTEN"NOT"LIKE" Nguyen "
Chuỗi"bất"kỳ" "
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 39$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 40$
Mệnh'đề'WHERE'(=)' Mệnh'đề'WHERE'(=)'
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 41$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 42$
Mệnh'đề'WHERE'(=)' Mệnh'đề'WHERE'(=)'
1955/12/08"17:30:00 "
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 43$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 44$
Mệnh'đề'WHERE'(=)' Mệnh'đề'WHERE'(=)'
NULL$
NULL$
- Sử"dụng"trong"trường"hợp:"
" Không"biết"(value"unknown)"
SELECT"MAGV,"HOTEN"
" Không"thể"áp"dụng"(value"inapplicable)"
FROM"GIAOVIEN"
" Không"tồn"tại"(value"withheld)"
WHERE"GVQL"IS"NULL"
- 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"
" x"có"giá"trị"là"NULL"
SELECT"MAGV,"HOTEN"
" x"+"3"cho"ra"kết"quả"là"NULL"
FROM"GIAOVIEN"
" x"+"3"là"một"biểu"thức"không"hợp"lệ"trong"SQL"
WHERE"GVQL"IS"NOT"NULL"
- Những"biểu"thức"so"sánh"có"liên"quan"đến"giá"trị"NULL"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ệ"trong"SQL"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 45$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 46$
Mệnh'đề'FROM' Mệnh'đề'FROM'(=)'
! Cho"biết"tên"của"bộ"môn"và"tên"của"trưởng"bộ"môn"của" ! Với" những" đề" tài" thuộc" cấp" quản" lý" Thành" phố ," cho" biết"
những"bộ"môn"thuộc"khoa"CNTT"(mã"khoa)" mã" đề" tài," đề" tài" thuộc" về" chủ" đề" nào," họ" tên" người" chủ"
nghiệm"đề"tài"cùng"với"ngày"sinh"và"địa"chỉ"của"người"ấy"
SELECT"BM.TENBM,"GV.HOTEN""AS"TEN_TRUONGBM" SELECT"D.MADT,"C.TENCD,"G.MAGV,"G.HOTEN,"G.DIACHI""
FROM"BOMON"BM,"GIAOVIEN"GV$ FROM"DETAI"D,"CHUDE"C,"GIAOVIEN"G"
WHERE"BM.TRUONGBM%=%GV.MAGV"AND"" WHERE"D.CapQL"="‘Thanh"Pho’"AND"D.MACD"="C.MACD"AND"
"BM.MAKHOA="‘CNTT’"" D.GVCNDT"="G.MAGV""
Điều"kiện"kết"để"tìm"ra"giáo"viên"làm"trưởng"bộ"môn"
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 49$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 50$
Ví'dụ'3' Ví'dụ'4'
SELECT"GV.HOTEN""
FROM"GIAOVIEN"GV,"THAMGIADT"TG,"DETAI"DT""
WHERE"GV.MAGV"="TG.MAGV"AND""
"TG.MADT"="DT.MADT"AND""
"GV.MABM=‘HTTT’"AND""
"DT.TENDT=‘Mobile"Database’"AND"TG.PHUCAP>10"
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 51$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 52$
Ví'dụ'5' Mệnh'đề'ORDER'BY'
- ASC:"tăng"(mặc"định)"
- DESC:"giảm"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 53$ ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 54$
Mệnh'đề'ORDER'BY'(=)' Nội'dung'chi'>ết'
! Ví"dụ" ! Giới"thiệu"
SELECT"*"" ! Định"nghĩa"dữ"liệu"
FROM"THAMGIADT""
! Truy$vấn$dữ$liệu$
ORDER"BY"MAGV"DESC,"MADT,"STT"DESC"
- Truy"vấn"cơ"bản"
MAGV MADT STT MAGV MADT STT
GV01 DT01 1 GV02 DT01 3
- Tập"hợp,"so"sánh"tập"hợp"và"truy"vấn"lồng"
GV01 DT01 2 GV02 DT01 2 - Hàm"kết"hợp"và"gom"nhóm"
GV01 DT02 1 GV02 DT03 4
- Một"số"dạng"truy"vấn"khác"
GV02 DT01 2 GV02 DT03 1
GV02 DT01 3 GV01 DT01 2 ! Cập"nhật"dữ"liệu""
GV02
GV02
DT03
DT03
1
4
GV01
GV01
DT01
DT02
1
1
! Khung"nhìn"(view)"
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 55$
! Chỉ"mục"(index)"
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 56$
Phép'toán'tập'hợp'trong'SQL' Phép'toán'tập'hợp'trong'SQL'(=)'
! SQL"có"cài"đặt"các"phép"toán" ! Cú"pháp"
- Hội"(UNION)"
- Giao"(INTERSECT)" SELECT"<ds"cột>"FROM"<ds"bảng>"WHERE"<điều"kiện>"
UNION$[ALL]$
- Trừ"(EXCEPT)"
SELECT"<ds"cột>"FROM"<ds"bảng>"WHERE"<điều"kiện>"
! Kết"quả"trả"về"là"tập"hợp"
SELECT"<ds"cột>"FROM"<ds"bảng>"WHERE"<điều"kiện>"
- Loại"bỏ"các"bộ"trùng"nhau"
INTERSECT$[ALL]$
- Để"giữ"lại"các"bộ"trùng"nhau"
SELECT"<ds"cột>"FROM"<ds"bảng>"WHERE"<điều"kiện>"
" UNION"ALL"
" INTERSECT"ALL"
SELECT"<ds"cột>"FROM"<ds"bảng>"WHERE"<điều"kiện>"
" EXCEPT"ALL"
EXCEPT$[ALL]$
SELECT"<ds"cột>"FROM"<ds"bảng>"WHERE"<điều"kiện>"
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 57$ ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 58$
Ví'dụ'6' Ví'dụ'7'
! Cho"biết"mã"của"các"giáo"viên"có"họ"tên"bắt"đầu"là" ! Tìm"những"giáo"viên"vừa"là"trưởng"bộ"môn"vừa"chủ"nhiệm"
'Nguyễn'"và"lương"trên"200000"hoặc,"giáo"viên"là"trưởng"bộ" đề"tài"
môn"nhận"chức"sau"năm"1995"
SELECT"TRUONGBM"
FROM"BOMON"
SELECT"MAGV"
INTERSECT"
FROM"GIAOVIEN"
SELECT"GVCNDT"
WHERE"HOTEN"LIKE"N'Nguyễn%'"
FROM"DETAI"
AND"LUONG">"200000"
UNION"
SELECT"TRUONGBM" SELECT"BM.TRUONGBM"
FROM"BOMON" FROM"BOMON"BM,"DETAI"DT"
WHERE"YEAR(NGAYNHANCHUC)>=1995" WHERE"BM.TRUONGBM"="DT.GVCNDT"
! Tìm"những"giáo"viên"không"tham"gia"bất"kỳ"đề"tài"nào"
SELECT"MAGV,"HOTEN"
FROM"GIAOVIEN,"BOMON"
WHERE"TENBM"="N'Hệ"thống"thông"tin'"
SELECT"MAGV"
FROM"GIAOVIEN" AND"GIAOVIEN.MABM"="BOMON.MABM"
EXCEPT"
SELECT"MAGV" Câu"truy"vấn" SELECT"<danh"sách"các"cột>"
FROM"THAMGIADT" cha"(Outer" FROM"<danh"sách"các"bảng>"
query)" WHERE"<so"sánh"tập"hợp>"("
"SELECT"<danh"sách"các"cột>"
$FROM"<danh"sách"các"bảng>" Câu"truy"vấn"
con"(Subquery)"
$WHERE"<điều"kiện>)"
Truy'vấn'lồng'(=)' Truy'vấn'lồng'(=)'
! Các"câu"lệnh"SELECT"có"thể"lồng"nhau"ở"nhiều"mức" ! Có"2"loại"truy"vấn"lồng"
! Câu"truy"vấn"con"thường"trả"về"một"tập"các"giá"trị" - Lồng"phân"cấp"
! Các"câu"truy"vấn"con"trong"cùng"một"mệnh"đề"WHERE"được" " Mệnh"đề"WHERE"của"truy"vấn"con"không"tham"chiếu"đến"
kết"hợp"bằng"phép"nối"logic" thuộc"tính"của"các"quan"hệ"trong"mệnh"đề"FROM"ở"truy"vấn"
cha"
! Mệnh"đề"WHERE"của"câu"truy"vấn"cha"
" Khi"thực"hiện,"câu"truy"vấn"con"sẽ"được"thực"hiện"trước"
- <biểu"thức>"<so"sánh"tập"hợp>"<truy"vấn"con>"
- Lồng"tương"quan"
- So"sánh"tập"hợp"thường"đi"cùng"với"một"số"toán"tử"
" Mệnh"đề"WHERE"của"truy"vấn"con"tham"chiếu"ít"nhất"một"
" IN,"NOT"IN"
thuộc"tính"của"các"quan"hệ"trong"mệnh"đề"FROM"ở"truy"vấn"
" ALL" cha"
" ANY"hoặc"SOME" " Khi"thực"hiện,"câu"truy"vấn"con"sẽ"được"thực"hiện"nhiều"
- Kiểm"tra"sự"tồn"tại" lần,"mỗi"lần"tương"ứng"với"một"bộ"của"truy"vấn"cha"
" EXISTS"
" NOT"EXISTS"
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 63$ ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 64$
Ví'dụ'N'Lồng'phân'cấp' Ví'dụ'9'
SELECT"MAGV,"HOTEN" SELECT"HOTEN"
Sử%dụng%phép%kết%%
FROM"GIAOVIEN,"BOMON" FROM"GIAOVIEN"
WHERE""GIAOVIEN.MAGV"="BOMON.TRUONGBM"
WHERE"MAGV"IN"(SELECT"MAGV"
SELECT"MAGV,"HOTEN" " " "FROM"GIAOVIEN"
FROM"GIAOVIEN" " " "WHERE"HOTEN"LIKE"N'Nguyễn%'"
SELECT"MAGV,"HOTEN" WHERE"MABM"IN"(‘001'," " " "AND"LUONG">"200000)"
FROM"GIAOVIEN" ‘002',"‘004',"‘005‘,"‘007‘")"
OR"MAGV"IN"(SELECT"TRUONGBM"
WHERE"MAGV"IN"(SELECT"TRUONGBM" " " "FROM"BOMON"
Sử%dụng%truy%vấn%lồng%với%IN%
" "FROM"BOMON" " " "WHERE"YEAR(NGAYNHANCHUC)>=1995)"
""
Mệnh"đề"WHERE"của"truy"vấn"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"
Ví'dụ'10' Ví'dụ'11'
! Tìm"những"giáo"viên"không"tham"gia"đề"tài"nào" ! Tìm"những"giáo"viên"có"lương"lớn"hơn"lương"của"ít"nhất"một"
giáo"viên"bộ"môn" Công"nghệ"phần"mềm "
SELECT"*"
SELECT"*"
FROM"GIAOVIEN"
FROM"GIAOVIEN"
WHERE"MAGV"NOT"IN(SELECT"MAGV"
WHERE"LUONG">"ANY"(SELECT"GV.LUONG"
" " "FROM"THAMGIADT)" " " "FROM"GIAOVIEN"GV,"BOMON"BM"
" " "WHERE"GV.MABM"="BM.MABM"
" " "AND"BM.TENBM"="N'Công"nghệ"phần"mềm')"
SELECT"*"
FROM"GIAOVIEN" SELECT"GV1.*"
WHERE"MAGV"<>"ALL(SELECT"MAGV" FROM"GIAOVIEN"GV1,"GIAOVIEN"GV2,"BOMON"BM"
" " "FROM"THAMGIADT)" WHERE"GV2.MABM"="BM.MABM"
AND"BM.TENBM"="N'Công"nghệ"phần"mềm'"AND"GV1.LUONG">"GV2.LUONG"
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 67$ ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 68$
Ví'dụ'12' Ví'dụ'13'
! Tìm"những"giáo"viên"có"lương"lớn"hơn"lương"của"tất"cả"giáo" ! Tìm"những"trưởng"bộ"môn"tham"gia"tối"thiểu"1"đề"tài"
viên"thuộc"bộ"môn" Hệ"thống"thông"tin "
SELECT"*"
FROM"GIAOVIEN"
SELECT"*"
WHERE"MAGV"IN"(SELECT"TRUONGBM"
FROM"GIAOVIEN" " """""""""FROM"BOMON)"
WHERE"LUONG">"ALL"(SELECT"LUONG" AND"MAGV"IN"(SELECT"MAGV"
" " "FROM"GIAOVIEN"GV,"BOMON"BM" " """"FROM"THAMGIADT)"
Ví'dụ'N'Lồng'tương'quan' Ví'dụ'N'Lồng'tương'quan''
! Tìm"những"giáo"viên"là"trưởng"bộ"môn" ! Tìm"những"giáo"viên"có"lương"lớn"nhất""
SELECT"MAGV,"HOTEN" Giáo"viên"là"có"lương"lớn"
Sử%dụng%phép%kết%% SELECT"MAGV,"HOTEN" nhất"khi"không$tồn$tại$một"
FROM"GIAOVIEN,"BOMON"
FROM"GIAOVIEN"GV" giáo"viên"nào"mà"có"lương"
WHERE""GIAOVIEN.MAGV"="BOMON.TRUONGBM" lớn"hơn"giáo"viên"đó""
WHERE"NOT$EXISTS"(SELECT"*"
SELECT"MAGV,"HOTEN" " "FROM"GIAOVIEN"GV2""
FROM"GIAOVIEN"GV$ " "WHERE"GV2.LUONG"">""GV.LUONG)"
WHERE"EXISTS"(SELECT"*" Sử%dụng%truy%vấn%lồng%với%EXISTS%%
" "FROM"BOMON"BM"
" "WHERE"BM.TRUONGBM"="GV.MAGV)" SELECT"MAGV,"HOTEN"
Giáo"viên"là"có"lương"lớn"
Giáo"viên"là"trưởng"bộ"môn"khi"tồn$tại$một"bộ"môn"có"TRUONGBM"="
nhất"khi"lương"của"giáo"viên"
FROM"GIAOVIEN"GV"
MAGV"của"giáo"viên"đó""" lớn$hơn$hoặc$bằng$tất$cả"
WHERE$LUONG$>=$ALL$(SELECT"LUONG"" lương"của"các"giáo"viên"
Mệnh"đề"WHERE"của"truy"vấn"con"tham"chiếu"ít"nhất"một"thuộc"tính"của"các" " "FROM"GIAOVIEN"GV2)"
quan"hệ"trong"mệnh"đề"FROM"ở"truy"vấn"cha"
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 71$ ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 72$
Ví'dụ'14' Ví'dụ'15'
! Tìm"giáo"viên"trùng"tên"và"cùng"giới"tính"với"giáo"viên"khác" ! Tìm"những"giáo"viên"không"tham"gia"đề"tài"nào"
trong"cùng"bộ"môn"
SELECT"*"
SELECT"*"
FROM"GIAOVIEN"GV$
FROM"GIAOVIEN"GV1"
WHERE"NOT$EXISTS"(SELECT"*"
WHERE"EXISTS"(SELECT"*" " """"""""""FROM"THAMGIADT"PC"
" "FROM"GIAOVIEN"GV2" " """"""""""WHERE"PC.MAGV"="GV.MAGV)"
" "WHERE"GV1.HOTEN"LIKE"GV2.HOTEN"
Giáo"viên"GV"không"tham"gia"đề"
" "AND"GV1.PHAI"="GV2.PHAI" tài"khi"không$tồn$tại"một"dòng"
" "AND"GV1.MABM"="GV2.MABM" nào"trong"THAMGIADT"mà"có"
MAGV"="GV.MAGV"
" "AND"GV1.MAGV"<>"GV2.MAGV)"
Ví'dụ'16' Ví'dụ'17'
! Tìm"những"giáo"viên"có"lương"lớn"hơn"lương"của"ít"nhất"một" ! Tìm"những"trưởng"bộ"môn"tham"gia"tối"thiểu"1"đề"tài"
giáo"viên"bộ"môn" Công"nghệ"phần"mềm "
SELECT"*"
FROM"GIAOVIEN"GV"
SELECT"*"
WHERE"EXISTS"(SELECT"*"
FROM"GIAOVIEN"GV1"
" """FROM"BOMON"BM"
WHERE"EXISTS"(SELECT"*"
" """WHERE"GV.MAGV"=BM.TRUONGBM)"
" "FROM"GIAOVIEN"GV2,"BOMON"BM"
AND"EXISTS"(SELECT"*"FROM"THAMGIADT"PC"
" "WHERE"GV2.MABM"="BM.MABM"
""""""""""WHERE"PC.MAGV"="GV.MAGV)"
" "AND"BM.TENBM"="N'Công"nghệ"phần"mềm'"
" "AND"GV1.LUONG">"GV2.LUONG)"
! IN" ! EXISTS:"
- <tên"cột>"IN"<câu"truy"vấn"con>" - Sử"dụng"để"kiểm"tra"tồn"tại"
- Thuộc"tính"ở"mệnh"đề"SELECT"của"truy"vấn"con"phải"có"cùng" - Cú"pháp"sử"dụng"""
kiểu"dữ"liệu"với"thuộc"tính"ở"mệnh"đề"WHERE"của"truy"vấn" - …"EXISTS"(Select"…"From"…"Where…)"
cha"
Sub query
! EXISTS"
- Không"cần"có"thuộc"tính,"hằng"số"hay"biểu"thức"nào"khác"đứng" Nếu"sub"query"có"dữ"liệu"(>="1"dòng)""
trước" #"tồn"tại"</>"mệnh"đề"EXISTS"(…)"="TRUE"""
- Không"nhất"thiết"liệt"kê"tên"thuộc"tính"ở"mệnh"đề"SELECT"của"
truy"vấn"con" Nếu"sub"query"không"có"dữ"liệu"(0"dòng"hoặc"rỗng)""
- Những"câu"truy"vấn"có"="ANY"hay"IN"đều"có"thể"chuyển"thành" #"Không"tồn"tại"</>"mệnh"đề"EXISTS"(…)"="FALSE""
câu"truy"vấn"có"EXISTS"
Ví'dụ'18' Ví'dụ'19'
! Tìm"những"giáo"viên"có"tham"gia"đề"tài" ! Tìm"những"giáo"viên"không"tham"gia"đề"tài"
SELECT"*" SELECT"*"
FROM"GIAOVIEN"GV$ FROM"GIAOVIEN"GV$
WHERE"EXISTS"(SELECT"*" WHERE"NOT$EXISTS"(SELECT"*"
" """"""""""FROM"THAMGIADT"PC" " """"""""""FROM"THAMGIADT"PC"
" """"""""""WHERE"PC.MAGV"="GV.MAGV)" " """"""""""WHERE"PC.MAGV"="GV.MAGV)"
Nếu"giáo"viên"GV"có"tham"gia"đề"tài"#" Nếu"giáo"viên"GV"không"tham"gia"đề"
câu"truy"vấn"bên"trong"sẽ"có"dữ"liệu" tài"#"câu"truy"vấn"bên"trong"sẽ"rỗng"
(>="1"dòng)"#"mệnh"EXISTS"(S".."F…" (0"dòng)"#"NOT"EXISTS"(S…F..W)"có"
W)"có"giá"trị"TRUE"" giá"trị"TRUE""
! Sử"dụng"EXCEPT"để"biểu"diễn"
R$ A" B" C" D" E" S$ D" E" R÷S$ A" B" C"
α" a" α" a" 1" bi a" 1" ai α" a" γ"
α" a" γ" a" 1" b" 1" γ" a" γ"
α" a" γ" b" 1"
SELECT"R1.A,"R1.B,"R1.C"
β" a" γ" a" 1" FROM"R"R1"
a" b" 3"
β" γ"
WHERE"NOT"EXISTS"("
γ" a" γ" a" 1"
γ" a" γ" b" 1" " " "("SELECT"S.D,"S.E""FROM"S)"
a" b" 1"
γ" β"
"""""""""""""""""""""" "EXCEPT""
"""""""""""""""""""""""""""""""" "("SELECT"R2.D,"R2.E""
! R÷S"là"tập"các"giá"trị"ai"trong"R"sao"cho"không"có"giá"trị"bi"
" """""""""" "FROM"R"R2"
nào"trong"S"làm"cho"bộ"(ai,"bi)"không"tồn"tại"trong"R"
" """"""""" "WHERE"R1.A=R2.A"AND"R1.B=R2.B""
"""""""""""""""""""""""""""""""""" "AND"R1.C=R2.C")"
" " ")"
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 81$ ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 82$
Phép'chia'trong'SQL'(=)' Ví'dụ'20'
! Sử"dụng"NOT"EXISTS"để"biểu"diễn" ! Tìm"tên"các"giáo"viên"được"phân"công"làm"tất$cả$các"đề"
tài"
SELECT"R1.A,"R1.B,"R1.C"
FROM"R"R1" - Tìm" tên" các" nhân$ viên$ mà" không" có" đề$ án$ nào" là" không"
WHERE"NOT"EXISTS"(" được"phân$công$làm$
"SELECT"*"
"FROM"S" - Tập"bị"chia:"THAMGIADT(MAGV,"MADT)"
"WHERE"NOT"EXISTS"(" - Tập"chia:"DETAI(MADT)"
" "SELECT"*"" - Tập"kết"quả:"KQ(MAGV)"
" "FROM"R"R2" - Kết"KQ"với"GIAOVIEN"để"lấy"ra"TENGV"
" "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"))"
SELECT"DISTINCT"GV.MAGV,"GV.HOTEN"
FROM"GIAOVIEN"GV,"THAMGIADT"PC1"
SELECT"DISTINCT"GV.MAGV,"GV.HOTEN"
WHERE"GV.MAGV"="PC1.MAGV"
FROM"GIAOVIEN"GV,"THAMGIADT"PC1$
AND"NOT"EXISTS"("SELECT"*"
"
WHERE"GV.MAGV"="PC1.MAGV" "
" """""FROM"DETAI"DT"
"
AND"NOT"EXISTS"("""(SELECT"DT.MADT"FROM"DETAI"DT)Toàn
$ bộ đề tài " """""WHERE"NOT"EXISTS"(SELECT"*" " "
Những"đề"tài" "
" """"""EXCEPT" mà"giáo"viên"" " " " """""""FROM"THAMGIADT"PC2"
Những"đề"tài" PC1.MAGV" " " " " """""""WHERE"PC2.MAGV"="PC1.MAGV$
"
mà"giáo"viên" """""(SELECT"PC2.MADT" không"tham"gia"" "
Những đề tài mà " " " """""""AND"DT.MADT"="PC2.MADT))"
PC1.MAGV"" """"""FROM"THAMGIADT"PC2" PC1.MaGV đã tham gia "
không"tham"
gia"" " """""WHERE"PC2.MAGV"="PC1.MAGV)"""""""")$
Nếu"danh"sachs"đề"tài"chưa"tham"gia"=" Tìm"những"giáo"viên"mà"danh"sách"đề"tài"không"tham"gia"="rỗng"""
rỗng"#"Giáo"viên"đã"tham"gia"tất"cả"các"đề"
tài""
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 85$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 86$
Ví'dụ'20'–'Not'Exists' Phép'chia'–'với'Count'
! Cho"R(A,B),"S(B),"thực"hiện"R÷S""
SELECT"DISTINCT"GV.MAGV,"GV.HOTEN"
SELECT"R.A"
FROM"GIAOVIEN"GV,"THAMGIADT"PC1"
FROM"R"
WHERE"GV.MAGV"="PC1.MAGV"
[WHERE"R.B"IN"(SELECT"S.B"FROM"S"""[WHERE"<ĐK>]]"
AND"0$=$(SELECT"COUNT(*)$$
GROUP"BY"R.A"
" "FROM"DETAI"DT"
HAVING"COUNT(DISTINCT"R.B)"="("SELECT"COUNT(S.B)"
" "WHERE"NOT"EXISTS"(SELECT"* " " "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""FROM"S"
" " " """""""FROM"THAMGIADT"PC2"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""[WHERE"<ĐK>])"
" " " """""""WHERE"PC2.MAGV"="PC1.MAGV"
" " " """""""AND"DT.MADT"="PC2.MADT))"
"
Tìm"những"giáo"viên"mà"số"lượng"đề"tài"chưa"tham"gia"bằng"0""
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 87$ ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 88$
Ví'dụ'20'–'Count' Ví'dụ'21'–'Count'
! Tìm"tên"các"giáo"viên"được"phân"công"làm"tất$cả$các"đề"tài"
SELECT"DISTINCT"GV.MAGV,"GV.HOTEN" có"kinh"phí"trên"100"triệu?"
FROM"GIAOVIEN"GV,"THAMGIADT"PC1"
WHERE"GV.MAGV"="PC1.MAGV" SELECT"DISTINCT"GV.MAGV,"GV.HOTEN"
GROUP"BY"GV.MAGV,"GV.HOTEN" FROM"GIAOVIEN"GV,"THAMGIADT"PC1"
HAVING"COUNT(DISTINCT"PC1.MADT)"="(SELECT"COUNT"(MADT)" WHERE"GV.MAGV"="PC1.MAGV""
" """"""""""""""""""""""""""""""""""""FROM"DETAI"DT)" AND"PC1.MADT"IN"(SELECT"DT.MADT"FROM"DETAI"WHERE"KINHPHI">"100)"
" "" GROUP"BY"GV.MAGV,"GV.HOTEN"
HAVING"COUNT(DISTINCT"PC1.MADT)"="(SELECT"COUNT"(MADT)"
" """"""""""""""""""""""""""""""""""""""""""""" "FROM"DETAI"DT"
" " " """"""""""" "WHERE"KINHPHI">100)"
" ""
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 89$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 90$
Bài'tập'phép'chia' Nội'dung'chi'>ết'
1. Cho"biết"mã"số,"họ"tên,"ngày"sinh"của"giáo"viên"tham"gia"tất" ! Giới"thiệu"
cả"các"công"việc"của"đề"tài"‘Ứng"dụng"hóa"học"xanh’."
! Định"nghĩa"dữ"liệu"
2. Cho"biết"mã"số,"họ"tên,"tên"bộ"môn"và"tên"người"quản"lý" ! Truy"vấn"dữ"liệu"
chuyên"môn"của"giáo"viên"tham"gia"tất"cả"các"đề"tài"thuộc"
- Truy"vấn"cơ"bản"
chủ"đề"‘Nghiên"cứu"phát"triển’."
- Tập"hợp,"so"sánh"tập"hợp"và"truy"vấn"lồng"
3. Cho"biết"họ"tên,"ngày"sinh,"tên"khoa,"tên"trưởng"khoa"của" - Hàm$kết$hợp$và$gom$nhóm$
giáo"viên"tham"gia"tất"cả"các"đề"tài"có"giáo"viên"‘Nguyễn" - Một"số"dạng"truy"vấn"khác"
Hoài"An’"tham"gia."
! Cập"nhật"dữ"liệu""
4. Cho"biết"họ"tên"giáo"viên"khoa"‘Công"nghệ"thông"tin’"tham" ! Khung"nhìn"(view)"
gia"tất"cả"các"công"việc"của"đề"tài"có"trưởng"bộ"môn"của"bộ"
môn"đông"nhất"khoa"‘Công"nghệ"thông"tin’"làm"chủ"nhiệm."
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 91$
! Chỉ"mục"(index)"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 92$
Hàm'kết'hợp' Ví'dụ'22'
! COUNT" ! Tìm"tổng"lương,"lương"cao"nhất,"lương"thấp"nhất"và"lương"
- COUNT(*)""đếm"số"dòng" trung"bình"của"các"giáo"viên"
- 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" SELECT"SUM(LUONG),"MAX(LUONG),"MIN(LUONG),"AVG(LUONG)"
và"khác"NULL"của"thuộc"tính" FROM"GIAOVIEN"
! MIN"
! MAX"
! SUM"
! AVG"
! Các"hàm"kết"hợp"được"đặt"ở"mệnh"đề"SELECT"hoặc"HAVING"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 93$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 94$
Ví'dụ'23' Ví'dụ'24'
SELECT"*"
SELECT"COUNT(*)"AS"SL_GV" FROM"GIAOVIEN"GV1"
FROM"GIAOVIEN"GV,"BOMON"BM" WHERE"2">="(SELECT"COUNT(*)"
WHERE"GV.MABM"="BM.MABM" """""""""""FROM"GIAOVIEN"GV2"
"AND"TENBM=N'Mạng"máy"tính'" """"""""""WHERE"GV2.LUONG">"GV1.LUONG)"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 95$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 96$
Ví'dụ'25' Gom'nhóm'
! Cho"biết"số"lượng"giáo"viên"của"từng"bộ"môn" ! Cú"pháp"
Bộ môn Số lượng
SELECT"<danh"sách"các"cột>"
HTTT 2
FROM"<danh"sách"các"bảng>"
CNPM 1
WHERE"<điều"kiện>"
MMT 1
GROUP$BY"<danh"sách"các"cột"gom"nhóm>"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 97$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 98$
Ví'dụ'26' Ví'dụ'27'
! Cho"biết"số"lượng"giáo"viên"của"từng"bộ"môn" ! Với"mỗi"giáo"viên"cho"biết"mã"số,"mã"đề"tài"và"số"công"việc"
mà"họ"tham"gia"ứng"với"mỗi"đề"tài"
! Cho"biết"những"giáo"viên"tham"gia"từ"2"công"việc""trở"lên"cho" ! Cú"pháp"
mỗi"đề"tài?"
SELECT"<danh"sách"các"cột>"
MAGV$ MADT$ STT$ FROM"<danh"sách"các"bảng>"
GV001" DT001" 1"
WHERE"<điều"kiện>"
GV001" DT001" 2"
GROUP$BY"<danh"sách"các"cột"gom"nhóm>"
GV001" DT002" 1"
HAVING$<điều"kiện"trên"nhóm>"
GV002" DT002" 2"
GV003" DT001" 3"
GV003" DT002" 3"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 101$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 102$
Ví'dụ'29' Ví'dụ'30'
! Cho"biết"những"giáo"viên"tham"gia"từ"2"công"việc""trở"lên"cho" ! Cho"biết"những"giáo"viên"tham"gia"từ"2"đề"tài"trở"lên"
mỗi"đề"tài?"
MAGV$ MADT$ STT$
SELECT"PC.MAGV,"PC.MADT,"COUNT(*)"AS"'Số"lượng"công"việc'" GV001" DT001" 1"
FROM"THAMGIADT"PC" GV001" DT001" 2"
GROUP"BY"PC.MAGV,"PC.MADT" GV001" DT002" 1"
HAVING"COUNT(*)">="2" GV002" DT002" 2"
GV003" DT001" 3"
GV003" DT002" 3"
SELECT"PC.MAGV,"COUNT(DISTINCT"MADT)"AS"'Số"lượng"đề"tài'"
FROM"THAMGIADT"PC"
GROUP"BY"PC.MAGV"
HAVING"COUNT(DISTINCT"MADT)">="2"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 103$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 104$
Ví'dụ'31' Nhận'xét'
! Cho"biết"những"bộ"môn"(TENBM)"có"lương"trung"bình"của" ! Mệnh"đề"GROUP"BY""
các"giáo"viên"lớn"hơn"20000" - 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"
SELECT"GV.MABM,"AVG(GV.LUONG)"AS"'Lương"trung" BY"
bình'" ! Mệnh"đề"HAVING"
FROM"GIAOVIEN"GV" - Sử"dụng"các"hàm"kết"hợp"trong"mệnh"đề"SELECT"để"kiểm"tra"
GROUP"BY"GV.MABM" một"số"điều"kiện"nào"đó"
HAVING"AVG(GV.LUONG)>20000" - Chỉ"kiểm"tra"điều"kiện"trên"nhóm,"không"là"điều"kiện"lọc"trên"
từng"bộ"
SELECT"BM.TENBM,"AVG(GV.LUONG)"AS"'Lương"trung"bình'" - Sau"khi"gom"nhóm"điều"kiện"trên"nhóm"mới"được"thực"hiện""
FROM"GIAOVIEN"GV,"BOMON"BM"
WHERE"GV.MABM"="BM.MABM"
GROUP"BY"BM.MABM,"BM.TENBM"
HAVING"AVG(GV.LUONG)>=20000"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 105$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 106$
Nhận'xét'(=)' Ví'dụ'32'
! Thứ"tự"thực"hiện"câu"truy"vấn"có"mệnh"đề"GROUP"BY"và" ! Tìm"những"phòng"ban"có"lương"trung"bình"cao"nhất"
HAVING""
- (1)"Chọn"ra"những"dòng"thỏa"điều"kiện"trong"mệnh"đề"
WHERE" SELECT"GV.MABM,"AVG(GV.LUONG)"AS"'Lương"trung"bình'"
- (2)"Những"dòng"này"sẽ"được"gom"thành"nhiều"nhóm"tương" FROM"GIAOVIEN"GV"
ứng"với"mệnh"đề"GROUP"BY" GROUP"BY"GV.MABM"
- (3)"Áp"dụng"các"hàm"kết"hợp"cho"mỗi"nhóm" HAVING"AVG(GV.LUONG))"="(SELECT"MAX(AVG(GV.LUONG))"
- (4)"Bỏ"qua"những"nhóm"không"thỏa"điều"kiện"trong"mệnh"đề" " " """"FROM"GIAOVIEN"GV"
HAVING" " " """"GROUP"BY"GV.MABM)"
- (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"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 107$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 108$
Ví'dụ'33' Ví'dụ'34'
! Tìm"những"phòng"ban"có"lương"trung"bình"cao"nhất" ! Tìm"tên"các"giáo"viên"được"phân"công"làm"tất"cả"các"đề"tài"
SELECT"GV.MABM,"AVG(GV.LUONG)"AS"'Lương"trung"bình'"
FROM"GIAOVIEN"GV" SELECT"PC.MAGV,"COUNT(DISTINCT"PC.MADT)"AS"'Số"lượng"đề"tài'"
GROUP"BY"GV.MABM" FROM"THAMGIADT"PC"
HAVING"AVG(GV.LUONG)>="ALL(SELECT"AVG(GV.LUONG)" GROUP"BY"PC.MAGV"
" " " "FROM"GIAOVIEN"GV" HAVING"COUNT(DISTINCT"PC.MADT)"="(SELECT"COUNT(MADT)"
" " " "GROUP"BY"GV.MABM)" " " """"""""""""""""""""""FROM"DETAI)"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 109$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 110$
Nội'dung'chi'>ết' Một'số'dạng'truy'vấn'khác'
! Giới"thiệu" ! Truy"vấn"con"ở"mệnh"đề"FROM""
! Định"nghĩa"dữ"liệu" ! Điều"kiện"kết"ở"mệnh"đề"FROM"
! Truy"vấn"dữ"liệu" - Phép"kết"tự"nhiên""
- Truy"vấn"cơ"bản" - Phép"kết"ngoàI"
- Tập"hợp,"so"sánh"tập"hợp"và"truy"vấn"lồng"
! Cấu"trúc"CASE"
- 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)"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 111$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 112$
Truy'vấn'con'ở'mệnh'đề'FROM' Ví'dụ'35'
! Kết"quả"trả"về"của"một"câu"truy"vấn"phụ"là"một"bảng" ! Cho"biết"những"bộ"môn"(TENBM)"có"lương"trung"bình"của"
- Bảng"trung"gian"trong"quá"trình"truy"vấn" các"giáo"viên"lớn"hơn"20000"
- Không"có"lưu"trữ"thật"sự"
SELECT"BM.TENBM,"AVG(GV.LUONG)"AS"LUONG_TB"
! Cú"pháp" FROM"GIAOVIEN"GV,"BOMON"BM"
WHERE"GV.MABM"="BM.MABM"
SELECT"<danh"sách"các"cột>" GROUP"BY"BM.MABM,"BM.TENBM"
FROM"R1,"R2,"(<truy"vấn"con>)$AS"tên_bảng" HAVING"AVG(GV.LUONG)>=20000"
WHERE"<điều"kiện>"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 113$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 114$
Ví'dụ'35(=)' Điều'kiện'kết'ở'mệnh'đề'FROM'
! Cho"biết"những"bộ"môn"(TENBM)"có"lương"trung"bình"của" ! Kết"bằng"
các"giáo"viên"lớn"hơn"20000"
SELECT"<danh"sách"các"cột>"
FROM"R1"[INNER]$JOIN"R2"ON""<biểu"thức>"
SELECT"BM.TENBM,"LUONG_GV.LUONG_TB" WHERE"<điều"kiện>"
FROM"BOMON"BM,"(SELECT"MABM,"AVG(LUONG)"LUONG_TB"
" """""FROM"GIAOVIEN"
! Kết"ngoài"
" """""GROUP"BY"MABM)"AS"LUONG_GV"
WHERE"BM.MABM"="LUONG_GV.MABM" SELECT"<danh"sách"các"cột>"
FROM"R1"LEFT|RIGHT"[OUTER]$JOIN"R2"ON""<biểu"thức>"
WHERE"<điều"kiện>"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 115$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 116$
Ví'dụ'36' Ví'dụ'37'
SELECT"MAGV,"HOTEN"
FROM"GIAOVIEN,"BOMON"
SELECT"DISTINCT"GV.*"
WHERE"TENBM"="N'Hệ"thống"thông"tin'"
FROM"GIAOVIEN"GV"LEFT"JOIN"(THAMGIADT"PC"JOIN"DETAI"DT"ON"
AND"GIAOVIEN.MABM"="BOMON.MABM"
PC.MADT"="DT.MADT)"ON"GV.MAGV"="PC.MAGV"
GIAOVIEN" GIAOVIEN"JOIN"THAMGIADT""
SELECT"MAGV,"HOTEN"
FROM"GIAOVIEN"GV"INNER"JOIN"BOMON"BM"ON"GV.MABM"="BM.MABM" GV.MAGV="PC.MAGV"
mở"rộng"
WHERE"TENBM"="N'Hệ"thống"thông"tin'"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 117$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 118$
Cấu'trúc'CASE' Ví'dụ'38'
! Cho"phép"kiểm"tra"điều"kiện"và"xuất"thông"tin"theo"từng" ! Cho"biết"họ"tên"các"giáo"viên"đã"đến"tuổi"về"hưu"(nam"60"
trường"hợp" tuổi,"nữ"55"tuổi)"
! Cú"pháp"
SELECT"HOTEN"
FROM"GIAOVIEN"
CASE$<tên"cột>" WHERE"YEAR(GETDATE())"/"YEAR(NGAYSINH)">="("CASE"PHAI"
"WHEN"<giá"trị>"THEN"<biểu"thức>" " " " " " "WHEN"'Nam'"THEN"60"
"WHEN"<giá"trị>"THEN"<biểu"thức>" " " " " " "WHEN"'Nu'"THEN"55"
"…" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""END)"
"[ELSE$<biểu"thức>]"
END$
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 119$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 120$
Ví'dụ'39' Kết luận
! Cho"biết"họ"tên"các"giáo"viên"và"năm"về"hưu"
SELECT$<danh"sách"các"cột>"
SELECT"GV.HOTEN,"YEAR(GV.NGAYSINH)"+"("CASE"PHAI"
FROM$<danh"sách"các"bảng>"
" " " " " "WHEN"'Nam'"THEN"60"
[WHERE$<điều"kiện>]"
" " " " " "WHEN"'Nu'"THEN"55"
[GROUP$BY$<các"thuộc"tính"gom"nhóm>]"
" " " " "END)"AS"NAMVEHUU"
[HAVING$<điều"kiện"trên"nhóm>]"
FROM"GIAOVIEN"GV"
[ORDER$BY$<các"thuộc"tính"sắp"thứ"tự>]"
SELECT"GV.HOTEN,"("CASE"PHAI"
" " "WHEN"'Nam'"THEN"YEAR(NGAYSINH)"+"60"
" " "WHEN"'Nu'"THEN"YEAR(NGAYSINH)"+"55"
" "END)"AS"NAMVEHUU"
FROM"GIAOVIEN"GV"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 121$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 122$
Nội'dung'chi'>ết' Lệnh'INSERT'
! Giới"thiệu" ! Dùng"để"thêm"1"hay"nhiều"dòng"vào"bảng"
! Định"nghĩa"dữ"liệu" ! Để"thêm"dữ"liệu"
! Truy"vấn"dữ"liệu" - Tên"quan"hệ"
- Danh"sách"các"thuộc"tính"cần"thêm"dữ"liệu"
! Cập$nhật$dữ$liệu$$ - Danh"sách"các"giá"trị"tương"ứng"
- Thêm"(insert)"
- Xóa"(delete)"
- Sửa"(update)"
! Khung"nhìn"(view)"
! Chỉ"mục"(index)"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 123$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 124$
Lệnh'INSERT'(=)' Ví'dụ'40'
! Cú"pháp"(thêm"1"dòng)"
INSERT"INTO"THAMGIADT(MAGV,"MADT,"STT,"PHUCAP,"KETQUA)"
INSERT$INTO$<tên"bảng>(<danh"sách"các"thuộc"tính>)" VALUES(’002',"‘001',"1,"1.0,"N’ĐẠT')"
VALUES$(<danh"sách"các"giá"trị>)"
INSERT"INTO"THAMGIADT(MAGV,"MADT,"STT,"PHUCAP,"KETQUA)"
VALUES(’002',"‘001',"2,"1.2,"NULL)"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 125$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 126$
Lệnh'INSERT'(=)' Lệnh'INSERT'(=)'
! Nhận"xét" ! Cú"pháp"(thêm"nhiều"dòng)"
- Thứ"tự"các"giá"trị"phải"trùng"với"thứ"tự"các"cột"
INSERT$INTO$<tên"bảng>(<danh"sách"các"thuộc"tính>)"
- Có"thể"thêm"giá"trị"NULL"ở"những"thuộc"tính"không"là"khóa"
"<câu"truy"vấn"con>"
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ị"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 127$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 128$
Ví'dụ'41' Lệnh'DELETE''
CREATE"TABLE"THONGKE_BM"(" ! Dùng"để"xóa"các"dòng"của"bảng"
"TENBM"NVARCHAR(50),"
"SL_GV"INT," ! Cú"pháp"
"LUONG_TC"INT"
"PRIMARY"KEY(TENBM)"
DELETE$FROM$<tên"bảng>"
)"
[WHERE"<điều"kiện>]"
INSERT"INTO"THONGKE_BM"
SELECT"BM.TENBM,"COUNT(GV.MAGV),"SUM(GV.LUONG)"
FROM"GIAOVIEN"GV,"BOMON"BM"
WHERE"GV.MABM"="BM.MABM"
GROUP"BY"BM.MABM,"BM.TENBM"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 129$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 130$
Ví'dụ'42' Ví'dụ'43'
DELETE"FROM"GIAOVIEN"
DELETE"FROM"GIAOVIEN" FROM"BOMON"BM"
WHERE"GIAOVIEN.MABM"="BM.MABM"
AND"BM.TENBM"="N'Hệ"thống"thông"tin'"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 131$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 132$
Lệnh'DELETE'(=)'' Lệnh'DELETE'(=)''
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 133$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 134$
Lệnh'DELETE'(=)'' Lệnh'UPDATE''
UPDATE$<tên"bảng>"
MANV HOTEN … MABM$
SET"<tên"thuộc"tính>=<giá"trị"mới>,"
GV001 Nguyễn Văn A … HTTT"
NULL$
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 135$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 136$
Ví'dụ'44' Ví'dụ'45'
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 137$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 138$
Ví'dụ'46' Ví'dụ'47'
! Tăng"10%"lương"cho"giáo"viên"có"tham"gia"đề"tài" ! Tăng"lương"10%"cho"tất"cả"các"giáo"viên"làm"cho"đề"tài"
DT001 nhiều"hơn"3"công"việc."
UPDATE"GIAOVIEN"
SET"LUONG"="LUONG"*"1.1"
UPDATE"GIAOVIEN"
FROM"THAMGIADT"TG"
SET"LUONG"="LUONG"*"1.1"
WHERE"TG.MAGV"="GIAOVIEN.MAGV"
WHERE"MAGV"IN"(SELECT"PC.MAGV"
" "FROM"THAMGIADT"TG"
UPDATE"GIAOVIEN" UPDATE"GIAOVIEN" " "WHERE"TG.MADT"="'DT001'"
SET"LUONG"="LUONG"*"1.1" SET"LUONG"="LUONG"*"1.1"
" "GROUP"BY"TG.MAGV,"TG.MADT"
WHERE"EXISTS"(" WHERE"MAGV"IN"("
" "HAVING"COUNT(*)">="3)"
SELECT"*" SELECT"TG.MAGV"
FROM"THAMGIADT"TG" FROM"THAMGIADT"TG"
WHERE"TG.MAGV"="GIAOVIEN.MAGV")" WHERE"TG.MAGV"="GIAOVIEN.MAGV")"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 139$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 140$
Lệnh'UPDATE'' Nội'dung'chi'>ết'
! Nhận"xét" ! Giới"thiệu"
- Những"dòng"thỏa"điều"kiện"tại"mệnh"đề"WHERE"sẽ"được"cập"
nhật"giá"trị"mới" ! Định"nghĩa"dữ"liệu"
! Truy"vấn"dữ"liệu"
- Nếu"không"chỉ"định"điều"kiện"ở"mệnh"đề"WHERE,"tất"cả"các"
dòng"trong"bảng"sẽ"bị"cập"nhật" ! Cập"nhật"dữ"liệu""
! Khung$nhìn$
- Lệnh"UPDATE"có"thể"gây"ra"vi"phạm"RB"tham"chiếu"
" Không"cho"sửa"
- Định"nghĩa"
" Sửa"luôn"những"dòng"có"giá"trị"đang"tham"chiếu"đến" - Truy"vấn"
– CASCADE" - Cập"nhật"
! Chỉ"mục""
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 141$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 142$
Khung'nhìn' Khung'nhìn'(=)'
! Bảng"là"một"quan"hệ"được"tổ"chức"lưu"trữ"vật"lý"trong"CSDL" ! 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"
! Khung"nhìn"cũng"là"một"quan"hệ" - Đơn"giản"hóa"các"câu"truy"vấn"
- Không"được"lưu"trữ"vật"lý"(bảng"ảo)" - Hiển"thị"dữ"liệu"dưới"dạng"tiện"dụng"nhất"
- Không"chứa"dữ"liệu"" - An"toàn"dữ"liệu"
- Được"định"nghĩa"từ"những"bảng"khác"
- Có"thể"truy"vấn"hay"cập"nhật"thông"qua"khung"nhìn"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 143$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 144$
Định'nghĩa'khung'nhìn' Ví'dụ'48'
! Cú"pháp"
CREATE"VIEW"GV_HTTT"AS"
CREATE$VIEW$<tên"khung"nhìn>""
AS"" "SELECT"GV.*"
"<câu"truy"vấn>" "FROM"GIAOVIEN"GV"
"WHERE"BM.MABM"="'HTTT'"
DROP$VIEW$<tên"khung"nhìn>"
CREATE"VIEW"THONGKE_BM"AS"
! Bảng"ảo"này"có" "SELECT"BM.TENBM,"COUNT(GV.MAGV)"SL_GV,""
- Danh"sách"thuộc"tính"trùng"với"các"thuộc"tính"trong"mệnh"đề" """"""""""""""""""""""""""""""""""""""""""SUM(GV.LUONG)"TONG_LUONG"
SELECT" "FROM"GIAOVIEN"GV,"BOMON"BM"
- Số"dòng"phụ"thuộc"vào"điều"kiện"ở"mệnh"đề"WHERE" "WHERE"GV.MABM"="BM.MABM"
- Dữ"liệu"được"lấy"từ"các"bảng"ở"mệnh"đề"FROM" "GROUP"BY"BM.MABM,"BM.TENBM"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 145$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 146$
Truy'vấn'trên'khung'nhìn' 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" ! Có"thể"viết"câu"truy"vấn"dữ"liệu"từ"khung"nhìn"và"bảng"
vấn"trên"khung"nhìn"
SELECT"DISTINCT"GV.*"
SELECT"GV.HOTEN" FROM"GV_HTTT"GV,"THAMGIADT"PC"
FROM"GV_HTTT"GV" WHERE"GV.MAGV"="PC.MAGV"
WHERE"GV.MAGV"="'GV003'"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 147$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 148$
Cập'nhật'trên'khung'nhìn' Cập'nhật'trên'khung'nhìn'(=)'
- Khung"nhìn"có"dùng"từ"khóa"DISTINCT" WHERE"MAGV"="'GV003'"
- 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"
- Khung"nhìn"được"xây"dựng"từ"bảng"có"RB"trên"cột"
- Khung"nhìn"được"xây"dựng"từ"nhiều"bảng"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 149$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 150$
Nội'dung'chi'>ết' Chỉ'mục'
! Giới"thiệu" ! 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"
! Định"nghĩa"dữ"liệu"
! Truy"vấn"dữ"liệu"
SELECT"*"
! Cập"nhật"dữ"liệu"" FROM"GIAOVIEN" Đọc"10.000"bộ"
WHERE"MABM='HTTT'"AND""PHAI= Nu "
! Khung"nhìn"
! Chỉ$mục$ Đọc"200"bộ"
Bảng"GIAOVIEN"có"10.000"bộ"
Có"200"giáo"viên"làm"việc"cho"bộ"môn" HTTT " Đọc"70"bộ"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 151$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 152$
Chỉ'mục'(=)' Chỉ'mục'(=)'
! Cú"pháp" ! Nhận"xét"
- Tìm"kiếm"nhanh"trong"trường"hợp"so"sánh"với"hằng"số"và"
CREATE$INDEX$<tên"chỉ"mục>"ON"<tên"bảng>(<tên"cột>)" phép"kết"
- Làm"chậm"đi"các"thao"tác"thêm,"xóa"và"sửa""
DROP$INDEX$<tên"chỉ"mục>"
- Tốn"chi"phí""
" Lưu"trữ"chỉ"mục"
! Ví"dụ" " Truy"xuất"đĩa"nhiều"
CREATE"INDEX"MABM_IND"ON"GIAOVIEN(MABM)" ! Chọn"lựa"cài"đặt"chỉ"mục"hợp"lý?"⇒"sẽ"được"tìm"hiểu"kỹ"
trong"các"môn"học"tiếp"Hệ"QTCSDL,"CSDL"NC."
CREATE"INDEX"MABM_PHAI_IND"ON"GIAOVIEN(MABM,"PHAI)"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 153$ ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 154$