Tìm hiểu về câu lệnh truy vấn là gì

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 34

Tìm hiểu về câu lệnh truy vấn là gì?

và câu lệnh select trong


SQL

1. Câu lệnh truy vấn là gì?

Nó là một câu lệnh SQL với mục đích truy vấn một hoặc nhiều dữ liệu
nào đó từ một cơ sở dữ liệu đã có và bằng một số câu lệnh mà SQL hỗ
trợ sau đây:

 SELECT – trích xuất dữ liệu từ cơ sở dữ liệu


 UPDATE – cập nhật dữ liệu trong cơ sở dữ liệu
 DELETE – xóa dữ liệu khỏi cơ sở dữ liệu
 INSERT INTO – chèn dữ liệu mới vào cơ sở dữ liệu
 CREATE DATABASE – tạo cơ sở dữ liệu mới
 ALTER DATABASE – sửa đổi cơ sở dữ liệu
 CREATE TABLE – tạo một bảng mới
 ALTER TABLE – sửa đổi bảng
 DROP TABLE – xóa bảng
 CREATE INDEX – tạo chỉ mục (khóa tìm kiếm)
 DROP INDEX – xóa chỉ mục

2. Tìm hiểu về câu lệnh SELECT

Câu lệnh SELECT được sử dụng để chọn dữ liệu từ cơ sở dữ liệu.

Dữ liệu trả về được lưu trữ trong một bảng kết quả, được gọi là tập
kết quả.

Cú pháp

SELECT column1, column2, ...


FROM table_name;
Ở đây, column1, column2, … là tên trường của bảng mà bạn muốn chọn
dữ liệu. Nếu bạn muốn chọn tất cả các trường có sẵn trong bảng, hãy
sử dụng cú pháp sau:

SELECT * FROM table_name;


Ví dụ:

SELECT CustomerName, City FROM Customers;


3. Câu lệnh SELECT DISTINCT

Câu lệnh SELECT DISTINCT chỉ được sử dụng để trả về các giá trị
riêng biệt (khác nhau).

Bên trong một bảng, một cột thường chứa nhiều giá trị trùng lặp, và
đôi khi bạn chỉ muốn liệt kê các giá trị khác nhau (riêng biệt).

Cú pháp

SELECT DISTINCT column1, column2, ...


FROM table_name;
Ví dụ: Câu lệnh SQL sau chỉ chọn các giá trị DISTINCT từ cột
“Country” trong bảng “Customers”:

SELECT DISTINCT Country FROM Customers;

Sử dụng WHERE và AND, OR, Not, Order By với SELECT


trong SQL
1. Mệnh đề WHERE
Mệnh đề WHERE được sử dụng để lọc các dữ liệu.

Mệnh đề WHERE chỉ được sử dụng để trích xuất những dữ liệu đáp ứng
một điều kiện cụ thể.

1.1 Cú pháp

SELECT column1, column2, ...


FROM table_name
WHERE condition;
Lưu ý: Mệnh đề WHERE không chỉ được sử dụng trong câu lệnh SELECT,
nó còn được sử dụng trong câu lệnh UPDATE, DELETE, v.v.!

Ví dụ: Câu lệnh SQL sau chọn tất cả khách hàng từ quốc gia
“Stavaer”, trong bảng “Customers”:

SELECT * FROM Customers


WHERE Country='Stavaer';
SELECT * FROM Customers
WHERE CustomerID=1;
1.2 Các toán tử(Operator) sử dụng trong mệnh đề Where

Các toán tử sau có thể được sử dụng trong mệnh đề WHERE:

Operato
Mô tả
r

= Bằng

> Lớn hơn

< Nhỏ hơn

>= Lớn hơn hoặc bằng

<= Nhỏ hơn hoặc bằng

Khác. Lưu ý: Trong một số phiên bản SQL, toán tử này có thể được
<>
viết là !=

BETWEEN Trong khoảng nào đó

LIKE Tìm kiếm một mẫu giống

IN Để chỉ định nhiều giá trị có thể có cho một cột

2. Toán tử AND, OR and NOT

Mệnh đề WHERE có thể được kết hợp với các toán tử AND, OR và NOT.

Toán tử AND và OR được sử dụng để lọc các dữ liệu dựa trên nhiều hơn
một điều kiện:

Toán tử AND hiển thị một dữ liệu nếu tất cả các điều kiện được phân
tách bằng AND đều ĐÚNG.
Toán tử OR hiển thị một dữ liệu nếu bất kỳ điều kiện nào được phân
tách bởi OR là TRUE.

Toán tử NOT hiển thị bản ghi nếu (các) điều kiện KHÔNG ĐÚNG.
2.1 Cú pháp AND

SELECT column1, column2, ...


FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;
Ví dụ: Câu lệnh SQL sau chọn tất cả các trường từ “Customers” có
quốc gia là “Germany” VÀ thành phố là “Berlin”:

SELECT * FROM Customers


WHERE Country='Germany' AND City='Berlin';

2.2 Cú pháp OR

SELECT column1, column2, ...


FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;
Ví dụ: Câu lệnh SQL sau chọn tất cả các trường từ “Customers” có
thành phố là “Berlin” HOẶC “München”:

SELECT * FROM Customers


WHERE City='Berlin' OR City='München';

2.3 Cú pháp NOT

SELECT column1, column2, ...


FROM table_name
WHERE NOT condition;
Ví dụ: Câu lệnh SQL sau chọn tất cả các trường từ “Customers” mà
quốc gia KHÔNG phải là “Germany”:

SELECT * FROM Customers


WHERE NOT Country='Germany';

2.4 Kết hợp AND, OR và NOT

Ví dụ: Câu lệnh SQL sau chọn tất cả các trường từ “Customers” trong
đó quốc gia là “Germany” VÀ thành phố phải là “Berlin” HOẶC
“München” (sử dụng dấu ngoặc đơn để tạo biểu thức phức tạp):
SELECT * FROM Customers
WHERE Country='Germany' AND (City='Berlin' OR City='München');
SELECT * FROM Customers
WHERE NOT Country='Germany' AND NOT Country='USA';

