You are on page 1of 30

Giáo trình Python Cơ Bản

SQL, cách truy vấn SQL

1. SQL là gı̀ ?


2. Ưu đie2 m củ a SQL
3. Cá c nhó m SQL
4. Ngô n ngữ định nghı̃a dữ liệ u (DDL – Data DeGinition Lanuage)
5. Ngô n ngữ thao tá c dữ liệ u (DML - Data Manipulation Language)
6. Ngô n ngữ truy vaQ n dữ lieu (DQL – Data Query Language)

Trang 1
Giáo trình Python Cơ Bản

1. SQL là gì ?

Trang 2
Giáo trình Python Cơ Bản

SQL là viết tắt của Structured Query Language


SQL là ngôn ngữ truy vấn có cấu trúc.

Nó là một ngôn ngữ, là tập hợp các lệnh để tương tác với cơ sở dữ liệu. Dùng để
lưu trữ, thao tác và truy xuất dữ liệu được lưu trữ trong một cơ sở dữ liệu quan hệ.

Trong thực tế, SQL là ngôn ngữ chuẩn được sử dụng hầu hết cho hệ cơ sở dữ liệu
quan hệ.

Hầu như công ty nào lớn cũng cần xây dựng một hệ thống để lưu trữ cơ sở dữ liệu. Mọi thứ
trong cơ sở dữ liệu này sẽ được diễn tả ra thành nhiều bảng, có mối quan hệ với nhau. Để
truy vấn và lấy dữ liệu từ các bảng này nhằm tổng hợp thành thông Xn nào đó, người ta dùng
đến SQL thông qua các câu query.
3
Giáo trình Python Cơ Bản

2. Ưu điểm của SQL

Trang 4
Giáo trình Python Cơ Bản

Ưu điểm của SQL


SQL được sử dụng phổ biến vì nó có các ưu điểm sau:
• Cho phép truy cập dữ liệu trong các hệ thống quản lý cơ sở dữ liệu quan
hệ.
• Cho phép mô tả dữ liệu.
• Cho phép xác định dữ liệu trong cơ sở dữ liệu và thao tác dữ liệu đó.
• Cho phép nhúng trong các ngôn ngữ khác sử dụng mô-đun SQL, thư viện và
trình biên dịch trước.
• Cho phép tạo và thả các cơ sở dữ liệu và bảng.
• Cho phép tạo chế độ view, thủ tục lưu trữ, chức năng trong cơ sở dữ liệu.
• Cho phép thiết lập quyền trên các bảng, thủ tục và view.

SQL sẽ giúp quản lý hiệu quả và truy vấn thông dn nhanh hơn, giúp bảo trì,
bảo mật thông dn dễ dàng hơn. 5
Giáo trình Python Cơ Bản

3. Các nhóm SQL

Trang 6
Giáo trình Python Cơ Bản

Các lệnh SQL dêu chuẩn để tương tác với cơ sở dữ liệu quan hệ là CREATE,
SELECT, INSERT, UPDATE, DELETE và DROP. Các lệnh này có thể được phân
thành các nhóm sau dựa trên bản chất của chúng

CREATE TABLE IF NOT EXISTS "Person" (


"id" INTEGER NOT NULL PRIMARY KEY
AUTOINCREMENT,
Ảnh hưởng đến
"Ten" TEXT NOT NULL UNIQUE, TABLE
"Tuoi" INTEGER NOT NULL DROP TABLE "Person";
);

ALTER TABLE "Person" ADD COLUMN "Address" TEXT;

SELECT * FROM "Person";

INSERT INTO "Person"("Ten","Tuoi") VALUES ("Alice", 20); Ảnh hưởng đến


UPDATE "Person" SET "Tuoi" = 21 WHERE id = 3; Record của Table
DELETE FROM "Person" WHERE id = 3;
7
Giáo trình Python Cơ Bản

DDL – Ngôn ngữ định nghĩa dữ liệu(Data Definition Language)

Lệnh Mô Tả

CREATE Tạo mới một bảng, view của bảng hoặc đối tượng khác
trong cơ sở dữ liệu.

ALTER Sửa đổi một đối tượng cơ sở dữ liệu đang tồn tại, chẳng
hạn như bảng

