Truy vấn dữ liệu (Select)
SELECT [DISTINCT]|Columns_list|Expression_list|* FROM <Tables_list> WHERE <Conditions> GROUP BY <Columns> HAVING <Conditions_for_group> ORDER BY [ACS| DESC] Trong đó: Sau SELECT : Các thông tin cần đưa ra, đó chính là danh ...
SELECT [DISTINCT]|Columns_list|Expression_list|* FROM <Tables_list> WHERE <Conditions> GROUP BY <Columns> HAVING <Conditions_for_group> ORDER BY [ACS| DESC]
Trong đó:
- Sau
SELECT
: Các thông tin cần đưa ra, đó chính là danh sách các thuộc tính - Sau
FROM
: Danh sách các tên bảng, từ đó thông tin được lấy ra. - Sau
WHERE
: Các biểu thức logic, chỉ ra thông tin được lấy ra từ hàm nào hoặc điều kiện nối giữa các bảng. - Sau
GROUP BY
: Các cột mà trong đó được tính theo từng nhóm. - Sau
HAVING
: Biểu thức logic chỉ ra thông tin được lấy ra từ nhóm nào. - Sau
ORDER BY
: Chỉ ra các cột mà trong đó thông tin được sắp xếp theo thứ tự.ASC
: thông tin được sắp xếp theo chiều tăng dần (ASCendent)DESC
: thông tin được sắp xếp theo chiều giảm dần(DESCendent)
Xét bảng: NHANVIEN
NHANVIEN | ||||
MaNV | HoTen | CongViec | Luong | MaDV |
NV001 | Phạm Thị Nhàn | Thư ký | 500 | 0001 |
NV002 | Hoàng Thanh Vân | Giáo viên | 600 | 0001 |
NV003 | Hoàng Thị Lan | Giáo viên | 200 | 0002 |
NV004 | Đỗ Trung Dũng | Thư ký | 700 | 0003 |
... | ... | .... | ... | ... |
Đưa tất cả các cột
SELECT * FROM NHANVIEN
Kết quả: Toàn bộ bảng trên.
Đưa một số các cột
SELECT Hoten, Luong FROM NHANVIEN
Kết quả
sl_NV_some_col | |
Hoten | Luong |
Phạm Thị Nhàn | 500 |
Hoàng Thanh Vân | 600 |
Hoàng Thị Lan | 200 |
Đỗ Trung Dũng | 700 |
Tránh các giá trị trùng lặp (DISTINCT)
SELECT DISTINCT Congviec FROM NHANVIEN
Kết quả: - Nếu không có lệnh
DISTINCT:
Congviec |
Thư ký |
Giáo viên |
Giáo viên |
Thư ký |
và có
DISTINCT
Congviec |
Giáo viên |
Thư ký |
Đưa ra các giá trị của các biểu thức
SELECT Hoten, Luong*12 FROM NHANVIEN
Kết quả
sl_bieuthuc | |
Hoten | Expr1001 |
Phạm Thị Nhàn | 6000 |
Hoàng Thanh Vân | 7200 |
Hoàng Thị Lan | 2400 |
Đỗ Trung Dũng | 8400 |
Sử dụng bí danh cột
SELECT Hoten, Luong*12 AS Luongnam FROM NHANVIEN
Kết quả
Hoten | LuongNam |
Phạm Thị Nhàn | 6000 |
Hoàng Thanh Vân | 7200 |
Hoàng Thị Lan | 2400 |
Đỗ Trung Dũng | 8400 |
Sắp xếp thứ tự (ORDER BY)
SELECT Hoten, Luong FROM NHANVIEN ORDER BY Luong [ASC/ DESC]
Kết quả
Hoten | Luong |
Hoàng Thị Lan | 200 |
Phạm Thị Nhàn | 500 |
Hoàng Thanh Vân | 600 |
Đỗ Trung Dũng | 700 |
- Trong đó
ASC
(ascendent) là tăng dần,DESC
(descendent) là giảm dần. - Nếu để giá trị mặc định thì sẽ sắp xếp theo chiều tăng dần.
Lệnh có dạng
SELECT [DISTINCT]|Columns_list|Expression_list|* FROM <Tables_list> WHERE <Conditions>
Điều kiện sau mệnh để
Wherelà một biểu thức lôgic, sử dụng các phép toán sau:
Sử dụng các phép so sánh
= | Toán tử bằng hay tương đương |
!= | Toán tử khác hay không tương đương |
> | Toán tử lớn hơn |
< | Toán tử nhỏ hơn |
>= | Toán tử lớn hơn hoặc bằng |
<= | Toán tử nhỏ hơn hoặc bằng |
Hoten | Luong |
Phạm Thị Nhàn | 500 |
Hoàng Thanh Vân | 600 |
Đỗ Trung Dũng | 700 |
Sử dụng các phép logic: AND, OR, NOT
SELECT HoTen, Luong FROM NHANVIEN WHERE (Luong>300) AND (Congviec='Giáo viên')
Kết quả:
HoTen | Luong |
Hoàng Thanh Vân | 600 |
Phân tích ví dụ sau
SESELECT HoTen, Luong FROM NHANVIEN WHERE (((Luong)>400) AND (Not(CongViec)=('Thư ký') ) OR (Congviec=('Thư ký' ) ))
Kết quả
HoTen | Luong |
Phạm Thị Nhàn | 500 |
Hoàng Thanh Vân | 600 |
Đỗ Trung Dũng | 700 |
Các toán tử của SQL
- [NOT] BETWEEN x AND y: [Không] nằm giữa giá trị X và Y
- IN (danh sách): thuộc bất kỳ giá trị nào trong danh sách
- x [NOT] LIKE y: Đúng nếu x [không] giống khung mẫu y. Các ký tự dùng trong khuôn mẫu: Dấu gạch dưới ( _ ) : Chỉ một ký tự bất kỳ Dấu phần trăm ( % ) : Chỉ một nhóm ký tự bất kỳ
- IS [NOT] NULL: kiểm tra giá trị rỗng
- EXISTS: Trả về TRUE nếu có tồn tại.
- Phép BETWEEN … AND …
SELECT HoTen, Luong FROM NHANVIEN WHERE Luong BETWEEN 300 AND 600
Kết quả
HoTen | Luong |
Phạm Thị Nhàn | 500 |
Hoàng Thanh Vân | 600 |
- Phép IN ( Một tập hợp)
SELECT HoTen, Luong FROM NHANVIEN WHERE Luong IN (200,500,600)
Kết quả
HoTen | Luong |
Phạm Thị Nhàn | 500 |
Hoàng Thanh Vân | 600 |
Hoàng Thị Lan | 200 |
- Phép LIKE
- Ký tự thay thế ‘%’ đại diện cho một nhóm các ký tự chưa biết (trong Access là: *).
- Ký tự thay thế ‘_’ đại diện cho một ký tự chưa biết (trong Access là:?).
SELECT HoTen, Congviec FROM NHANVIEN WHERE Hoten LIKE 'Hoàng*'
Kết quả
HoTen | Congviec |
Hoàng Thanh Vân | Giáo viên |
Hoàng Thị Lan | Giáo viên |
SELECT HoTen, Congviec FROM NHANVIEN WHERE Hoten LIKE 'Hoàng Thanh Vân'
- Phép IS [NOT] NULL
SELECT * FROM NHANVIEN WHERE Diachi IS NULL
Các HQTCSDL đưa ra các hàm khác nhau, vì thế khi làm việc với HQTCSDL nào chúng ta nên tìm hiểu các hàm và cách sử dụng chúng đối với HQTCSDL đó. Sau đây là một số các loại hàm thường dùng.
Hàm số học
Đầu vào và đầu ra là các giá trị kiểu số.
ROUND(n[,m]): Cho giá trị làm tròn của n (đến cấp m, mặc nhiên m=0)
TRUNC(n[,m]): Cho giá trị n lấy m chữ số tính từ chấm thập phân.
CEIL(n): Cho số nguyên nhỏ nhất lớn hơn hoặc bằng n.
FLOOR(n): Cho số nguyên lớn nhất bằng hoặc nhỏ hơn n.
POWER(m,n): Cho lũy thừa bậc n của m.
EXP(n): Cho giá trị của en
SQRT(n): Cho căn bậc 2 của n, n>=0
SIGN(n): Cho dấu của n.
n<0 có SIGN(n)= -1
n=0 có SIGN(n)= 0
n>0 có SIGN(n)= 1
ABS(n): Cho giá trị tuyệt đối
MOD(m,n): Cho phần dư của phép chia m cho n