3. ORDER BY trong SQL

Từ khóa ORDER BY được sử dụng để sắp xếp tập hợp kết quả theo thứ tự
tăng dần hoặc giảm dần.

Từ khóa ORDER BY sắp xếp các dữ liệu theo thứ tự tăng dần theo mặc
định. Để sắp xếp các dữ liệu theo thứ tự giảm dần, hãy sử dụng từ
khóa DESC.

3.1 Cú pháp

SELECT column1, column2, ...


FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
Ví dụ: Câu lệnh SQL sau chọn tất cả khách hàng từ bảng “Customers”,
được sắp xếp theo cột “Country”:

SELECT * FROM Customers


ORDER BY Country;
Ví dụ: Câu lệnh SQL sau chọn tất cả khách hàng từ bảng “Customers”,
được sắp xếp GIẢM DẦN theo cột “Country”:

SELECT * FROM Customers


ORDER BY Country DESC;

3.1 ORDER BY trên nhiều cột

Ví dụ: Câu lệnh SQL sau chọn tất cả khách hàng từ bảng “Customers”,
được sắp xếp theo cột “Country” và cột “CustomerName”. Điều này có
nghĩa là nó đặt hàng theo Quốc gia, nhưng nếu một số hàng có cùng
Quốc gia, nó sẽ đặt hàng theo CustomerName:

SELECT * FROM Customers


ORDER BY Country, CustomerName;
Ví dụ: Câu lệnh SQL sau chọn tất cả khách hàng từ bảng “Customers”,
được sắp xếp tăng dần theo “Country” và giảm dần theo cột
“CustomerName”
SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;

Tìm hiểu về INSERT INTO, UPDATE, DELETE dữ liệu


trong SQL
1. Câu lệnh INSERT
Câu lệnh INSERT INTO được sử dụng để chèn các dữ liệu mới vào trong
bảng.

1.1. Cú pháp

Có thể viết câu lệnh INSERT INTO theo hai cách.

Cách đầu tiên chỉ định cả tên cột và giá trị sẽ được chèn:

INSERT INTO table_name (column1, column2, column3, ...)


VALUES (value1, value2, value3, ...);
Nếu bạn đang thêm giá trị cho tất cả các cột của bảng, bạn không cần
chỉ định tên cột trong câu truy vấn SQL. Tuy nhiên, hãy đảm bảo thứ
tự của các giá trị theo thứ tự với các cột trong bảng. Cú pháp
INSERT INTO sẽ như sau:

INSERT INTO table_name


VALUES (value1, value2, value3, ...);
Nếu bạn muốn chèn nhiều dữ liệu cùng một lúc thì có thể làm như sau:

INSERT INTO table_name (column1, column2, column3, ...)


VALUES (value1, value2, value3, ...),
(value1, value2, value3, ...),
(value1, value2, value3, ...),
(value1, value2, value3, ...);
Ví dụ: Câu lệnh SQL sau sẽ chèn một dữ liệu mới trong bảng
“Customers”:

INSERT INTO Customers (CustomerName, ContactName, Address, City,


PostalCode, Country)
VALUES ('Wilman', 'Matti Karttunen', 'Keskuskatu 21', 'Helsinki',
'4006', 'Norway');
1.2. Chèn dữ liệu chỉ trong các cột được chỉ định

Cũng có thể chỉ chèn dữ liệu trong các cột cụ thể.

Câu lệnh SQL sau sẽ chèn một dữ liệu mới, nhưng chỉ chèn dữ liệu
trong các cột “CustomerName”, “City” và “Country” (CustomerID sẽ
được cập nhật tự động):

INSERT INTO Customers (CustomerName, City, Country)


VALUES ('Xuan David', 'Hà Nội', 'VN');
Lưu ý: Các bạn tham khảo bài giới thiệu nàyđể lấy dữ liệu mẫu và
chạy các ví dụ của toàn bộ series này nha.

2. Câu lệnh UPDATE

Câu lệnh UPDATE được sử dụng để sửa đổi các dữ liệu hiện có trong
bảng.

2.1. Cú pháp

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
Lưu ý: Hãy cẩn thận khi cập nhật các dữ liệu trong một bảng! Lưu ý
mệnh đề WHERE trong câu lệnh UPDATE. Mệnh đề WHERE chỉ định (các) dữ
liệu cần được cập nhật. Nếu bạn bỏ qua mệnh đề WHERE, tất cả các dữ
liệu trong bảng sẽ được cập nhật!

Ví dụ: Câu lệnh SQL sau cập nhật khách hàng đầu tiên (CustomerID =
1) với tên người liên hệ và thành phố.

UPDATE Customers
SET ContactName = 'Cafedev', City= 'HCM'
WHERE CustomerID = 1;

2.2. Cập nhật nhiều dữ liệu một lúc

Đó là mệnh đề WHERE xác định có bao nhiêu bản ghi sẽ được cập nhật.

Câu lệnh SQL sau sẽ cập nhật tên liên hệ thành “Cafedev” cho tất cả
các dữ liệu có quốc gia là “VN”:
UPDATE Customers
SET ContactName='Cafedev'
WHERE Country='VN';
Lưu ý: Hãy cẩn thận khi cập nhật. Nếu bạn bỏ qua mệnh đề WHERE, TẤT
CẢ các dữ liệu sẽ được cập nhật!

UPDATE Customers
SET ContactName='Cafedev';

3. Câu lệnh Delete

Câu lệnh DELETE được sử dụng để xóa các dữ liệu hiện có trong bảng.

DELETE FROM table_name WHERE condition;


Lưu ý: Hãy cẩn thận khi xóa các dữ liệu trong bảng! Lưu ý mệnh đề
WHERE trong câu lệnh DELETE. Mệnh đề WHERE chỉ định (các) dữ liệu
nào nên được xóa. Nếu bạn bỏ qua mệnh đề WHERE, tất cả các dữ liệu
trong bảng sẽ bị xóa!

