Mục lục
SQL là gì?
SQL là viết tắt của Structured Query Language là ngôn ngữ truy vấn tiêu chuẩn được sử dụng để tạo mới, cập nhật và truy vấn dữ liệu từ các cơ sở dữ liệu (CSDL) quan hệ như MySQL, Oracle, SQL Server, PostGre, etc.
Hầu như công ty nào lớn cũng cần xây dựng một hệ thống để lưu trữ cơ sở dữ liệu. Mọi thứ trong cơ sở dữ liệu này sẽ được diễn tả ra thành nhiều bảng, có mối quan hệ với nhau. Để truy vấn và lấy dữ liệu từ các bảng này nhằm tổng hợp thành thông tin nào đó, người ta dùng đến SQL thông qua các câu query.
Lịch sử của SQL
SQL là một ngôn ngữ truy vấn dữ liệu quan hệ ra đời từ rất lâu. Vào những năm 1970 Dr. Edgar F. “Ted” Codd giới thiệu lần đầu tiên CSDL quan hệ với nền tảng lý thuyết được nghiên cứu kỹ lưỡng. Theo đó dẫn đến sự hình thành của SQL.
- 1970 — Dr. Edgar F. “Ted” Codd của IBM được biết đến như là cha đẻ của Relational Database (Cơ sở dữ liệu quan hệ). Ông miêu tả một mô hình quan hệ (Relational Model) cho các Database.
- 1974 — SQL (Structured Query Language) xuất hiện.
- 1978 — IBM tiếp tục phát triển ý tưởng của Codd và công bố một sản phẩm tên là System/R.
- 1986 — IBM phát triển nguyên mẫu đầu tiên về Relation Database và được chuẩn hóa bởi ANSI. Relation Database đầu tiên được công bố là Relational Software và sau đó là Oracle.
Ưu điểm của SQL
SQL được sử dụng phổ biến vì nó có các ưu điểm sau:
- Cho phép truy cập dữ liệu trong các hệ thống quản lý cơ sở dữ liệu quan hệ.
- Cho phép mô tả dữ liệu.
- Cho phép xác định dữ liệu trong cơ sở dữ liệu và thao tác dữ liệu đó.
- Cho phép nhúng trong các ngôn ngữ khác sử dụng mô-đun SQL, thư viện và trình biên dịch trước.
- Cho phép tạo và thả các cơ sở dữ liệu và bảng.
- Cho phép tạo chế độ view, thủ tục lưu trữ, chức năng trong cơ sở dữ liệu.
- Cho phép thiết lập quyền trên các bảng, thủ tục và view.
Nhược điểm của SQL
Mặc dù là ngôn ngữ được sử dụng phổ biến, thế nhưng, không một ngôn ngữ nào là hoàn hảo. Vì vậy, SQL cũng tồn tại một số hạn chế dưới đây:
- Giao diện khó dùng: SQL có giao diện phức tạp khiến một số người dùng khó truy cập.
- Không được toàn quyền kiểm soát: Các lập trình viên sử dụng SQL không có toàn quyền kiểm soát cơ sở dữ liệu.
- Thực thi: Hầu hết các chương trình cơ sở dữ liệu SQL đều có phần mở rộng độc quyền riêng.
- Giá cả: Chi phí vận hành của một số phiên bản SQL khá cao khiến một số lập trình viên gặp khó khăn khi tiếp cận
Các câu lệnh SQL cơ bản
DML – Ngôn ngữ thao tác dữ liệu(Data Manipulation Language)
Lệnh | Mô tả |
---|---|
SELECT | Lấy ra các bảng ghi nhất định từ một hoặc nhiều bảng. |
INSERT | Tạo một bảng ghi.. |
UPDATE | Chỉnh sửa bảng ghi. |
DELETE | Xóa bảng ghi. |
DCL – Ngôn ngữ điều khiển dữ liệu (Data Control Language)
Lệnh | Mô tả |
---|---|
GRANT | Cung cấp một quyền cho người dùng. |
REVOKE | Lấy lại các quyền được cấp từ người dùng. |
Các câu lệnh SQL phổ biến
Trong SQL có khá nhiều câu lệnh, mệnh đề khác nhau. Tuy nhiên dưới đây là một số những truy vấn thường gặp nhất. Chúng ta sẽ cùng tìm hiểu chi tiết ngay bên dưới:
- Truy vấn Update
- Truy vấn Insert
- Truy vấn Select
- Mệnh đề Order By
- Mệnh đề Group By
- Từ khóa Distinct
- Mệnh đề Where
- Mệnh đề AND & OR
Truy vấn Update trong SQL là gì?
Truy vấn UPDATE trong SQL được sử dụng để sửa đổi các bản ghi đang tồn tại trong một bảng. Bạn có thể sử dụng mệnh đề WHERE với truy vấn UPDATE sửa đổi các hàng đã lựa chọn, nếu không, hệ thống sẽ mặc định là tất cả các hàng đều bị tác động.
Cú pháp:
UPDATE ten_bang SET cot1 = giatri1, cot2 = giatri2...., cotN = giatriN WHERE [dieu_kien];
Truy vấn Insert trong SQL là gì?
Lệnh INSERT INTO trong SQL được sử dụng để thêm các hàng dữ liệu mới vào một bảng trong Database.
Cú pháp:
- Xác định cột để chèn dữ liệu:
INSERT INTO TABLE_TEN (cot1, cot2, cot3,...cotN)] VALUES (giatri1, giatri2, giatri3,...giatriN);
- Thao tác trên tất cả các cột trong bảng
INSERT INTO TABLE_TEN VALUES (giatri1,giatri2,giatri3,...giatriN);
Truy vấn Select trong SQL là gì?
Lệnh SELECT trong SQL được sử dụng để lấy dữ liệu từ một bảng trong Database mà trả về dữ liệu ở dạng bảng dữ liệu kết quả.
Cú pháp:
- Xác định cột có giá trị muốn lấy:
SELECT cot1, cot2, cotN FROM ten_bang;
- Thao tác trên tất cả các cột trong bảng:
SELECT * FROM ten_bang;
Mệnh đề Order By
Mệnh đề ORDER BY trong SQL được sử dụng để sắp xếp dữ liệu theo thứ tự tăng dần hoặc theo thứ tự giảm dần, trên một hoặc nhiều cột.
Cú pháp:
SELECT danh_sach_cot FROM ten_bang [WHERE dieu_kien] [ORDER BY cot1, cot2, .. cotN] [ASC | DESC];
Mệnh đề Group By
Mệnh đề GROUP BY trong SQL được sử dụng kết hợp với lệnh SELECT để sắp xếp dữ liệu đồng nhất vào trong các nhóm.
Cú pháp:
SELECT cot1, cot2 FROM ten_bang WHERE [ dieu_kien ] GROUP BY cot1, cot2 ORDER BY cot1, cot2
Từ khóa Distinct
Mệnh đề DISTINCT trong SQL được sử dụng kết hợp với lệnh SELECT để loại tất cả các bản sao của bản ghi và chỉ lấy các bản ghi duy nhất.
Cú pháp:
SELECT DISTINCT cot1, cot2,.....cotN FROM ten_bang WHERE [dieu_kien]
Mệnh đề Where
Mệnh đề WHERE trong SQL được sử dụng để xác định một điều kiện trong khi lấy dữ liệu từ bảng đơn hoặc nhiều bảng kết hợp. Bạn sẽ sử dụng mệnh đề WHERE để lọc các bản ghi và chỉ lấy lại các bản ghi cần thiết.
Cú pháp:
SELECT cot1, cot2, cotN FROM ten_bang WHERE [dieu_kien]
Mệnh đề AND & OR
Các toán tử AND và OR trong SQL được sử dụng để kết hợp nhiều điều kiện để thu hẹp phạm vi dữ liệu trong một lệnh SQL. Hai loại toán tử này được gọi là toán tử liên hợp. Nó cho phép tồn tại nhiều điều kiện trong mệnh đề WHERE của một lệnh SQL.
Cú pháp:
SELECT cot1, cot2, cotN FROM ten_bang WHERE [dieu_kien_1] AND [dieu_kien_2]...AND [dieu_kien_N];