Lệnh SELECT trong SQL Server
Trong bài viết này bạn sẽ được học cách sử dụng lệnh select trong SQL Server để thực hiện truy vấn trong một table, trường hợp truy vấn ở nhiều table thì sẽ được học ở bài khác.
1. Lệnh select trong SQL Server
Như bạn đã biết, dữ liệu sẽ được lưu trong table và mỗi table sẽ có nhiều cột thông tin khác nhau. Với nhu cầu chính của việc quản lý dữ liệu gồm 4 thao tác đó là: tìm kiếm, thêm, xóa và sửa thì lệnh select sẽ đáp ứng cho nhu cầu tìm kiếm.
Để tìm kiếm thì ta cần phải biết các thông tin như: tìm ở bảng nào, dữ liệu so sánh như thế nào, chọn ra các cột nào, ... Hãy xem CSDL mẫu dưới đây của bảng products
.
Bài viết này được đăng tại [free tuts .net]
Trước tiên bạn hãy xem cú pháp của lệnh select đã nhé.
SELECT select_list FROM schema_name.table_name;
Trong đó:
select_list
là tập hợp các column sẽ được chọn để hiển thị kết quả, các column được tách nhau bởi dấu phẩy.schema_name
là tên của lược đồ CSDL, như ở database mẫu thì ta có hai schema đó là: sales và production.table_name
là tên của bảng muốn tìm kiếm.
Về thứ tự thực hiện thì hệ thống sẽ chạy từ FROM trở xuống rồi mới chạy đến SELECT, mặc dù lệnh select được viết ở đầu câu.
2. Thực hành ví dụ với lệnh select trong SQL Server
Bây giờ ta sẽ truy vấn với bảng customers
trong database mẫu nhé. Bảng này có các column như sau:
Ví dụ 1: Hãy lấy danh sách tất cả khách hàng và chỉ hiển thị firstname và lastname.
Áp dụng cú pháp thì ta sẽ viết câu truy vấn như sau:
SELECT first_name, last_name FROM sales.customers;
Kết quả sẽ như sau:
Bảng kết quả này ta gọi là tập hợp kết quả được trả về từ lệnh select. Giả sử bạn muốn lấy thêm cột email nữa thì câu SQL lúc này sẽ là:
SELECT first_name, last_name, email FROM sales.customers;
Kết quả:
Ví dụ 2: Lấy danh sách khách hàng và hiển thị tất cả các thông tin có trong bảng.
Áp dụng ví dụ 1 thì ta sẽ lần lượt liệt kê từng column và cách nhau bởi dấu phẩy. Tuy nhiên có một cách khác đó là sử dụng dấu *
để thay thế cho trường hợp chọn tất cả các column.
SELECT * FROM sales.customers;
Kết quả như sau:
Dấu * rất tiện lợi trong trường hợp có quá nhiều column và bạn không thể nhớ hết tên column, hoặc viết ra thì quá dài dòng. Tuy nhiên khi làm thực tế bạn không nên lạm dụng dấu *
quá bởi như vậy hệ thống sẽ chạy rất nặng vì dữ liệu sẽ bị dư thừa. Ví dụ bạn xây dựng chức năng hiển thị da tên khách hàng thì chỉ cần viết select first_name
, last_name
là được rồi. Bạn cứ nghĩ nếu dữ liệu của bạn có 10GB thì khi chọn 1 phần nhỏ thôi sẽ nhẹ nhàng hơn là chọn cả 10GB.
3. Thêm điều kiện lọc với WHERE
Giả sử bạn cần lọc dữ liệu theo một điều kiện nào đó, ví dụ chọn những khách hàng đang sống tại Califorina (CA) thì ta sẽ viết câu truy vấn như sau:
SELECT * FROM sales.customers WHERE state = 'CA';
Chỉ có những dòng record nào có state = "CA"
thì mới được chọn vào kết quả trả về.
Điều này có nghĩa là khi bạn bổ sung lệnh WHERE thì chỉ có những dòng dữ liệu nào đáp ứng được lệnh điều kiện ở WHERE thì mới được chọn, đây là cách làm rất hay và rất quan trọng để bạn lọc dữ liệu trong thực tế, hầu như không thể thiếu.
Bạn có thể thêm nhiều điều kiện ở WHERE bằng cách sử dụng các toán tử như AND, OR. Ví dụ mình muốn lấy danh sách khách hàng sống tại CA và city là Encino thì câu SQL lúc này sẽ như sau:
SELECT * FROM sales.customers WHERE state = 'CA' AND CITY = 'Encino'
4. Sắp xếp kế quả trả về với ORDER BY
Đôi khi bạn muốn sắp xết kết quả trả về theo một quy luật tăng dần hoặc giảm dần thì hãy sử dụng lệnh ORDER BY.
Chúng ta có hai cách sắp xếp:
- DESC là sắp xếp giảm dần theo bảng mã ASCII
- ASC là sắp xếp tăng dần theo bảng mã ASCII
Ví dụ: Hãy lấy danh sách khách hàng đang sống ở CA và sắp xếp tên khách hàng theo bảng chữ cái.
SELECT * FROM sales.customers WHERE state = 'CA' ORDER BY first_name ASC;
Kết quả:
Mặc định nếu bạn không chỉ định ASC hay DESC thì SQL Server sẽ lấy ASC.
Trên là những kiến thức căn bản về lệnh select trong SQL Server, đây là lệnh rất quan trọng và được sư dụng rất nhiều trong việc truy xuất và tìm kiếm dữ liệu.