• ĐiÁu khiÃn truy cập: SQL có thể đ°ÿc sÿ dāng để cấp phát và kiểm soát các thao tác căa ng°ßi sÿ dāng trên dā liáu, đÁm bÁo să an toàn cho c¢ sá dā liáu • ĐÁm bÁo toàn vẹn dā liáu: SQL
Trang 1Bà XÂY DĂNG
TR¯àNG CAO ĐÀNG XÂY DĂNG Sà 1
GIÁO TRÌNH MÔN HàC: Hà QUÀN TRÞ C¡ Sâ DĀ LIàU
MS SQL SERVER
TRÌNH Đà: CAO ĐÀNG LIÊN THÔNG
Ban hành kèm theo Quyết định số: 374ĐT/QĐ-CĐXD1 ngày 16 tháng 8 năm 2022
của Hiệu trưởng Trường Cao đẳng Xây dựng số 1
Hà Nßi, năm
Trang 3LàI NÓI ĐÀU
Giáo trình há quÁn trá c¢ sá dā liáu ms sql server được biên soạn nhằm phục vụ cho giảng dạy và học tập cho trình độ Cao đẳng liên thông ngành công nghệ thông tin ở trường Cao đẳng Xây dựng số 1 Hà QUÀN TRà C¡ Sà DĀ LIàU MS SQL SERVER là môn học cơ sở ngành nhằm cung cấp các kiến thức về những kiến thức cơ bản về cơ sở dữ liệu, tạo và quản lý cơ sở dữ liệu trên phần mềm SQL
Giáo trình Hà QUÀN TRà C¡ Sà DĀ LIàU MS SQL SERVER do bộ môn Tin cơ sở do Ths Lê Thị Lương làm chủ biên Giáo trình này được viết theo đề cương môn học Cơ sở dữ liệu Ngoài ra giáo trình còn bổ sung thêm một số kiến thức mà trong các giáo trình trước chưa đề cập tới
Nội dung gồm 04 chương Chương 1: Tổng quan về SQL Chương 2: Ngôn ngữ định nghĩa dữ liệu Chương 3: Ngôn ngữ thao tác dữ liệu Chương 4: Thiết kế View
Chương 5: Thủ tục Trong quá trình biên soạn, nhóm giảng viên Bộ môn Tin học cơ sở của Trường Cao đẳng Xây dựng Số 1 - Bộ Xây dựng, đã được sự động viên quan tâm và góp ý của các đồng chí lãnh đạo, các đồng nghiệp trong và ngoài trường
Mặc dù có nhiều cố gắng, nhưng trong quá trình biên soạn, biên tập và in ấn khó tránh khỏi những thiếu sót Chúng tôi xin được lượng thứ và tiếp thu những ý kiến đóng góp
Trân trọng cảm ơn!
Hà Nái, ngày&&tháng&&năm&&&
Chă biên Ths Lê Thá L°¢ng
Trang 4MĀC LĀC
CH¯¡NG 1: TàNG QUAN V SQL 6
1.1 SQL là ngôn ngā c¢ sá dā liáu quan há 7
1.2 Vai trò căa SQL 8
1.3 Táng quan và c¢ sá dā liáu quan há 9
1.3.1 Mô hình dā liáu quan há 9
CH¯¡NG 3: NGÔN NGĀ THAO TÁC DĀ LIàU 36
3.1 Truy xuất dā liáu với câu lánh SELECT 36
3.1.1 Mánh đà FROM 37
3.1.2 Danh sách chọn trong câu lánh SELECT 38
3.1.3 Chß đánh điÃu kián truy vấn dā liáu 40
3.1.4 T¿o mới bÁng dā liáu từ kÁt quÁ căa câu lánh SELECT 44
3.1.5 Sắp xÁp kÁt quÁ truy vấn 44
CH¯¡NG 4: THIÀT KÀ VIEW 50
Trang 54.1 Khái niám c¢ bÁn và ràng buác 50
4.2 Ràng buác dā liáu nhập vào 50
4.5.3 Cách cập nhật dā liáu vào view 54
4.6 Sao l°u và phāc hßi dā liáu 56
5.1 Thă tāc l°u trā (stored procedure) 71
5.2 T¿o thă tāc l°u trā 72
5.3 Lßi gọi thă tāc l°u trā 74
5.4 Sÿ dāng biÁn trong thă tāc 74
5.5 Giá trá trÁ và căa tham số trong thă tāc l°u trā 75
5.6 Tham số với giá trá mặc đánh 75
5.7 Sÿa đái thă tāc 76
Trang 6CH¯¡NG TRÌNH MÔN HàC Tên môn hác: Hà QUÀN TRÞ C¡ Sâ DĀ LIàU MS SQL SERVER Mã sá môn hác: MH13
Thái gian thăc hián môn hác: 75 giß; (Lý thuyÁt: 15 giß; Thăc hành, thí nghiám, thÁo luận,
bài tập: 56 giß; Kiểm tra: 4 giß)
II Māc tiêu môn hác:
- Và kiÁn thąc: Mô tÁ các thành phần há quÁn trá c¢ sá dā liáu, các khái niám và c¢ sá dā liáu quan há h°ớng đối t°ÿng và c¢ sá dā liáu quan há, ngôn ngā MS SQL Trình bày các kiÁn trúc căa há quÁn trá c¢ sá dā liáu MS SQL Server; cách t¿o, quÁn lý vew và thă tāc
- VÃ kỹ năng: Thăc hián thành th¿o các thao tác quÁn trá c¢ sá dā liáu với há thống MS SQL Server; t¿o, quÁn lý vew và thă tāc
- VÃ năng lăc tă chă và trách nhiám: Rèn luyán lòng yêu nghÃ, t° thÁ tác phong công nghiáp, tính kiên trì, sáng t¿o trong công viác
III Nßi dung môn hác:
1 Nái dung táng quát và phân bá thßi gian:
Trang 8CH¯¡NG 1: TàNG QUAN VÀ SQL 1.1 SQL là ngôn ngā c¢ sã dā liáu quan há
SQL, viÁt tắt căa Structured Query Language (ngôn ngā hỏi có cấu trúc), là công cā sÿ
dāng để tá chąc, quÁn lý và truy xuất dā liáu đuÿc l°u trā trong các c¢ sá dā liáu SQL là mát há thống ngôn ngā bao gßm tập các câu lánh sÿ dāng để t°¢ng tác với c¢ sá dā liáu quan há Tên gọi ngôn ngữ hỏi có cấu trúc phần nào đã liên t°áng đÁn mát công cā (ngôn ngā)
dùng để truy xuất dā liáu trong các c¢ sá dā liáu, khÁ năng căa SQL v°ÿt xa so với mát công cā truy xuất dā liáu, māc đích ban đầu khi SQL đ°ÿc xây dăng nên và truy xuất dā liáu là mát trong nhāng chąc năng quan trọng căa nó SQL đ°ÿc sÿ dāng để điÃu khiển tất cÁ các chąc năng mà mát há quÁn trá c¢ sá dā liáu cung cấp cho ng°ßi dùng bao gßm:
• Đßnh ngh*a dā liáu: SQL cung cấp khÁ năng đánh ngh*a các c¢ sá dā liáu, các cấu
trúc l°u trā và tá chąc dā liáu cũng nh° mối quan há giāa các thành phần dā liáu
• Truy xu¿t và thao tác dā liáu: Với SQL, ng°ßi dùng có thể dß dàng thăc hián các
thao tác truy xuất, bá sung, cập nhật và lo¿i bỏ dā liáu trong các c¢ sá dā liáu
• ĐiÁu khiÃn truy cập: SQL có thể đ°ÿc sÿ dāng để cấp phát và kiểm soát các thao
tác căa ng°ßi sÿ dāng trên dā liáu, đÁm bÁo să an toàn cho c¢ sá dā liáu
• ĐÁm bÁo toàn vẹn dā liáu: SQL đánh ngh*a các ràng buác toàn vẹn trong c¢ sá dā
liáu nhß đó đÁm bÁo tính hÿp lá và chính xác căa dā liáu tr°ớc các thao tác cập nhật cũng nh° các lßi căa há thống
Nh° vậy, có thể nói r¿ng SQL là mát ngôn ngā hoàn thián đ°ÿc sÿ dāng trong các há thống c¢ sá dā liáu và là mát thành phần không thể thiÁu trong các há quÁn trá c¢ sá dā liáu Mặc dù SQL không phÁi là mát ngôn ngā lập trình nh° C, C++, Java song các câu lánh mà SQL cung cấp có thể đ°ÿc nhúng vào trong các ngôn ngā lập trình nh¿m xây dăng các ąng dāng t°¢ng tác với c¢ sá dā liáu
Khác với các ngôn ngā lập trình quen thuác nh° C, C++, Java SQL là ngôn ngā có tính khai báo Với SQL, ng°ßi dùng chß cần mô tÁ các yêu cầu cần phÁi thăc hián trên c¢ sá dā liáu mà không cần phÁi chß ra cách thąc thăc hián các yêu cầu nh° thÁ nào Chính vì vậy, SQL là ngôn ngā dß tiÁp cận và dß sÿ dāng
Trang 91.2 Vai trò căa SQL
Trong hầu hÁt các há quÁn trá c¢ sá dā liáu quan há, SQL có nhāng vai trò nh° sau:
• SQL là ngôn ngā hßi có tính t°¢ng tác: Ng°ßi sÿ dāng có thể dß dàng thông qua
các trình tián ích để gái các yêu cầu d°ới d¿ng các câu lánh SQL đÁn c¢ sá dā liáu và nhận kÁt quÁ trÁ và từ c¢ sá dā liáu
• SQL là ngôn ngā lập trình c¢ sã dā liáu: Các lập trình viên có thể nhúng các câu
lánh SQL vào trong các ngôn ngā lập trình để xây dăng nên các ch°¢ng trình ąng dāng giao tiÁp với c¢ sá dā liáu
• SQL là ngôn ngā quÁn trß c¢ sã dā liáu: Thông qua SQL, ng°ßi quÁn trá c¢ sá dā
liáu có thể quÁn lý đ°ÿc c¢ sá dā liáu, đánh ngh*a các cấu trúc l°u trā dā liáu, điÃu khiển truy cập c¢ sá dā liáu
• SQL là ngôn ngā cho các há tháng khách/chă (client/server): Trong các há thống
c¢ sá dā liáu khách/chă, SQL đ°ÿc sÿ dāng nh° là công cā để giao tiÁp giāa các trình ąng dāng phía máy khách với máy chă c¢ sá dā liáu
• SQL là ngôn ngā truy cập dā liáu trên Internet: Cho đÁn nay, hầu hÁt các máy
chă Web cũng nh° các máy chă trên Internet sÿ dāng SQL với vai trò là ngôn ngā để t°¢ng tác với dā liáu trong các c¢ sá dā liáu
• SQL là ngôn ngā c¢ sã dā liáu phân tán: Đối với các há quÁn trá c¢ sá dā liáu
phân tán, mßi mát há thống sÿ dāng SQL để giao tiÁp với các há thống khác trên m¿ng, gái và nhận các yêu cầu truy xuất dā liáu với nhau
• SQL là ngôn ngā sÿ dāng cho các cáng giao ti¿p c¢ sã dā liáu: Trong mát há
thống m¿ng máy tính với nhiÃu há quÁn trá c¢ sá dā liáu khác nhau, SQL th°ßng đ°ÿc sÿ dāng nh° là mát chuẩn ngôn ngā để giao tiÁp giāa các há quÁn trá c¢ sá dā liáu
Trang 101.3 Táng quan vÁ c¢ sã dā liáu quan há
1.3.1 Mô hình dữ liệu quan hệ
Mô hình dā liáu quan há đ°ÿc Codd đà xuất năm 1970 và đÁn nay trá thành mô hình đ°ÿc sÿ dāng phá biÁn trong các há quÁn trá c¢ sá dā liáu th°¢ng m¿i Nói mát cách đ¢n giÁn, mát c¢ sá dā liáu quan há là mát c¢ sá dā liáu trong đó tất cÁ dā liáu đ°ÿc tá chąc trong các bÁng có mối quan há với nhau Mßi mát bÁng bao gßm các dòng và các cát: mßi mát dòng đ°ÿc gọi là mát bÁn ghi (bá) và mßi mát cát là mát tr°ßng (thuác tính)
Trang 11Mát bÁng bao gßm mát tập các dòng và các cát: mßi mát dòng trong bÁng biểu dißn cho mát thăc thể (mßi mát dòng trong bÁng HOCVIEN t°¢ng ąng với mát Học viên); và mßi mát cát biểu dißn cho mát tính chất căa thăc thể (chÁng h¿n cát NGAYSINH trong bÁng HOCVIEN biểu dißn cho ngày sinh căa các học viên đ°ÿc l°u trā trong bÁng)
Nh° vậy, liên quan đÁn mßi mát bÁng bao gßm các yÁu tố sau:
• Tên căa bÁng: đ°ÿc sÿ dāng để xác đánh duy nhất mßi bÁng trong c¢ sá dā liáu • C¿u trúc căa bÁng: Tập các cát trong bÁng Mßi mát cát trong bÁng đ°ÿc xác đánh
bái mát tên cột và phÁi có mát kiểu dā liáu nào đó (chÁng h¿n cát NGAYSINH
trong bÁng HOCVIEN có kiểu là SMALLTIME) Kiểu dā liáu căa mßi cát qui đánh giá trá dā liáu có thể đ°ÿc chấp nhận trên cát đó
• Dā liáu căa bÁng: Tập các dòng (bÁn ghi) hián có trong bÁng
1.3.3 Khoá của bảng
Trong mát c¢ sá dā liáu đ°ÿc thiÁt kÁ tốt, mßi mát bÁng phÁi có mát hoặc mát tập các cát mà giá trá dā liáu căa nó xác đánh duy nhất mát dòng trong mát tập các dòng căa bÁng Tập mát hoặc nhiÃu cát có tính chất này đ°ÿc gọi là khoá căa bÁng
Viác chọn khoá căa bÁng có vai trò quan trọng trong viác thiÁt kÁ và cài đặt các c¢ sá dā liáu quan há Các dòng dā liáu trong mát bÁng phÁi có giá trá khác nhau trên khoá BÁng MONHOC trong hình d°ới đây có khoá là cát MAMH
Mát bÁng có thể có nhiÃu tập các cát khác nhau có tính chất căa khoá (tąc là giá trá căa nó xác đánh duy nhất mát dòng dā liáu trong bÁng) Trong tr°ßng hÿp này, khoá đ°ÿc chọn cho bÁng đ°ÿc gọi là khoá chính (primary key) và nhāng khoá còn l¿i đ°ÿc gọi là khoá phā hay là
khoá dự tuyển (candidate key/unique key)
Trang 121.3.4 Mối quan hệ và khoá ngoại
Các bÁng trong mát c¢ sá dā liáu không tßn t¿i đác lập mà có mối quan há mật thiÁt với
nhau và mặt dā liáu Mối quan há này đ°ÿc thể hián thông qua ràng buác giá trị dữ liệu xuất hiện ở bảng này phải có xuất hiện trước trong một bảng khác Mối quan há giāa các bÁng
trong c¢ sá dā liáu nh¿m đàm bÁo đ°ÿc tính đúng đắn và hÿp lá căa dā liáu trong c¢ sá dā liáu
Hai bÁng GIANGDAY và LOP có mối quan há với nhau Mối quan há này đòi hỏi giá trá cát MALOP căa mát dòng (tąc là mát lớp) trong bÁng GIANGDAY phÁi đ°ÿc xác đánh từ cát MALOP căa bÁng LOP
Mối quan há giāa các bÁng trong mát c¢ sá dā liáu thể hián đúng mối quan há giāa các thăc thể trong thÁ giới thăc Mối quan há giāa hai bÁng GIANGDAY và LOP không cho phép mát MALOP nào đó tßn t¿i mà l¿i thuác vào mát MONHOC không có thật
Khái niám khoá ngoại (Foreign Key) trong c¢ sá dā liáu quan há đ°ÿc sÿ dāng để biểu
dißn mối quan há giāa các bÁng dā liáu Mát hay mát tập các cát trong mát bÁng mà giá trá căa nó đ°ÿc xác đánh từ khóa chính căa mát bÁng khác đ°ÿc gọi là khoá ngo¿i Cát MALOP căa bÁng GIANGDAY đ°ÿc gọi là khoá ng¿i căa bÁng GIANGDAY, khoá ngoài này tham chiÁu đÁn khoá chính căa bÁng LOP là cát MALOP
1.4 S¢ l°ÿc vÁ SQL
1.4.1 Câu lệnh SQL
SQL chuẩn nhiÃu câu lánh th°ßng đ°ÿc sÿ dāng để truy vấn và quÁn lý há c¢ sá dā liáu Trong các há quÁn trá c¢ sá dā liáu khác nhau, mặc dù các câu lánh đÃu có cùng d¿ng và cùng māc đích sÿ dāng song mßi mát há quÁn trá c¢ sá dā liáu có thể có mát số thay đái nào
Trang 13đó ĐiÃu này đôi khi dẫn đÁn cú pháp chi tiÁt căa các câu lánh có thể s¿ khác nhau trong các há quÁn trá c¢ c¢ sá dā liáu khác nhau
Câu lánh
Thao tác dữ liệu
SELECT INSERT UPDATE DELETE TRUNCATE
Định nghĩa dữ liệu
CREATE TABLE DROP TABLE ALTER TABLE CREATE VIEW ALTER VIEW DROP VIEW CREATE INDEX DROP INDEX CREATE SCHEMA DROP SCHEMA CREATE
PROCEDURE ALTER PROCEDURE
Chức năng
Truy xuất dā liáu Bá sung dā liáu Cập nhật dā liáu Xoá dā liáu Xoá toàn bá dā liáu trong bÁng T¿o bÁng
Xoa bÁng Sÿa đái bÁng T¿o khung nhìn Sÿa đái khung nhìn Xoá khung nhìn T¿o chß māc Xoá chß māc T¿o l°ÿc đß c¢ sá dā liáu Xoá l°ÿc đß c¢ sá dā liáu T¿o thă tāc l°u trā
Sÿa đái thă tāc l°° trā
DROP PROCEDURE Xoá thă tāc l°u trā CREATE FUNCTION T¿o hàm (do ng°ßi sÿ dāng đánh ngh*a) Các câu lánh căa SQL đÃu đ°ÿc bắt đầu bái các từ lánh, là mát từ khoá cho biÁt chąc năng căa câu lánh (chÁng h¿n SELECT, DELETE, UPDATE) Sau từ lánh là các mánh đà căa câu lánh Mßi mát mánh đà trong câu lánh cũng đ°ÿc bắt đầu bái mát từ khoá (chÁng h¿n FROM, WHERE, )
Ví dā : Câu lánh:
Trang 14SELECT mahv, hoten, ngaysinh, gioitinh,lop FROM hocvien
WHERE malop=902ct19 dùng để truy xuất dā liáu trong bÁng HOCVIEN đ°ÿc bắt đầu bái từ lánh SELECT, trong câu lánh bao gßm hai mánh đÃ: mánh đà FROM chß đánh tên căa bÁng cần truy xuất dā liáu và mánh đà WHERE chß đánh điÃu kián truy vấn dā liáu
1.4.2 Qui tắc sử dụng tên trong SQL
Các đối t°ÿng trong c¢ sá dā liáu dăa trên SQL đ°ÿc xác đánh thông qua tên căa đối t°ÿng Tên căa các đối t°ÿng là duy nhất trong mßi c¢ sá dā liáu Tên đ°ÿc sÿ dāng nhiÃu nhất trong các truy vấn SQL và đ°ÿc xem là nÃn tÁng trong c¢ sá dā liáu quan há là tên bÁng và tên cát
Trong các c¢ sá dā liáu lớn với nhiÃu ng°ßi sÿ dāng, khi chß đánh tên căa mát bÁng nào đó trong câu lánh SQL, há quÁn trá c¢ sá dā liáu hiểu đó là tên căa bÁng sá hāu (tąc là bÁng do ng°ßi dùng t¿o ra) Thông th°ßng, trong các há quÁn trá c¢ sá dā liáu này cho phép nhāng ng°ßi dùng khác nhau t¿o ra nhāng bÁng trùng tên với nhau mà không gây ra xung đát và tên NÁu trong mát câu lánh SQL ta cần chß đÁn mát bÁng do mát ng°ßi dùng khác sá hāu (hiển nhiên là phÁi đ°ÿc phép) thì tên căa bÁng phÁi đ°ÿc viÁt sau tên căa ng°ßi sá hāu và phân cách với tên ng°ßi sá hāu bái dấu chấm:
Ví dā: Ví dā d°ới đây minh ho¿ cho viác sÿ dāng tên bÁng và tên cát trong câu lánh SQL
SELECT mahv, hoten, ngaysinh, gioitinh,magv FROM hocvien
Trang 15WHERE giangday.malop = lop.malop
CHAR (n) Kiểu chußi với đá dài cố đánh
NCHAR (n) KiÁu chußi với đá dài cố đánh hß trÿ UNICODE
VARCHAR (n) Kiểu chußi với đá dài chính xác
NVARCHAR (n) Kiểu chußi với đá dài chính xác hß trÿ UNICODE INTEGER Số nguyên có giá trá từ -231 đÁn 231 - 1
INT Nh° kiểu Integer TINYTINT Số nguyên có giá trá từ 0 đÁn 255 SMALLINT Số nguyên có giá trá từ -215 đÁn 215 – 1 BIGINT Số nguyên có giá trá từ -263 đÁn 263-1
NUMERIC (p,s) Kiểu số với đá chính xác cố đánh
DECIMAL (p,s) T°¢ng tă kiểu Numeric FLOAT Số thăc có giá trá từ -1.79E+308 đÁn 1.79E+308 REAL Số thăc có giá trá từ -3.40E + 38 đÁn 3.40E + 38 MONEY Kiểu tiÃn tá
BIT Kiểu bit (có giá trá 0 hoặc 1) DATETIME Kiểu ngày giß (chính xác đÁn phần trăm căa giây) SMALLDATETIME Kiểu ngày giß (chính xác đÁn phút)
TIMESTAMP BINARY Dā liáu nhá phân với đá dài cố đánh (tối đa 8000 bytes) VARBINARY Dā liáu nhá phân với đá dài chính xác (tối đa 8000 bytes)
Trang 161.4.4 Giá trị NULL
Mát c¢ sá dā liáu là să phÁn ánh căa mát há thống trong thÁ giới thăc, do đó các giá trá dā liáu tßn t¿i trong c¢ sá dā liáu có thể không xác đánh đ°ÿc Mát giá trá không xác đánh đ°ÿc xuất hián trong c¢ sá dā liáu có thể do mát số nguyên nhân sau:
• Giá trá đó có tßn t¿i nh°ng không biÁt • Không xác đánh đ°ÿc giá trá đó có tßn t¿i hay không • T¿i mát thßi điểm nào đó giá trá ch°a có nh°ng rßi có thể s¿ có • Giá trá bá lßi do tính toán (tràn số, chia cho không, )
Nhāng giá trá không xác đánh đ°ÿc biểu dißn trong c¢ sá dā liáu quan há bái các giá trá NULL Đây là giá trá đặc biát và không nên nhầm lẫn với chußi rßng (đối với dā liáu kiểu chußi) hay giá trá không (đối với giá trá kiểu số) Giá trá NULL đóng mát vai trò quan trọng trong các c¢ sá dā liáu và hầu hÁt các há quÁn trá c¢ sá dā liáu quan há hián nay đÃu hß trÿ viác sÿ dāng giá trá này
Trang 17Há tháng ki¿n thức Ch°¢ng 1 1 Yêu cÁu vÁ lý thuy¿t
Trình bày đ°ÿc các khái niám trong c¢ sá dā liáu; Trình bày đ°ÿc vai trò căa SQL;
Trình bày đ°ÿc táng quan và c¢ sá dā liáu quan há;
Trình bày đ°ÿc các s¢ l°ÿc và SQL 2 Yêu cÁu vÁ bài tập: Xác đánh đ°ÿc các khóa 3 Há tháng các công thức đã hác:
Táng quan và SQL SQL là ngôn ngữ hỏi có cấu trúc phần nào đã liên t°áng đÁn mát công cā (ngôn ngā) dùng để truy xuất dā liáu trong các c¢ sá dā liáu, cung cấp cho ng°ßi dùng bao gßm:
• Đßnh ngh*a dā liáu: SQL cung cấp khÁ năng đánh ngh*a các c¢ sá dā liáu, các cấu
trúc l°u trā và tá chąc dā liáu cũng nh° mối quan há giāa các thành phần dā liáu
• Truy xu¿t và thao tác dā liáu: Với SQL, ng°ßi dùng có thể dß dàng thăc hián các
thao tác truy xuất, bá sung, cập nhật và lo¿i bỏ dā liáu trong các c¢ sá dā liáu
• ĐiÁu khiÃn truy cập: SQL có thể đ°ÿc sÿ dāng để cấp phát và kiểm soát các thao
tác căa ng°ßi sÿ dāng trên dā liáu, đÁm bÁo să an toàn cho c¢ sá dā liáu
• ĐÁm bÁo toàn vẹn dā liáu: SQL đánh ngh*a các ràng buác toàn vẹn trong c¢ sá dā
liáu nhß đó đÁm bÁo tính hÿp lá và chính xác căa dā liáu tr°ớc các thao tác cập nhật cũng nh° các lßi căa há thống
Vai trò căa SQL
Trong hầu hÁt các há quÁn trá c¢ sá dā liáu quan há, SQL có nhāng vai trò nh° sau:
• SQL là ngôn ngā hßi có tính t°¢ng tác: Ng°ßi sÿ dāng có thể dß dàng thông qua
các trình tián ích để gái các yêu cầu d°ới d¿ng các câu lánh SQL đÁn c¢ sá dā liáu và nhận kÁt quÁ trÁ và từ c¢ sá dā liáu
• SQL là ngôn ngā lập trình c¢ sã dā liáu: Các lập trình viên có thể nhúng các câu
lánh SQL vào trong các ngôn ngā lập trình để xây dăng nên các ch°¢ng trình ąng dāng giao tiÁp với c¢ sá dā liáu
Trang 18• SQL là ngôn ngā quÁn trß c¢ sã dā liáu: Thông qua SQL, ng°ßi quÁn trá c¢ sá dā
liáu có thể quÁn lý đ°ÿc c¢ sá dā liáu, đánh ngh*a các cấu trúc l°u trā dā liáu, điÃu khiển truy cập c¢ sá dā liáu
• SQL là ngôn ngā cho các há tháng khách/chă (client/server): Trong các há thống
c¢ sá dā liáu khách/chă, SQL đ°ÿc sÿ dāng nh° là công cā để giao tiÁp giāa các trình ąng dāng phía máy khách với máy chă c¢ sá dā liáu
• SQL là ngôn ngā truy cập dā liáu trên Internet: Cho đÁn nay, hầu hÁt các máy
chă Web cũng nh° các máy chă trên Internet sÿ dāng SQL với vai trò là ngôn ngā để t°¢ng tác với dā liáu trong các c¢ sá dā liáu
• SQL là ngôn ngā c¢ sã dā liáu phân tán: Đối với các há quÁn trá c¢ sá dā liáu
phân tán, mßi mát há thống sÿ dāng SQL để giao tiÁp với các há thống khác trên m¿ng, gái và nhận các yêu cầu truy xuất dā liáu với nhau
Mô hình dữ liệu quan hệ
Mô hình dā liáu quan há đ°ÿc Codd đà xuất năm 1970 và đÁn nay trá thành mô hình đ°ÿc sÿ dāng phá biÁn trong các há quÁn trá c¢ sá dā liáu th°¢ng m¿i
S¢ l°ÿc và SQL - Table: Trong c¢ sá dā liáu quan há, bÁng là đối t°ÿng đ°ÿc sÿ dāng để tá chąc và
l°u trā dā liáu Mát c¢ sá dā liáu bao gßm nhiÃu bÁng và mßi bÁng đ°ÿc xác đánh duy nhất bái tên bÁng
- Khóa: mßi mát bÁng phÁi có mát hoặc mát tập các cát mà giá trá dā liáu căa nó xác đánh duy nhất mát dòng trong mát tập các dòng căa bÁng Tập mát hoặc nhiÃu cát có tính chất này đ°ÿc gọi là khoá căa bÁng
4 Các bài tập ch°¢ng 1
Cho C¢ sá dā liáu quÁn lý giÁng d¿y gßm có các quan há sau
HOCVIEN (MAHV, HO, TEN, NGAYSINH, GIOITINH, NOISINH, MALOP)
Tân từ: mßi học viên phân biát với nhau b¿ng mã học viên, l°u trā họ, tên, ngày sinh, giới tính,
n¢i sinh, thuác lớp nào
Trang 19LOP (MALOP, TENLOP, LOPTRG, SISO, MAGVCN, MACVHT, MACBQL)
Tân từ: mßi lớp gßm có mã lớp, tên lớp, lớp tr°áng căa lớp, sß số lớp , mã giáo viên chă nhiám,
mã cố vấn học tập, mã cán bá quÁn lý
MONHOC (MAMH, TENMH, SOTC)
Tân từ: mßi môn học cần l°u trā tên môn học, tên số tín chß
GIAOVIEN (MAGV, HOTEN, GIOITINH, NLV)
Tân từ: mã giáo viên để phân biát giāa các giáo viên, cần l°u trā họ tên, giới tính, năm làm
viác
GIANGDAY (MALOP, MAMH, MAGV, HOCKY, NAM)
Tân từ: mßi học kỳ căa năm học s¿ phân công giÁng d¿y: lớp nào học môn gì do giáo viên nào
phā trách
Yêu cầu:
1 Xác đánh các khóa chính căa từng bÁng 2 Xác đánh các mối quan há giāa các bÁng
Trang 20CH¯¡NG 2: NGÔN NGĀ ĐÞNH NGH)A DĀ LIàU
Māc tiêu bài hác
Trình bày đ°ÿc cách t¿o, xóa bÁng dā liáu; Trình bày đ°ÿc cách xóa bÁng dā liáu; Trình bày đ°ÿc cập nhật c¢ sá dā liáu;
Trang 21CH¯¡NG 2: NGÔN NGĀ ĐÞNH NGH)A DĀ LIàU
Các câu lánh SQL đã đà cập đÁn trong ch°¢ng 1 đ°ÿc sÿ dāng nh¿m thăc hián các thao tác bá sung, cập nhật, lo¿i bỏ và xem dā liáu Nhóm các câu lánh này đ°ÿc gọi là ngôn ngā thao tác dā liáu (DML) Trong chu¢ng này tìm hiểu nhóm các câu lánh đ°ÿc sÿ dāng để đánh ngh*a và quÁn lý các đối t°ÿng CSDL nh° bÁng, khung nhìn, chß māc, và đ°ÿc gọi là ngôn ngā đánh ngh*a dā liáu (DLL)
VÃ c¢ bÁn, ngôn ngā đánh ngh*a dā liáu bao gßm các lánh: • CREATE: đánh ngh*a và t¿o mới đối t°ÿng CSDL • ALTER: thay đái đánh ngh*a căa đối t°ÿng CSDL • DROP: Xoá đối t°ÿng CSDL đã có
Mô hình dā liáu quan há đ°ÿc Codd đà xuất năm 1970 và đÁn nay trá thành mô hình đ°ÿc sÿ dāng phá biÁn trong các há quÁn trá c¢ sá dā liáu th°¢ng m¿i Nói mát cách đ¢n giÁn, mát c¢ sá dā liáu quan há là mát c¢ sá dā liáu trong đó tất cÁ dā liáu đ°ÿc tá chąc trong các bÁng có mối quan há với nhau Mßi mát bÁng bao gßm các dòng và các cát: mßi mát dòng đ°ÿc gọi
là mát bÁn ghi (bá) và mßi mát cát là mát tr°ßng (thuác tính) 2.1 T¿o c¢ sã dā liáu
- B°ớc 1: Vào SQL Server management studio >> nhập tên server >> connect - B°ớc 2: Click chuát phÁi vào Databases >> New Database
- B°ớc 3: T¿i māc Database name nhập tên c¢ sá dā liáu >> chọn OK
Trang 222.2 T¿o bÁng dā liáu
BÁng dā liáu là cấu trúc có vai trò quan trọng nhất trong c¢ sá dā liáu quan há Toàn bá dā liáu căa c¢ sá dā liáu đ°ÿc tá chąc trong các bÁng, nhāng bÁng này có thể là nhāng bÁng há thống đ°ÿc t¿o ra khi t¿o lập c¢ sá dā liáu, và cũng có thể là nhāng bÁng do ng°ßi sÿ dāng đánh ngh*a
Trong các bÁng, dā liáu đ°ÿc tá chąc d°ới d¿ng các dòng và cát Mßi mát dòng là mát bÁn ghi duy nhất trong bÁng và mßi mát cát là mát tr°ßng Các bÁng trong c¢ sá dā liáu đ°ÿc sÿ dāng để biểu dißn thông tin, l°u giā dā liáu và các đối t°ÿng trong thÁ giới thăc và/hoặc mối quan há giāa các đối t°ÿng
Cách 1: T¿o bÁng b¿ng giao dián management studio - B°ớc1: Má c¢ sá dā liáu trong SQL
- B°ớc 2: Má th° māc Table >> chuát phÁi vào Table >> New table >> Nhập thông tin các tr°ßng căa bÁng nh° sau:
- B3: L°u thông tin căa bÁng >> SQL yêu cầu nhập tên bÁng >> gõ tên bÁng
Ví dā: T¿o bÁng HOCVIEN - B°ớc1: Má c¢ sá dā liáu CTC1 - B°ớc 2: Má th° māc Table >> chuát phÁi vào Table >> New table >> Nhập thông tin các
tr°ßng căa bÁng nh° sau:
- B3: L°u thông tin căa bÁng >> SQL yêu cầu nhập tên bÁng >> gõ tên bÁng là HOCVIEN
Trang 23 Cách 2: Sÿ dāng câu lánh CREATE TABLE Câu lánh CREATE TABLE đ°ÿc sÿ dāng để đánh ngh*a mát bÁng dā liáu mới trong c¢ sá dā liáu Khi đánh ngh*a mát bÁng dā liáu mới, ta cần phÁi xác đánh đ°ÿc các yêu cầu sau đây: - BÁng mới đ°ÿc t¿o ra sÿ dāng với māc đích gì và có vai trò nh° thÁ nào trong c¢ sá dā liáu - Cấu trúc căa bÁng bao gßm nhāng tr°ßng (cát) nào, mßi mát tr°ßng có ý ngh*a nh° thÁ nào
trong viác biểu dißn dā liáu, kiểu dā liáu căa mßi tr°ßng là gì và tr°ßng đó có cho phép nhận giá trá NULL hay không
- Nhāng tr°ßng nào s¿ tham gia vào khóa chính căa bÁng BÁng có quan há với nhāng bÁng khác hay không và nÁu có thì quan há nh° thÁ nào
- Trên các tr°ßng căa bÁng có tßn t¿i nhāng ràng buác và khuôn d¿ng, điÃu kián hÿp lá căa dā liáu hay không; nÁu có thì sÿ dāng á đâu và nh° thÁ nào
Sÿ dāng câu lánh CREATE TABLE có cú pháp nh° sau:
CREATE TABLE tên_bảng
( tên_cột thuộc_tính_cột các_ràng_buộc
[, ,tên_cột_n thuộc_tính_cột_n các_ràng_buộc_cột_n]
[,các_ràng_buộc_trên_bảng]
) Trong đó: tên_bÁng Tên căa bÁng cần t¿o Tên phÁi tuân theo qui tắc đánh danh và
không đ°ÿc v°ÿt quá 128 ký tă tên_cát Là tên căa cát (tr°ßng) cần đánh ngh*a, tên cát phÁi tuân theo
qui tắc đánh danh và không đ°ÿc trùng nhau trong mßi mát bÁng Mßi mát bÁng phÁi có ít nhất mát cát NÁu bÁng có nhiÃu cát thì đánh ngh*a căa các cát (tên cát, thuác tính và các ràng buác) phÁi phân cách nhau bái dấu phẩy
thuác_tính_cát
Mßi mát cát trong mát bÁng ngoài tên cát còn có các thuác tính
Trang 24bao gßm: • Kiểu dā liáu căa cát Đây là thuác tính bắt buác phÁi có đối với mßi cát • Giá trá mặc đánh căa cát: là giá trá đ°ÿc tă đáng gán cho cát nÁu nh°
ng°ßi sÿ dāng không nhập dā liáu cho cát mát cách t°ßng minh Mßi mát cát chß có thể có nhiÃu nhất mát giá trá mặc đánh
• Cát có tính chất IDENTITY hay không? tąc là giá trá căa cát có đ°ÿc tă đáng tăng mßi khi có bÁn ghi mới đ°ÿc bá sung hay không Tính chất này chß có thể sÿ dāng đối với các tr°ßng kiểu số
• Cát có chấp nhận giá trá NULL hay không Ví dā: CREATE TABLE GIAOVIEN
( MAGV char(6), HOTEN varchar(50), GIOITINH varchar(3), NLV smalldatetime )
2.2.1 Ràng buộc CHECK
Ràng buác CHECK đ°ÿc sÿ dāng nh¿m chß đánh điÃu kián hÿp lá đối với dā liáu Mßi khi có să thay đái dā liáu trên bÁng (INSERT, UPDATE), nhāng ràng buác này s¿ đ°ÿc sÿ dāng nh¿m kiểm tra xem dā liáu mới có hÿp lá hay không
Ràng buác CHECK đ°ÿc khai báo theo cú pháp nh° sau: [CONSTRAINT tên_ràng_buộc]
CHECK (điều_kiện)
Trong đó, điÃu_kián là mát biểu thąc logic tác đáng lên cát nh¿m qui đánh giá trá hoặc khuôn d¿ng dā liáu đ°ÿc cho phép Trên mßi mát bÁng cũng nh° trên mßi mát cát có thể có nhiÃu ràng buác CHECK
Trang 252.1.2 Ràng buộc PRIMARY KEY
Ràng buác PRIMARY KEY đ°ÿc sÿ dāng để đánh ngh*a khoá chính căa bÁng Khoá chính căa mát bÁng là mát hoặc mát tập nhiÃu cát mà giá trá căa chúng là duy nhất trong bÁng Hay nói cách khác, giá trá căa khoá chính s¿ giúp cho ta xác đánh đ°ÿc duy nhất mát dòng (bÁn ghi) trong bÁng dā liáu Mßi mát bÁng chß có thể có duy nhất mát khoá chính và bÁn thân khoá chính không chấp nhận giá trá NULL Ràng buác PRIMARY KEY là c¢ sá cho viác đÁm bÁo tính toàn vẹn thăc thể cũng nh° toàn vẹn tham chiÁu
Cách t¿o khoá Primary Key - B°ớc 1: Má bÁng cần xác đánh khoá - B°ớc 2: Chọn tr°ßng cần xác đánh làm khóa >> chuát phÁi >> chọn Set primary key để làm
Ràng buác UNIQUE đ°ÿc sÿ dāng trong câu lánh CREATE TABLE để đánh ngh*a khoá phā cho bÁng và đ°ÿc khai báo
2.1.4 Ràng buộc FOREIGN KEY
Các bÁng trong mát c¢ sá dā liáu có mối quan há với nhau Nhāng mối quan há này biểu dißn cho să quan há giāa các đối t°ÿng trong thÁ giới thăc VÃ mặt dā liáu, nhāng mối
Trang 26quan há đ°ÿc đÁm bÁo thông qua viác đòi hỏi să có mặt căa mát giá trá dā liáu trong bÁng này phÁi phā thuác vào să tßn t¿i căa giá trá dā liáu đó á trong mát bÁng khác
Ràng buác FOREIGN KEY đ°ÿc sÿ dāng trong đánh ngh*a bÁng dā liáu nh¿m t¿o nên mối quan há giāa các bÁng trong mát c¢ sá dā liáu Mát hay mát tập các cát trong mát bÁng đ°ÿc gọi là khoá ngo¿i, tąc là có ràng buác FOREIGN KEY, nÁu giá trá căa nó đ°ÿc xác đánh từ khoá chính (PRIMARY KEY) hoặc khoá phā (UNIQUE) căa mát bÁng dā liáu khác Hình d°ới đây cho thấy đ°ÿc mối quan há giāa 2 bÁng HOCVIEN VÀ LOP Trong bÁng HOCVIEN là khoá chính là cát MALOP nh°ng đßng thßi cát MALOP là khoá ngo¿i tham chiÁu đÁn cát MALOP căa bÁng LOP
Ràng buác FOREIGN KEY đ°ÿc đánh ngh*a theo cú pháp d°ới đây:
[CONSTRAINT tên_ràng_buộc] FOREIGN KEY [(danh_sách_cột)]
REFERENCES tên_bảng_tham_chiếu(danh_sách_cột_tham_chiếu) [ON DELETE
CASCADE | NO ACTION | SET NULL | SET DEFAULT] [ON UPDATE CASCADE | NO ACTION | SET NULL | SET DEFAULT] Viác đánh ngh*a mát ràng buác FOREIGN KEY bao gßm các yÁu tố sau:
• Tên cát hoặc danh sách cát căa bÁng đ°ÿc đánh ngh*a tham gia vào khoá ngoài • Tên căa bÁng đ°ÿc tham chiÁu bái khoá ngoài và danh sách các cát đ°ÿc tham chiÁu
đÁn trong bÁng tham chiÁu • Cách thąc xÿ lý đối với các bÁn ghi trong bÁng đ°ÿc đánh ngh*a trong tr°ßng hÿp các
bÁn ghi đ°ÿc tham chiÁu trong bÁng tham chiÁu bá xoá (ON DELETE) hay cập nhật (ON UPDATE) SQL chuẩn đ°a ra 4 cách xÿ lý:
CASCADE: Tă đáng xoá (cập nhật) nÁu bÁn ghi đ°ÿc tham chiÁu bá xoá (cập nhật)
NO ACTION: (Mặc đánh) NÁu bÁn ghi trong bÁng tham chiÁu đang đ°ÿc tham chiÁu bái mát bÁn ghi bất kỳ trong bÁng đ°ÿc đánh ngh*a thì bàn ghi đó không đ°ÿc phép xoá hoặc cập nhật (đối với cát đ°ÿc tham chiÁu)
Trang 27 SET NULL: Cập nhật l¿i khoá ngoài căa bÁn ghi thành giá trá NULL (nÁu cát cho phép nhận giá trá NULL)
SET DEFAULT: Cập nhật l¿i khoá ngoài căa bÁn ghi nhận giá trá mặc đánh (nÁu cát có qui đánh giá trá mặc đánh)
L°u ý:
• Cát đ°ÿc tham chiÁu trong bÁng tham chiÁu phÁi là khoá chính (hoặc là khoá phā) • Cát đ°ÿc tham chiÁu phÁi có cùng kiểu dā liáu và đá dài với cát t°¢ng ąng trong
khóa ngoài • BÁng tham chiÁu phÁi đ°ÿc đánh ngh*a tr°ớc Do đó, nÁu các bÁng có mối quan há
vòng, ta có thể không thể đánh ngh*a ràng buác FOREIGN KEY ngay trong câu lánh CREATE TABLE mà phÁi đánh ngh*a thông qua lánh ALTER TABLE
2.3 Xoá bÁng
Khi mát bÁng không còn cần thiÁt , có thể xoá nó ra khỏi c¢ sá dā liáu b¿ng câu lánh DROP TABLE Câu lánh này cũng đßng thßi xoá tất cÁ nhāng ràng buác, chß māc, trigger liên quan đÁn bÁng đó hoặc b¿ng giao dián quÁn lý căa management Studio
Cách 1: xoá bÁng b¿ng giao dián quÁn lý căa management Studio B°ớc 1: Má c¢ sá dā liáu
B°ớc 2: Click chuát phÁi vào bÁng dā liáu cần xoá >> Delete B°ớc 3: Xuất hián bÁng cần xoá >> chọn OK
Trang 28Cách 2: Câu lánh có cú pháp nh° sau: DROP TABLE tên_bảng
Ví dā: DROP TABLE HOCVIEN Trong các há quÁn trá c¢ sá dā liáu, khi đã xoá mát bÁng b¿ng lánh DROP TABLE, ta không thể khôi phāc l¿i bÁng cũng nh° dā liáu căa nó Do đó, cần phÁi cẩn thận khi sÿ dāng câu lánh này
Câu lánh DROP TABLE không thể thăc hián đ°ÿc nÁu bÁng cần xoá đang đ°ÿc tham chiÁu bái mát ràng buác FOREIGN KEY Trong tr°ßng hÿp này, ràng buác FOREIGN KEY đang tham chiÁu hoặc bÁng đang tham chiÁu đÁn bÁng cần xoá phÁi đ°ÿc xoá tr°ớc
Khi mát bÁng bá xoá, tất cÁ các ràng buác, chß māc và trigger liên quan đÁn bÁng cũng đßng thßi bá xóa theo Do đó, nÁu t¿o l¿i bÁng thì cũng phÁi t¿o l¿i các đối t°ÿng này
Trang 292.4 Cập nhật, bá sung và xoá dā liáu
Đối với mát số khung nhìn, có thể tiÁn hành thăc hián các thao tác cập nhập, bá sung và xoá dā liáu Thăc chất, nhāng thao tác này s¿ đ°ÿc chuyển thành nhāng thao tác t°¢ng tă trên các bÁng c¢ sá và có tác đáng đÁn nhāng bÁng c¢ sá
VÃ mặt lý thuyÁt, để có thể thăc hián thao tác bá sung, cập nhật và xoá, mát khung nhìn tr°ớc tiên phÁi thoÁ mãn các điÃu kián sau đây:
• Trong câu lánh SELECT đánh ngh*a khung nhìn không đ°ÿc sÿ dāng từ khoá DISTINCT, TOP, GROUP BY và UNION
• Các thành phần xuất hián trong danh sách chọn căa câu lánh SELECT phÁi là các cát trong các bÁng c¢ sá Trong danh sách chọn không đ°ÿc chąa các biểu thąc tính toán, các hàm gáp
Ngoài nhāng điÃu kián trên, các thao tác thay đái đÁn dā liáu thông qua khung nhìn còn phÁi đÁm bÁo thoÁ mãn các ràng buác trên các bÁng c¢ sá, tąc là vẫn đÁm bÁo tính toàn vẹn dā liáu Ví dā d°ới đây s¿ minh ho¿ cho thấy viác thăc hián các thao tác bá sung, cập nhật và xoá dā liáu thông qua khung nhìn
2.4.1 Cập nhật, bổ sung dữ liệu
Ví dā: T¿o 2 bÁng 1 BÀNG 1: HOCVIEN
B°ớc 1: Má c¢ sá dā liáu CTC1 B°ớc 2: Má th° māc Table >> chuát phÁi vào Table >> New table >> Nhập thông tin căa bÁng nh° sau:
BÁng HOCVIEN
Trang 30B°ớc 3: Chọn cát cần xác đánh làm khóa >> chuát phÁi >> chọn Set primary key để làm khóa chính
B°ớc 4: L°u thông tin căa bÁng >> SQL yêu cầu nhập tên bÁng >> gõ tên bÁng là HOCVIEN
2 BÀNG 2: LOP
B°ớc 1: Má c¢ sá dā liáu CTC1 B°ớc 2: Má th° māc Table >> chuát phÁi vào Table >> New table >> Nhập thông tin căa bÁng nh° sau:
02CT1 Công nghá
thông tin 3
Nguyßn Văn HiÁu 42 CN01 CV02 CB01
Trang 31B3: Sau khi nhập xong dā liáu mẫu vào bÁng >> chọn nút lánh Save all T°¢ng tă nhập dā liáu bÁng HOCVIEN
thông tin 4
Lê Thá Thu HiÃn 28 CN02 CV01 CB01 43KT1 KÁ toán 1 Lê Phúc T°ßng 18 CN03 CV03 CB03 02MT1 Th°¢ng m¿i
đián tÿ 3
Nguyßn Văn A 30 CN04 CV04 CB04 02MT2 Th°¢ng m¿i
đián tÿ 4
Nguyßn Văn B 29 CN05 CV05 CB05 72X1 Xây dăng 1 Nguyßn Văn C 37 CN05 CV04 CB04
Trang 322.4.2 Xoá dữ liệu
Ngoài nhāng điÃu kián trên, các thao tác thay đái đÁn dā liáu thông qua khung nhìn còn phÁi đÁm bÁo thoÁ mãn các ràng buác trên các bÁng c¢ sá, tąc là vẫn đÁm bÁo tính toàn vẹn dā liáu SQL cho phép có thể xoá dā liáu hay các bÁn ghi nhập sai hoặc bá lßi
Để xoá dā liáu thăc hián các b°ớc: B°ớc 1: Click chuát phÁi vào bÁng có dā liáu cần xoá >> Edit Top 200 Rows B°ớc 2: Click chuát phÁi vào bÁn ghi hay dòng cần xoá >> Delete
Trang 33Há tháng ki¿n thức Ch°¢ng 2 1 Yêu cÁu vÁ lý thuy¿t
Trình bày đ°ÿc các khái niám trong c¢ sá dā liáu; Trình bày đ°ÿc vai trò căa SQL;
Trình bày đ°ÿc táng quan và c¢ sá dā liáu quan há;
Trình bày đ°ÿc các s¢ l°ÿc và SQL 2 Yêu cÁu vÁ bài tập: T¿o các bÁng, t¿o các khóa 3 Há tháng các công thức đã hác:
khóa chính Xoá bÁng
- Khi mát bÁng không còn cần thiÁt , có thể xoá nó ra khỏi c¢ sá dā liáu b¿ng câu lánh DROP TABLE Câu lánh này cũng đßng thßi xoá tất cÁ nhāng ràng buác, chß māc, trigger liên quan đÁn bÁng đó hoặc b¿ng giao dián quÁn lý căa management Studio
- Cách 1: xoá bÁng b¿ng giao dián quÁn lý căa management Studio - B°ớc 1: Má c¢ sá dā liáu
- B°ớc 2: Click chuát phÁi vào bÁng dā liáu cần xoá >> Delete - B°ớc 3: Xuất hián bÁng cần xoá >> chọn OK
4 Các bài tập ch°¢ng 2 C¢ sã dā liáu:
Quan há Thußc tính Dißn giÁi KiÃu dā liáu HOCVIEN MAHV Mã học viên (khóa chính) char(6)
HO Họ và tên lót varchar(20)
Trang 34TEN Tên varchar(20) NGSINH Ngày sinh smalldatetime GIOITINH Giới tính varchar(3) NOISINH N¢i sinh varchar(50)
LOP
LOPTRG Tên lớp tr°áng varchar(20)
MAGVCN Mã giáo viên chă nhiám char(6) MACBQL Mã cán bá quÁn lý char(6) MACVHT Mã cố vấn học tập char(6)
GVCN MAGVCN Mã giáo viên chă nhiám char(6)
TENGVCN Tên giáo viên chă nhiám varchar(50) ĐVLV Đ¢n vá làm viác varchar(50)
TENGVCN Tên cán bá quÁn lý varchar(50) ĐVLV Đ¢n vá làm viác varchar(50)
GIANGDAY
MALOP Mã lớp (thuác tính khóa) char(6) MAMH ã Mã môn học varchar(10) MAGV Mã giáo viên char(6)
GIAOVIEN
MAGV Mã giáo viên (khóa chính) char(4)
GIOITINH Giới tính varchar(3) NLV Năm vào làm viác smallint
Trang 351 T¿o há thống các bÁng theo cấu trúc trên 2 T¿o các khóa chính cho từng bÁng 3 T¿o mối quan há giāa các bÁng 4 Xác đánh các mối quan giāa các bÁng
Trang 36CH¯¡NG 3: NGÔN NGĀ THAO TÁC DĀ LIàU
Māc tiêu bài hác
1 Trình bày đ°ÿc truy xuất c¢ sá dā liáu trên SQL; 2 Trình bày đ°ÿc cách truy xuất b¿ng câu lánh Select; 3 Trình bày đ°ÿc truy xuất c¢ sá dā liáu có điÃu kián; 4 Trình bày đ°ÿc cách sắp xÁp kÁt quÁ truy vấn c¢ sá dā liáu
Trang 37CH¯¡NG 3: NGÔN NGĀ THAO TÁC DĀ LIàU
SQL đ°ÿc xem nh° là công cā hāu hiáu để thăc hián các yêu cầu truy vấn và thao tác trên dā liáu Trong ch°¢ng này, s¿ tìm hiểu nhāng câu lánh trong SQL đ°ÿc sÿ dāng cho māc đích này Nhóm các câu lánh này đ°ÿc gọi chung là ngôn ngā thao tác dā liáu (DML: Data Manipulation Language) bao gßm các câu lánh sau:
• SELECT: Sÿ dāng để truy xuất dā liáu từ môt hoặc nhiÃu bÁng • INSERT: Bá sung dā liáu
• UPDATE: Cập nhật dā liáu • DELETE: Xoá dā liáu Trong số các câu lánh này, có thể nói SELECT là câu lánh t°¢ng đối phąc t¿p và đ°ÿc sÿ dāng nhiÃu trong c¢ sá dā liáu Với câu lánh này, không chß thăc hián các yêu cầu truy xuất dā liáu đ¢n thuần mà còn có thể thăc hián đ°ÿc các yêu cầu thống kê dā liáu phąc t¿p Cũng chính vì vậy, phần đầu căa ch°¢ng này s¿ tập trung t°¢ng đối nhiÃu đÁn câu lánh SELECT sau đó tới các câu lánh INSERT, UPDATE và DELETE
3.1 Truy xuất dữ liệu với câu lệnh SELECT
Câu lánh SELECT đ°ÿc sÿ dāng để truy xuất dā liáu từ các dòng và các cát căa mát hay nhiÃu bÁng, khung nhìn Câu lánh này có thể dùng để thăc hián phép chọn (tąc là truy xuất mát tập con các dòng trong mát hay nhiÃu bÁng), phép chiÁu (tąc là truy xuất mát tập con các cát trong mát hay nhiÃu bÁng) và phép nối (tąc là liên kÁt các dòng trong hai hay nhiÃu bÁng để truy xuất dā liáu) Ngoài ra, câu lánh này còn cung cấp khÁ năng thăc hián các thao tác truy vấn và thống kê dā liáu phąc t¿p khác
Cú pháp chung căa câu lánh SELECT có d¿ng: SELECT [ALL | DISTINCT][TOP n] danh_sách_chọn [INTO tên_bÁng_mới]
FROM danh_sách_bÁng/khung_nhìn [WHERE điÃu_kián]
[GROUP BY danh_sách_cát]
Trang 38[HAVING điÃu_kián] [ORDER BY cát_sắp_xÁp] [COMPUTE danh_sách_hàm_gáp [BY danh_sách_cát]] ĐiÃu cần l°u ý đầu tiên đối với câu lánh này là các thành phần trong câu lánh SELECT nÁu đ°ÿc sÿ dāng phÁi tuân theo đúng thą tă nh° trong cú pháp NÁu không, câu lánh s¿ đ°ÿc xem là không hÿp lá
Câu lánh SELECT đ°ÿc sÿ dāng để tác đáng lên các bÁng dā liáu và kÁt quÁ căa câu lánh cũng đ°ÿc hiển thá d°ới d¿ng bÁng, tąc là mát tập hÿp các dòng và các cát (ngo¿i trừ tr°ßng hÿp sÿ dāng câu lánh SELECT với mánh đà COMPUTE)
Ví dā: KÁt quÁ căa câu lánh sau đây cho biÁt mã học viên, mã lớp, tên lớp, mã CBQL, mã
CVHT, mã GVCN SELECT malop,tenlop, loptrg, siso
FROM lop
3.1.1 Mệnh đề FROM
Mánh đà FROM trong câu lánh SELECT đ°ÿc sÿ dung nh¿m chß đánh các bÁng và khung nhìn cần truy xuất dā liáu Sau FROM là danh sách tên căa các bÁng và khung nhìn tham gia vào truy vấn, tên căa các bÁng và khung nhìn đ°ÿc phân cách nhau bái dấu phẩy
Ví dā: Câu lánh d°ới đây hiển thá danh sách các khoa trong tr°ßng
SELECT * FROM khoa kÁt quÁ câu lánh nh° sau:
Trang 393.1.2 Danh sách chọn trong câu lệnh SELECT
Danh sách chọn trong câu lánh SELECT đ°ÿc sÿ dāng để chß đánh các tr°ßng, các biểu thąc cần hiển thá trong các cát căa kÁt quÁ truy vấn Các tr°ßng, các biểu thąc đ°ÿc chß đánh ngay sau từ khoá SELECT và phân cách nhau bái dấu phẩy Sÿ dāng danh sách chọn trong câu lánh SELECT bao gßm các tr°ßng hÿp sau:
a Chán t¿t cÁ các cßt trong bÁng
Khi cần hiển thá tất cÁ các tr°ßng trong các bÁng, sÿ dāng ký tă * trong danh sách chọn thay vì phÁi liát kê danh sách tất cÁ các cát Trong tr°ßng hÿp này, các cát đ°ÿc hiển thá trong kÁt quÁ truy vấn s¿ tuân theo thą tă mà chúng đã đ°ÿc t¿o ra khi bÁng đ°ÿc đánh ngh*a
Ví dā: Câu lánh
SELECT * FROM hocvien
b Tên cßt trong danh sách chán
Trong tr°ßng hÿp cần chß đánh cā thể các cát cần hiển thá trong kÁt quÁ truy vấn, ta chß đánh danh sách các tên cát trong danh sách chọn Thą tă căa các cát trong kÁt quÁ truy vấn tuân theo thą tă căa các tr°ßng trong danh sách chọn
Ví dā: Câu lánh
SELECT mahv, ho, ten, ngaysinh, gioitinh FROM hocvien
Trang 40L°u ý: NÁu truy vấn đ°ÿc thăc hián trên nhiÃu bÁng/khung nhìn và trong các bÁng/khung nhìn
có các tr°ßng trùng tên thì tên căa nhāng tr°ßng này nÁu xuất hián trong danh sách chọn phÁi
đ°ÿc viÁt d°ới d¿ng: tên_bÁng.tên_tr°áng Ví dā:
SELECT mahv, ho, ten, ngaysinh,loptrg FROM hocvien,lop
WHERE hocvien.malop = lop.malop
c Thay đái tiêu đÁ các cßt
Trong kÁt quÁ truy vấn, tiêu đà căa các cát mặc đánh s¿ là tên căa các tr°ßng t°¢ng ąng trong bÁng Tuy nhiên, để các tiêu đà trá nêsn thân thián h¢n, ta có thể đái tên các tiêu đà căa các cát Để đặt tiêu đà cho mát cát nào đó, ta sÿ dāng cách viÁt:
tiêu_đÃ_cát = tên_tr°ßng hoặc tên_tr°ßng AS tiêu_đÃ_cát hoặc tên_tr°ßng tiêu_đÃ_cát
Ví dā: Câu lánh d°ới đây:
SELECT 'Mã lớp'= malop,tenlop 'Tên lớp',khoa AS 'Khoá' FROM lop cho biÁt mã lớp, tên lớp và khoá học căa các lớp trong tr°ßng KÁt quÁ căa câu lánh nh° sau:
SELECT mahv, ho, ten, ngaysinh,loptrg8tênloptrg9 FROM hocvien,lop
WHERE hocvien.malop = lop.malop