DROP Xóa toàn bộ bảng, view của bảng hoặc đối tượng khác
trong cơ sở dữ liệu.

8
Giáo trình Python Cơ Bản

DML - Ngôn ngữ thao tác dữ liệu (Data Manipulation Language)

Lệnh Mô Tả

INSERT Tạo một bản ghi (record)

UPDATE Sữa một bản ghi (record)

DELETE Xóa một bản ghi (record)

9
Giáo trình Python Cơ Bản

DQL - Ngôn ngữ truy vấn dữ liệu (Data Query Language)

Lệnh Mô Tả

SELECT Lấy một số bản ghi nhất định từ một hoặc nhiều bảng.

10
Giáo trình Python Cơ Bản

4. Ngôn ngữ định nghĩa dữ liệu


(DDL – Data Definition Lanuage)

Trang 11
Giáo trình Python Cơ Bản

Lệnh CREATE
CREATE TABLE -> Tạo Bảng
CREATE TABLE “Tên Bảng” (
“Tên cột” “Kiểu dữ liêu” “Các Option mở rộng cho cột”
..
);
Option mở rộng:
NOT NULL -> Giá trị cột không được để trống.
PRIMARY KEY -> Gán cho cột là khoá chính của Bảng
AUTOINCREMENT -> Nếu chọn AI thì khi khoá chính là INTEGER thì sẽ tự động tang lên.
UNIQUE -> Các giá trị trong cùng 1 cột không được trùng nhau

sqlite> CREATE TABLE "HocVienAPTech" (


"id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"Ten” TEXT NOT NULL UNIQUE,
"Email" TEXT NOT NULL UNIQUE
);

12
Giáo trình Python Cơ Bản

Lệnh ALTER
ALTER TABLE -> Chỉnh sửa Bảng
ALTER TABLE – ADD NEW COLUMN (Thêm cột)
ALTER TABLE “Tên Bảng” ADD COLUMN “Tên cột mới” “Kiểu dữ liệu cột mới”;

ALTER TABLE "HocVienAPTech" ADD COLUMN "Address" TEXT;

ALTER TABLE -> Đổi tên Bảng


ALTER TABLE “Tên hiện tại” RENAME TO “Tên mới”;

ALTER TABLE "HocVienAPTech" RENAME TO "HocVienPython";

SQLite không hổ trợ chỉnh sửa cột như chỉnh sửa kiểu dữ liệu cột, xoá cột
13
Giáo trình Python Cơ Bản

Lệnh DROP
DROP TABLE -> Xoá Bảng

DROP TABLE “Tên Bảng”;

DROP TABLE "HocVienPython";

14
Giáo trình Python Cơ Bản

5. DML - Ngôn ngữ thao tác dữ liệu


(Data Manipulation Language)

Trang 15
Giáo trình Python Cơ Bản

Lệnh INSERT INTO


Thêm record vào Bảng

INSERT INTO “Tên bảng”(”Cột 1", ”Cột 2") VALUES (”Giá trị 1", ”Giá trị cột 2");

Ví dụ về thêm với các cột xác định:


INSERT INTO "HocVienAPTech"(id, "Ten", "Email") VALUES (4, "Vix Lee1", "lehungvi1.cntt@gmail.com");
INSERT INTO "HocVienAPTech"("Email", "Ten", id) VALUES
("lehungvi2.cntt@gmail.com", "Le Hung Vi", 5);

Ví dụ về thêm record, trong câu lệnh không cần xác định trường AI
INSERT INTO "HocVienAPTech"("Ten", "Email") VALUES ("Vix Lee", "lehungvi.cntt@gmail.com");

16
Giáo trình Python Cơ Bản

Lệnh UPDATE
Chỉnh sửa 1 record vào Bảng
UPDATE “Tên Bảng” SET “Tên cột” = ”Giá trị mới” WHERE “điều kiện”;

sqlite> SELECT * FROM "HocVienAPTech";


