Câu lệnh truy vấn Sql

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

Tiếp theo bài Câu lệnh truy vấn SQL – Phần 1

Các hàm SQL

SQL có một số hàm tạo sẵn để đếm và tính toán.

Cú pháp dùng hàm

Cú pháp cho các hàm SQL tạo sẵn như sau::

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

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

Hàm AVG(column)

Hàm AVG trị trung bình của dữ liệu trong một cột có đu7ọc nhờ phép chọn. Các trị NULL sẽ không được tính toán.

Ví dụ

Ví dụ này trả về tuổi trung bình của những người trong bảng “Persons”:

Kết quả

32.67

Ví dụ

Ví dụ này trả về tuổi trung bình của những người có tuổi lớn hơn 20 tuổi:

Kết quả

39.5

Hàm MAX(column)

Hàm MAX trả về trị lớn nhất trong một cột. Các trị NULL sẽ không được tính toán.

Ví dụ

Kết quả:

45

Hàm MIN(column)

Hàm MIN trả về trị lớn nhất trong một cột. Các trị NULL sẽ không được tính toán.

Ví dụ

Kết quả:

19

Chú ý: Các hàm MIN và MAX cũng có thể dùng trên các cột văn bản, để tìm trị lớn nhất và nhỏ nhất theo thứ tự alphabet.

Hàm SUM(column)

Hàm SUM tổng của một cột có được nhờ phép chọn. Các trị NULL sẽ không được tính toán.

Ví dụ

Ví dụ này trả về tổng số tuổi của những người trong bảng “Persons”:

Kết quả:

98

Ví dụ

Ví dụ này trả về tổng số tuổi của những người lớn hơn 20 tuổi.

Kết quả:

79

 

SQL Group By và SQL Having

Các hàm tổng (như SUM) thường kèm theo chức năng GROUP BY.

Từ khóa GROUP BY

Từ khóa GROUP BY được thêm vào SQL vì các hàm tổng (như SUM) trả về tổng của tất cả các trị trong cột mỗi khi chúng ta gọi đến.

Thiếu chức năng GROUP BY, không thể tìm tổng của mỗi nhóm trị riêng trong cột.

Cú pháp của GROUP BY như sau:

Ví dụ GROUP BY

Bảng “Sales”:

Company Amount
W3Schools 5500
IBM 4500
W3Schools 7100

Với SQL:

Trả về kết quả như sau:

Company SUM(Amount)
W3Schools 17100
IBM 17100
W3Schools 17100

SQL trên không trả về tổng riêng biệt của từng công ty. Dùng mệnh đề GROUP BY như sau:

Sẽ trả về kết quả đúng:

Company SUM(Amount)
W3Schools 12600
IBM 4500

Từ khóa The HAVING

Từ khóa HAVING được thêm vào SQL vì từ khóa WHERE không thể dùng với các hàm tổng (như hàm SUM).

Thiếu từ khóa HAVING sẽ không thể kiểm tra các điều kiện dùng hàm tổng.

Cú pháp của HAVING như sau:

Bảng “Sales”:

Company Amount
W3Schools 5500
IBM 4500
W3Schools 7100

Với SQL:

Trả về kết quả

Company SUM(Amount)
W3Schools 12600

 

Các bí danh (Alias) SQL

Với SQL, các bí danh (alias) có thể dùng thay các tên cột và các tên bảng.

Bí danh tên Cột

Cú pháp như sau:

Bí danh tên Bảng

Cú pháp như sau:

Ví dụ: Dùng bí danh tên Cột

Bảng “Persons”:

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

Với SQL sau:

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

Family Name
Hansen Ola
Svendson Tove
Pettersen Kari

Ví dụ: Dùng bí danh tên Bảng

Bảng “Persons”:

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

Với SQL sau:

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

Bảng Employees:

LastName FirstName
Hansen Ola
Svendson Tove
Pettersen Kari

 

SQL Join

Joins and các Khóa (Key)

Đôi khi chúng ta chọn dữ liệu từ hai bảng để tạo kết quả, Chúng ta thực hiện một kết nối (join).
Các bảng trong cơ sở dữ liệu có thể liên hệ với các bảng khác thông qua các khóa. Một khóa chính (primary key) là một cột với các trị duy nhất cho mỗi hàng. Mục tiêu là ràng buộc dữ liệu, tham chiếu chéo các bảng, không cần lặp lại tất cả dữ liệu trong từng bảng.
Trong bảng “Employees” phía dưới, cột “ID” là khóa chính, nghĩa là cột này không có hai hàng cùng ID. ID dùng phân biệt hai người nếu cả hai có cùng tên.
Khi bạn xem bảng ví dụ phía dưới, chú ý rằng:
• Cột “ID” là khóa chính của bảng “Employees”
• Cột “ID” trong bảng “Orders” dùng để tham chiếu các tên trong bảng “Employees” không cần đưa các tên này vào
bảng “Orders”

Employees:

ID Name
01 Hansen, Ola
02 Svendson, Tove
03 Svendson, Stephen
04 Pettersen, Kari

Orders:

ID Product
01 Printer
03 Table
03 Chair

Tham chiếu đến hai Bảng

Chúng ta có thể chọn dữ liệu từ hai bảng bằng cách tham chiếu đến hai bảng, như sau:

Ví dụ

Ai đã đăng ký một sản phẩm và đăng ký sản phẩm nào?

Kết quả

Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair

Ví dụ

Ai đã đăng ký một máy in?

Kết quả

Name
Hansen, Ola

Dùng các Kết nối (Join)

HOẶC, chúng ta có thể chọn dữ liệu từ hai bảng với từ khóa JOIN, giống như sau:

