[ThaoVTP] Tìm hiểu về SQL và một số câu lệnh SQL cơ bản

I. Khái niệm chung về SQL

1.1. SQL là gì?

SQL là một ngôn ngữ tiêu chuẩn để truy cập cơ sở dữ liệu (database). SQL là viết tắt của cụm từ Structured Query Language (Ngôn ngữ truy vấn cấu trúc). Cho phép bạn truy cập và thao tác với database. Ngoài ra, SQL là một tiêu chuẩn ANSI (American National Standards Institute- Viện tiêu chuẩn Quốc gia Mỹ).

1.2. SQL có thể làm gì?

• SQL có thể thực hiện những truy vấn với một cơ sở dữ liệu

• SQL có thể lấy data từ một cơ sở dữ liệu.

• SQL có thể insert (nhập) record vào một cơ sở dữ liệu

• SQL có thể update (cập nhật) record vào một cơ sở dữ liệu

• SQL có thể delete (xóa) record khỏi một cơ sở dữ liệu

• SQL có thể tạo cơ sở dữ liệu mới

• SQL có thể tạo bảng mới trong một cơ sở dữ liệu

• SQL có thể tạo phương thức tích trữ trong một cơ sở dữ liệu

• SQL có thể tạo những cái nhìn trong một cơ sở dữ liệu

• SQL có thể thiết lập (set) quyền cho bảng, phương thức và cái nhìn.

Trong bài viết này sẽ hướng dẫn các bạn cách sử dụng SQL để truy cập và thao tác data trong MySQL.

1.3. Câu lệnh SQL

Hành động mà bạn thực hiện nhiều nhất với một cơ sở dữ liệu là thực hiện câu lệnh SQL.

1.4. Dấu chấm phảy sau câu lệnh SQL có ý nghĩa gì?

Ở một vài hệ thống cơ sở dữ liệu đòi hỏi dấu chấm phảy ở cuối câu lệnh SQL. Dấu chấm phảy là cách tiêu chuẩn để phân chia các câu lệnh SQL trong hệ thống cơ sở dữ liệu mà cho phép nhiều hơn 1 câu lệnh SQL được thực hiện cùng một lúc đến server. Trong bài này, tôi sẽ sử dụng dấu chấm phảy ở cuối mỗi câu lệnh SQL.

II. Các câu lệnh SQL cơ bản

Giải thích một số thuật ngữ dùng trong bài viết:

Table_name: Tên bảng

Column_name: Tên cột

Bảng dữ liệu sử dụng:

Danh sách nhận học bổng năm học 2015-2016

Bảng1: Danh sách Table.png

1. Câu lệnh SELECT

1.1. Định nghĩa

Câu lệnh SELECT được dùng để lựa chọn dữ liệu từ một cơ sở dữ liệu. Kết quả được lưu trong một bảng kết quả và gọi là bộ 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 : SELECT * FROM Danhsach;

Sẽ ra nguyên bảng đó như sau: Table.png

1.2.2. Lựa chọn từ các cột trong 1 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 thì sẽ chạy câu lệnh SELECT sau:

SELECT Ten

FROM * Danhsach; (Trong đó, dấu ; để kết thúc câu lệnh).

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

Select_1.png

Ngoài ra, có thể lựa chọn từ 2 cột trở lên cùng 1 lúc. Ví dụ, lựa chọn cột Tên sinh viên và Lớp thì sẽ chạy câu lệnh SELECT như sau:

SELECT Ten, Lop (Trong đó, dấu “, “ để ngăn cách giữa các tên cột)

FROM * Danhsach;

Select_2.png

Thay đổi thứ tự cột trong câu lệnh SELECT trên chúng ta sẽ được kết quả sau khi chạy như sau:

Select_3.png

2. Câu lệnh SELECT DISTINCT

2.1. Định nghĩa

Câu lệnh SELECT DISTINCT được dùng để trả về chỉ các giá trị khác nhau.

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ị khác nhau thôi.