id Ten Email
---------- ---------- -----------------------
1 Vix Lee lehungvi.cntt@gmail.com
4 Vix Lee1 lehungvi1.cntt@gmail.co
5 Le Hung Vi lehungvi2.cntt@gmail.co
sqlite> UPDATE "HocVienAPTech" SET "Ten" = "Vi Hung Le" WHERE id = 5;
sqlite> SELECT * FROM "HocVienAPTech";
id Ten Email
---------- ---------- -----------------------
1 Vix Lee lehungvi.cntt@gmail.com
4 Vix Lee1 lehungvi1.cntt@gmail.co
5 Vi Hung Le lehungvi2.cntt@gmail.co

17
Giáo trình Python Cơ Bản

Lệnh UPDATE
Chỉnh sửa nhiều cột
sqlite> SELECT * FROM "HocVienAPTech";
id Ten Email
---------- ---------- -----------------------
1 Vix Lee lehungvi.cntt@gmail.com
4 Vix Lee1 lehungvi1.cntt@gmail.co
5 Le Hung Vi lehungvi2.cntt@gmail.co
sqlite> UPDATE "HocVienAPTech" SET "Ten" = "Vĩ Lê", "Email" = "vilh@kase.edu.vn" WHERE id = 5;

sqlite> SELECT * FROM "HocVienAPTech";


id Ten Email
---------- ---------- -----------------------
1 Vix Lee lehungvi.cntt@gmail.com
4 Vix Lee1 lehungvi1.cntt@gmail.co
5 Vĩ Lê vilh@kase.edu.v

18
Giáo trình Python Cơ Bản

Lệnh UPDATE
Chỉnh sửa giá trị trong điều kiện
sqlite> SELECT * FROM "HocVienAPTech";
id Ten Email
---------- ---------- -----------------------
1 Vix Lee lehungvi.cntt@gmail.com
4 Vix Lee1 lehungvi1.cntt@gmail.co
5 Vĩ Lê vilh@kase.edu.vn
sqlite> UPDATE "HocVienAPTech" SET "id" = 6 WHERE id = 5;
sqlite> SELECT * FROM "HocVienAPTech";
id Ten Email
---------- ---------- -----------------------
1 Vix Lee lehungvi.cntt@gmail.com
4 Vix Lee1 lehungvi1.cntt@gmail.co
6 Vĩ Lê vilh@kase.edu.vn

19
Giáo trình Python Cơ Bản

Lệnh DELETE
Xoá record trong Bảng
DELETE FROM “Tên Bảng” WHERE “điều kiện”;

sqlite> SELECT * FROM "HocVienAPTech";


id Ten Email
---------- ---------- -----------------------
1 Vix Lee lehungvi.cntt@gmail.com
4 Vix Lee1 lehungvi1.cntt@gmail.co
6 Vĩ Lê vilh@kase.edu.vn
sqlite> DELETE FROM "HocVienAPTech" WHERE id = 4;
sqlite> SELECT * FROM "HocVienAPTech";
id Ten Email
---------- ---------- -----------------------
1 Vix Lee lehungvi.cntt@gmail.com
6 Vĩ Lê vilh@kase.edu.vn

20
Giáo trình Python Cơ Bản

6. DQL - Ngôn ngữ truy vấn dữ liệu


(Data Query Language)

Trang 21
Giáo trình Python Cơ Bản

Lệnh SELECT *
Lấy tất cả các cột trong Bảng
SELECT * FROM “Tên Bảng”;

sqlite> SELECT * FROM "CauThu";


Ten SoAo Tuoi ViTriThiDau CauLacBo_id
---------- ---------- ---------- ---------------- -----------
Mesut Ozil 10 31 Tiền Vệ Tấn Công 1
Pierre Eme 14 30 Tiền Đạo 1
Alexandre 9 28 Tiền Đạo 1
Mohamed Sa 11 27 Tiền Đạo 3
Sadio Mane 10 28 Tiền Đạo 3
Virgil van 4 28 Hậu Vệ 3

22
Giáo trình Python Cơ Bản

Lệnh SELECT COLUMN


Lấy tất cả các cột trong Bảng
SELECT “Cột 1”, “Cột 2” FROM “Tên Bảng”;

sqlite> SELECT "Ten", "ViTriThiDau" FROM "CauThu";


Ten ViTriThiDau
---------- ----------------
Mesut Ozil Tiền Vệ Tấn Công
Pierre Eme Tiền Đạo
Alexandre Tiền Đạo
Mohamed Sa Tiền Đạo
Sadio Mane Tiền Đạo
Virgil van Hậu Vệ

