Giới thiệu
• SQL (Structured Query Language)
– Ngôn ngữ cấp cao
– Ngôn ngữ phi thủ tục
– Được sử dụng để thao tác với SQL Database
– Được phát triển bởi IBM (1970s)
– Được gọi là SEQUEL (Structured English Query Language)
– Được ANSI công nhận và phát triển thành chuẩn với các
phiên bản
• SQL-86
• SQL-92
• SQL-99
• SQL-2016
Giới thiệu
• SQL có nhiều nhóm lệnh
– Định nghĩa dữ liệu (DDL)
– Thao tác dữ liệu (DML)
– Định nghĩa khung nhìn
– Định nghĩa Ràng buộc toàn vẹn
– Phân quyền và bảo mật
– Điều khiển giao tác
• SQL sử dụng thuật ngữ
– Bảng ~ quan hệ
– Cột ~ thuộc tính
– Dòng ~ bộ
                
              
                                            
                                
            
                       
            
                 81 trang
81 trang | 
Chia sẻ: thanhle95 | Lượt xem: 1067 | Lượt tải: 2 
              
            Bạn đang xem trước 20 trang tài liệu Bài giảng Cơ sở dữ liệu - Chương 4: Ngôn ngữ SQL - Nguyễn Như Hoa, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 4 
Ngôn ngữ SQL 
Giáo trình & Tài liệu tham khảo: 
1. Ramez Elmasri, Shamkant B. Navathe, 2011. Fundamentals of Database 
systems, 6th edition, Addison-Wesley. 
2. Giáo trình Cơ sở dữ liệu , Trần Đắc Phiến, ĐH Công nghiệp TPHCM 
3. Bộ slide bài giảng của Nguyễn Minh Thư, Khoa CNTT, ĐH KHTN TPHCM 
4. Bộ slide bài giảng của Trần Thị Kim Chi, Khoa CNTT, ĐH Công nghiệp TPHCM 
Gv. Nguyễn Như Hoa 
1 
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 
2 
Giới thiệu 
• SQL (Structured Query Language) 
– Ngôn ngữ cấp cao 
– Ngôn ngữ phi thủ tục 
– Được sử dụng để thao tác với SQL Database 
– Được phát triển bởi IBM (1970s) 
– Được gọi là SEQUEL (Structured English Query Language) 
– Được ANSI công nhận và phát triển thành chuẩn với các 
phiên bản 
• SQL-86 
• SQL-92 
• SQL-99 
• SQL-2016 
3 
Giới thiệu 
• SQL có nhiều nhóm lệnh 
– Định nghĩa dữ liệu (DDL) 
– Thao tác dữ liệu (DML) 
– Định nghĩa khung nhìn 
– Định nghĩa Ràng buộc toàn vẹn 
– Phân quyền và bảo mật 
– Điều khiển giao tác 
–  
• SQL sử dụng thuật ngữ 
– Bảng ~ quan hệ 
– Cột ~ thuộc tính 
– Dòng ~ bộ 
4 
Giới thiệu 
• Transact-SQL (T-SQL) 
– Là một phiên bản SQL do Microsoft phát triển dựa 
trên ANSI SQL 
– Sử dụng trong MS SQL Server _ một DBMS của 
Microsoft 
5 
Giới thiệu 
• MS SQL Server 
– Là một Relational DBMS do Microsoft phát triển 
– Là một database server (software) 
– Hỗ trợ giao diện GUI và command line 
– Hỗ trợ nhiều chức năng 
• To create databases. 
• To maintain databases. 
• To analyze the data through SQL Server Analysis Services (SSAS). 
• To generate reports through SQL Server Reporting Services (SSRS). 
• To build high-performance data integration solutions, including 
extraction, transformation, and load (ETL) packages for data 
warehousing through SQL Server Integration Services (SSIS) 
6 
Tham khảo : https://docs.microsoft.com/en-us/sql/sql-server/?view=sql-server-ver15 
Giới thiệu 
• MS SQL Server Management Studio (SSMS) 
– Là công cụ cho phép user quản lý database và 
instance 
– Là công cụ quản lý tập trung tất cả các thành 
phần của SQL server , Azure SQL Database, và SQL 
Data Warehouse (Access, configure, manage, 
administer, and develop ) 
7 
Tham khảo : https://docs.microsoft.com/en-us/sql/ssms/sql-server-
management-studio-ssms?view=sql-server-ver15 
Định nghĩa dữ liệu (DDL) 
• Nhóm lệnh Định nghĩa dữ liệu 
(Data Definition Language commands) gồm 
– Tạo Cơ sở dữ liệu 
– Tạo table 
– Kiểu dữ liệu 
• Định nghĩa kiểu dữ liệu mới 
– Khai báo ràng buộc dữ liệu 
8 
Tạo Database 
• Ví dụ 
CREATE DATABASE Sample 
ON 
 PRIMARY ( 
 NAME=SampleData, 
 FILENAME='c:\Program Files\..\..\Data\Sample.mdf', 
 SIZE=10MB, 
 MAXSIZE=15MB, 
 FILEGROWTH=20%) 
