Thứ Ba, 15 tháng 3, 2022

Lệnh SELECT trong SQL Server

Bài hướng dẫn này sẽ giúp bạn dùng câu lệnh SELECT trong SQL Server (T-SQL) với cú pháp và các ví dụ.

SELECT là lệnh được dùng để lấy kết quả từ một hoặc nhiều bảng trong cơ sở dữ liệu của SQL Server.

Cú pháp lệnh SELECT

Ở dạng đơn giản, cú pháp của lệnh SELECT như sau:

SELECT biu thc
 FROM bng
 [WHERE “điu kin”];

Ở dạng đầy đủ, cú pháp của lệnh SELECT trong SQL Server sẽ là:

SELECT [ ALL | DISTINCT ]
[ TOP (gia_tri_dau) [ PERCENT ] [ WITH TIES ] ]
Biu thc
FROM bng
[WHERE “điu kin”]
[GROUP BY biu thc”]
[HAVING “điu kin”]
[ORDER BY biu thc [ ASC | DESC ]];

Tên biến hoặc giá trị biến:

ALL: Tùy chọn, trả lại tất cả các hàng phù hợp.

DISTINCT: Tùy chọn. Loại bỏ tất cả các giá trị trùng lặp khỏi bộ kết quả.

TOP (gia_tri_dau): Tùy chọn. Nếu chỉ định cụ thể sẽ trả về những giá trị đầu trong bộ kết quả dựa trên gia_tri_dau đã chon. Ví dụ TOP(10) sẽ trả về 10 hàng đầu tiên trong bộ kết quả.

PERCENT: Tùy chọn. Nếu chỉ định cụ thể thì các hàng đầu tiên dựa theo phần trăm trên bộ kết quả (chỉ định bằng gia_tri_dau). Ví dụ TOP(10) PERCENT sẽ trả về top 10% kết quả đầu tiên trong bộ kết quả.

WITH TIES: Tùy chọn. Nếu chỉ định cụ thể thì các hàng cố định ở cuối trong kết quả có giới hạn sẽ được trả về. Điều này có thể khiến cho số hàng trả về nhiều hơn biến TOP cho phép.

Biểu thức: Cột hay giá trị tính toán mà bạn muốn lấy về. Dùng * nếu muốn lấy tất cả các cột.

Bảng: Bảng mà bạn muốn lấy kết quả về. Phải có ít nhất 1 bảng được liệt kê trong lệnh FROM.

WHERE “điều kiện”: Tùy chọn. Điều kiện mà kết quả trả về phải đáp ứng được.

GROUP BY “biểu thức”: Tùy chọn. Thu thập dữ liệu từ nhiều bản ghi và nhóm kết quả theo một hoặc nhiều cột.

HAVING “điều kiện”: Tùy chọn. Dùng kết hợp với GROUP BY để giới hạn nhóm các hàng trả về khi điều kiện được đáp ứng là TRUE.

ORDER BY “biểu thức”: Tùy chọn. Được dùng để lọc bộ kết quả. ASC sẽ lọc theo thứ tự tăng dần và DESC sẽ lọc theo thứ tự giảm dần.

Ví dụ về SELECT trong SQL Server

Giả sử ta có bảng dữ liệu Quantrimang.com như sau:


+-------------+--------------+-------------+-------+
|IDChuyenmuc  |Muccon        |Chuyenmuclon |Sobai  |
+-------------+--------------+-------------+-------+
|    1        |SQL Server    |Lap trinh    |101    |
|    2        |Facebook      |Mang xa hoi  |152    |
|    3        |Python        |Lap trinh    |111    |
|    4        |JavaScript    |Lap trinh    |122    |
|    5        |Chrome        |Web          |94     |
|    6        |Instagram     |Mang xa hoi  |165    |
+-------------+--------------+-------------+-------+

Ví dụ dùng SELECT chọn tất cả các trường trong bảng

SELECT * FROM [dbaviet.vn]
  WHERE Sobai > 111
  ORDER BY Sobai ASC;

Trong ví dụ này, * được dùng để cho biết sẽ chọn tất cả các trường có Sobai lớn hơn 111 trong bảng Quantrimang.com. Bộ kết quả được sắp xếp theo thứ tự tăng dần của Sobai.


