Dữ liệu Sói's Tutorials Web

Hướng dẫn cơ bản với MySQL – Thiết kế Database

Table of Content

Hướng dẫn cơ bản với MySQL - Thiết kế Database

Notes MySQL

Video Hướng dẫn

  • [MySQL] Create Database, table

https://youtu.be/fkXIAzu6gec

  • [MySQL] Add PRIMARY KEY, FOREIGN KEY Constraint

https://youtu.be/MSrC5gqGhS8

  • [MySQL] Create Database ER diagram

https://youtu.be/ScPHoMF_01Q

z2238849978519_39f45145a0a3b23fa34f270b2eda9d49


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

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

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

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

Show Diagram

https://dataedo.com/kb/tools/mysql-workbench/create-database-diagram

https://youtu.be/ScPHoMF_01Q

diagram


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

Leave a Reply

Your email address will not be published. Required fields are marked *