LOG ON 
 ( NAME=SampleLog, 
 FILENAME= 'c:\Program Files\..\..\Data\Sample.ldf', 
 SIZE=3MB, 
 MAXSIZE=5MB, 
 FILEGROWTH=1MB) 
Tên database 
Data file có tên 
SampleDate 
Log file có tên 
SampleLog 
9 
Tạo Database 
• Tạo Database = thực hiện khai báo các file lưu trữ 
• Một Database bao gồm hai hay nhiều tập tin 
– Một (hay nhiều) file data và một (hay nhiều) file log 
• File data lưu dữ liệu, file log lưu nhật ký giao tác 
– Qui ước phần đuôi của tên file 
• File dữ liệu cơ bản (Primary data file) .mdf => chỉ có 1 file 
• Các file thứ cấp (Secondary data files, tùy chọn) .ndf 
• File nhật ký giao dịch (Transaction log file) .ldf 
– Các file này có thể nằm trên những đĩa vật lý khác nhau 
để cải thiện việc thực thi của hệ thống 
10 
Tạo Database 
• Thông tin của mỗi file bao gồm 
• Filegroup : Các file data có thể nằm trên những đĩa vật lý khác 
nhau, nhưng đặt trong cùng một filegroup 
– một table được chỉ định đặt trong một filegroup => dữ liệu 
của table sẽ được đặt trải ra trên các đĩa , giúp tăng hiệu 
năng khi truy suất 
– Luôn có một Primary filegroup 
• Tên logic 
• Vị trí lưu trữ vật lý 
• Kích thước ban đầu 
• Kích thước tối đa 
• Kích thước tăng mỗi lần 
( 
11 
2 data file thuộc 
Primary 
filegroup 
2 data file thuộc 
SalesGroup1 
filegroup 
Lệnh tạo Sales DB , gồm 4 data file và 1 log file 
12 
Tạo Database 
• Cú pháp lệnh 
• Ví dụ : lệnh sau sẽ tạo một database với các tham số mặc định 
Create database defaultDB 
Tham khảo https://docs.microsoft.com/ 
Chú ý : các từ khóa, và qui 
ước về đặt dấu ( ) , dấu 
phẩy ,  
13 
Các lệnh T-SQL quản lý database 
Xóa cơ sở dữ liệu: Khi 1 CSDL bị xóa thì tất cả các 
file vật lý của nó sẽ bị xóa 
Cú pháp: 
 DROP DATABASE database_name 
Ví dụ: 
 Drop database Banhang 
Đổi tên cơ sở dữ liệu: 
Cú pháp: sp_renamedb 'old_name', 'new_name‘ 
14 
Kiểu dữ liệu 
• T-SQL hỗ trợ các kiểu dữ liệu 
– Số 
– Chuỗi 
– Ngày giờ 
– Binary 
– Các kiểu khác 
• Người dùng có thể định nghĩa các kiểu dữ liệu 
mới (user-defined data types) dựa trên các 
kiểu dữ liệu có sẵn 
15 
Kiểu dữ liệu 
• Số nguyên 
– Bit 
– Tinyint 
– Smallint 
– Int 
– Bigint 
– Smallmoney 
– Money 
– Decimal (numeric) 
• Số thực 
– Float 
– real 
Chuỗi : 
- Char 
- Varchar 
- Text 
- Nchar 
- Nvarchar 
- Ntext 
Ngày giờ 
- Date 
- Time 
- Datetime 
-  
Các kiểu dữ liệu khác 
- cursor 
- Table 
- Uniqueidentifier 
-  
Binary 
- binary 
- Varbinary 
- image 
Tham khảo : https://docs.microsoft.com 16 
Kiểu dữ liệu 
char [ ( n ) ] Fixed-size string data. n defines the string size in bytes and must be a 
value from 1 through 8,000. 
varchar [ ( n | max ) ] Variable-size string data. Use n to define the string 
size in bytes and can be a value from 1 through 8,000 or use max to 
indicate a column constraint size up to a maximum storage of 2^31-1 bytes 
(2 GB) 
Tham khảo : https://docs.microsoft.com 
Tên 
kiểu dữ liệu 
Miền giá trị Kích thước 
lưu trữ 
17 
Kiểu dữ liệu 
18 
Kiểu dữ liệu 
• Định nghĩa một kiểu dữ liệu (user-defined data types ): 
Cú pháp: 
 sp_addtype type , system_data_type [,'NULL' | 'NOT NULL'] 
Ví dụ: Tạo kiểu dữ liệu tên là isbn với kiểu dữ liệu cơ bản là smallint và 
không chấp nhận giá trị Null 
exec sp_addtype isbn, ‘smallint’, ‘NOT NULL’ 
• Liệt kê các user-defined data types trong CSDL hiện hành: 
Dùng thủ tục sp_help , hoặc 
truy vấn trong information_schema.domains 
• Xoá một User-Defined Data Type: 
Cú pháp: sp_droptype type 
19 
Các lệnh T-SQL về table 
• Các lệnh về table 
– CREATE TABLE (tạo bảng) 
– DROP TABLE (xóa bảng) 
– ALTER TABLE (sửa bảng) 
– Xem thông tin về table 
• Khai báo các ràng buộc toàn vẹn khi định nghĩa table 
– Primary key, foreign key 
– Unique constraint 
– Default constraint 
– Check constraint 
– Not NULL 
20 
Tạo table 
• Cú pháp 
CREATE TABLE ( 
 [], 
 [], 
 [] 
) 
RBTV áp dụng cho toàn bộ 
table 
RBTV áp dụng cho 1 cột 
21 
Tạo table CREATE TABLE NHANVIEN ( 
 MANV CHAR(9), 
 HOTEN VARCHAR(30), 
 PHAI CHAR(3), 
 LUONG INT, 
 PHG INT ) 
CREATE TABLE NHANVIEN ( 
 MANV CHAR(9) not null primary key , 
 HOTEN VARCHAR(30), 
 PHAI CHAR(3) check (PHAI like ‘nam’ or PHAI like ‘nu’), 
 LUONG INT, 
 PHG INT references PHONGBAN(MAPB) ) 
Tạo một table không có 
các khai báo ràng buộc 
Tạo một table có khai 
báo ràng buộc PK, FK , 
và Check Constraint 
Chỉ có 1 khai báo Primary key 
trong 1 table 
22 
Tạo table 
CREATE TABLE PHANCONG ( 
 MANV CHAR(9) NOT NULL, 
 SODA INT NOT NULL, 
 THOIGIAN DECIMAL(3,1) NOT NULL, 
 PRIMARY KEY (MANV, SODA), 
 FOREIGN KEY (MANV) REFERENCES NHANVIEN(MANV), 
 FOREIGN KEY (SODA) REFERENCES DEAN(MADA), 
 CHECK (thoigian  0) ) 
Tạo một table có khai báo 
ràng buộc ở mức table 
CREATE TABLE PHANCONG ( 
 MANV CHAR(9) not null REFERENCES NHANVIEN(MANV), 
 SODA INT not null REFERENCES DEAN(MADA), 
 THOIGIAN DECIMAL(3,1) not null CHECK (THOIGIAN > 0), 
 PRIMARY KEY (MANV, SODA) ) 
Lệnh sau cho kết quả tương đương 
Chỉ có 1 khai báo Primary key 
trong 1 table 
23 
Tạo table 
CREATE TABLE NHANVIEN ( 
 MANV CHAR(9) not null CONSTRAINT nv_pk primary key , 
 HOTEN VARCHAR(30), 
 PHAI CHAR(3) CONSTRAINT nv_chk_phai check (PHAI like ‘nam’ or PHAI like ‘nu’), 
 LUONG INT, 
 PHG INT CONSTRAINT nv_fk_pb references PHONGBAN(MAPB) ) 
Tạo một table , có đặt tên cho ràng buộc . 
Nếu không , hệ thống sẽ tự đặt 
CREATE TABLE NHANVIEN ( 
 MANV CHAR(9) not null, 
 HOTEN VARCHAR(30), 
 PHAI CHAR(3), 
 LUONG INT, 
 PHG INT , 
CONSTRAINT nv_pk primary key (MANV), 
CONSTRAINT nv_fk_pb Foreign key(PHG) references PHONGBAN(MAPB), 
CONSTRAINT nv_chk_phai check (PHAI like ‘nam’ or PHAI like ‘nu’) ) 
Lệnh cho kết quả tương đương 
24 
Tạo table 
CREATE TABLE PHONGBAN ( 
 TENPB VARCHAR(20) UNIQUE, 
 MAPHG INT NOT NULL, 
 TRPHG CHAR(9), 
 NG_NHANCHUC DATETIME DEFAULT (GETDATE()) 
) 
Tạo một table , có chứa khai báo 
ràng buộc unique và default 
CREATE TABLE PHONGBAN ( 
 TENPB VARCHAR(20), 
 MAPHG INT NOT NULL, 
 TRPHG CHAR(9), 
 NG_NHANCHUC DATETIME , 
 CONSTRAINT pb_uni_tenpb UNIQUE (TENPB) , 
 CONSTRAINT pb_def_ngay DEFAULT (GETDATE()) FOR (NG_NHANCHUC) ) 
Lệnh cho kết quả tương đương 
25 
Tạo table 
Tạo một table , 
đặt table vào 1 filegroup 
 CREATE TABLE SanPham 
 ( Masp smallint CONSTRAINT sp_nonull_masp NOT NULL, 
 Tensp char(20) NOT NULL, 
 Mota char(30) NULL, 
 Gia smallmoney NOT NULL 
 ) 
Tạo một table , với khai báo ràng buộc NULL / NOT NULL 
CREATE TABLE NHANVIEN ( 
 MANV CHAR(9), 
 HOTEN VARCHAR(30), 
 PHAI CHAR(3), 
 LUONG INT, 
 PHG INT ) 
 ON SalesGroup1 ; 
26 
Tạo table 
Tạo một table , với ràng buộc khóa ngoại 
Định nghĩa FOREIGN KEY CONSTRAINT khi tạo bảng 
CREATE TABLE TableName 
 (columnName datatype [,], 
 [CONSTRAINT constraintName] 
 FOREIGN KEY[(column[,..n])] 
 REFERENCES ref_table [ ( ref_column [,..n])]) ] 
 [ ON DELETE {NO ACTION | CASCADE | SET NULL | SET DEFAULT} ] 
 [ ON UPDATE {NO ACTION | CASCADE | SET NULL | SET DEFAULT} ] 