+-------------+--------------+-------------+-------+
|IDChuyenmuc  |Muccon        |Chuyenmuclon |Sobai  |
+-------------+--------------+-------------+-------+
|    4        |JavaScript    |Lap trinh    |122    |
|    2        |Facebook      |Mang xa hoi  |152    |
|    6        |Instagram     |Mang xa hoi  |165    |
+-------------+--------------+-------------+-------+

Ví dụ dùng SELECR chọn một số trường trong bảng

SELECT IDChuyenmuc, Chuyenmuclon, Sobai
  FROM [Quantrimang.com]
  WHERE IDChuyenmuc > 2
  AND Chuyenmuclon = 'Lap trinh'
  Order By Sobai DESC;

Ở ví dụ nói trên, kết quả trả về sẽ chỉ gồm có IDChuyenmuc, Chuyenmuclon, Sobai  với IDChuyenmuc lớn hơn 2 và Chuyenmuclon là 'Lap trinh'. Kết quả trả về được sắp xếp theo Sobai giảm dần như dưới đây:


+-------------+-------------+-------+
|IDChuyenmuc  |Chuyenmuclon |Sobai  |
+-------------+-------------+-------+
|    4        |Lap trinh    |122    |
|    3        |Lap trinh    |111    |
+-------------+-------------+-------+

Ví dụ dung SELECT chọn từ nhiều bảng

Để thực hiện ví dụ này, ta có thêm bảng Muc như sau:


+----+-----------+-------------+
| ID |Ten muc    |Trang thai   |
+----+-----------+-------------+
| 1  |Lap trinh  |Hien         |
| 2  |Mang xa hoi|An           |
| 3  |Web        |An           |
+----+-----------+-------------+

Giả sử ta cần lấy những Muccon có Trangthai là Hien, và những bản ghi phải thỏa mãn Chuyenmuclon của bảng dbaviet.vn và Tenmuc của bảng Muc phải trùng nhau và kết quả trả về sắp xếp theo thứ tự ASC của cột Muccon.

SELECT [dbaviet.vn].Muccon,[dbaviet.vn].Chuyenmuclon,Muc.Trangthai
FROM [dbaviet.vn]
INNER JOIN Muc ON [dbaviet.vn].Chuyenmuclon=Muc.Tenmuc AND Muc.Trangthai= 'Hien'
ORDER BY [dbaviet.vn
].Muccon ASC;

Kết quả trả về là bảng dữ liệu sau:


+----------+------------+----------+
|Muccon    |Chuyenmuclon|Trangthai |
+----------+------------+----------+
|Chrome    |Web         |Hien      |
|JavaScript|Lap trinh   |Hien      |
|Python    |Lap trinh   |Hien      |
|SQL Server|Lap trinh   |Hien      |
+----------+------------+----------+

Ví dụ dùng SELECT với từ khóa TOP

SELECT TOP(2) *
  FROM [dbaviet.vn]
WHERE Chuyenmuclon='Lap trinh' ORDER BY IDChuyenmuc ASC;

Ở ví dụ này, kết quả sẽ trả về 2 giá trị đầu tiên từ bảng dbaviet.vn với Chuyemuclon là 'Lap trinh'. Dù còn các giá trị khác đáp ứng yêu cầu thì chúng cũng sẽ không được trả về.


+-------------+--------------+-------------+-------+
|IDChuyenmuc  |Muccon        |Chuyenmuclon |Sobai  |
+-------------+--------------+-------------+-------+
|    1        |SQL Server    |Lap trinh    |101    |
|    3        |Python        |Lap trinh    |111    |
+-------------+--------------+-------------+-------+

Ví dụ - Dùng từ khóa TOP PERCENT

SELECT TOP(10) PERCENT *
  FROM [dbaviet.vn]
WHERE Chuyenmuclon='Lap trinh' ORDER BY IDChuyenmuc ASC;

Kết quả trả về sẽ gồm 10% giá trị đầu tiên trong toàn bộ kết quả Chuyenmuclon là ‘Lap trinh’ trong bảng dbaviet.vn. 90% kết quả còn lại sẽ không được trả về.


+-------------+--------------+-------------+-------+
|IDChuyenmuc  |Muccon        |Chuyenmuclon |Sobai  |
+-------------+--------------+-------------+-------+
|    1        |SQL Server    |Lap trinh    |101    |
+-------------+--------------+-------------+-------+
=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master