23
Giáo trình Python Cơ Bản

Lệnh SELECT DISTINCT


Lấy tất cả các không trùng lặp trong cột
SELECT DISTINCT(“Tên Cột”) FROM “Tên Bảng”;

sqlite> SELECT ViTriThiDau FROM "CauThu";


ViTriThiDau
----------------
Tiền Vệ Tấn Công
Tiền Đạo
Tiền Đạo
Tiền Đạo
Tiền Đạo
Hậu Vệ
sqlite> SELECT DISTINCT("ViTriThiDau") FROM "CauThu";
ViTriThiDau
----------------
Tiền Vệ Tấn Công
Tiền Đạo
Hậu Vệ
24
Giáo trình Python Cơ Bản

Lệnh SELECT với WHERE


Lấy giá trị với điều kiên
SELECT Tên Cột Hoặc * FROM “Tên Bảng” WHERE “Điều kiện”;

sqlite> SELECT * FROM "CauThu";


Ten SoAo Tuoi ViTriThiDau CauLacBo_id
---------- ---------- ---------- ---------------- -----------
Mesut Ozil 10 31 Tiền Vệ Tấn Công 1
Pierre Eme 14 30 Tiền Đạo 1
Alexandre 9 28 Tiền Đạo 1
Mohamed Sa 11 27 Tiền Đạo 3
Sadio Mane 10 28 Tiền Đạo 3
Virgil van 4 28 Hậu Vệ 3
sqlite> SELECT * FROM "CauThu" WHERE "ViTriThiDau" = "Tiền Đạo";
Ten SoAo Tuoi ViTriThiDau CauLacBo_id
------------------------- ---------- ---------- ----------- -----------
Pierre Emerick Aubameyang 14 30 Tiền Đạo 1
Alexandre Lacazette 9 28 Tiền Đạo 1
Mohamed Salah 11 27 Tiền Đạo 3
Sadio Mane 10 28 Tiền Đạo 3
25
Giáo trình Python Cơ Bản

Lệnh SELECT với WHERE AND/OR/NOT


Lấy giá trị với điều kiên
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;
SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;
sqlite> SELECT * FROM "CauThu" WHERE "ViTriThiDau" = "Tiền Vệ Tấn Công" OR "ViTriThiDau" = "Hậu Vệ";
Ten SoAo Tuoi ViTriThiDau CauLacBo_id
---------- ---------- ---------- ---------------- -----------
Mesut Ozil 10 31 Tiền Vệ Tấn Công 1
Virgil van 4 28 Hậu Vệ 3
sqlite>

SELECT column1, column2, ...


FROM table_name
WHERE NOT condition;
sqlite> SELECT * FROM "CauThu" WHERE "Tuoi" = 28 AND "ViTriThiDau" = "Tiền Đạo";
Ten SoAo Tuoi ViTriThiDau CauLacBo_id
------------------- ---------- ---------- ----------- -----------
Alexandre Lacazette 9 28 Tiền Đạo 1
Sadio Mane 10 28 Tiền Đạo 3
sqlite>
26
Giáo trình Python Cơ Bản

Lệnh SELECT với MIN/MAX, COUNT, AVG, SUM

SELECT MIN(column_name) SELECT MAX(column_name)


FROM table_name FROM table_name
WHERE condition; WHERE condition;

SELECT COUNT(column_name) SELECT AVG(column_name)


FROM table_name FROM table_name
WHERE condition; WHERE condition;

SELECT SUM(column_name)
FROM table_name
WHERE condition;

27
Giáo trình Python Cơ Bản

Lệnh SELECT với LIKE


Lấy giá trị với điều kiên

% Dấu phần trăm đại diện cho không, một hoặc nhiều ký tự
_ Dấu gạch dưới đại diện cho một ký tự

SELECT column1, column2, ...


FROM table_name
WHERE columnN LIKE pattern;

28
Giáo trình Python Cơ Bản

Lệnh SELECT WITH JOIN

29
Giáo trình Python Cơ Bản

Hey!
Coding
is easy!

END

Trang 30

You might also like