Skip to content

Instantly share code, notes, and snippets.

@soiqualang
Last active December 21, 2020 10:11
Show Gist options
  • Save soiqualang/3a4fa0faa1992c3ea91ae7aedd9503b9 to your computer and use it in GitHub Desktop.
Save soiqualang/3a4fa0faa1992c3ea91ae7aedd9503b9 to your computer and use it in GitHub Desktop.
Notes MySQL
@soiqualang
Copy link
Author

soiqualang commented Dec 21, 2020

Tạo Khóa ngoại, liên kết bảng

https://www.w3schools.com/sql/sql_foreignkey.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

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);

Thực hành

-- 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);

@soiqualang
Copy link
Author

soiqualang commented Dec 21, 2020

@soiqualang
Copy link
Author

soiqualang commented Dec 21, 2020

Một số lưu ý khác

Cột khóa chính thường không được phép null NOT NULL và được cho tự động tăng AUTO_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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment