[DATABASE] - Taking note
Database: 1 tổ chức để lưu dữ liệu
Database managerment system (DBMS): phần mềm máy tính giúp thao tác với database
Relation database management system (RDBMS): phần mềm máy tính giúp thao tác với CSDL quan hệ (Relation database)
- Các ngôn ngữ trong SQL (Structured query language)
+ DDL - Data Definition Language: Create, Alter, Drop, Truncate Table
+ DML - Data Manipulation Language: Insert, Update, and Delete data into Table
+ DQL - Data Queries language: Select - lấy các hàng trong bảng
+ DCL - Data Control Language: Grant, Revoke
+ TCL - Transaction Control Language: Commit, Rollback, save point
- Index (chỉ mục) sử dụng cơ chế Data Search Engine: sử dụng để giảm thời gian và tăng hiệu suất thực hiện các câu truy vấn. Index có thể tạo ra trên một hoặc nhiều cột của 1 table
- Partion: Phân chia dữ liệu của table thành những phần nhỏ theo một logic nhất định (chia dữ liệu trong table thành những đoạn riêng biệt) -> Cải tiến về hiệu năng
- Transaction: tiến trình thực hiện 1 nhóm các câu lệnh SQL, thực hiện tuần tự và dộc lập
Khi tất cả câu lệnh thực hiện thành công -> thì các thay dổi mới được lưu vào CSDL
Khi 1 câu lệnh bị fail thì rollback về trạng thái ban đầu (trước khi thực hiện transaction hoặc tại đểm save point)
+ commit: lưu các thay đổi
+ rollback: quay lại trạng thái trước khi thay đổi
+ savepoint: tạo các điểm để rollback
+ set transaction: đặt tên cho transaction
+ Các câu lệnh điều khiển transaction chỉ thực hiện được với DML (insert, update, delete)
- Subqueries (truy vấn lồng): truy vấn con được nhúng trong mệnh đề where
- Các phép toán: để thực hiện các phép toán cần điều kiện tiên quyết: R và S khả hợp (cùng thuộc tính, các thuộc tính cùng miền giá trị)
+ Phép trừ R - S: tham gia R mà không tham gia S
(select * from R) except (select * from S)
+ Phép hội R U S: tham gia R hoặc tham gia S
(select * from R) union (select * from S)
+ Phép giao R ౧ S: tham gia R và tham gia S
(select * from R) intersect (select * from S)
- 1 table chỉ có thể có 1 primary key và nhiều foreign key
- primary key: định danh mỗi record trong table, không chức null
- foreign key: liên kết 2 bảng với nhau, con trỏ tới khóa chính của table khác
- Liên kết nhiều bảng sử dụng JOIN: có 2 dạng là kết bằng và kết không mất thông tin
+ Kết bằng: inner join, self-join
- self-join: ứng dụng tìm trong cùng một bảng (VD: tìm các sinh viên cùng quê, nhân viên có lương bằng nhau,..)
SELECT s1.*
FROM Student s1, Student s2
WHERE s1.ID <> s2.ID AND s1.address = s2.address
+ Kết không mất thông tin:
- left-join: Giữ bảng bên trái, ánh xạ qua bảng bên phải, không có dữ liệu đặt NULL
- right-join: giữ bảng bên phải, ánh xạ bảng bên trái, không có dữ liệu đặt NULL
- full-join: Giữ 2 bảng ánh xạ, không có dữ liệu đặt NULL
- Cấu trúc chung của câu truy vấn:
SELECT <tên thuộc tính>
FROM <tên bảng>
WHERE <điều kiện> //điều kiện lọc
GROUP BY <tên thuộc tính> //gom nhóm
HAVING <điều kiện> //phép toán trên nhóm
ORDER BY <tên cột> ASC | DESC //sắp xếp cột theo thứ tự bảng chữ cái
- where vs having
- where: điều kiện lọc trên từng record
- having: điều kiện trên phép toán gom nhóm
- truncate vs delete:
- truncate: xóa data trong table, reset transaction log (ID quay về 1 khi insert)
- delete: xóa record theo điều kiện lọc, nếu không có điều kiện thì xóa nguyên bảng, đồng thời log dòng đã xóa vào transaction log (ID chỉ số động là n+1)
- View: gán kết quả truy vấn vào 1 bảng mới (new table) và có thể thực hiện truy vấn trên view
- Đếm bằng hàm count()
- count(*): số lượng các record trong table
- count(<tên cột>): số lượng record của <tên cột>
- count(<number>): số lượng record của thứ tự cột
- DISTINCT: mỗi record chỉ xuất hiện 1 lần
SELECT DISTINCT <tên cột> FROM <tên bảng>;- Chọn các hàng ngẫu nhiên trong table
SELECT <tên cột> FROM <table_name> SAMPLE(10);- Quan hệ giữa các bảng
- Quan hệ 1 - 1: Mỗi bảng chỉ có 1 và chỉ 1 bản ghi tương ứng (key đặt bên nào cũng được)
- Quan hệ 1 - N : 1 bản ghi ở bảng này có nhiều bản ghi tương ứng ở bảng kia. VD: Customer - Invoice (key bên 1 đặt bên N)
- Quan hệ N - N: 1 bản ghi trong bảng này có nhiều bản ghi tương ứng ở bảng kia và ngược lại. VD: Employee - Project (giải thích: 1 nhân viên tham gia nhiều dự án và 1 một dự án có nhiều nhân viên) -> cần đưa về dạng 1 - N và 1 - N (tách ra một bảng chung chứa khóa chính của 2 bảng Employee_Project (employeeID, projectID)
Nhận xét
Đăng nhận xét