Ví dụ: Câu lệnh SQL sau xóa khách hàng “Cafedev” khỏi bảng
“Customers”:

DELETE FROM Customers WHERE CustomerName='Cafedev';

3.1. Xóa tất cả các dữ liệu của 1 bảng

Có thể xóa tất cả các hàng trong bảng mà không cần xóa bảng. Điều
này có nghĩa là cấu trúc bảng, thuộc tính và chỉ mục sẽ được giữ
nguyên:

DELETE FROM table_name;


Ví dụ: Câu lệnh SQL sau sẽ xóa tất cả các hàng trong bảng
“Customers” mà không xóa bảng:

DELETE FROM Customers;

Sử dụng TOP, LIMIT or ROWNUM, TOP PERCENT trong SQL

1.Câu lệnh SELECT TOP


Mệnh đề SELECT TOP được sử dụng để chỉ định số lượng dữ liệu sẽ trả
về.

Mệnh đề SELECT TOP hữu ích trên các bảng lớn với hàng nghìn dữ liệu.
Trả lại một số lượng lớn bản ghi có thể ảnh hưởng đến hiệu suất.

Lưu ý: Không phải tất cả các hệ thống cơ sở dữ liệu đều hỗ trợ mệnh
đề SELECT TOP. MySQL hỗ trợ mệnh đề LIMIT để chọn một số dữ liệu với
giới hạn, trong khi Oracle sử dụng ROWNUM.

1.1. Cú pháp cho SQL Server / MS Access:

SELECT TOP number|percent column_name(s)


FROM table_name
WHERE condition;

1.2. Cú pháp cho MySQL:

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;

1.3. Cú pháp cho Oracle:

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;
Ví dụ: Câu lệnh SQL sau chọn ba bản ghi đầu tiên từ bảng “Customers”
(dành cho SQL Server / MS Access):

SELECT TOP 3 * FROM Customers;


Ví dụ: Câu lệnh SQL sau hiển thị ví dụ tương đương bằng cách sử dụng
mệnh đề LIMIT (cho MySQL):

SELECT * FROM Customers


LIMIT 3;
Ví dụ: Câu lệnh SQL sau đây cho thấy ví dụ tương đương bằng cách sử
dụng ROWNUM (dành cho Oracle):

SELECT * FROM Customers


WHERE ROWNUM <= 3;
Ví dụ: Câu lệnh SQL sau chọn 50% dữ liệu đầu tiên từ bảng
“Customers” (dành cho SQL Server / MS Access):

SELECT TOP 50 PERCENT * FROM Customers;


Ví dụ: Câu lệnh SQL sau chọn ba dữ liệu đầu tiên từ bảng
“Customers”, trong đó quốc gia là “VN” (đối với SQL Server / MS
Access):

SELECT TOP 3 * FROM Customers


WHERE Country='VN';
Ví dụ: Câu lệnh SQL sau hiển thị ví dụ tương đương bằng cách sử dụng
mệnh đề LIMIT (cho MySQL):

SELECT * FROM Customers


WHERE Country='VN'
LIMIT 3;
Ví dụ: Câu lệnh SQL sau đây cho thấy ví dụ tương đương bằng cách sử
dụng ROWNUM (dành cho Oracle):

SELECT * FROM Customers


WHERE Country='VN' AND ROWNUM <= 3;

Sử dụng hàm MIN(), MAX(),COUNT(), AVG() và SUM()


với SELECT trong SQL

1. Hàm Min() và Max

Hàm MIN() trả về giá trị nhỏ nhất của cột đã chọn.

Hàm MAX() trả về giá trị lớn nhất của cột đã chọn.

1.1. Cú pháp MIN()

SELECT MIN(column_name)
FROM table_name
WHERE condition;

1.2. Cú pháp MAX()

SELECT MAX(column_name)
FROM table_name
WHERE condition;
Ví dụ: Câu lệnh SQL sau tìm giá của sản phẩm rẻ nhất:

SELECT MIN(Price) AS SmallestPrice


FROM Products;
Ví dụ: Câu lệnh SQL sau tìm giá của sản phẩm đắt nhất:

SELECT MAX(Price) AS LargestPrice


FROM Products;

2. Hàm COUNT(), AVG() và SUM()

Hàm COUNT() trả về số hàng phù hợp với tiêu chí được chỉ định.

Hàm AVG() trả về giá trị trung bình của một cột số.

Hàm SUM() trả về tổng tổng của một cột số.

2.1. Cú pháp hàm COUNT()

SELECT COUNT(column_name)
FROM table_name
WHERE condition;

2.2. Cú pháp hàm AVG()

SELECT AVG(column_name)
FROM table_name
WHERE condition;

2.3. Cú pháp hàm SUM()

SELECT SUM(column_name)
FROM table_name
WHERE condition;
Ví dụ: Câu lệnh SQL sau tìm số lượng sản phẩm:

SELECT COUNT(ProductID)
FROM Products;
Lưu ý: Giá trị NULL không được tính.

Ví dụ: Câu lệnh SQL sau tìm giá trung bình của tất cả các sản phẩm:

SELECT AVG(Price)
FROM Products;
Lưu ý: Giá trị NULL bị bỏ qua.

Ví dụ: Câu lệnh SQL sau tìm tổng các trường “Quantity” trong bảng
“OrderDetails”:

SELECT SUM(Quantity)
FROM OrderDetails;

Toán tử Wildcards trong SQL


1. Ký tự Wildcards là gì?
Một ký tự Wildcards được sử dụng để thay thế một hoặc nhiều ký tự
trong một chuỗi.

Các ký tự Wildcards được sử dụng với toán tử LIKE SQL. Toán


tử LIKE được sử dụng trong mệnh đề WHERE để tìm kiếm một mẫu cụ thể
trong một cột.

2. Ký tự Wildcards trong MS Access