Ví dụ INNER JOIN

Cú pháp

Ai đã đăng ký một sản phẩm và đăng ký sản phẩm nào?

INNER JOIN trả về tất cả các hàng từ hai bảng khi điều kiện được so trùng. Nếu các hàng trong bảng Employees không so trùng trong bảng Orders, hàng đó sẽ không được liệt kê ra.

Kết quả

Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair

Ví dụ LEFT JOIN

Cú pháp

Liệt kê tất cả nhân viên, và các đăng ký mua của họ nếu có.

LEFT JOIN trả về tất cả các hàng từ bảng thứ nhất (Employees), cho dù nó không được so trùng trong bảng thứ hai (Orders).
Nếu các hàng trong bảng Employees không so trùng trong bảng Orders, những hàng này cũng được liệt kê.

Kết quả

Name Product
Hansen, Ola Printer
Svendson, Tove
Svendson, Stephen Table
Svendson, Stephen Chair
Pettersen, Kari

Ví dụ RIGHT JOIN

Cú pháp

Liệt kê tất cả nhân viên, và các đăng ký mua của họ nếu có.

RIGHT JOIN trả về tất cả các hàng từ bảng thứ hai (Orders), cho dù nó không được so trùng trong bảng thứ nhất (Employees).
Nếu có bất kỳ hàng nào trong bảng Orders không được so trùng trong bảng Employees, các hàng này cũng được liệt kê.

Kết quả

Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair

Ví dụ

Ai đăng ký một máy in?

Kết quả

Name
Hansen, Ola

 

SQL Tạo Cơ sở dữ liệu và Bảng

Tạo một Cơ sở dữ liệu

Để tạo một cơ sở dữ liệu:

Tạo một bảng

Để tạo một bảng trong một cơ sở dữ liệu:

Ví dụ

Ví dụ này minh họa các bạn tạo một bảng tên “Person”, với bốn cột tên:”LastName”, “FirstName”, “Address”, và “Age”:

Ví dụ này minh họa cách bạn chỉ định kích thước tối đa của vài cột:

Kiểu dữ liệu được chỉ định là kiểu dữ liệu chứa trong cột. Bảng dưới chứa các kiểu dữ liệu thường gặp nhất trong SQL:
Kiểu dữ liệu Mô tả

integer(size) int(size) smallint(size) tinyint(size) Chỉ chứa số nguyên. Số ký tự số tối đa được chỉ định trong dấu ngoặc đơn
decimal(size, d) numeric(size,d) Chứa số với phân số. Số ký tự số tối đa được chỉ định trong size". Số ký tự số tối đa bên phải (phần phân số) được chỉ định trong 'd' "
char(size) Chứa chuỗi có kích thước cố định (có thể chứa ký tự chữ, số, và các ký tự đặc biệt). Kích thước cố định được chỉ định trong dấu ngoặc đơn
varchar(size) Chứa một chuỗi có chiều dài thay đổi (có thể chứa ký tự chữ, số, và các ký tự đặc biệt). Kích thước tối đa được chỉ định trong dấu ngoặc đơn
date(yyyymmdd) Chứa một ngày

Tạo Chỉ mục (Index)

Chỉ mục được tạo ra trên một bảng có sẵn để định vị thêm nhanh và hiệu quả các hàng. Có thể tạo một chỉ mục trên một hoặc nhiều cột của một bảng, với một chỉ mục cho một tên. Người dùng không nhìn thấy các chỉ mục, chúng chỉ dùng để tăng tốc độ truy vấn.
Chú ý: Cập nhật một bảng chứa chỉ mục cần nhiều thời gian hơn cập nhật một bảng không chứa chỉ mục, vì chỉ mục cũng cần cập nhật. Tuy nhiên, ý tưởng tốt là tạo chỉ mục chỉ trên các cột thường tìm kiếm nhất.

Một Chỉ mục duy nhất

Tạo một chỉ mục duy nhất trên một bảng. một chỉ mục duy nhất nghĩa là không thể có hai hàng có cùng một trị chỉ mục.

“column_name” chỉ định cột bạn muốn chỉ mục.

Một Chỉ mục đơn giản

Tạo một chỉ mục đơn giản trên một bảng. Khi từ khóa UNIQUE không có, các trị trùng sẽ được cho phép.

“column_name” chỉ định cột bạn muốn chỉ mục.

Ví dụ

Ví dụ này tạo một chỉ mục đơn giản, có tên “PersonIndex”, trên field LastName của bảng Person:

Nếu bạn muốn chỉ mục các trị trong một cột theo thứ tự giảm (descending), bạn có thể thêm từ DESC sau tên cột:

Nếu bạn muốn chỉ mục nhiều hơn một cột bạn có thể liệt kê các tên cột trong dấu ngoặc đơn, tách chúng bằng dấu phẩy:

Xóa chỉ mục

Bạn có thể xóa một chỉ mục có trong một bảng với phát biểu DROP.

Xóa một cơ sở dữ liệu hoặc bảng

Để xóa một cơ sở dữ liệu:

Để xóa một bảng:

Để xóa toàn bộ dữ liệu trong bảng mà không xóa bảng:

 

SQL Alter Table

Alter Table

Phát biểu ALTER TABLE dùng để thêm hay loại bỏ các cột trong một bảng cho trước.

Person:

LastName FirstName Address
Pettersen Kari Storgt 20

Ví dụ

Để thêm một cột tên “City” vào bảng “Person”:

Kết quả:

LastName FirstName Address City
Pettersen Kari Storgt 20

Ví dụ

Để loại cột “Address” khỏi bảng “Person”:

Kết quả:

LastName FirstName City
Pettersen Kari

 

 

 

 

 

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.