Từ khóa DISTINCT có thể được dùng để trả về các giá trị khác nhau.

2.2. Cú pháp

SELECT DISTINCT column_name,column_name

FROM table_name;

Ví dụ: Trong cột “Lop” ở bảng trên, có lớp trùng nhau. Giờ muốn liệt kê các lớp khác nhau, chúng ta chạy câu lệnh SELECT DISTINCT và kết quả như sau:

Select_Distinct.png

3. Mệnh đề SQL WHERE

3.1. Định nghĩa

Mệnh đề WHERE được dùng để lọc các bản ghi.

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

3.2. Cú pháp

SELECT column_name,column_name

FROM table_name

WHERE column_name operator value;

Ví dụ: Từ Bảng 1, chọn tất cả các sinh viên có quê là Hà Nội, chúng ta sẽ viết câu lệnh để chạy và kết quả như sau:

Where_1.png

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

Toán tử Mô tả
= Bằng nhau
<> Không bằng nhau. Ở một vài bản SQL, toán tử này được viết là !=
> 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ới hạn nào đó
LIKE Tìm kiếm theo 1 mẫu nào đó
IN Chỉ định nhiều giá trị có nghĩa cho 1 cột

4. Toán tử SQL AND & OR

4.1. Định nghĩa

Toán tử AND & OR được dùng để lọc các bản ghi dựa vào 2 điều kiện trở lên.

Toán tử AND thể hiện một bản ghi nếu cả điều kiện thứ nhất và điều kiện thứ 2 đều đúng.

Toán tử OR thể hiện một bản ghi nếu điều kiện thứ nhất hoặc điều kiện thứ 2 đúng.

4.2. Cú pháp

4.2.1. Toán tử AND

SELECT * FROM table_name

WHERE column_name 1 operator value

AND column_name 2 operator value;

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 Danh sách ở trên như sau:

Select AND.png

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 Danh sách ở trên như sau:

Select OR.png

4.2.3. Kết hợp toán tử AND & OR

Bạn có thể kết hợp AND và OR (sử dụng ngoặc đơn để thể hiện biểu thức phức tạp).

Ví dụ: Tìm kiếm các sinh viên Hà nội thuộc K51 và K52 từ Bảng Danh sách ở trên như sau:

Select AND_OR.png

5.Câu lệnh SQL ORDER BY bằng từ khóa

5.1. Định nghĩa

ORDER BY bằng từ khóa được dùng để sắp xếp bộ kết quả theo một hoặc nhiều cột. ORDER BY bằng từ khóa 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 thì 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 quê quán theo trình tự tăng dần như sau:

Order by_1.png

Ví dụ 2: Sắp xếp cột Khóa theo thứ tự giảm dần như sau:

Order by_2.png

Ví dụ 3: Sắp xếp cột Quê quán và Lớp như sau:

Order by_3.png

Ví dụ 4: Sắp xếp theo thứ tự tăng dần cột Quê quán, giảm dần cột Năm sinh như sau:

Order by_4.png

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

6.1. Định nghĩa

Câu lệnh INSERT INTO của SQL dùng để cho bản ghi mới vào trong một bảng.

6.2. Cú pháp

Có thể viết câu lệnh INSERT INTO bằng 2 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,...);

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ụ1: Insert thêm dòng sau vào Bảng Danh sách ở trên như sau:

Dòng:

12 Nguyễn Minh Châu Hòa Bình 1992 Tài chính - Ngân hàng K52

Insert into_1.png

Khi đó, nội dung trong bảng sẽ như sau:

Insert into_2.png

Ví dụ 2: Insert thêm Tên Trần Thế Hùng, quê Quảng Ninh, lớp Tài năng vào các cột tương ứng của bảng Danh sách như sau:

Insert into_3.png

7. Câu lệnh UPDATE

7.1. Định nghĩa

