Câu lệnh truy vấn Sql

Câu lệnh truy vấn SQL – Phần 1

Giới thiệu SQL

SQL là một ngôn ngữ theo chuẩn ANSI để truy xuất các cơ sở dữ liệu.

SQL là gì?
• SQL là Structured Query Language – Ngôn ngữ Truy vấn có Cấu trúc
• SQL cho phép bạn truy xuất một cơ sở dữ liệu
• SQL là một ngữ theo chuẩn ANSI
• SQL có thể thực hiện các truy vấn đến một cơ sở dữ liệu
• SQL có thể truy tìm dữ liệu từ một cơ sở dữ liệu
• SQL có thể chèn các mẩu tin mới vào trong một cơ sở dữ liệu
• SQL có thể xóa các mẩu tin trong một cơ sở dữ liệu SQL Tutorial
• SQL có thể cập nhật các mẩu tin trong một cơ sở dữ liệu
• SQL rất dễ học

Các bảng cơ sở dữ liệu

Cơ sở dữ liệu chứa các đối tượng gọi là các Bảng (Tables).
Các Mẩu tin (Records) lưu trong các bảng này. Các bảng được gọi theo tên bảng (như “Persons”, “Orders”, “Suppliers”).
Các bảng chứa các Cột (Columns) và các Dòng (Rows) dữ liệu. Dòng chứa các mẩu tin (như mẩu tin về một người). Cột chứa dữ liệu (như First Name, Last Name, Address, và City).

Một ví dụ là bảng “Persons” sau:

LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Kari Storgt 20 Stavanger

LastName, FirstName, Address, và City là các cột của bảng. Các dòng chứa ba mẩu tin của 3 người.

Các truy vấn SQL

Với SQL, chúng ta có thể truy vấn một cơ sở dữ liệu và nhận được một kết quả trả về với dạng bảng.
Một truy vấn giống như sau:

Sẽ trả về một kết quả giống như sau:

LastName
Hansen
Svendson
Pettersen

Chú ý: Vài hệ cơ sở dữ liệu cần một dấu “;” ở cuối phát biểu SQL. Chúng ta không dùng dấu “;” trong bài viết này.

Thao tác dữ liệu SQL

SQL là một cú pháp để thực hiện các truy vấn. Nhưng ngôn ngữ SQL cũng chứa các cú pháp cập nhật các mẩu tin (record), chèn các mẩu tin mới và xóa các mẩu tin đang tồn tại.
Các lệnh truy vấn và cập nhật này thuộc dạng Ngôn ngữ Thao tác Dữ liệu (Data Manipulation Language – DML) một phần của

SQL:
ƒ SELECT – trích dữ liệu từ một cơ sở dữ liệu
ƒ UPDATE – cập nhật dữ liệu trong một cơ sở dữ liệu
ƒ DELETE – xóa dữ liệu từ một cơ sở dữ liệu
ƒ INSERT – chèn dữ liệu mới vào trong một cơ sở dữ liệu

Định nghĩa dữ liệu SQL

Ngôn ngữ Định nghĩa Dữ liệu (Data Definition Language – DDL) một phần của SQL, cho phép tạo hay xóa các bảng cơ sở dữ liệu. Chúng ta cũng có thể định nghĩa các chỉ mục (các khóa – key), chỉ định liên kết giữa các bảng, và ràng buột giữa các bảng cơ sở dữ liệu.
Các phát biểu DDL quan trọng nhất trong SQL là::
ƒ CREATE TABLE – tạo một bảng cơ sở dữ liệu mới
ƒ ALTER TABLE – thay đổi (alters) một bảng cơ sở dữ liệu SQL Tutorial
ƒ DROP TABLE – xóa một bảng cơ sở dữ liệu
ƒ CREATE INDEX – tạo một chỉ mục (khóa tìm kiếm)
ƒ DROP INDEX – xoá một chỉ mục

Phát biểu SQL Select

Phát biểu SELECT chọn các cột dữ liệu từ một cơ sở dữ liệu.
Kết quả dạng bảng được lưu trong một bảng kết quả (gọi là tập kết quả – result set).

Phát biểu SELECT

Phát biểu SELECT chọn các cột dữ liệu từ một cơ sở dữ liệu.
Dùng phát biểu này để chọn (SELECT) thông tin từ (FROM) một bảng như sau:

Ví dụ: Chọn các cột từ một bảng

Để chọn các cột có tên “LastName” và “FirstName”, dùng một phát biểu SELECT như sau:

Bảng “Persons”:

LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Kari Storgt 20 Stavanger

Kết quả:

LastName FirstName
Hansen Ola
Svendson Tove
Pettersen Kari

Ví dụ: Chọn tất cả các cột

Để chọn tất cả các cột từ bảng “Person”, dùng một ký hiệu * thay thế cho tên các cột như sau:

Kết quả:

LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Kari Storgt 20 Stavanger

Bảng kết quả

Kết quả từ một truy vấn SQL được lưu trữ trong một tập kết quả. Tập kết quả có thể xem như một bảng kết quả. Đa số các trình quản lý cơ sở dữ liệu cho phép duyệt tập kết quả với các hàm lập trình như: Move-To-First-Record, Get-Record-Content, Move-To-Next-Record……

 

Mệnh đề SQL Where

Mệnh đề WHERE dùng để chỉ định một tiêu chuẩn (criteria) chọn.

Mệnh đề WHERE

Để chọn có điều kiện dữ liệu từ một bảng, một mệnh đề WHERE có thể thêm vào phát biểu SELECT với cú pháp sau:

Với mệnh đề WHERE, các điều kiện sau có thể được dùng:
Operator Condition

= Bằng
<> Không bằng
> Lớn hơn
< Nhỏ hơn
>= Lớn hơn hoặc bằng
<= Nhỏ hơn hoặc bằng
LIKE Sẽ giải thích bên dưới

Chú ý: Vài phiên bản SQL toán tử <> có thể được viết thành !=

Ví dụ: Chọn người từ một công ty

Để chọn những người chỉ sống ở Sandnes, thêm mệnh đề WHERE vào phát biểu SELECT như sau:

Bảng “Persons”:

LastName FirstName Address City Year
Hansen Ola Timoteivn 10 Sandnes 1951
Svendson Tove Borgvn 23 Sandnes 1978
Svendson Ståle Kaivn 18 Sandnes 1980
Pettersen Kari Storgt 20 Stavanger 1960

Kết quả:

LastName FirstName Address City Year
Hansen Ola Timoteivn 10 Sandnes 1951
Svendson Tove Borgvn 23 Sandnes 1978
Svendson Ståle Kaivn 18 Sandnes 1980

Dùng dấu nháy

Chú ý rằng chúng ta dùng dấu nháy đơn bao quanh các trị điều kiện trong các ví dụ. SQL dùng dấu nháy đơn bao quanh các trị văn bản. Phần lớn các hệ quản lý cơ sở dữ liệu cũng chấp nhận dấu nháy kép. Các trị số không được đóng trong dấu nháy.
Với các trị văn bản:
Viết đúng:

Viết sai:

Với các trị số:
Viết đúng:

Viết sai:

Điều kiện LIKE

Điều kiện LIKE dùng chỉ định việc tìm một mẫu trong một cột.
Cú pháp:

Một dấu “%” có thể dùng như ký tự đại diện (wildcards) cả trước lẫn sau mẫu.

Ví dụ: Chọn trong bảng Persons với mẫu tên

Phát biểu SQL sẽ trả về những người có firstname bắt đầu với một ký tự ‘O’.

Phát biểu SQl sẽ trả về những người có firstname kết thúc với một ký tự ‘a’.

Phát biểu SQL sẽ trả về những người có firstname chứa mẫu ‘la’.

Tất cả các ví dụ trên sẽ trả về kết quả sau:

LastName FirstName Address City Year
Hansen Ola Timoteivn 10 Sandnes 1951

 

 SQL And & Or

AND & OR

AND và OR kết nối hai hay nhiều điều kiện trong một mệnh đề WHERE.
Toán tử AND hiển thị một cột nếu TẤT CẢ các điều kiện liệt kê đều đúng.
Toán tử OR hiển thị một cột nếu MỘT TRONG các điều kiện liệt kê là đúng.

Bảng gốc (dùng trong các ví dụ)

LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes

Ví dụ

Dùng AND để hiển thị người có firstname là “Tove”, và lastname là “Svendson”:

Kết quả:

LastName FirstName Address City
Svendson Tove Borgvn 23 Sandnes

Ví dụ

Dùng OR để hiển thị người có firstname là “Tove”, hoặc có lastname là “Svendson”:

Kết quả:

LastName FirstName Address City
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes

Ví dụ

Bạn cũng có thể dùng phối hợp AND và OR (dùng dấu ngoặc đơn để bao các biểu thức phức tạp):

Kết quả:

LastName FirstName Address City
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes

 

SQL Between…And

BETWEEN … AND

Toán tử BETWEEN … AND chọn tất cả các trị trong khoảng giới hạn giữa hai trị. Các trị này có thể là các số, văn bản, hay ngày tháng.

Bảng gốc (dùng trong các ví dụ)

LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Nordmann Anna Neset 18 Sandnes
Pettersen Kari Storgt 20 Stavanger

Ví dụ 1

Để hiển thị các tên theo thứ tự alphabet giữa hai tên (kể cả hai tên này) “Hansen” và “Pettersen”, dùng SQL sau:

Kết quả:

LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Nordmann Anna Neset 18 Sandnes
Pettersen Kari Storgt 20 Stavanger

Ví dụ 2

Để hiển thị các tên ngoài các tên trong ví dụ trên, dùng toán tử NOT:

Kết quả:

LastName FirstName Address City
Svendson Tove Borgvn 23 Sandnes

SQL Select Distinct

Từ khóa DISTINCT dùng trả về chỉ các trị khác biệt (distinct).

Từ khóa DISTINCT

Phát biểu SQL SELECT trả về thông tin từ các cột của bảng. Nhưng làm thế nào nếu chúng ta chỉ muốn chọn các kết quả không trùng nhau?
Với SQL, chúng ta chỉ cần thêm vào một từ khóa DISTINCT cho phát biểu SELECT vớI cú pháp sau:
SELECT DISTINCT column-name(s) FROM table-name

 

Ví dụ: Chọn tên công ty từ bảng Orders

Ví dụ: Bảng đặt hàng đơn giản:

Company OrderNumber
Sega 3412
W3Schools 2312
Trio 4678
W3Schools 6798

Phát biểu SQL sau:

Sẽ trả về kết quả:

Company
Sega
W3Schools
Trio
W3Schools

Chú ý rằng công ty W3Schools xuất hiện hai lần trong kết quả. Đôi lúc chúng ta không muốn điều này.

Ví dụ: Chọn tên công ty (không trùng tên) từ bảng Orders

Phát biểu SQL sau:

Sẽ trả về kết quả:

Company
Sega
W3Schools
Trio

Bây giờ tên công ty W3Schools chỉ xuất hiện một lần trong kết quả.

SQL Order By

Từ khóa ORDER BY dùng sắp xếp kết quả thứ tự kết quả.
Sắp xếp các Dòng
Mệnh đề ORDER BY dùng sắp xếp các dòng.
Một số cách sắp xếp:

Company OrderNumber
Sega 3412
ABC Shop 5678
W3Schools 2312
W3Schools 6798

Ví dụ

Để hiển thị tên công ty (Company) theo thứ tự alphabet:

Kết quả:

Company OrderNumber
ABC Shop 5678
Sega 3412
W3Schools 6798
W3Schools 2312

Ví dụ

