Atomicity (Tính toàn vẹn), Consistency (Tính đồng nhất), Isolation (Tính độc lập), và Durability (Tính bền vững)

You might also like

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

I.

Introduction
Cơ sở dữ liệu quan hệ (Relational Databases) là một loại cơ sở dữ liệu được tổ chức dưới dạnh bảng và
quan hệ giữa các bảng được thiết lập thông qua khóa ngoại (Foreign Key). Các hệ quản trị cơ sở dữ liệu
quan hệ (RDBMS) như MySQL, PostgreSQL, SQL Server,Oracle là những hệ thống phổ biến.

Lợi ích của việc sử dụng RDBMS:


- Dữ liệu có cấu trúc: RDBMS cho phép lưu trữ dữ liệu theo cách có cấu trúc, sử dụng hàng và cột trong
bảng. Giúp dễ dàng thao tác dữ liệu bằng SQL (Structured Query Language)

- Thuộc tính ACID: Atomicity (Tính toàn vẹn), Consistency (Tính đồng nhất), Isolation (Tính độc lập), và
Durability (Tính bền vững). Đảm bảo thao tác dữ liệu an toàn và đáng tin cậy trong RDBMS

- Chuẩn hóa

- Khả năng mở rộng

- Tính toàn vẹn dữ liệu

- Bảo mật

II. SQP Syntax


SQL SELECT

- SELECT column1, column2, …FROM table_name;

Trả về giá trị tại column1, column2 từ bảng dữ liệu table_name

- SELECT DISTINCT column FROM table_name;

Trả về những giá trị riêng biệt trong column

- SELECT column FROM table_name WHERE condition;

Trả về những giá trị tại column thỏa mãn condition từ bảng table_name. WHERE giống IF trong ngôn ngữ
lập trình.

- SELECT column1 FROM table_name ORDER BY column2 ASC|DESC (Không ghi gì mặc định là ASC);

Trả về giá trị của column1 từ bảng dữ liệu table_name sắp xếp theo thứ tự tăng dần (ASC) hoặc giảm dần
(DESC) theo column2.

- SELECT column1 FROM table_name ORDER BY column2, column3;

Trả về giá trị của colum1 từ table_name sắp xếp tăng dần theo column2, nếu có giá trị trong column2
trùng thì sắp xếp tăng dần theo column3.

- Toán tử AND và OR ( giống && và || trong ngôn ngữ lập trình )

- Toán tử NOT ( giống ! trong ngôn ngữ lập trinh )

- INSERT INTO table_name ( column1, column2, column3) VALUES ( values1, values2, values3 );
Thêm giá trị values1, values2, values3 vào các cột column1, column2, column3

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

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

- UPDATE table_name SET column1 = “values”, column2 = 1 WHERE condition;

Cập nhập giá trị values và 1 cho hai cột lần lượt là column1 và column2 cho đối tượng thỏa mãn
condition từ table_name . Note: nếu không thiết lập điều kiện thì tất cả bản ghi sẽ được update.

- DELETE FROM table_name WHERE condition;

Xóa bản ghi theo điều kiện. Note: nếu không thiết lập điều kiện thì tất cả bản ghi sẽ bị xóa.

- SELECT column FROM table_name WHERE condition LIMIT number;

Trả về number dữ liệu từ column thuộc bảng table_name nếu thỏa mãn condition ( tùy theo RDBMS mà
syntax sẽ khác nhau. Ví dụ: SQL Server thì LIMIT sẽ thay bằng TOP).

Các hàm trong SQL:

- MIN/MAX(column): lấy giá trị thấp/cao nhất

- COUNT(*/column): đếm số lượng

- SUM(column): tổng các giá trị của column, tham số bên trong SUM cũng có thể là một biểu
thức. Ví dụ: SUM(column*10)

- AVG(column): tính giá trị trung bình. Note: SELECT * FROM Products WHERE price
> (SELECT AVG(price) FROM Products);

- SELECT * FROM table_name WHERE column LIKE pattern;

Trả về tất cả các dữ liệu từ table_name nếu thỏa mãn điều kiện. % đại diện cho 0, 1 hoặc nhiều kí tự và _
đại diện cho 1 kí tự đơn. Từ a đến f: [a-f]%, a và c và z: [acz]%, không phải a và c và z: [!acz]%.

- SELECT * FROM Customers WHERE Country (NOT) IN ('Germany', 'France', 'UK');

Trả về tất cả khách hàng từ Đức, Pháp, Anh.

- SELECT * FROM Products WHERE Price BETWEEN 10 AND 20;

Chọn các sản phẩm có Price từ 10 đến 20. Có thế BETWEEN giữa các ngày, văn bản.

- SELECT column (AS “alias name”) FROM table_name (AS “alias name”);

Đặt bí danh cho cột hoặc bảng đễ dễ đọc