Câu lệnh UPDATE được dùng để cập nhật bản ghi đã có trong một 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 bạn Trần Thế Hùng ở trên thành Quảng Bình, Lớp thành Công nghệ thông tin như sau:

UPDATE.png

Lưu ý: Hãy cẩn thận khi cập nhật bản ghi. Nếu bạn quên mệnh đề WHERE thì khi chạy câu lệnh UPDATE, sẽ thực hiên cập nhật toàn bộ bảng.

8. Câu lệnh DELETE

8.1. Định nghĩa

Câu lệnh DELETE dùng để xóa một dòng trong một bảng.

8.2. Cú pháp

DELETE FROM table_name

WHERE some_column=some_value;

Ví dụ: Thực hiện xóa dữ liệu của sinh viên Trần Thế Hùng khỏi Bảng Danh sách như sau:

DELETE_1.png

Nếu muốn xóa tất cả dữ liệu, bạn thực hiện câu lệnh DELETE ALL với cú pháp: DELETE FROM table_name;

hoặc

DELETE * FROM table_name;

Khi đó, chỉ có dữ liệu bị xóa. Còn cấu trúc, các thuộc tính và chỉ mục không bị thay đổi.

9. Mệnh đề SELECT TOP

9.1. Định nghĩa

Mệnh đề SQL SELECT TOP được 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. Không phải tất cả mọi hệ thống cơ sở dữ liệu đều hỗ trợ mệnh đề SELECT TOP

10. Toán tử LIKE của SQL

10.1. Định nghĩa

Toán tử LIKE được dùng trong một 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 Danh sách:

Like_1.png

Ký hiệu “%” để định nghĩa ký tự đại diện trước và sau mẫu chỉ định. Ví dụ2: Lựa chọn tất cả sinh viên có Tên là “Châu” trong Bảng Danh sách:

Like_2.png

Ví dụ3: Lựa chọn tất cả sinh viên có Tên và Tên đệm là “Ngọc” trong Bảng Danh sách:

Like_3.png

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

11.1. Định nghĩa

Ký tự đại diện được 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 dùng cùng với toán tử LIKE.

Ký tự đại diện SQL được dùng để tìm kiếm bản ghi trong 1 bảng.

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

Ký tự đại diện Mô tả
% Thay thế cho 0 hoặc từ 1 ký tự trở lên
_ Thay thế cho 1 ký tự đơn
[Danh sách ký tự] 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 dù chỉ 1 ký tự được chỉ định trong dấu ngoặc

Về ví dụ cho % đã nói ở phần trước nên không đề cập ở phần này nữa. Ví dụ 1: Chọn tất cả sinh viên có Lớp bắt đầu bằng chữ “C” rồi đến 1 chữ khác, rồi đến chữ “n” từ Bảng Danh sách như sau:

Like_4.png

Vì các ví dụ minh họa lần này dùng MySQl và MySQL không hỗ trợ tìm kiếm với [] và [^], [!] nên người viết sẽ minh họa ví dụ cho kiểu này vào dịp khá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ả các sinh viên có Quê ở Nam Định, Hòa Bình và Yên Bái trong bảng Danh sách như sau:

IN_1.png

13. Toán tử BETWEEN trong SQL

13.1. Định nghĩa

Toán tử BETWEEN 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 Điểm vào Bảng Danh sách ở trên, chúng ta sẽ có bảng như sau:

Bảng_1.png

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 như sau:

Between_1.png

Ví dụ 2: Lựa chọn tất cả các bạn sinh viên có điểm KHÁC từ 8.0 đến 9.0 từ bảng trên như sau:

Between_2.png

III. Lời kết

Bài viết trên đây là sự tìm hiểu bước đầu của người viết về khái niệm SQL và 1 vài câu lệnh cơ bản. Chắc còn nhiều thiếu sót nên người viết sẽ tiếp tục bổ sung ở các biết viết sau. Link tham khảo: http://www.w3schools.com/