Mô tả Ví dụ
hiệu.

Đại diện cho không hoặc nhiều bl* sẽ tìm thấy bl, black, blue,
*
ký tự and blob

h?t sẽ tìm thấy hot, hat, and


? Đại diện cho một ký tự
hit

Đại diện cho bất kỳ ký tự đơn h[oa]t sẽ tìm thấy hot and hat,
[]
nào trong dấu ngoặc but not hit

Đại diện cho bất kỳ ký tự nào h[!oa]t sẽ tìm thấy hit, but not
!
không có trong dấu ngoặc hot and hat

– Đại diện cho một loạt các ký c[a-b]t sẽ tìm thấy cat and cbt
tự

2#5 sẽ tìm thấy 205, 215, 225,


Đại diện cho bất kỳ ký tự số
# 235, 245, 255, 265, 275, 285,
đơn lẻ nào
and 295

3. Ký tự Wildcards trong SQL Server


Mô tả Ví dụ
hiệu.

bl% sẽ tìm thấy bl,


% Đại diện cho không hoặc nhiều ký tự
black, blue, and blob

h_t sẽ tìm thấy hot,


_ Đại diện cho một ký tự
hat, and hit

Đại diện cho bất kỳ ký tự đơn nào h[oa]t sẽ tìm thấy hot
[]
trong dấu ngoặc and hat, but not hit

Đại diện cho bất kỳ ký tự nào không h[^oa]t sẽ tìm thấy hit,
^
có trong dấu ngoặc but not hot and hat

c[a-b]t sẽ tìm thấy cat


– Đại diện cho một loạt các ký tự
and cbt

Tất cả các ký tự wildcards cũng có thể được sử dụng kết hợp!

Dưới đây là một số ví dụ hiển thị các toán tử LIKE khác nhau với các
ký tự đại diện ‘%’ và ‘_’:

LIKE Operator Description

WHERE CustomerName LIKE ‘a%’ Tìm bất kỳ giá trị nào bắt đầu bằng “a”

WHERE CustomerName LIKE ‘%a’ Tìm bất kỳ giá trị nào kết thúc bằng “a”

WHERE CustomerName LIKE ‘%or Tìm bất kỳ giá trị nào có “hoặc” ở bất
%’ kỳ vị trí nào

Tìm bất kỳ giá trị nào có “r” ở vị trí


WHERE CustomerName LIKE ‘_r%’
thứ hai
Tìm bất kỳ giá trị nào bắt đầu bằng “a”
WHERE CustomerName LIKE ‘a_%’
và có ít nhất 2 ký tự

WHERE CustomerName LIKE ‘a__ Tìm bất kỳ giá trị nào bắt đầu bằng “a”
%’ và có ít nhất 3 ký tự

Tìm bất kỳ giá trị nào bắt đầu bằng “a”


WHERE ContactName LIKE ‘a%o’
và kết thúc bằng “o”

4. Ví dụ

 Câu lệnh SQL sau chọn tất cả khách hàng có CustomerName bắt
đầu bằng “a”:

SELECT * FROM Customers


WHERE CustomerName LIKE 'a%';

 Câu lệnh SQL sau chọn tất cả các khách hàng có CustomerName
kết thúc bằng “a”:

SELECT * FROM Customers


WHERE CustomerName LIKE '%a';

 Câu lệnh SQL sau đây chọn tất cả khách hàng có CustomerName
có “or” ở bất kỳ vị trí nào:

SELECT * FROM Customers


WHERE CustomerName LIKE '%or%';

 Câu lệnh SQL sau chọn tất cả khách hàng có CustomerName có


“r” ở vị trí thứ hai:

SELECT * FROM Customers


WHERE CustomerName LIKE '_r%';

 Câu lệnh SQL sau đây chọn tất cả khách hàng có CustomerName
bắt đầu bằng “a” và có ít nhất 3 ký tự:

SELECT * FROM Customers


WHERE CustomerName LIKE 'a__%';
 Câu lệnh SQL sau đây chọn tất cả khách hàng có Tên liên hệ
bắt đầu bằng “a” và kết thúc bằng “o”:

SELECT * FROM Customers


WHERE ContactName LIKE 'a%o';

 Câu lệnh SQL sau đây chọn tất cả khách hàng có CustomerName
KHÔNG bắt đầu bằng “a”:

SELECT * FROM Customers


WHERE CustomerName NOT LIKE 'a%';

Tìm hiểu về toán tử IN, NOT IN, Between, NOT


BETWEEN trong SQL
1. Toán tử IN vs NOT IN
Toán tử IN cho phép bạn chỉ định nhiều giá trị trong mệnh đề WHERE.

Toán tử IN là cách viết tắt của nhiều điều kiện OR.

Cú pháp:

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
or

SELECT column_name(s)
FROM table_name
WHERE column_name IN (SELECT STATEMENT);
Trong cú pháp trên có SELECT STATEMENT, đây là một câu truy vấn nào
đó để lấy ra 1 or nhiều giá trị cho toán tử IN.

Ví dụ:

 Câu lệnh SQL sau đây chọn tất cả khách hàng ở “VN”, “US”
hoặc “UK”:

SELECT * FROM Customers


WHERE Country IN ('VN', 'US', 'UK');
 Câu lệnh SQL sau chọn tất cả khách hàng KHÔNG ở “VN”, “US”
hoặc “UK”:

SELECT * FROM Customers


WHERE Country NOT IN ('VN', 'US', 'UK');

 Câu lệnh SQL sau đây chọn tất cả khách hàng đến từ các quốc
gia giống như nhà cung cấp:

SELECT * FROM Customers


WHERE Country IN (SELECT Country FROM Suppliers);

2. Toán tử Between, NOT BETWEEN

Toán tử BETWEEN chọn các giá trị trong một phạm vi nhất định. Các
giá trị có thể là số, văn bản hoặc ngày tháng.

Toán tử BETWEEN được bao gồm: giá trị bắt đầu và kết thúc được bao
gồm.

