Bài tập

Tìm hiểu về SQL và những câu lệnh SQL cơ bản

Huy Erick

SQL (Structured Query Language) là một ngôn ngữ tiêu chuẩn được sử dụng để truy cập và thao tác dữ liệu trong cơ sở dữ liệu. SQL là viết tắt của cụm từ "Ngôn ngữ...

SQL (Structured Query Language) là một ngôn ngữ tiêu chuẩn được sử dụng để truy cập và thao tác dữ liệu trong cơ sở dữ liệu. SQL là viết tắt của cụm từ "Ngôn ngữ truy vấn cấu trúc" và được coi là một tiêu chuẩn ANSI (American National Standards Institute).

SQL có thể làm gì?

SQL có nhiều chức năng để thao tác với cơ sở dữ liệu:

  • Truy vấn dữ liệu từ cơ sở dữ liệu
  • Lấy dữ liệu từ cơ sở dữ liệu
  • Thêm mới (insert) dữ liệu vào cơ sở dữ liệu
  • Cập nhật (update) dữ liệu trong cơ sở dữ liệu
  • Xóa (delete) dữ liệu khỏi cơ sở dữ liệu
  • Tạo cơ sở dữ liệu mới
  • Tạo bảng mới trong cơ sở dữ liệu
  • Tạo các hàm tích trữ trong cơ sở dữ liệu
  • Tạo các cái nhìn trong cơ sở dữ liệu
  • Cấu hình quyền cho bảng, hàm và cái nhìn.

Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng SQL để truy cập và thao tác dữ liệu trong MySQL.

Câu lệnh SQL

Câu lệnh SQL là công cụ chính để truy cập và thao tác dữ liệu trong cơ sở dữ liệu. Dưới đây là một số câu lệnh SQL cơ bản:

1. Câu lệnh SELECT

1.1. Định nghĩa

Câu lệnh SELECT được sử dụng để lựa chọn dữ liệu từ một cơ sở dữ liệu. Kết quả được lưu trữ trong một bảng kết quả và được gọi là tập kết quả.

1.2. Cú pháp

1.2.1. Lựa chọn tất cả
SELECT * FROM table_name;

Ví dụ: Chạy câu lệnh sau để lựa chọn tất cả dữ liệu từ bảng "DanhSach":

SELECT * FROM DanhSach;
1.2.2. Lựa chọn từ các cột trong một bảng
SELECT column_name, column_name
FROM table_name;

Ví dụ: Lựa chọn chỉ cột "Ten" từ bảng trên:

SELECT Ten
FROM DanhSach;

Kết quả trả về sẽ là:

+--------------------------+
| Ten                      |
+--------------------------+
| Nguyen Van A              |
| Tran Thi B                |
| Le Van C                  |
| Pham Thi D                |
+--------------------------+

2. Câu lệnh SELECT DISTINCT

2.1. Định nghĩa

Câu lệnh SELECT DISTINCT được sử dụng để trả về các giá trị duy nhất.

Trong một bảng, một cột có thể bao gồm nhiều giá trị trùng nhau, và đôi khi bạn chỉ muốn liệt kê các giá trị duy nhất.

2.2. Cú pháp

SELECT DISTINCT column_name, column_name
FROM table_name;

Ví dụ: Lựa chọn các giá trị duy nhất trong cột "Lop" trong bảng trên:

SELECT DISTINCT Lop
FROM DanhSach;

Kết quả trả về sẽ là:

+--------------------------+
| Lop                      |
+--------------------------+
| K51                      |
| K52                      |
| K53                      |
| K54                      |
+--------------------------+

3. Mệnh đề SQL WHERE

3.1. Định nghĩa

Mệnh đề WHERE được sử dụng để lọc các bản ghi trong cơ sở dữ liệu.

Mệnh đề WHERE được sử dụng để chỉ trích xuất các bản ghi thỏa mãn các tiêu chí cho trước.

3.2. Cú pháp

SELECT column_name, column_name
FROM table_name
WHERE column_name operator value;

Ví dụ: Tìm kiếm các sinh viên học Kiem toan trong bảng trên:

SELECT * 
FROM DanhSach
WHERE Lop = "Kiem toan";

3.3. Một số điểm lưu ý

3.3.1. Trường text và trường số

SQL đòi hỏi dấu nháy đơn bao quanh giá trị text (rất nhiều hệ thống cho phép dấu nháy kép). Tuy nhiên, trường số thì không cần được bao quanh bởi dấu nháy.

3.3.2. Toán tử trong mệnh đề WHERE
  • =: Bằng nhau
  • > hoặc !=: Không bằng nhau
  • >: Lớn hơn
  • : Nhỏ hơn
  • >=: Lớn hơn hoặc bằng
  • =: Nhỏ hơn hoặc bằng
  • BETWEEN: Trong một khoảng giá trị
  • LIKE: Tìm kiếm theo mẫu
  • IN: Chỉ định nhiều giá trị

