- Bài 1: SQL Server là gì? Đặc điểm và vai trò của nó
- Bài 2: Cách cài đặt và kết nối SQL Server
- Bài 3: Khởi tạo Database trong SQL Server
- Bài 4: Khởi tạo, xóa, sửa Table trong SQL Server
- Bài 5: Kiểu dữ liệu trong SQL Server
- Bài 6: Khóa chính trong SQL Server
- Bài 7: Khóa ngoại trong SQL Server
- Bài 8: Câu lệnh Insert, Update và Delete trong SQL Server
- Bài 9: Các function thông dụng trong SQL Server
- Bài 10: Truy vấn dữ liệu trong SQL Server (Phần 1)
- Bài 11: Truy vấn dữ liệu trong SQL Server (Phần 2)
- Bài 12: SQL Joins
Bài 11: Truy vấn dữ liệu trong SQL Server (Phần 2) - Học SQL Server cơ bản
Đăng bởi: Admin | Lượt xem: 3402 | Chuyên mục: SQL
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 thông qua các cột và thông tin cần trích xuất có thể thuộc một hoặc nhiều bảng.
Thao tác này được sử dụng rất nhiều trong các hệ thống phần mềm hoặc website, chẳng hạn khi các bạn đăng nhập vào facebook 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, các bạn chỉ cần copy và chạy đoạn mã sau trong SQL Server, chúng ta sẽ có một cơ sở dữ liệu để demo:
-- 1/ Tạo DB + Sử dụng DB
Create Database BKitSoftware
Go
Use BKitSoftware
Go
-- 2/ Tạo table + Khoá chính
create table GIAOVIEN
(
MAGV nchar(3),
HOTEN nvarchar(50),
LUONG float,
PHAI nchar(3),
NGSINH date,
DIACHI nchar(50),
GVQLCM nchar(3),
MABM nchar(4),
primary key (MAGV)
)
--Nhập data 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
--Cập nhật thêm dữ liệu cho bảng GIAOVIEN
update GIAOVIEN
set MABM = 'MMT'
where (MAGV = '001')
update GIAOVIEN
set MABM = 'HTTT'
where (MAGV = '002')
update GIAOVIEN
set MABM = 'HTTT'
where (MAGV = '003')
update GIAOVIEN
set MABM = 'VS'
where (MAGV = '004')
update GIAOVIEN
set MABM = N'VLĐT'
where (MAGV = '005')
update GIAOVIEN
set MABM = 'VS'
where (MAGV = '006')
update GIAOVIEN
set MABM = 'HPT'
where (MAGV = '007')
update GIAOVIEN
set MABM = 'HPT'
where (MAGV = '008')
update GIAOVIEN
set MABM = 'MMT'
where (MAGV = '009')
update GIAOVIEN
set MABM = 'HPT'
where (MAGV = '010')
GO
Ta có bảng GIAOVIEN như sau:
6. SQL Between
BETWEEN được dùng để lấy dữ liệu trong một 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 đến 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 sử dụng để so sánh một giá trị với các giá trị tương tự bởi sử dụng các toán tử wildcard. Có hai wildcard được sử dụng kết hợp với toán tử LIKE là:
- Ký hiệu phần trăm (%)
- Dấu gạch dưới (_)
Ký hiệu phần trăm biểu diễn 0, 1 hoặc nhiều ký tự. Ký tự dấu gạch dưới biểu diễn một số hoặc một 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ư sau:
SELECT * FROM GIAOVIEN WHERE HOTEN LIKE 'N%'
8. SQL Order by
Mệnh đề ORDER BY trong SQL được sử dụng để sắp xếp dữ liệu theo thứ tự tăng dần hoặc theo thứ tự giảm dần, trên một hoặc nhiều cột. Một số 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ơ bản của mệnh đề ORDER BY trong SQL như sau:
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 sử dụng kết hợp với lệnh SELECT để sắp xếp dữ liệu đồng nhất vào trong các nhóm.
Trong SQL, mệnh đề GROUP BY theo sau mệnh đề WHERE trong một 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 cho phép bạn chỉ định các đ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 các điều kiện vào các cột đã chọn, trong khi mệnh đề HAVING đưa ra các điều kiện đối với các nhóm được tạo bởi mệnh đề GROUP BY.
Mệnh đề WHERE đặt các điều kiện vào các cột đã chọn, trong khi mệnh đề HAVING đưa ra các điều kiện đối với các nhóm được tạo bởi 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ở lên, câu lệnh cần dùng sẽ là:
SELECT LUONG, COUNT(LUONG) FROM GIAOVIEN GROUP BY LUONG Having COUNT(LUONG) > 1;
Như vậy, thông 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 các bạn đã đọc.
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!
- Bài 1: SQL Server là gì? Đặc điểm và vai trò của nó
- Bài 2: Cách cài đặt và kết nối SQL Server
- Bài 3: Khởi tạo Database trong SQL Server
- Bài 4: Khởi tạo, xóa, sửa Table trong SQL Server
- Bài 5: Kiểu dữ liệu trong SQL Server
- Bài 6: Khóa chính trong SQL Server
- Bài 7: Khóa ngoại trong SQL Server
- Bài 8: Câu lệnh Insert, Update và Delete trong SQL Server
- Bài 9: Các function thông dụng trong SQL Server
- Bài 10: Truy vấn dữ liệu trong SQL Server (Phần 1)
- Bài 11: Truy vấn dữ liệu trong SQL Server (Phần 2)
- Bài 12: SQL Joins