Video Hướng dẫn
- [MySQL] Create Database, table
- [MySQL] Add PRIMARY KEY, FOREIGN KEY Constraint
- [MySQL] Create Database ER diagram
Video Hướng dẫn
https://www.w3schools.com/sql/sql_foreignkey.asp
Chúng ta có thể khai báo luôn khóa chính lúc tạo bảng luôn, như thế này
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
Đối với khóa ngoại thì ta nên tạo xong hết bảng rồi mới tạo khóa ngoại, vì nếu chưa tạo bảng mà tạo khóa ngoại liên kết tới nó thì chương trình sẽ báo lỗi không tồn tại
Nếu đã tạo rồi thì giờ ta update lại thôi
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
-- admin: Không có khóa ngoại
-- street
-- Cú pháp là ADD FOREIGN KEY ({Tên cột khóa ngoại}) REFERENCES {Tên bảng liên kết}({Khóa chính của bảng liên kết});
-- Bảng này có 2 khóa ngoại
ALTER TABLE street
ADD FOREIGN KEY (street_type_id) REFERENCES street_type(street_type_id);
ALTER TABLE street
ADD FOREIGN KEY (admin_id) REFERENCES admin(admin_id);
-- poi
-- Có 3 khóa ngoại
ALTER TABLE poi
ADD FOREIGN KEY (category_id) REFERENCES categories(category_id);
ALTER TABLE poi
ADD FOREIGN KEY (address_id) REFERENCES address(addr_id);
ALTER TABLE poi
ADD FOREIGN KEY (admin_id) REFERENCES admin(admin_id);
-- street_type
-- Không có khóa ngoại, nó là bảng danh mục :')
-- categories
-- Không có khóa ngoại, nó là bảng danh mục :')
-- address
-- Có 2 khóa ngoại
ALTER TABLE address
ADD FOREIGN KEY (street_id) REFERENCES street_type(street_type_id);
ALTER TABLE address
ADD FOREIGN KEY (admin_id) REFERENCES admin(admin_id);
Cột khóa chính thường không được phép null
NOT NULL
và được cho tự động tăngAUTO_INCREMENT
ALTER TABLE
clients
ALTER COLUMN
phone
Cú pháp chuẩn lúc tạo bảng
CREATE TABLE Persons (
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (Personid)
);
https://chartio.com/resources/tutorials/how-to-alter-a-column-from-null-to-not-null-in-sql-server/
https://www.w3schools.com/sql/sql_autoincrement.asp
Tạo Khóa chính
https://www.w3schools.com/sql/sql_primarykey.asp
https://youtu.be/MSrC5gqGhS8
Cú pháp
Chúng ta có thể khai báo luôn khóa chính lúc tạo bảng luôn, như thế này
Nếu đã tạo rồi thì giờ ta update lại thôi
Thực hành