Phần 11: Truy vấn dữ liệu trong SQL Server (Phần 2) – Học SQL Server Basic

Phần 11: Truy vấn dữ liệu trong SQL Server (Phần 2)                        – Học SQL Server Basic
Truy vấn dữ liệu trong SQL Server là thao tác trích xuất thông tin được lưu trữ trong các Table. Thông tin được truy xuất qua các cột và thông tin cần trích xuất có thể thuộc 1 hay nhiều bảng.
Thao tác này được dùng nhiều trong các hệ thống phần mềm hay web site, ví dụ khi anh em đăng nhập vào fb thì hệ thống sẽ thực hiện truy vấn dữ liệu để kiểm tra tích hợp lệ của tài khoản đăng nhập, ….
Ta thao tác các ví dụ trên cơ sở dữ liệu sau, anh em chỉ việc copy và chạy đoạn mã sau trong SQL Server, ta sẽ có 1 cơ sở dữ liệu để demo:
-- 1/ Tạo DB + Sử dụng DB
	Create Database BKitSoftware
	Go
	Use BKitSoftware
	Go
	
-- 2/ Tạo desk + Khoá chính
	create desk GIAOVIEN
	(
		MAGV nchar(3),
		HOTEN nvarchar(50),
		LUONG float,
		PHAI nchar(3),
		NGSINH date,
		DIACHI nchar(50),
		GVQLCM nchar(3),
		MABM nchar(4),
		main key (MAGV)
	)

--Nhập knowledge cho bảng GIAOVIEN
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI)
	values ('001',N'Nguyễn Hoài An',2000.0,N'Nam','1973-02-15',N'25/3 Lạc Long Quân, Q.10,TP HCM')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI)
	values ('002',N'Trần Trà Hương',2500.0,N'Nữ','1960-06-20',N'125 Trần Hưng Đạo, Q.1, TP HCM')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI,GVQLCM)
	values ('003',N'Nguyễn Ngọc Ánh',2200.0,N'Nữ','1975-05-11',N'12/21 Võ Văn Ngân Thủ Đức, TP HCM',N'002')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI)
	values ('004',N'Trương Nam Sơn',2300.0,N'Nam','1959-06-20',N'215 Lý Thường Kiệt,TP Biên Hòa')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI)
	values ('005',N'Lý Hoàng Hà',2500.0,N'Nam','1954-10-23',N'22/5 Nguyễn Xí, Q.Bình Thạnh, TP HCM')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI,GVQLCM)
	values ('006',N'Trần Bạch Tuyết',1500.0,N'Nữ','1980-05-20',N'127 Hùng Vương, TP Mỹ Tho',N'004')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI)
	values ('007',N'Nguyễn An Trung',2100.0,N'Nam','1976-06-05',N'234 3/2, TP Biên Hòa')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI,GVQLCM)
	values ('008',N'Trần Trung Hiếu',1800.0,N'Nam','1977-08-06',N'22/11 Lý Thường Kiệt,TP Mỹ Tho',N'007')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI,GVQLCM)
	values ('009',N'Trần Hoàng nam',2000.0,N'Nam','1975-11-22',N'234 Trấn Não,An Phú, TP HCM',N'001')
	Insert Into GIAOVIEN(MAGV,HOTEN,LUONG,PHAI,NGSINH,DIACHI,GVQLCM)
	values ('010',N'Phạm Nam Thanh',1500.0,N'Nam','1980-12-12',N'221 Hùng Vương,Q.5, TP HCM',N'007')
GO

--Update thêm dữ liệu cho bảng GIAOVIEN
	replace GIAOVIEN
	set MABM = 'MMT'
	the place (MAGV = '001')
	replace GIAOVIEN
	set MABM = 'HTTT'
	the place (MAGV = '002')
	replace GIAOVIEN
	set MABM = 'HTTT'
	the place (MAGV = '003')
	replace GIAOVIEN
	set MABM = 'VS'
	the place (MAGV = '004')
	replace GIAOVIEN
	set MABM = N'VLĐT'
	the place (MAGV = '005')
	replace GIAOVIEN
	set MABM = 'VS'
	the place (MAGV = '006')
	replace GIAOVIEN
	set MABM = 'HPT'
	the place (MAGV = '007')
	replace GIAOVIEN
	set MABM = 'HPT'
	the place (MAGV = '008')
	replace GIAOVIEN
	set MABM = 'MMT'
	the place (MAGV = '009')
	replace GIAOVIEN
	set MABM = 'HPT'
	the place (MAGV = '010')
	GO