Để hiển thị tên công ty (Company) theo thứ tự alphabet, nếu tên công ty giống nhau thì sắp xếp theo số thứ tự (OrderNumber):

Kết quả:

Company OrderNumber
ABC Shop 5678
Sega 3412
W3Schools 2312
W3Schools 6798

Ví dụ

Để hiển thị tên công ty (Company) theo thứ tự alphabet đảo ngược (từ Z đến A):

Kết quả:

Company OrderNumber
W3Schools 6798
W3Schools 2312
Sega 3412
ABC Shop 5678

 

 SQL INSERT INTO

Chèn các dòng mới

Phát biểu INSERT INTO chèn các dòng mới vào trong một bảng:

Bạn có thể chỉ định các cột bạn muốn chèn chèn dữ liệu vào:

Chèn một dòng mới

Bảng “Persons”:

LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger

Phát biểu SQL chèn vào bảng trên:

Sẽ cho kết quả như sau:

LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger
Hetland Camilla Hagabakka 24 Sandnes

Chèn dữ liệu vào trong các cột chỉ định

Bảng “Persons”:

LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger
Hetland Camilla Hagabakka 24 Sandnes

Phát biểu SQL chèn dữ liệu vào các cột chỉ định:

Sẽ cho kết quả như sau::

LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger
Hetland Camilla Hagabakka24 Sandnes
Rasmussen Storgt 67

 

SQL Update

Update Rows

Phát biểu UPDATE cập nhật hoặc thay đổi các dòng:

Bảng Person:

LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Storgt 67

Cập nhật một cột trong một dòng

Chúng ta sẽ thêm một first name “Nina” đến người có lastname=”Rasmussen”:

Cập nhật vài cột trong một dòng
Chúng ta sẽ thay đổi địa chỉ (Address) và thêm tên thành phố.

Kết quả

LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Stien 12 Stavanger

 

SQL Delete

Xóa các cột

Phát biểu DELETE dùng xóa một hay nhiều dòng trong một bảng.

Bảng “Person”:

LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Stien 12 Stavanger

Xóa một dòng

“Nina Rasmussen” sẽ bị xóa:

Kết quả

LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger

 

Các hàm SQL Count

SQL có các hàm tạo sẵn để đếm các mẩu tin cơ sở dữ liệu.

Cú pháp hàm Count

Cú pháp của các hàm COUNT tạo sẵn như sau:

Hàm COUNT(*)

Hàm COUNT(*) trả về số hàng chọn được trong một phép chọn.
Với bảng “Persons” sau:

Name Age
Hansen, Ola 34
Svendson, Tove 45
Pettersen, Kari 19

Ví dụ này trả về số hàng trong bảng:

Kết quả:

3

Ví dụ này trả về số người lớn hơn 20 tuổi:

Kết quả:

2

Hàm COUNT(column)

Hàm COUNT(column) trả về số hàng (ngoại trừ hàng có giá trị NULL) trong cột chỉ định.
Với bảng “Persons”:

Name Age
Hansen Ola 34
Svendson Tove 45
Pettersen Kari

Ví dụ này tìm số người có ghi tuổi tại field “Age” trong bảng “Persons”:

Kết quả:

2

 

Hàm COUNT(column) cũng dùng để tính số hàng không chứa trị. Chú ý kết quả sẽ nhỏ hơn số hàng trong bảng.

COUNT DISTINCT

Từ khóa DISTINCT với COUNT có thể dùng để đếm số kết quả khác nhau (không trùng nhau).
Cú pháp như sau:

Với bảng “Orders”:

Company OrderNumber
Sega 3412
W3Schools 2312
Trio 4678
W3Schools 6798

Với phát biểu SQL sau:

Sẽ trả về kết quả:

4

Với phát biểu SQL sau:

Sẽ trả về kết quả:

3

 

 

Xem phần tiếp: Câu lệnh truy vấn sql – phần 2

Like và chia sẻ bài viết này:

One thought on “Câu lệnh truy vấn SQL – Phần 1

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.