# Learn SQL ## SYNTAX ### SELECT ```sql= SELECT * FROM Customers ``` Lấy tất cả các cột của bảng Customers ### SELECT DISTINCT ```sql= SELECT DISTINCT Country FROM Customers; ``` Loại bỏ trùng lắp dữ liệu cột Country của bảng Customers ### BETWEEN ```sql= SELECT * FROM Products WHERE Price BETWEEN 50 AND 60; ``` Điều kiện giá trị cột Price nằm trong khoảng giá từ 50 đến 60 ### IN ```sql= SELECT * FROM Customers WHERE City IN ('Paris','London'); ``` Điều kiện giá trị cột City thỏa 2 trường hợp 'Paris' và 'London' ### ORDER BY ```sql= SELECT * FROM Customers ORDER BY Country ASC, CustomerName DESC; ``` Sắp xếp cột Country theo thứ tự alphabet và ngược thứ tự alphabet `ASC -> Ascending` `DESC -> Descending` ### INSERT INTO ```sql= INSERT INTO Customers (CustomerName, City, Country) VALUES ('Cardinal', 'Stavanger', 'Norway'); ``` ### NULL VALUES ```sql= SELECT CustomerName, ContactName, Address FROM Customers WHERE Address IS NULL; ``` ```sql= SELECT CustomerName, ContactName, Address FROM Customers WHERE Address IS NOT NULL; ``` ### UPDATE ```sql= UPDATE Customers SET ContactName='Juan' WHERE Country='Mexico'; ``` `Be careful when updating records. If you omit the WHERE clause, ALL records will be updated!` ### DELETE ```sql= DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste'; ``` Xóa dữ liệu trong bảng với điều kiện ```sql= DELETE FROM Customers; ``` Xóa cả bảng ## TOP, LIMIT and FIRST ### TOP ```sql= SELECT TOP 3 * FROM Customers; ``` Lấy ra 3 hàng dữ liệu -> Dùng cho Sql server TOP sẽ không hỗ trợ trên my sql ### LIMIT ```sql= SELECT * FROM Customers LIMIT 3; ``` Lấy ra 3 hàng dữ liệu -> Dùng cho My sql ### FIRST ```sql= SELECT * FROM Customers WHERE Country='Germany' FETCH FIRST 3 ROWS ONLY; ``` -> Dùng cho Oracle ## COUNT(), AVG() and SUM() ### COUNT() ```sql= SELECT COUNT(ProductID) FROM Products; ``` | COUNT(ProductID) | | -------- | | 7 | ### AVG() ```sql= SELECT AVG(Price) FROM Products; ``` | AVG(Price) | | -------- | | 28.866363636363637 | Tính trung bình cộng cột Price ### SUM() ```sql= SELECT SUM(Quantity) FROM OrderDetails; ``` | SUM(Quantity) | | -------- | | 12743 | Tính tổng giá trị cột Quantity ### LIKE ```sql= SELECT * FROM Customers WHERE City LIKE 's%'; ``` Điều kiện giá trị cột City bắt đầu bằng chữ **s** ```sql= SELECT * FROM Customers WHERE CustomerName LIKE '%a'; ``` Điều kiện giá trị cột CustomerName kết thúc bằng chữ **a** ```sql= SELECT * FROM Customers WHERE CustomerName LIKE '%or%'; ``` Điều kiện giá trị cột CustomerName có chứa **or** ở giữa ```sql= SELECT * FROM Customers WHERE CustomerName LIKE '_r%'; ``` Điều kiện giá trị cột CustomerName có chứa **r** ở ví trí thứ 2 và có ít nhất 2 chữ cái ```sql= SELECT * FROM Customers WHERE CustomerName LIKE 'a__%'; ``` Điều kiện giá trị cột CustomerName có chứa **a** ở đầu và có ít nhất 3 chữa cái ```sql= SELECT * FROM Customers WHERE ContactName LIKE 'a%o'; ``` Điều kiện giá trị cột CustomerName bắt đầu bằng **a** và kết thúc bằng **o** ```sql= SELECT * FROM Customers WHERE ContactName LIKE '[acs]%'; ``` Điều kiện giá trị cột CustomerName bắt đầu bằng **a** hoặc **c** hoặc **s** ```sql= SELECT * FROM Customers WHERE CustomerName NOT LIKE 'a%'; ``` Điều kiện giá trị cột CustomerName không chứa **a** ở đầu ## AS ->ALIAS Dùng khi muốn hiện thị tên gọn hơn ## JOIN ### (INNER) JOIN ![](https://www.w3schools.com/sql/img_innerjoin.gif) ```sql= SELECT Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID; ``` ### LEFT (OUTER) JOIN ![](https://www.w3schools.com/sql/img_leftjoin.gif) ```sql= SELECT Customers.CustomerName, Orders.OrderID FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID ORDER BY Customers.CustomerName; ``` ### RIGHT (OUTER) JOIN ![](https://www.w3schools.com/sql/img_rightjoin.gif) ```sql= SELECT Orders.OrderID, Employees.LastName, Employees.FirstName FROM Orders RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID ORDER BY Orders.OrderID; ``` ### FULL (OUTER) JOIN ![](https://www.w3schools.com/sql/img_fulljoin.gif) ```sql= SELECT Customers.CustomerName, Orders.OrderID FROM Customers FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CustomerName; ``` ### SELF JOIN ```sql= SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City FROM Customers A, Customers B WHERE A.CustomerID <> B.CustomerID AND A.City = B.City ORDER BY A.City; ``` ## DATABASE ### CREATE TABLE ``` sql= CREATE TABLE Persons ( PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) ); ``` ## STORED PROCEDURE ### CREATE ``` sql= CREATE PROCEDURE SelectAllCustomers @City nvarchar(30), @PostalCode nvarchar(10) AS SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode GO; ``` ### EXEC ``` sql= EXEC SelectAllCustomers; ```