27 
MANV TENNV NGSINH PHGBAN 
0111 Nguyen An 12/08/1955 5 
0112 Bui Liem 07/19/1968 4 
0201 Le Vân 06/20/1951 4 
0202 Tran Mai 09/15/1962 5 
MAPB TENPB 
Nghien cuu 5 
Dieu hanh 4 
Quan ly 1 
s(PHONGBAN) 
r(NHANVIEN) 
 NHANVIEN ( MANV, TENNV, NGSINH , PHGBAN) 
PHONGBAN ( MAPB , TENPB ) 
Khóa ngoại 
Tham chiếu đến 
Khi MAPB ở table PHONGBAN bị xóa hay sửa thì PHGBAN 
tương ứng ở table NHANVIEN sẽ như thế nào ? 
Có 4 cách hành xử : 
NO ACTION | CASCADE | SET NULL | SET DEFAULT 
28 
CREATE TABLE NHANVIEN ( 
 MANV CHAR(9) not null primary key , 
 TENNV VARCHAR(30), 
 NGAYSINH DATE, 
 PHGBAN INT references PHONGBAN(MAPB) ) 
CREATE TABLE NHANVIEN ( 
 MANV CHAR(9) not null primary key , 
 TENNV VARCHAR(30), 
 NGAYSINH DATE, 
 PHGBAN INT references PHONGBAN(MAPB) 
 ON DELETE NO ACTION 
 ON UPDATE NO ACTION ) 
