Professional Documents
Culture Documents
Tài liệu thực hành cơ sở dữ liệu 1
Tài liệu thực hành cơ sở dữ liệu 1
Tài liệu thực hành cơ sở dữ liệu 1
Cơ bản về sql
SQL không phân biệt hoa thường. Ví dụ: cột hay bảng đặt tên thường cũng có thể gọi hay thao tác nếu
dùng chữ hoa, chỉ phân biệt kí tự không phân biệt hoa thường cả các câu lệnh của sql cũng vậy
Và đừng quên là vận dụng các kiến thức lý thuyết của phần MÔ HÌNH QUAN HỆ và ĐẠI SỐ
QUAN HỆ để hiểu và học lập trình SQL nhanh hơn.
Xóa bảng
DROP TABLE Person
);
);
CHECK (GiaBan>0);
DROP NgaySinh;
Lấy các hàng từ bảng Contest, chỉ lấy hàng thoả mãn điều kiện giá trị ở cột ContestDate lớn
hơn hặc bằng '05/25/2006'
SELECT * FROM Contest
Lấy dữ liệu của tất cả các cột trong bảng Persons mà có giá trị ở cột FirstName là
Peter và LastName là JackSon
WHERE FirstName='Peter'
AND LastName='Jackson;
Kiểm tra có kí tự không quan tâm đến nằm ở đâu trong cột
Select min(LUONG),
max(LUONG)
from NHANVIEN;
--b. Hiển thị 10 khách hàng đầu tiên trong bảng khách hàng bao gồm các cột: mã
--khách hàng, họ và tên, email, số điện thoại
SELECT TOP 10* FROM KHACHHANG;
--d. Hiển thị danh sách khách hàng có tên bắt đầu bởi kí tự ‘H’ gồm các cột:
--maKhachHang, hoVaTen, diaChi. Trong đó cột hoVaTen ghép từ 2 cột
--hoVaTenLot và Ten
select makhachhang, hovatenlot + ' ' +ten as 'Ho va ten', diachi
from KHACHHANG
where ten like 'H%';
--g. Hiển thị danh sách các hoá hơn có trạng thái là chưa thanh toán và ngày mua hàng
--trong năm 2016
select * from HOADON
where YEAR(ngaymuahang)=2016
and trangThai like N'%chưa thanh toán%';
Hiển thị các sản phẩm với điều kiện 100 <= soLuong <= 500
SELECT * FROM SANPHAM
WHERE soLuong >= 100
AND soLuong <= 500 ;
Hiển thị tất cả hóa đơn có năm mua bằng 2016 và tháng 12 trong trạng thái chưa thanh toán
SELECT * FROM HOADON
WHERE YEAR(ngayMuaHang)=2016
and MONTH(ngayMuaHang)=12
and TRANGTHAI LIKE N'%Chưa thanh toán%';
Hiển thị tất cả hóa đơn có mã khách hàng là KH001 hoặc KH002 hoặc KH003
SELECT * FROM HOADON
WHERE maKhachHang LIKE 'KH001'
OR maKhachHang LIKE 'KH002'
OR maKhachHang LIKE 'KH003';
Hiển thị tất cả hóa đơn mua trong tháng 12 nằm 2016 và trong trạng thái chưa thanh toán
WHERE YEAR(ngayMuaHang)=2016
and MONTH(ngayMuaHang)=12
Hiển thị số lượng sản phẩm từ bảng hóa đơn chi tiết và sắp xếp theo mã hóa đơn
Hiển thị hóa đơn, đếm số loại sản phẩm từ bảng hóa đơn chi tiết và sắp xếp theo mã hóa đơn
nếu tổng mã sản phẩm lớn hơn 1
GROUP BY maHoaDon
HAVING COUNT(MASANPHAM)>=2;
Hiển thị các hóa đơn và sắp xếp theo ngày giảm dần
SELECT maHoaDon,ngayMuaHang,maKhachHang
Hiển thị tổng hóa đơn đang trong trạng thái chưa thanh toán vfa sắp xếp theo mã khách hàng
FROM HOADON WHERE TRANGTHAI LIKE N'chưa thanh toán' GROUP BY maKhachHang ;
Liệt kê họ tên và địa chỉ của tất các các phi công từ bảng PHICONG
SELECT hoten, dchi
FROM PHICONG ;
1.2. SELECT *
Dùng để thể hiện thị tất cả dữ liệu của một bảng bất kỳ
SELECT * FROM PHICONG;
Hiện thị họ tên phi công, loại bỏ các dòng trùng nhau
SELECT DISTINCT hoten FROM PHICONG;
Các điều kiện chọn chỉ có thể đặt sau WHERE hoặc HAVING (xem phần GROUP BY)
Các phép toán so sánh với các toán tử: <=, >, >=, != (<>)
Các toán tử AND, OR và NOT với thứ tự ưu tiên NOT, AND, OR
Các toán tử IN, LIKE, BETWEEN, IS NULL ,..
2.2. Toán tử IN
Mệnh đề IN cho phép chỉ ra nhiều giá trị trong mệnh đề WHERE
Cú pháp:
SELECT <tên cột> [ ,…]
FROM <tên bảng>
WHERE <tên cột> IN (giá trị 1, giá trị 2, …, giá trị n);
Tìm họ tên các phi công ở các nước Anh, Pháp hoặc Úc.
SELECT hoten
FROM PHICONG
WHERE nuoc IN ('Phap','Anh','Uc');
Cú pháp:
SELECT <tên cột> [ ,…]
FROM <tên bảng>
WHERE <tên cột> BETWEEN <giá trị 1> AND <giá trị 2>;
Tìm thông tin tất cả các chuyến bay từ 10000 km đến 15000 km
SELECT *
FROM CHUYENBAY
WHERE khoangcach BETWEEN 10000 AND 15000;
Cú pháp
SELECT <tên cột> [ ,…]
FROM <tên bảng>
WHERE <tên cột> LIKE <mẫu>;
%: Không hoặc nhiều ký tự
Ngược lại, bạn có thể tìm kết quả ngược lại với LIKE bằng NOT LIKE
Tìm tên phi công không bắt đầu bằng chữ S
SELECT hoten
FROM PHICONG
WHERE hoten NOT LIKE 'S%';
Các hàm chuỗi: LEN, UPPER, LOWER, LEFT, RIGHT, LTRIM, RTRIM, …
Các hàm ngày: GETDATE, DAY, MONTH, YEAR, DATEDIFF, ISDATE, ...
Hàm AVG (Tính giá trị trung bình) = tổng các giá trị không NULL / số các giá trị không NULL
Các hàm MIN, MAX, COUNT có thể sử dụng cho CHAR, VARCHAR, DATE và các kiểu dữ
liệu số
Order by
sắp xếp dữ liệu theo thứ tự tăng dần hoặc giảm dần, dựa trên một hoặc nhiều cột. Một số
cơ sở dữ liệu sắp xếp các kết quả truy vấn theo thứ tự tăng dần theo mặc định. Lệnh ASC
được sử dụng để sắp xếp tăng dần và DESC được sử dụng để sắp xếp giảm dần.
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
Khối lệnh sau đây sẽ sắp xếp kết quả theo thứ tự tăng dần bởi các trường NAME và SALARY:
SELECT * FROM CUSTOMERS
ORDER BY NAME, SALARY;
Khối lệnh sau sẽ sắp xếp kết quả theo thứ tự giảm dần bởi trường NAME.
SELECT * FROM CUSTOMERS
ORDER BY NAME DESC;
Group by
để sắp xếp dữ liệu giống nhau thành các nhóm. Mệnh đề GROUP BY này tuân theo
mệnh đề WHERE trong câu lệnh SELECT và đứng trước mệnh đề ORDER BY.