Cú pháp:

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
Ví dụ:

 Câu lệnh SQL sau đây chọn tất cả các sản phẩm có giá GIỮA 10
và 20:

SELECT * FROM Products


WHERE Price BETWEEN 10 AND 20;

 Để hiển thị các sản phẩm nằm ngoài phạm vi của ví dụ trước,
hãy sử dụng KHÔNG GIỮA:

SELECT * FROM Products


WHERE Price NOT BETWEEN 10 AND 20;

 Câu lệnh SQL sau đây chọn tất cả các sản phẩm có giá GIỮA 10
và 20. Ngoài ra; không hiển thị các sản phẩm có CategoryID
là 1,2 hoặc 3:
SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20
AND CategoryID NOT IN (1,2,3);

 Câu lệnh SQL sau đây chọn tất cả các sản phẩm có Tên sản
phẩm GIỮA Bia và Rượi:

SELECT * FROM Products


WHERE ProductName BETWEEN 'Bia' AND 'Rượi'
ORDER BY ProductName;
NOT BETWEEN Text

 Câu lệnh SQL sau đây chọn tất cả các sản phẩm có Tên sản
phẩm KHÔNG GIỮA Bia và Rượi:

SELECT * FROM Products


WHERE ProductName NOT BETWEEN 'Bia' AND 'Rượi'
ORDER BY ProductName;
BETWEEN Dates

 Câu lệnh SQL sau đây chọn tất cả các đơn hàng có Ngày đặt
hàng GIỮA ’01 -July-1996 ‘và ’31 -July-1996’:

SELECT * FROM Orders


WHERE OrderDate BETWEEN #01/07/1996# AND #31/07/1996#;
or

SELECT * FROM Orders


WHERE OrderDate BETWEEN '1996-07-01' AND '1996-07-31';

Tìm hiểu về từ AS hay gọi là Aliases trong SQL


1. Aliases(Bí danh) – AS
Bí danh trong SQL được sử dụng để đặt tên tạm thời cho một bảng hoặc
một cột trong bảng.

Bí danh thường được sử dụng để làm cho tên cột dễ đọc hơn.

Bí danh chỉ tồn tại trong thời gian truy vấn.

Cú pháp bí danh cho cột:


SELECT column_name AS alias_name
FROM table_name;
Cú pháp bí danh cho bảng:

SELECT column_name(s)
FROM table_name AS alias_name;

2. Ví dụ

Bí danh cho cột

 Câu lệnh SQL sau tạo hai bí danh, một cho cột CustomerID và
một cho cột CustomerName:

SELECT CustomerID AS ID, CustomerName AS Customer


FROM Customers;

 Câu lệnh SQL sau tạo hai bí danh, một cho cột Tên khách hàng
và một cho cột Tên liên hệ. Lưu ý: Nó yêu cầu dấu ngoặc kép
hoặc dấu ngoặc vuông nếu tên bí danh chứa khoảng trắng:

SELECT CustomerName AS Customer, ContactName AS [Contact Person]


FROM Customers;

 Câu lệnh SQL sau tạo một bí danh có tên “Address” kết hợp
bốn cột (Address, PostalCode, City and Country);

SELECT CustomerName, Address + ', ' + PostalCode + ' ' + City + ', '
+ Country AS Address
FROM Customers;
Lưu ý: Để câu lệnh SQL ở trên hoạt động trong MySQL, hãy sử dụng như
sau:

SELECT CustomerName, CONCAT(Address,', ',PostalCode,', ',City,',


',Country) AS Address
FROM Customers;
Bí danh cho bảng

 Câu lệnh SQL sau chọn tất cả các đơn đặt hàng từ khách hàng
có CustomerID = 4 . Chúng tôi sử dụng bảng “Customers” và
“Orders” và cung cấp cho chúng bí danh bảng tương ứng là “c”
và “o” (Ở đây chúng tôi sử dụng bí danh để làm cho SQL ngắn
hơn):

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;

 Câu lệnh SQL sau giống như trên, nhưng không có bí danh:

SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName


FROM Customers, Orders
WHERE Customers.CustomerName='Around the Horn' AND
Customers.CustomerID=Orders.CustomerID;

3. Bí danh có thể hữu ích khi:

 Có nhiều hơn một bảng liên quan đến một truy vấn
 Các hàm được sử dụng trong truy vấn
 Tên cột lớn hoặc không dễ đọc
 Hai hoặc nhiều cột được kết hợp với nhau

Tìm hiểu mọi thứ về JOIN với SELECT trong SQL


1. JOIN trong là gì?
Mệnh đề JOIN được sử dụng để kết hợp các hàng từ hai hoặc nhiều
bảng, dựa trên một cột có liên quan giữa chúng.

Lưu ý rằng cột “CustomerID” trong bảng “Orders” tham chiếu đến
“CustomerID” trong bảng “Customers”. Mối quan hệ giữa hai bảng trên
là cột “CustomerID”.

Về các bảng này bạn nên tham khảo bài đầu trong file sql để xem cấu
trúc của nó.

Sau đó, chúng ta có thể tạo câu lệnh SQL sau (có chứa INNER JOIN),
chọn các bản ghi có giá trị phù hợp trong cả hai bảng:

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate


FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
2. Sự khác nhau của các loại JOIN

Dưới đây là các kiểu khác nhau của các JOIN trong SQL:

 (INNER) JOIN: Trả về các dữ liệu có giá trị phù hợp trong cả
hai bảng
 JOIN LEFT (OUTER): Trả về tất cả các dữ liệu từ bảng bên
trái và các dữ liệu đã khớp từ bảng bên phải
 RIGHT (OUTER) JOIN: Trả về tất cả các dữ liệu từ bảng bên
phải và các dữ liệu phù hợp từ bảng bên trái
 FULL (OUTER) JOIN: Trả về tất cả các dữ liệu khi có sự trùng
khớp trong bảng bên trái hoặc bên phải

3. INNER JOIN trong SQL

Từ khóa INNER JOIN chọn các dữ liệu có giá trị phù hợp trong cả hai
bảng.

Cú pháp

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

Ví dụ:

 Câu lệnh SQL sau chọn tất cả các đơn hàng có thông tin khách
hàng:

Về các bảng này bạn nên tham khảo bài đầu để xem cấu trúc của nó.

SELECT Orders.OrderID, Customers.CustomerName


FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
Lưu ý: Từ khóa INNER JOIN chọn tất cả các hàng từ cả hai bảng miễn
là có sự trùng khớp giữa các cột. Nếu có dữ liệu trong bảng “Orders”
không khớp trong “Customers”, những đơn đặt hàng này sẽ không được
hiển thị!

Join 3 bảng

Câu lệnh SQL sau chọn tất cả các đơn đặt hàng có thông tin về khách
hàng và người giao hàng:

SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName


FROM ((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);

4. LEFT JOIN trong SQL

Từ khóa LEFT JOIN trả về tất cả các dữ liệu từ bảng bên trái
(table1) và các dữ liệu được so khớp từ bảng bên phải (table2). Kết
quả là NULL từ phía bên phải, nếu không có kết quả phù hợp.

Cú pháp

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;
Lưu ý: Trong một số cơ sở dữ liệu, LEFT JOIN được gọi là LEFT OUTER
JOIN.

Ví dụ:

Về các bảng này bạn nên tham khảo bài đầu để xem cấu trúc của nó.
Câu lệnh SQL sau sẽ chọn tất cả khách hàng và bất kỳ đơn hàng nào mà
họ có thể có:

SELECT Customers.CustomerName, Orders.OrderID


FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerName;
Lưu ý: Từ khóa LEFT JOIN trả về tất cả các dữ liệu từ bảng bên trái
(Khách hàng), ngay cả khi không có dữ liệu nào phù hợp trong bảng
bên phải (Đơn hàng).

5. RIGHT JOIN trong SQL

Từ khóa RIGHT JOIN trả về tất cả các dữ liệu từ bảng bên phải
(table2) và các dữ liệu được so khớp từ bảng bên trái (table1). Kết
quả là NULL từ phía bên trái, khi không có kết quả phù hợp.

Cú pháp

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
Lưu ý: Trong một số cơ sở dữ liệu, RIGHT JOIN được gọi là RIGHT
OUTER JOIN.

Ví dụ:

Về các bảng này bạn nên tham khảo bài đầu để xem cấu trúc của nó.

 Câu lệnh SQL sau sẽ trả về tất cả nhân viên và bất kỳ đơn
hàng nào họ có thể đã đặt:

SELECT Orders.OrderID, Employees.LastName, Employees.FirstName


FROM Orders
RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
ORDER BY Orders.OrderID;
Lưu ý: Từ khóa RIGHT JOIN trả về tất cả các dữ liệu từ bảng bên phải
(Nhân viên), ngay cả khi không có dữ liệu nào phù hợp trong bảng bên
trái (Đơn hàng).

6. FULL OUTER JOIN trong SQL

Từ khóa FULL OUTER JOIN trả về tất cả các dữ liệu khi có sự trùng
khớp trong các dữ liệu bảng bên trái (table1) hoặc bên phải
(table2).

Lưu ý: FULL OUTER JOIN có thể trả về tập kết quả rất lớn!

Mẹo: FULL OUTER JOIN và FULL JOIN giống nhau.

Cú pháp

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition;

Ví dụ:

Về các bảng này bạn nên tham khảo bài đầu để xem cấu trúc của nó.

 Câu lệnh SQL sau chọn tất cả khách hàng và tất cả các đơn
đặt hàng:

SELECT Customers.CustomerName, Orders.OrderID


FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;
Lưu ý: Từ khóa FULL OUTER JOIN trả về tất cả các dữ liệu phù hợp từ
cả hai bảng cho dù bảng khác có khớp hay không. Vì vậy, nếu có hàng
trong “Customers” không khớp trong “Orders” hoặc nếu có hàng trong
“Orders” không khớp trong “Customers”, những hàng đó cũng sẽ được
liệt kê.

7. SELF JOIN trong SQL

Một self JOIN là một phép nối thông thường, nhưng bảng được nối với
chính nó.

Cú pháp

SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;
T1 và T2 là các bí danh bảng khác nhau cho cùng một bảng.

Ví dụ:

Câu lệnh SQL sau phù hợp với khách hàng đến từ cùng một thành phố:

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;

Tìm hiểu về toán tử UNION, UNION ALL với SELECT


trong SQL
1. UNION trong SQL
Toán tử UNION được sử dụng để kết hợp tập hợp kết quả của hai hoặc
nhiều câu lệnh SELECT.

 Mỗi câu lệnh SELECT trong UNION phải có cùng số cột


 Các cột cũng phải có kiểu dữ liệu tương tự
 Các cột trong mỗi câu lệnh SELECT cũng phải theo cùng một
thứ tự
Cú pháp UNION

SELECT column_name(s) FROM table1


UNION
SELECT column_name(s) FROM table2;
Cú pháp UNION ALL

Toán tử UNION chỉ chọn các giá trị riêng biệt theo mặc định. Để cho
phép các giá trị trùng lặp, hãy sử dụng UNION ALL:

SELECT column_name(s) FROM table1


UNION ALL
SELECT column_name(s) FROM table2;
Lưu ý: Tên cột trong tập hợp kết quả thường bằng với tên cột trong
câu lệnh SELECT đầu tiên trong UNION.

Ví dụ:

Cấu trúc các bản bạn tham khảo tạo đây.

 Câu lệnh SQL sau trả về các thành phố (chỉ các giá trị khác
biệt) từ cả bảng “Customers” và “Suppliers”:

SELECT City FROM Customers


UNION
SELECT City FROM Suppliers
ORDER BY City;
Lưu ý: Nếu một số khách hàng hoặc nhà cung cấp có cùng thành phố,
mỗi thành phố sẽ chỉ được liệt kê một lần, vì UNION chỉ chọn các giá
trị riêng biệt. Sử dụng UNION ALL để chọn các giá trị trùng lặp!

Ví dụ: UNION ALL

Câu lệnh SQL sau trả về các thành phố (cũng có giá trị trùng lặp) từ
cả bảng “Customers” và “Suppliers”:

SELECT City FROM Customers


UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
Ví dụ: UNION với WHERE
 Câu lệnh SQL sau trả về các thành phố của Đức (chỉ các giá
trị khác biệt) từ cả bảng “Customers” và “Suppliers”:

SELECT City, Country FROM Customers


WHERE Country='VN'
UNION
SELECT City, Country FROM Suppliers
WHERE Country='VN'
ORDER BY City;
Ví dụ: UNION ALL với WHERE

 Câu lệnh SQL sau trả về các thành phố của Đức (cũng có giá
trị trùng lặp) từ cả bảng “Customers” và “Suppliers”:

SELECT City, Country FROM Customers


WHERE Country='VN'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='VN'
ORDER BY City;

Tìm hiểu về toán tử EXISTS, ANY và ALL với SELECT


trong SQL
1. Toán tử EXISTS trong SQL
Toán tử EXISTS được sử dụng để kiểm tra sự tồn tại của bất kỳ dữ
liệu nào trong một truy vấn con.

Toán tử EXISTS trả về true nếu truy vấn con trả về một hoặc nhiều dữ
liệu.

SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);
Ví dụ:

 Câu lệnh SQL sau trả về TRUE và liệt kê các nhà cung cấp có
giá sản phẩm nhỏ hơn 20:
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE
Products.SupplierID = Suppliers.supplierID AND Price < 20);

 Câu lệnh SQL sau trả về TRUE và liệt kê các nhà cung cấp có