CREATE TABLE NHANVIEN ( 
 MANV CHAR(9) not null primary key , 
 TENNV VARCHAR(30), 
 NGAYSINH DATE, 
 PHGBAN INT references PHONGBAN(MAPB) 
 ON DELETE CASCADE 
 ON UPDATE CASCADE ) 
NO ACTION 
Khi xóa/sửa MAPB 
trên PHONGBAN có 
record tương ứng ở 
table NHANVIEN, 
SQL Server sẽ báo 
lỗi và hủy thao tác 
CASCADE 
Khi xóa/sửa MAPB 
trên PHONGBAN sẽ 
xóa/sửa record 
tương ứng ở table 
NHANVIEN 
Lệnh này tương 
đương với 
NO ACTION 
29 
Tạo table 
• Xem thông tin 
– Sp_help 
– Sp_help 
– Sp_helpConstraint 
30 
Thay đổi thiết kế của table 
ALTER TABLE ADD 
 [] 
ALTER TABLE DROP COLUMN 
ALTER TABLE ALTER COLUMN 
ALTER TABLE ADD 
 CONSTRAINT , 
 CONSTRAINT , 
ALTER TABLE DROP 
Thay đổi RBTV : 
Thêm / xóa RBTV 
Thay đổi cấu trúc bảng : 
Thêm / xóa / sửa cột 
31 
Thay đổi thiết kế của table 
ALTER TABLE NHANVIEN ADD 
 HOPDONG CHAR(20) 