- SELECT ten, CONCAT(hoDem,', ',namNhapHoc,', ',ngaySinh,', ',maChuongTrinhDaoTao) AS Infor FROM
sinhvien;
Format lại dữ liệu đầu ra ở bảng Infor

- SELECT column_name(s) FROM table1


UNION ALL
SELECT column_name(s) FROM table2;

Ghép hai giá trị trả về lại theo kiểu đầu – đuôi vì thế nên các câu lệnh SELECT phải có cùng số cột, các cột
phải có kiểu dữ liệu tương tự và các cột phải có thứ tự giống nhau.

- SELECT COUNT(ten), tuoi FROM table1 GROUP BY tuoi;

Trả về số lượng tên tương ứng theo tuổi từ table1. Ví dụ cột tuổi trong table 1 có 3 giá trị tuổi là x, y, z
thì dữ liệu trả về sẽ có 3 hàng tương ứng theo 3 giá trị tuổi là x, y, z và hai cột là số lượng bản ghi (ten)
có tuổi là x hoặc y hoặc z và cột tuổi.

- WHERE được sử dụng trước khi dữ liệu được nhóm (GROUP BY).
- HAVING được sử dụng sau khi dữ liệu đã được nhóm và các hàm tổng hợp đã được áp dụng.

- SELECT tuoi FROM table1 WHERE EXISTS (SELECT diaChi FROM TABLE1 WHERE diaChi = "VanCanh");
Trả về dữ liệu ở cột tuoi từ table1 nếu tồn tại giá trị từ cột địa chỉ thỏa mãn giá trị “VanCanh”

- SELECT tuoi FROM table1 WHERE diaChi = ANY/ALL ( SELECT lop FROM TABLE2);
Câu lệnh ANY trả về giá trị true nếu ít nhất một giá trị trong tập hợp hoặc kết quả subquery thỏa mãn
điều kiện.
Câu lệnh ALL trả về giá trị true nếu tất cả các giá trị trong tập hợp hoặc kết quả subquery đều thỏa mãn
điều kiện.
- SELECT * INTO CustomersBackup2017 IN 'Backup.mdb' FROM Customers;
Sao chép dữ liệu từ Customers sang 1 bảng mới là CustomersBackup2017 trong cơ sở dữ liệu
Backup.mdb

- CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;

III. SQL Database

- CREATE/DROP DATABASE database_name;

Tạo mới/xóa một database

- SHOW DATABASES;

Danh sách các database hiện có

- BACKUP DATABASE database_name TO DISK ‘filepath’;


Sao lưu database vào ổ đĩa ( syntax của SQL Server)

- CREATE/DROP TABLE table_name (

column1 datatype1,

……….

);

Tạo và xóa bảng

- TRUNCATE TABLE table_name;

Xóa dữ liệu bên trong một bảng chứ không phải chính bảng đó

- ALTER TABLE table_name ADD/MODIFY COLUMN/DROP column datatype/column


new_datatype/column;

Thêm, xóa, sửa kiểu dữ liệu cho cột trong bảng

- CONSTRAINT: rang buộc đầu vào dữ liệu

- NOT NULL: được thêm đằng sau datatype trong lệnh CRETATE TABLE (CT) và MODIFY COLUMN

- UNIQE: dùng UNIQE INDEX column (column) trong CT và dùng ADD CONTRAINT column (dùng để đánh
dấu nên không được trùng với bất kì key nào khác) UNIQUE (column); cho ALTER TABLE

- PRIMARY KEY: thêm vào sau datatype trong lệnh CT và dùng ADD CONSTRAINT column PRIMARY KEY
(column); cho ALTER TABLE

- CHECK: CONSTRAINT `pck_person` CHECK (`namSinh` > 2000) trong CT và ADD CONSTRAINT column
CHECK (condition); cho ALTER TABLE

- DEFAULT: đứng sau datatype trong lệnh CT và ALTER column SET DEFAULT value;
- CREATE/DROP INDEX index_name ON table_name (column,…);

- AUTO_INCREMENT: đứng sau datatype trong CT. Theo mặc định, giá trị bắt đầu AUTO_INCREMENTlà 1
và giá trị này sẽ tăng thêm 1 cho mỗi bản ghi mới.

Để chuỗi AUTO_INCREMENTbắt đầu bằng một giá trị khác, hãy sử dụng câu lệnh SQL sau:
ALTER TABLE Persons AUTO_INCREMENT=100;

- CREATE VIEW view_name AS SLECT column1, column2… FROM table_name WHERE condition;
Tạo một lối tắt view_name để dễ dàng xem bằng cách truy vấn từ SELECT * FROM view_name;
Để loại bỏ chế độ xem: DROP VIEW view_name;

IV. SQL INJECTION


V. SQL DATA TYPES (https://www.w3schools.com/sql/sql_datatypes.asp)
VI. MYSQL FUNCTIONS

You might also like