Ta có bảng GIAOVIEN như dưới đây:

6. SQL Between

BETWEEN được sử dụng để lấy dữ liệu trong 1 khoảng.
Cú pháp:
BETWEEN value1 AND value2;
Ví dụ, ta muốn lấy thông tin của các giáo viên có mức lương nằm trong khoảng từ 2000 tới 3000, ta sử dụng câu lệnh sau:
SELECT * FROM GIAOVIEN WHERE LUONG BETWEEN 2000 AND 3000

7. SQL Like

Mệnh đề LIKE trong SQL được dùng để so sánh 1 giá trị với những giá trị giống nhau do sử dụng các toán tử wildcard. Có 2 wildcard được dùng kết hợp cùng với toán tử LIKE là:
  1. Ký hiệu phần trăm (%)
  2. Dấu gạch dưới (_)
Ký hiệu phần trăm biểu diễn 0, 1 hay nhiều ký tự. Ký tự dấu gạch dưới biểu diễn những hay 1 ký tự đơn. Cú pháp:
SELECT FROM ten_bang
WHERE column LIKE 'XXXX%'

hoac 

SELECT FROM ten_bang
WHERE column LIKE '%XXXX%'

hoac

SELECT FROM ten_bang
WHERE column LIKE 'XXXX_'

hoac

SELECT FROM ten_bang
WHERE column LIKE '_XXXX'

hoac

SELECT FROM ten_bang
WHERE column LIKE '_XXXX_'
Ví dụ, ta muốn lấy thông tin của những giáo viên có họ bắt đầu bằng chữ N, câu lệnh như dưới đây:
SELECT * FROM GIAOVIEN WHERE HOTEN LIKE 'N%'

8. SQL Order by

Mệnh đề ORDER BY trong SQL được dùng để sắp xếp dữ liệu theo thứ tự tăng dần hay theo thứ tự giảm dần, trên 1 hay nhiều cột. Những Database sắp xếp kết quả truy vấn theo thứ tự tăng dần theo mặc định.
Cú pháp căn bản của mệnh đề ORDER BY trong SQL như dưới đây:
SELECT danh_sach_cot 
FROM ten_bang 
[WHERE dieu_kien] 
[ORDER BY cot1, cot2, .. cotN] [ASC | DESC];
Ví dụ, sắp xếp giáo viên theo mức lương giảm dần:
SELECT * FROM GIAOVIEN ORDER BY LUONG DESC

9. SQL Group by

Mệnh đề GROUP BY trong SQL được dùng kết hợp cùng với lệnh SELECT để sắp xếp dữ liệu đồng nhất vào trong những nhóm.
Trong SQL, mệnh đề GROUP BY theo sau mệnh đề WHERE trong 1 lệnh SELECT và ở trước mệnh đề ORDER BY.
Cú pháp:
SELECT cot1, cot2
FROM ten_bang
WHERE [ dieu_kien ]
GROUP BY cot1, cot2
ORDER BY cot1, cot2
Ví du, ta cần tính xem với mỗi mức lương thì có bao nhiêu người,
SELECT LUONG, COUNT(LUONG) FROM GIAOVIEN GROUP BY LUONG

10. SQL Having

Mệnh đề HAVING giúp bạn chỉ định những điều kiện lọc kết quả nhóm nào sẽ xuất hiện trong kết quả cuối cùng.
Mệnh đề WHERE đặt những điều kiện vào các cột chọn, trong khi mệnh đề HAVING đưa ra những điều kiện đối với những nhóm được tạo do mệnh đề GROUP BY.
Cú pháp:
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
Ví dụ, ta cần tính số lượng người với mỗi mức lương, nhưng chỉ hiển thị những mức lương có từ 2 người trở đi, câu lệnh cần dùng sẽ là:
SELECT LUONG, COUNT(LUONG) FROM GIAOVIEN GROUP BY LUONG Having COUNT(LUONG) > 1;
Như thế, qua bài học này, mình đã giới thiệu phần còn lại trong bài Truy vấn dữ liệu trong SQL Server. Cảm ơn anh em đã đọc.

admin

Leave a Reply

Your email address will not be published. Required fields are marked *