4. Toán tử SQL AND và OR

4.1. Định nghĩa

Toán tử AND và OR được sử dụng để lọc các bản ghi dựa trên hai hoặc nhiều điều kiện.

Toán tử AND chỉ hiển thị một bản ghi nếu cả hai điều kiện đúng.

Toán tử OR chỉ hiển thị một bản ghi nếu một trong hai điều kiện đúng.

4.2. Cú pháp

4.2.1. Toán tử AND
SELECT * FROM table_name
WHERE column_name1 operator value1
AND column_name2 operator value2;

Ví dụ: Tìm kiếm các sinh viên học Kiểm toán của khóa K53 từ bảng trên:

SELECT *
FROM DanhSach
WHERE Lop = "Kiem toan" AND Khoa = "K53";
4.2.2. Toán tử OR
SELECT * FROM table_name
WHERE column_name operator value1
OR column_name operator value2;

Ví dụ: Tìm kiếm các sinh viên học Kiểm toán hoặc học Kế toán từ bảng trên:

SELECT *
FROM DanhSach
WHERE Lop = "Kiem toan" OR Lop = "Ke toan";
4.2.3. Kết hợp toán tử AND và OR

Bạn cũng có thể kết hợp toán tử AND và OR để tạo các biểu thức phức tạp.

Ví dụ: Tìm kiếm các sinh viên Hà Nội thuộc khóa K51 và K52 từ bảng trên:

SELECT *
FROM DanhSach
WHERE (QueQuan = "Ha Noi" AND Khoa = "K51") OR (QueQuan = "Ha Noi" AND Khoa = "K52");

5. Câu lệnh SQL ORDER BY

5.1. Định nghĩa

Câu lệnh ORDER BY được sử dụng để sắp xếp tập kết quả theo một hoặc nhiều cột. Câu lệnh ORDER BY sẽ sắp xếp các bản ghi theo trình tự mặc định là tăng dần. Để sắp xếp theo trình tự giảm dần, chúng ta sử dụng từ khóa DESC.

5.2. Cú pháp

SELECT column_name, column_name
FROM table_name
ORDER BY column_name ASC|DESC, column_name ASC|DESC;

Ví dụ 1: Sắp xếp cột "QueQuan" theo thứ tự tăng dần:

SELECT *
FROM DanhSach
ORDER BY QueQuan ASC;

Ví dụ 2: Sắp xếp cột "Khoa" theo thứ tự giảm dần:

SELECT *
FROM DanhSach
ORDER BY Khoa DESC;

Ví dụ 3: Sắp xếp cột "QueQuan" và "Lop":

SELECT *
FROM DanhSach
ORDER BY QueQuan, Lop;

Ví dụ 4: Sắp xếp cột "QueQuan" theo thứ tự tăng dần, cột "NamSinh" theo thứ tự giảm dần:

SELECT *
FROM DanhSach
ORDER BY QueQuan ASC, NamSinh DESC;

6. Câu lệnh INSERT INTO của SQL

6.1. Định nghĩa

Câu lệnh INSERT INTO được sử dụng để thêm mới một bản ghi vào bảng.

6.2. Cú pháp

Có thể viết câu lệnh INSERT INTO theo hai cách:

Cách 1: Chỉ chỉ định giá trị, không chỉ định tên cột sẽ insert.

INSERT INTO table_name
VALUES (value1, value2, value3, ...);

Ví dụ 1: Thêm một dòng mới vào bảng "DanhSach" như sau:

INSERT INTO DanhSach
VALUES (12, "Nguyen Minh Chau", "Hoa Binh", 1992, "Tai chinh - Ngan hang", "K52");

Khi đó, bảng sẽ trông như sau:

+------+---------------------+-----------+------+---------------------------+-----+
| MaSV | Ten                 | QueQuan   | NamSinh | Khoa                      | Lop |
+------+---------------------+-----------+------+---------------------------+-----+
| 1    | Nguyen Van A         | Ha Noi    | 1998   | Quan tri kinh doanh       | K51 |
| 2    | Tran Thi B           | Bac Giang | 1999   | Tai chinh - Ngan hang     | K52 |
| 3    | Le Van C             | Vinh Phuc | 2000   | Ke toan                   | K53 |
| 4    | Pham Thi D           | Ha Noi    | 2000   | Cong nghe thong tin        | K54 |
| 12   | Nguyen Minh Chau     | Hoa Binh  | 1992   | Tai chinh - Ngan hang     | K52 |
+------+---------------------+-----------+------+---------------------------+-----+

Cách 2: Chỉ định cả tên cột và giá trị sẽ insert.

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