ALTER TABLE NHANVIEN DROP COLUMN HOPDONG 
ALTER TABLE NHANVIEN ALTER COLUMN 
 HOPDONG CHAR(10) CHECK (HOPDONG in ( ‘full’ , ‘temp’) ) 
CREATE TABLE PHONGBAN ( 
 TENPB VARCHAR(20), 
 MAPHG INT NOT NULL PRIMARY KEY, 
 TRPHG CHAR(9) REFERENCES NHANVIEN(MANV), 
 NG_NHANCHUC DATETIME ) 
ALTER TABLE PHONGBAN ADD 
 CONSTRAINT PB_NGNHANCHUC_DF DEFAULT (GETDATE()) 
 FOR (NG_NHANCHUC), 
 CONSTRAINT PB_TENPB_UNI UNIQUE (TENPB) 
Tạo table 
Bổ sung thêm 
ràng buộc cho 
table đã tạo 
Thêm /sửa / xóa 
1 cột trong table 
đã có 
32 
Xóa table 
• Xóa table sẽ xóa luôn dữ liệu của table 
• Cú pháp 
 Ví dụ 
• Xóa một table khi nó có mối liên hệ với những table khác ? 
– Nếu là table con (table chứa khóa ngoại) -> xóa được , đồng 
thời sẽ xóa luôn ràng buộc với table cha 
– Nếu là table cha : Xóa ràng buộc khóa ngoại trên table con , 
rồi xóa table cha 
– Vdụ : muốn xóa 2 table NHANVIEN ------- PHONGBAN 
Cho biết thứ tự xóa ? 
DROP TABLE 
DROP TABLE NHANVIEN 
33 
Thao tác dữ liệu (DML) 
• Nhóm lệnh Thao tác dữ liệu (Data 
Manipulation Language) gồm các lệnh 
– truy vấn dữ liệu : select 
– cập nhật dữ liệu : Insert , update, delete 
34 
Truy vấn dữ liệu 
căn bản 
• Cú pháp căn bản 
• Truy vấn dữ liệu từ 1 table 
SELECT 
FROM 
WHERE 
MaSV HoSV TenSV Lop Namsinh Khoa 
201001 Huỳnh Nhất Luận C10CK1 1999 CNTT 
201002 Nguyễn Anh Tuấn C10CK1 1999 CNTT 
201003 Trần Phương Bằng C10DC1 1999 CNTT 
201004 Nguyễn Văn Công C10DC1 1999 CNTT 
201005 Trần Văn Diệm C10DC1 1998 CNTT 
201006 Lưu Chí Dũng CS01TT 1999 CNTT 
201007 Lâm Phước Hòa CS01TT 1998 CNTT 
201008 Huỳnh Huy Hoàng CS01TT 1999 CNTT 
201009 Lê Hồng Khải CS01TT 1999 CNTT 
201010 Phan Nhật Duy Khanh CS01TT 1999 CNTT 
SINHVIEN 
35 
MaSV HoSV TenSV Lop Namsinh Khoa 
201001 Huỳnh Nhất Luận C10CK1 1999 CNTT 
201002 Nguyễn Anh Tuấn C10CK1 1999 CNTT 
201003 Trần Phương Bằng C10DC1 1999 CNTT 
201004 Nguyễn Văn Công C10DC1 1999 CNTT 
201005 Trần Văn Diệm C10DC1 1998 CNTT 
201006 Lưu Chí Dũng CS01TT 1999 CNTT 
201007 Lâm Phước Hòa CS01TT 1998 CNTT 
201008 Huỳnh Huy Hoàng CS01TT 1999 CNTT 
201009 Lê Hồng Khải CS01TT 1999 CNTT 
201010 Phan Nhật Duy Khanh CS01TT 1999 CNTT 
MaSV HoSV TenSV Lop Namsinh Khoa 
201001 Huỳnh Nhất Luận C10CK1 1999 CNTT 
201002 Nguyễn Anh Tuấn C10CK1 1999 CNTT 
201003 Trần Phương Bằng C10DC1 1999 CNTT 
201004 Nguyễn Văn Công C10DC1 1999 CNTT 
201005 Trần Văn Diệm C10DC1 1998 CNTT 
201006 Lưu Chí Dũng CS01TT 1999 CNTT 
201007 Lâm Phước Hòa CS01TT 1998 CNTT 
201008 Huỳnh Huy Hoàng CS01TT 1999 CNTT 
201009 Lê Hồng Khải CS01TT 1999 CNTT 
201010 Phan Nhật Duy Khanh CS01TT 1999 CNTT 
Select * 
From SINHVIEN 
Select MaSV, HoSV, TenSV, Khoa 
From SINHVIEN 
(*) Phần tô vàng là tập dữ liệu trả về khi 
thực thi câu select 
(1) Lấy toàn bộ dữ liệu 
(2) Lọc lấy 4 cột , và lấy tất cả record 
36 
MaSV HoSV TenSV Lop Namsinh Khoa 
201001 Huỳnh Nhất Luận C10CK1 1999 CNTT 
201002 Nguyễn Anh Tuấn C10CK1 1999 CNTT 
201003 Trần Phương Bằng C10DC1 1999 CNTT 
201004 Nguyễn Văn Công C10DC1 1999 CNTT 
201005 Trần Văn Diệm C10DC1 1998 CNTT 
201006 Lưu Chí Dũng CS01TT 1999 CNTT 
201007 Lâm Phước Hòa CS01TT 1998 CNTT 
201008 Huỳnh Huy Hoàng CS01TT 1999 CNTT 
201009 Lê Hồng Khải CS01TT 1999 CNTT 
201010 Phan Nhật Duy Khanh CS01TT 1999 CNTT 
MaSV HoSV TenSV Lop Namsinh Khoa 
201001 Huỳnh Nhất Luận C10CK1 1999 CNTT 
201002 Nguyễn Anh Tuấn C10CK1 1999 CNTT 
201003 Trần Phương Bằng C10DC1 1999 CNTT 
201004 Nguyễn Văn Công C10DC1 1999 CNTT 
201005 Trần Văn Diệm C10DC1 1998 CNTT 
201006 Lưu Chí Dũng CS01TT 1999 CNTT 
201007 Lâm Phước Hòa CS01TT 1998 CNTT 
201008 Huỳnh Huy Hoàng CS01TT 1999 CNTT 
201009 Lê Hồng Khải CS01TT 1999 CNTT 
201010 Phan Nhật Duy Khanh CS01TT 1999 CNTT 
Select * 
From SINHVIEN 
Where Lop like ‘%CK1’ 
Select * 
From SINHVIEN 
Where Namsinh = 1998 
(3) Lọc những record thỏa btđk 
(4) Lọc những record thỏa btđk 
37 
MaSV HoSV TenSV Lop Ngaysinh Khoa 
201001 Huỳnh Nhất Luận C10CK1 15/2/1999 CNTT 
201002 Nguyễn Anh Tuấn C10CK1 7/3/1999 CNTT 
201003 Trần Phương Bằng C10DC1 21/1/1999 CNTT 
201004 Nguyễn Văn Công C10DC1 12/12/1999 CNTT 
201005 Trần Văn Diệm C10DC1 1/1/1998 CNTT 
201006 Lưu Chí Dũng CS01TT 27/3/1999 CNTT 
201007 Lâm Phước Hòa CS01TT 30/1/1998 CNTT 
201008 Huỳnh Huy Hoàng CS01TT 26/1/1999 CNTT 
201009 Lê Hồng Khải CS01TT 11/2/1999 CNTT 
201010 Phan Nhật Duy Khanh CS01TT 20/5/1999 CNTT 
MaSV HoSV TenSV Lop Ngaysinh Khoa 
201001 Huỳnh Nhất Luận C10CK1 15/2/1999 CNTT 
201002 Nguyễn Anh Tuấn C10CK1 7/3/1999 CNTT 
201003 Trần Phương Bằng C10DC1 21/1/1999 CNTT 
201004 Nguyễn Văn Công C10DC1 12/12/1999 CNTT 
201005 Trần Văn Diệm C10DC1 1/1/1998 CNTT 
201006 Lưu Chí Dũng CS01TT 27/3/1999 CNTT 
201007 Lâm Phước Hòa CS01TT 30/1/1998 CNTT 
201008 Huỳnh Huy Hoàng CS01TT 26/1/1999 CNTT 
201009 Lê Hồng Khải CS01TT 11/2/1999 CNTT 
201010 Phan Nhật Duy Khanh CS01TT 20/5/1999 CNTT 
Select * 
From SINHVIEN 
Where month(Ngaysinh) = 1 
Select MaSV, HoSV, TenSV 
From SINHVIEN 
Where month(Ngaysinh) = 1 
(5) Lọc những record thỏa btđk , sử dụng hàm trong btđk 
(6) Lọc những record thỏa 
btđk và chỉ lấy 3 cột 
38 
Select MaSV, Hoten = HoSV +’ ‘ + TenSV 
From SINHVIEN 
Where month(Ngaysinh) = 1 
MaSV HoTen 
201003 Trần Phương Bằng 
201005 Trần Văn Diệm 
201007 Lâm Phước Hòa 
201008 Huỳnh Huy Hoàng 
(7) Nối dữ liệu trong 2 cột HoSV và TenSV thành một 
cột trong tập kết quả , và gán tên cột là HOTEN 
Select MaSV, HoSV +’ ‘ + TenSV as HOTEN 
From SINHVIEN 
Where month(Ngaysinh) = 1 
Hoặc 
Lop 
C10CK1 
C10DC1 
CS01TT 
(9) Loại bỏ những dòng trùng nhau trong tập dữ liệu trả về 
Select DISTINCT Lop 
From SINHVIEN 
Lop 
C10CK1 
C10CK1 
C10DC1 
C10DC1 
C10DC1 
CS01TT 
CS01TT 
CS01TT 
CS01TT 
CS01TT 
(8) Truy vấn dữ liệu từ table , tính toán , và tạo thành cột mới 
Select MaSV, Tuoi = 2020 – year(Ngaysinh) 
From SINHVIEN 
(10) Chỉ lấy n record đầu tiên trong tập dữ liệu trả về 
Select TOP 6 * 
From SINHVIEN 39 
Truy vấn dữ liệu 
căn bản 
• Biểu thức điều kiện trong mệnh đề WHERE 
– Là biểu thức boolean xác định dòng nào sẽ được rút trích 
– Sử dụng 
• Phép toán so sánh dữ liệu số : >, >=, , between  and 
• Phép toán so sánh chuỗi : LIKE , nối chuỗi +, ký hiệu đại diện % , _ 
• IS NULL, IS NOT NULL 
• Các phép toán so sánh tập hợp IN, NOT IN 
• ANY, ALL , EXISTS, NOT EXISTS dùng với subquery 
• Biểu thức boolean có thể là biểu thức phức => Dùng toán tử AND, 
OR nối các biểu thức con 
• Toán tử phủ định NOT : NOT LIKE, NOT between and 
– Sử dụng các hàm hỗ trợ bởi T-SQL để tính toán 
40 
Truy vấn dữ liệu 
căn bản 
Biểu thức điều kiện trong WHERE Công dụng 
Ngaysinh like ‘1998-01-21’ Lọc record có Ngaysinh là 21-01-1998 
Ngaysinh like ‘1999___-01’ Lọc record có Ngaysinh là ngày 1, năm 
1999 
year(ngaysinh) = 1999 AND day(ngaysinh) = 1 Lọc record có Ngaysinh là ngày 1, năm 
1999 
Ngaysinh IS NULL Loc record có Ngaysinh là NULL 
Year(ngaysinh) 1999 Loc record có Ngaysinh thỏa năm không là 
1999 
Year(ngaysinh) != 1999 
Loc record có Ngaysinh thỏa năm không là 
1999 
TenSV IN (‘hoa’, ‘khanh’) Loc record có TenSV là ‘hoa’ hoặc ‘khanh’ 
Ví dụ Biểu thức điều kiện trong mệnh đề WHERE 
41 
Truy vấn dữ liệu 
căn bản 
• Truy vấn dữ liệu từ nhiều table, dựa trên relationship 
giữa các table 
• Gồm 3 dạng kết nối 
– Inner join 
– Left outer join 
– Right outer join 
MaNganh TenNganh SoTC 
CS Computer science 150 
SE Software Engineering 220 
IS Information System 190 
IT Information Technology 200 
MaSV HoSV TenSV Lop MaNganh 
201001 Huỳnh Nhất Luận C10CK1 CS 
201002 Nguyễn Anh Tuấn C55CK1 CS 
201009 Lê Hồng Khải CS01TT DS 
201010 Phan Nhật Duy Khanh CS01TT DS 
42 
Select a.*, b.* 
From SINHVIEN a INNER JOIN NGANH b ON a.MaNganh = b.MaNganh 
MaNganh TenNganh SoTC 
CS Computer science 150 
SE Software Engineering 220 
IS Information System 190 
IT Information Technology 200 
MaSV HoSV TenSV Lop Manganh 
201001 Huỳnh Nhất Luận C10CK1 CS 
201002 Nguyễn Anh Tuấn C55CK1 CS 
201009 Lê Hồng Khải CS01TT DS 
201010 Phan Nhật Duy Khanh CS01TT DS 
MaSV HoSV TenSV Lop Manganh MaNganh TenNganh SoTC 
201001 Huỳnh Nhất Luận C10CK1 CS CS Computer science 150 
201002 Nguyễn Anh Tuấn C55CK1 CS CS Computer science 150 
Inner join 
Ứng với mỗi record của bảng 
bên