Khả năng của lệnh SELECT
- Chọn cột
- Chọn dòng
- Kết bảng
Lệnh SELECT cơ bản
- SELECT : xác định những cột gì
- FROM : xác định bảng nào
SELECT *|{[DISTINCT] cot|bieu_thuc [bi_danh],...}
FROM bang
Một số lưu ý khi viết câu lệnh SQL
- Câu lệnh SQL không phân biệt chữ hoa, chữ thường.
- Câu lệnh SQL có thể viết trên 1 hoặc nhiều dòng.
- Các từ khóa không được viết tắt hoặc tách ra thành nhiều dòng.
- Các mệnh đề khác nhau nên đặt trên những dòng khác nhau
Các phép toán của biểu thức
Tạo các biểu thức với các kiểu dữ liệu số và ngày bằng các phép toán số học
- + Cộng
- - Trừ
- * Nhân
- / Chia
Sử dụng các phép toán số học
SELECT tennv, mucluong, mucluong + 300
FROM qlns.nhanvien
Khái niệm giá trị NULL
- NULL là một giá trị chưa được xác định
- NULL khác với zero hoặc giá trị rỗng
- Các biểu thức số học có chứa giá trị NULL sẽ cho kết quả NULL
SELECT tennv,mucluong,phucap,12*(mucluong+phucap)
FROM qlns.nhanvien
Khái niệm bí danh của cột (Alias)
- Sự đổi tên tiêu đề cho cột
- Rất hữu ích cho các biểu thức tính toán
- Xuất hiện ngay sau tên cột hoặc biểu thức, có thể thêm từ khóa AS giữa tên cột và bí danh
- Yêu cầu phải đặt trong dấu nháy kép hoặc móc vuông nếu có chứa khoảng trắng, ký tự đặc biệt hoặc sử dụng chữ hoa
Sử dụng các bí danh cột
SELECT tennv AS ten, phucap pc
FROM qlns.nhanvien
SELECT tennv [Ten], mucluong*12 "Luong Mot Nam"
FROM qlns.nhanvien
Loại bỏ những dòng trùng nhau
SELECT maphong
FROM qlns.nhanvien
Theo mặc định thì kết quả hiểu thị của câu lệnh truy vấn là tất cả các dòng, bao gồm cả những dòng trùng nhau
SELECT DISTINCT maphong
FROM qlns.nhanvien
Loại bỏ những dòng trùng nhau
Chỉ thể hiện một số dòng Top
SELECT [TOP (expression) [PERCENT][ WITH TIES ]]
[danh_sach_cot]
FROM ...
Ví dụ : Cho biết tên và mức lương 3 nhân viên đầu tiên
SELECT TOP 3 tennv, mucluong
FROM qlns.nhanvien
Giới hạn các dòng trả về Where
Mệnh đề WHERE theo sau mệnh đề FROM.
SELECT *|{[DISTINCT] cot|bieu_thuc [bi_danh],...}
FROM bang
[WHERE dieu_kien]
Sử dụng mệnh đề WHERE
SELECT manhanvien,honv,tennv,maphong,macongviec,ngayvaolam
FROM qlns.nhanvien
WHERE maphong = 20
Bài tập
- Hiển thị danh sách các thông tin trong bảng CTPNHAP có thêm cột thành tiền biết rằng Thành tiền = SLNhap * DgNhap
- Hiển thị danh sách các nhà cung cấp trong bảng NHACC có cột địa chỉ ở quận 1 HCM, sắp xếp theo thứ tự họ tên tăng dần và số điện thoại giảm dần
- Hiển thị danh sách các phiếu xuất có ngày xuất nằm trong khoảng [1/1/2009, 31/1/2009]
- Hiển thị danh sách các chi tiết phiếu xuất có thêm các cột tên vật tư, ngày xuất. Lọc theo số lượng xuất lớn hơn 5 và ngày xuất trong tháng 1/2009
- Hiển thị danh sách các nhà cung cấp gồm các thông tin sau: mã nhà cung cấp, tên nhà cung cấp đã có đặt hàng. Chú ý: không được trùng lắp dữ liệu
- Hiển thị danh sách các đơn đặt hàng gần đây nhất trong bảng DONDH
- Hiển thị danh sách các nhà cung cấp mà chưa có đơn đặt hàng
-- Chú ý : select * là lấy tất cả các cột trong bảng
-- Câu 1
SELECT *,(slnhap * dgnhap) AS 'Thành tiền'
FROM ctpnhap
-- Câu 2
SELECT *
FROM nhacc
WHERE nhacc.diachi LIKE N'%Q1 HCM%'
ORDER BY nhacc.tennhacc ASC,nhacc.dienthoai DESC
-- Câu 3
-- đinh dạng ngày là : MM/dd/yyyy
SELECT *
FROM pxuat
WHERE pxuat.ngayxuat BETWEEN '1/1/2009' AND '1/31/2009'
-- Câu 4
SELECT cx.*,vt.tenvtu,px.ngayxuat
FROM ctpxuat AS cx
INNER JOIN vattu AS vt ON cx.mavtu = vt.mavtu
INNER JOIN pxuat AS px ON cx.sopx = px.sopx
WHERE cx.slxuat > 5 AND MONTH(px.ngayxuat) = 1
-- Câu 5
SELECT DISTINCT cc.manhacc,cc.tennhacc
FROM nhacc AS cc
INNER JOIN dondh AS dh ON cc.manhacc = dh.manhacc
-- Câu 6
SELECT *
FROM dondh AS dh
ORDER BY dh.ngaydh DESC
-- Câu 7
SELECT *
FROM nhacc AS cc
WHERE cc.manhacc NOT IN (SELECT dh.manhacc FROM dondh AS dh)