Skip to content

Instantly share code, notes, and snippets.

@soiqualang
Last active December 21, 2020 10:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • 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

Create Database

https://www.w3schools.com/sql/sql_create_db.asp

https://youtu.be/fkXIAzu6gec

CREATE DATABASE databasename;

CREATE DATABASE mapping;

Khi đặt tên nên:

  • Không dấu
  • Không khoảng trắng
  • Viết thường
  • Không ký tự đặc biệt

@soiqualang
Copy link
Author

soiqualang commented Dec 21, 2020

Create Table

https://www.w3schools.com/sql/sql_create_table.asp

https://youtu.be/fkXIAzu6gec

Cú pháp

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
   ....
);

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 Persons (
    ID int NOT NULL PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

Lỗi

15:09:03 CREATE TABLE admin( admin_id int, ward varchar(255), district varchar(255), city varchar(255) ) Error Code: 1046. No database selected Select the default DB to be used by double-clicking its name in the SCHEMAS list in the sidebar. 0.000 sec

Lỗi này do cửa sổ query không biết nên truy vấn từ Database nào, trong mysql workbend thì ta nhấp đúp chuột vào Database muốn truy vấn để active nó lên

Select the default DB to be used by double-clicking its name in the SCHEMAS list in the sidebar

Thực hành

admin

CREATE TABLE admin(
    admin_id int,
    ward varchar(255),
    district varchar(255),
    city varchar(255)
);

street

CREATE TABLE street(
    street_id int,
    street_type_id int,
    admin_id int,
    street_name varchar(255)
);

Mình nên để mấy cái cột liên kết (khoái ngoại, khóa chính) lên đầu bảng cho dễ quản lý

poi

CREATE TABLE poi(
    poi_id int,
    category_id int,
    address_id int,
    admin_id int,
    name varchar(255)
);

street_type

CREATE TABLE street_type(
    street_type_id int,
    street_type varchar(255)
);

categories

CREATE TABLE categories(
    category_id int,
    category varchar(255)
);

address

CREATE TABLE address(
    addr_id int,
    street_id int,
    admin_id int,
    addr_no varchar(255)
);

@soiqualang
Copy link
Author

soiqualang commented Dec 21, 2020

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

CREATE TABLE Persons (
    ID int NOT NULL PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

Chúng ta nên tạo khi create table luôn

Nếu đã tạo rồi thì giờ ta update lại thôi

ALTER TABLE Persons
ADD PRIMARY KEY (ID);

Thực hành

ALTER TABLE admin
ADD PRIMARY KEY (admin_id);

ALTER TABLE street
ADD PRIMARY KEY (street_id);

ALTER TABLE poi
ADD PRIMARY KEY (poi_id);

ALTER TABLE street_type
ADD PRIMARY KEY (street_type_id);

ALTER TABLE categories
ADD PRIMARY KEY (category_id);

ALTER TABLE address
ADD PRIMARY KEY (addr_id);

@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