Làm quen với SQL
Bài đăng này đã không được cập nhật trong 8 năm
I. Giới thiệu
SQL là một ngôn ngữ tiêu chuẩn để truy cập và tương tác với cơ sở dữ liệu.
SQL là viết tắt của Structured Query Language. là một tiêu chuẩn ANSI (American National Standards Institute)
SQL có thể làm gì?
- SQL có thể thực hiện các truy vấn đề cơ sở dữ liệu
- SQL có thể khôi phục dữ liệu từ cơ sở dữ liệu
- SQL có thể thêm bản ghi vào cơ sở dữ liệu
- SQL có thể cập nhật bản ghi trong cơ sở dữ liệu
- SQL có thể xóa bản ghi trong 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 cơ sở dữ liệu
- SQL có thể tạo thủ tục lưu trữ trong cơ sở dữ liệu
- SQL có thể xét quyền cho bảng, thủ tục...
II. Các câu lệnh SQL cơ bản
1. SELECT
Dùng để chọn dữ liệu từ cơ sở dữ liệu
SELECT CustomerName ,City
FROM Customers;
Chọn 2 cột CustomerName ,City từ bảng Customers.
SELECT * FROM Customers;
Chọn tất cả các cột từ bảng Customers.
2. DISTINCT
Dùng để trả về các giá trị khác nhau, không bị trùng lặp.
SELECT DISTINCT City
FROM Customers;
Chọn cột City từ bảng table_name và loại bỏ đi các gía trị bị trùng.
3. WHERE
Dùng để lọc dữ liệu.
SELECT * FROM Customers
WHERE Country='Mexico';
Chọn tất cả các cột từ bảng table_name mà Country giá trị bằng Mexico.
4. AND & OR
Là 2 biểu thức dùng để lọc dữ liệu trong điều kiện.
SELECT * FROM Customers
WHERE Country='Germany'
AND City='Berlin';
Chọn các bản ghi từ bảng Customers với điều kiên Count = 'Germany' và County = 'Berlin'
SELECT * FROM Customers
WHERE City='Berlin'
OR City='München';
Chọn các bản ghi từ bảng Customers với điều kiên Count = 'Germany' hoặc County = 'Berlin'
5. ORDER BY
Dùng để sắp xếp kết quả
SELECT * FROM Customers
ORDER BY Country;
Chọn tất cả các cột từ bảng Customers và sắp xếp theo Country
6. INSERT INTO
Dùng để thêm bản ghi mới.
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal','Tom B. Erichsen','Skagen 21','Stavanger','4006','Norway');
Thêm bản ghi mới vào bảng Customers.
7. UPDATE
Dùng để cập nhật bản ghi.
UPDATE Customers
SET ContactName='Alfred Schmidt', City='Hamburg'
WHERE CustomerName='Alfreds Futterkiste';
Trong bảng Customers, bản ghi nào có trường CustomersName = 'Alfreds Futterkiste' thì cập nhật ContactName='Alfred Schmidt' và City='Hamburg'.
8. DELETE
Dùng để xóa bản ghi.
DELETE FROM Customers
WHERE CustomerName='Alfreds Futterkiste' AND ContactName='Maria Anders';
Xóa bản ghi nào có CustomerName='Alfreds Futterkiste' và ContactName='Maria Anders' trong bảng Customers.
9. INNER JOIN
Chọn tất cả các dòng từ 2 bảng miễn là có sự ràng buộc giữu 2 cột trong 2 bảng đó.
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;
Trả về CustomerName của bảng Customers và OrderID của bảng Orders, sao cho CustomerID của 2 bảng bằng nhau và sắp xếp theo CustomerName của bảng Customers.
10. Alias
Dùng để gán bí danh (tên viết tắt) cho cột hoặc cho bảng.
SELECT CustomerName AS Customer, ContactName AS [Contact Person]
FROM Customers;
Gán bí danh cho cột CustomerName của bảng Customer là Customer. Gán cho cột ContactName là [Contact Person].
SELECT o.OrderID, o.OrderDate, c.CustomerName
FROM Customers AS c, Orders AS o
WHERE c.CustomerName="Around the Horn" AND c.CustomerID=o.CustomerID;
Gán bí danh cho bảng Customer là c và bảng Orders là o.
III. Các hàm trong SQL
1. AVG()
Trả về giá trị trung bình của một cột mà giá trị là số.
SELECT AVG(Price) FROM Products;
Trả về giá trị trung bình của cột Price từ bảng Products.
2. COUNT()
Trả về số lượng dòng thỏa mãn điều kiện.
SELECT COUNT(CustomerID)
FROM Orders
WHERE CustomerID=7;
Trả về số lượng dòng của cột CustomerID từ bảng Orders mà có CustomerID = 7.
3. SUM()
Trả về tổng của các cột có giá trị là số và thỏa mãn điều kiện.
SELECT SUM(Quantity)
FROM OrderDetails
WHERE OrderID = 10248;
Trả về tổng của Quantity từ bảng OrderDetails mà có OrderID = 10248.
4. GROUP BY
Sử dụng kém với SELECT để sắp xếp dữ liệu đồng nhất vào trong các nhóm. GROUP BY ở sau WHERE và trước ORDER BY.
SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders
LEFT JOIN Shippers
ON Orders.ShipperID=Shippers.ShipperID
GROUP BY ShipperName;
Gộp tất cả Shippers theo ShipperName sao cho Orders.ShipperID=Shippers.ShipperID rồi tính tổng
IV. Biến cục bộ
Để khai báo biến cục bộ ta dùng DECLARE.
Ví dụ:
DECLARE @OrderId int;
Gán giá trị cho biến ta có 2 cách
1. SET
SET @[Tên biến] = [giá trị]
Ví dụ:
SET @OrderId = 10250;
2. SELECT
SELECT @[Tên Biến] = Tên_Cột From [Bảng]
Ví dụ:
SELECT @OrderId = OrderId from Orders
Phạm vi hoạt động của một biến
1. Trong 1 batch
2. Trong một Stored Procedure hay Trigger
V. Transaction
Transaction trong SQL là một đơn vị công việc được thực hiện bởi một Database. Đảm bảo các thao tác được thực hiện cùng nhau, và có thể hoàn tác nếu các thao tác đó thực hiện không đúng theo ý mình.
Để bắt đầu một Transaction ta dùng câu lệnh.
START TRANSACTION;
- Lệnh 1
- Lệnh 2
…
ROLLBACK;
COMMIT;
Muốn hoàn tác các thao tác đã thực hiện ta sử dụng ROLLBACK; còn muốn xác nhận và lưu lại các thay đổi đó thì dùng COMMIT;
All rights reserved