giá sản phẩm bằng 22:

SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE
Products.SupplierID = Suppliers.supplierID AND Price = 22);

2. Toán tử Any và All trong SQL

Toán tử BẤT CỨ và TẤT CẢ được sử dụng với mệnh đề WHERE hoặc HAVING.

Toán tử ANY trả về true nếu bất kỳ giá trị truy vấn con nào đáp ứng
điều kiện.

Toán tử ALL trả về true nếu tất cả các giá trị truy vấn con đáp ứng
điều kiện.

Cú pháp Any

SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
(SELECT column_name FROM table_name WHERE condition);
Cú pháp All

SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
(SELECT column_name FROM table_name WHERE condition);
Lưu ý: Toán tử phải là toán tử so sánh chuẩn (=, <>,! =,>,> =, <,
Hoặc <=).

Ví dụ: Any

Toán tử BẤT KỲ trả về TRUE nếu bất kỳ giá trị truy vấn con nào đáp
ứng điều kiện.
 Câu lệnh SQL sau trả về TRUE và liệt kê tên sản phẩm nếu nó
tìm thấy BẤT KỲ bản ghi nào trong bảng OrderDetails mà số
lượng = 10:

SELECT ProductName
FROM Products
WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE
Quantity = 10);

 Câu lệnh SQL sau trả về TRUE và liệt kê tên sản phẩm nếu nó
tìm thấy BẤT KỲ bản ghi nào trong bảng OrderDetails có số
lượng> 99:

SELECT ProductName
FROM Products
WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE
Quantity > 99);
Ví dụ: All

Toán tử ALL trả về TRUE nếu tất cả các giá trị truy vấn con đáp ứng
điều kiện.

Câu lệnh SQL sau trả về TRUE và liệt kê tên sản phẩm nếu TẤT CẢ các
bản ghi trong bảng OrderDetails có số lượng = 10 (vì vậy, ví dụ này
sẽ trả về FALSE, vì không phải TẤT CẢ các bản ghi trong bảng
OrderDetails đều có số lượng = 10):

SELECT ProductName
FROM Products
WHERE ProductID = ALL (SELECT ProductID FROM OrderDetails WHERE
Quantity = 10);

Tìm hiểu về GROUP BY, HAVING với SELECT trong SQL


1. GROUP BY trong SQL
Câu lệnh GROUP BY nhóm các hàng có cùng giá trị thành các hàng tóm
tắt, như “tìm số lượng khách hàng ở mỗi quốc gia”.

Câu lệnh GROUP BY thường được sử dụng với các hàm tổng hợp (COUNT,
MAX, MIN, SUM, AVG) để nhóm tập hợp kết quả theo một hoặc nhiều cột.

Cú pháp
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
Ví dụ:

 Câu lệnh SQL sau liệt kê số lượng khách hàng ở mỗi quốc gia:

SELECT COUNT(CustomerID), Country


FROM Customers
GROUP BY Country;

 Câu lệnh SQL sau liệt kê số lượng khách hàng ở mỗi quốc gia,
được sắp xếp từ cao đến thấp:

SELECT COUNT(CustomerID), Country


FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;
Ví dụ: GROUP BY với JOIN

 Câu lệnh SQL sau liệt kê số lượng đơn đặt hàng được gửi bởi
mỗi người gửi hàng:

SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders


FROM Orders
LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID
GROUP BY ShipperName;

Tìm hiểu về giá trị NULL và hàm IFNULL(), ISNULL(),


COALESCE(), and NVL() trong SQL
1. Giá trị NULL là gì?
Trường có giá trị NULL là trường không có giá trị.

Nếu một trường trong bảng là tùy chọn, có thể chèn dữ liệu mới hoặc
cập nhật dữ liệu mà không cần thêm giá trị vào trường này. Sau đó,
trường sẽ được lưu với giá trị NULL.
Lưu ý: Giá trị NULL khác với giá trị 0 hoặc trường chứa khoảng
trắng. Trường có giá trị NULL là trường đã bị bỏ trống trong quá
trình tạo dữ liệu!

2. Làm thế nào để kiểm tra giá trị NULL?