Ví dụ 2: Thêm tên "Tran The Hung", quê "Quang Binh", lớp "Tai nang" vào các cột tương ứng của bảng "DanhSach" như sau:

INSERT INTO DanhSach (Ten, QueQuan, Lop)
VALUES ("Tran The Hung", "Quang Binh", "Tai nang");

7. Câu lệnh UPDATE

7.1. Định nghĩa

Câu lệnh UPDATE được sử dụng để cập nhật bản ghi đã có trong bảng.

7.2. Cú pháp

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE some_column = some_value;

Ví dụ: Cập nhật quê của sinh viên "Tran The Hung" thành "Quang Binh" và lớp thành "Cong nghe thong tin" như sau:

UPDATE DanhSach
SET QueQuan = "Quang Binh", Lop = "Cong nghe thong tin"
WHERE Ten = "Tran The Hung";

8. Câu lệnh DELETE

8.1. Định nghĩa

Câu lệnh DELETE được sử dụng để xóa một dòng trong bảng.

8.2. Cú pháp

DELETE FROM table_name
WHERE some_column = some_value;

Ví dụ: Xóa dữ liệu của sinh viên "Tran The Hung" khỏi bảng "DanhSach" như sau:

DELETE FROM DanhSach
WHERE Ten = "Tran The Hung";

Nếu muốn xóa tất cả dữ liệu, bạn có thể sử dụng câu lệnh DELETE ALL với cú pháp: DELETE FROM table_name; hoặc DELETE * FROM table_name;

9. Mệnh đề SELECT TOP

9.1. Định nghĩa

Mệnh đề SQL SELECT TOP được sử dụng để chỉ ra số lượng bản ghi trả về. Mệnh đề SELECT TOP rất hữu ích với những bảng lớn có hàng nghìn bản ghi. Việc trả về một số lượng lớn bản ghi có thể ảnh hưởng đến hiệu suất. Tuy không phải tất cả các hệ thống cơ sở dữ liệu đều hỗ trợ mệnh đề SELECT TOP.

10. Toán tử LIKE trong SQL

10.1. Định nghĩa

Toán tử LIKE được sử dụng trong mệnh đề WHERE để tìm kiếm theo một mẫu chỉ định trong một cột.

10.2. Cú pháp

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;

Ví dụ 1: Lựa chọn tất cả sinh viên có Quê quán bắt đầu bằng chữ "H" trong bảng "DanhSach":

SELECT *
FROM DanhSach
WHERE QueQuan LIKE "H%";

Ví dụ 2: Lựa chọn tất cả sinh viên có Tên là "Chau" trong bảng "DanhSach":

SELECT *
FROM DanhSach
WHERE Ten LIKE "%Chau%";

11. Ký tự đại diện trong SQL

11.1. Định nghĩa

Ký tự đại diện được sử dụng để thay thế cho bất kỳ ký tự nào trong một chuỗi ký tự (string).

Trong SQL, ký tự đại diện được sử dụng cùng với toán tử LIKE.

11.2. Các loại ký tự đại diện

  • %: Thay thế cho 0 hoặc nhiều ký tự
  • _: Thay thế cho 1 ký tự đơn
  • []: Nhóm các ký tự cần khớp
  • [^Danh sách ký tự] hoặc [!Danh sách ký tự]: Không khớp với bất kỳ ký tự nào được chỉ định trong dấu ngoặc

12. Toán tử IN trong SQL

12.1. Định nghĩa

Toán tử IN cho phép bạn chỉ định nhiều giá trị trong mệnh đề WHERE.

12.2. Cú pháp

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

Ví dụ: Lựa chọn tất cả sinh viên có Quê ở "Nam Dinh", "Hoa Binh" và "Yen Bai" trong bảng "DanhSach":

SELECT *
FROM DanhSach
WHERE QueQuan IN ("Nam Dinh", "Hoa Binh", "Yen Bai");

13. Toán tử BETWEEN trong SQL

13.1. Định nghĩa

Toán tử BETWEEN được sử dụng để lựa chọn các giá trị trong một phạm vi. Giá trị có thể là số, ký tự hoặc ngày.

13.2. Cú pháp

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

Ví dụ: Thêm cột "Diem" vào bảng "DanhSach", chúng ta sẽ có bảng như sau:

Lựa chọn tất cả các bạn sinh viên có điểm từ 8.0 đến 9.0 từ bảng trên:

SELECT *
FROM DanhSach
WHERE Diem BETWEEN 8.0 AND 9.0;

Bài viết trên đây là một sự tìm hiểu ban đầu về khái niệm SQL và một số câu lệnh cơ bản. Chắc chắn còn nhiều thiếu sót, và tôi sẽ tiếp tục bổ sung ở các bài viết sau.

Link tham khảo: http://www.w3schools.com/

1