Không thể kiểm tra các giá trị NULL bằng các toán tử so sánh, chẳng
hạn như =, .

Thay vào đó, chúng ta sẽ phải sử dụng các toán tử IS NULL và IS NOT
NULL.

Cú pháp IS NULL

SELECT column_names
FROM table_name
WHERE column_name IS NULL;
Cú pháp IS NOT NULL

SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;
Ví dụ: IS NULL

Toán tử IS NULL được sử dụng để kiểm tra các giá trị trống (giá trị
NULL).

SQL sau liệt kê tất cả các khách hàng có giá trị NULL trong trường
“Address”:

SELECT CustomerName, ContactName, Address


FROM Customers
WHERE Address IS NULL;
Mẹo: Luôn sử dụng IS NULL để tìm kiếm các giá trị NULL.

Ví dụ: IS NOT NULL

Toán tử IS NOT NULL được sử dụng để kiểm tra các giá trị không trống
(giá trị NOT NULL).

SQL sau liệt kê tất cả các khách hàng có giá trị trong trường
“Address”:
SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NOT NULL;

3. Hàm IFNULL(), ISNULL(), COALESCE(), and NVL()

Ta có bảng:

UnitsOnOrde
P_Id ProductName UnitPrice UnitsInStock
r

1 Jarlsberg 10.45 16 15

2 Mascarpone 32.56 23

3 Gorgonzola 15.67 9 20

Giả sử rằng cột “UnitsOnOrder” là tùy chọn và có thể chứa giá trị
NULL.

Nhìn vào câu lệnh SELECT sau:

SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)


FROM Products;
Trong ví dụ trên, nếu bất kỳ giá trị “UnitsOnOrder” nào là NULL, kết
quả sẽ là NULL.

Các giải pháp

MySQL

Hàm IFNULL () trong MySQL cho phép bạn trả về một giá trị thay thế
nếu một biểu thức là NULL:

SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder,


0))
FROM Products;
hoặc chúng ta có thể sử dụng hàm COALESCE (), như sau:

SELECT ProductName, UnitPrice * (UnitsInStock +


COALESCE(UnitsOnOrder, 0))
FROM Products;
SQL Server

Hàm ISNULL () của SQL Server cho phép bạn trả về một giá trị thay
thế khi một biểu thức là NULL:

SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder,


0))
FROM Products;
MS Access

Hàm MS Access IsNull () trả về TRUE (-1) nếu biểu thức là giá trị
rỗng, ngược lại FALSE (0):

SELECT ProductName, UnitPrice * (UnitsInStock +


IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products;
Oracle

Hàm Oracle NVL () đạt được kết quả tương tự:

SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder,


0))
FROM Products;

Tạo, Xoá, Sao lưu Cơ sở dữ liệu(DATABASE) trong SQL


1. Tạo Database
Câu lệnh CREATE DATABASE được sử dụng để tạo cơ sở dữ liệu SQL mới.

Cú pháp

CREATE DATABASE databasename;


Ví dụ: Câu lệnh SQL sau tạo cơ sở dữ liệu có tên “cafedevDB”:

CREATE DATABASE cafedevDB;


Mẹo: Đảm bảo bạn có đặc quyền quản trị trước khi tạo bất kỳ cơ sở dữ
liệu nào. Sau khi cơ sở dữ liệu được tạo, bạn có thể kiểm tra cơ sở
dữ liệu đó trong danh sách cơ sở dữ liệu bằng lệnh SQL sau: SHOW
DATABASES;

2. Xoá Database
Câu lệnh DROP DATABASE được sử dụng để xoá cơ sở dữ liệu SQL hiện
có.

Cú pháp

DROP DATABASE databasename;


Lưu ý: Hãy cẩn thận trước khi xoá cơ sở dữ liệu. Xóa cơ sở dữ liệu
sẽ làm mất thông tin đầy đủ được lưu trữ trong cơ sở dữ liệu!

Ví dụ: Câu lệnh SQL sau xoá cơ sở dữ liệu hiện có “cafedevDB”:

DROP DATABASE cafedevDB;


Mẹo: Đảm bảo bạn có đặc quyền quản trị trước khi bỏ bất kỳ cơ sở dữ
liệu nào. Sau khi cơ sở dữ liệu bị loại bỏ, bạn có thể kiểm tra nó
trong danh sách cơ sở dữ liệu bằng lệnh SQL sau: SHOW DATABASES;

3. Sao lưu Database

Câu lệnh BACKUP DATABASE được sử dụng trong SQL Server để tạo bản
sao lưu đầy đủ của cơ sở dữ liệu SQL hiện có.

Cú pháp

BACKUP DATABASE databasename


TO DISK = 'filepath';
SQL BACKUP WITH DIFFERENTIAL

Một sao lưu khác biệt(DIFFERENTIAL) chỉ sao lưu các phần của cơ sở
dữ liệu đã thay đổi kể từ lần sao lưu cơ sở dữ liệu đầy đủ cuối
cùng.

Cú pháp

BACKUP DATABASE databasename


TO DISK = 'filepath'
WITH DIFFERENTIAL;
Ví dụ: Câu lệnh SQL sau tạo một bản sao lưu đầy đủ của cơ sở dữ liệu
hiện có “cafedevDB” vào đĩa D:

BACKUP DATABASE cafedevDB


TO DISK = 'D:\backups\cafedevDB.bak';
Mẹo: Luôn sao lưu cơ sở dữ liệu vào ổ đĩa khác với cơ sở dữ liệu
thực. Sau đó, nếu bạn gặp sự cố đĩa, bạn sẽ không bị mất tệp sao lưu
cùng với cơ sở dữ liệu.

Ví dụ: BACKUP WITH DIFFERENTIAL

Câu lệnh SQL sau tạo một bản sao lưu khác biệt của cơ sở dữ liệu
“cafedevDB”:

BACKUP DATABASE cafedevDB


TO DISK = 'D:\backups\cafedevDB.bak'
WITH DIFFERENTIAL;

You might also like