Để lại trong mysql

Mệnh đề

CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
1 được sử dụng để kết hợp các hàng từ hai hoặc nhiều bảng, dựa trên một cột có liên quan giữa chúng

Hãy xem xét một lựa chọn từ bảng "Đơn hàng"

OrderIDCustomerIDOrderDate1030821996-09-1810309371996-09-1910310771996-09-20

Sau đó, hãy xem một lựa chọn từ bảng "Khách hàng"

Khách hàngIDKhách hàngTênLiên hệTênQuốc gia1Alfreds FutterkisteMaria AndersĐức2Ana Trujillo Emparedados y heladosAna TrujilloMexico3Antonio Moreno TaqueríaAntonio MorenoMexico

Lưu ý rằng cột "CustomerID" trong bảng "Orders" đề cập đến "CustomerID" trong bảng "Customers". Mối quan hệ giữa 2 bảng trên là cột "CustomerID"

Sau đó, chúng ta có thể tạo câu lệnh SQL sau (có chứa

CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
2), chọn các bản ghi có giá trị khớp trong cả hai bảng

Thí dụ

CHỌN Đơn đặt hàng. OrderID, khách hàng. Tên khách hàng, đơn đặt hàng. OrderDate
TỪ Đơn đặt hàng
INNER THAM GIA KHÁCH HÀNG TRÊN Đơn đặt hàng. CustomerID=Khách hàng. ID khách hàng;

Tự mình thử »

và nó sẽ tạo ra một cái gì đó như thế này

OrderIDCustomerNameOrderDate10308Ana Trujillo Emparedados y helados9/18/199610365Antonio Moreno Taquería11/27/199610383Xung quanh Horn12/16/199610355Xung quanh Horn15/11/199610278Berglunds snabbköp8/12/1996



Các loại THAM GIA SQL khác nhau

Dưới đây là các loại THAM GIA khác nhau trong SQL

  • CREATE TABLE Teachers (name VARCHAR(30), age INT);
    
    -- Primary key:
    CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
    CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
    CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...
    
    -- Restrictions:
    CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
    CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
    CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.
    
    -- Foreign keys:
    CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng
    
    -- Default values:
    CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
    
    3. Trả về các bản ghi có giá trị khớp trong cả hai bảng
  • CREATE TABLE Teachers (name VARCHAR(30), age INT);
    
    -- Primary key:
    CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
    CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
    CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...
    
    -- Restrictions:
    CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
    CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
    CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.
    
    -- Foreign keys:
    CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng
    
    -- Default values:
    CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
    
    4. Trả về tất cả các bản ghi từ bảng bên trái và các bản ghi phù hợp từ bảng bên phải
  • CREATE TABLE Teachers (name VARCHAR(30), age INT);
    
    -- Primary key:
    CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
    CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
    CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...
    
    -- Restrictions:
    CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
    CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
    CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.
    
    -- Foreign keys:
    CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng
    
    -- Default values:
    CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
    
    5. Trả về tất cả các bản ghi từ bảng bên phải và các bản ghi phù hợp từ bảng bên trái
  • CREATE TABLE Teachers (name VARCHAR(30), age INT);
    
    -- Primary key:
    CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
    CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
    CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...
    
    -- Restrictions:
    CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
    CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
    CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.
    
    -- Foreign keys:
    CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng
    
    -- Default values:
    CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
    
    6. Trả về tất cả các bản ghi khi có sự trùng khớp trong bảng bên trái hoặc bên phải

Để lại trong mysql
 
Để lại trong mysql
 
Để lại trong mysql
 
Để lại trong mysql


Kiểm tra bản thân với các bài tập

Tập thể dục

Chèn các phần còn thiếu trong mệnh đề

CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
1 để nối hai bảng
CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
8 và
CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
9, sử dụng trường
CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
10 trong cả hai bảng làm mối quan hệ giữa hai bảng

MySQL rất phổ biến, được sử dụng nhiều, nhưng mọi người thường hay quên mất cú pháp của nó, lúc nào cần sử dụng lại tra cứu google. Vì thế bài viết này sẽ tổng hợp lại các cú pháp, từ cơ bản cho đến nâng cao, để lúc nào mọi người cũng có thể tiện dụng luôn

Connected to MySQL Server

Bước đầu tiên để làm việc với cơ sở dữ liệu MySQL là kết nối với nó. Trong terminal, gõ lệnh

mysql [-h machine] -u  -p [db_name]

Nếu máy chủ và máy khách đều chạy trên cùng 1 máy, không cần thiết phải thêm


-- Tạo database
CREATE DATABASE University;

-- Chọn database để sử dụng
USE University;

-- Phân quyền
GRANT ALL ON University TO mike
GRANT INSERT, UPDATE ON University.Students TO william
GRANT SELECT(id, name) ON University.Teachers TO john 

-- Xóa database
DROP DATABASE University;
8.

-- Tạo database
CREATE DATABASE University;

-- Chọn database để sử dụng
USE University;

-- Phân quyền
GRANT ALL ON University TO mike
GRANT INSERT, UPDATE ON University.Students TO william
GRANT SELECT(id, name) ON University.Teachers TO john 

-- Xóa database
DROP DATABASE University;
9 cũng không bắt buộc, vì trong phần tiếp theo, ta sẽ thấy có thể tạo và thay đổi cơ sở dữ liệu hiện tại chỉ với 1 câu lệnh. To end connection to MySQL, ta could enter
CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
0,
CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
1 or
CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
2

Tạo Người dùng và Cơ sở dữ liệu

MySQL làm việc với người dùng mặc định là root, tuy nhiên nó chỉ nên dùng để quản lý cơ sở dữ liệu, không phải để thao tác dữ liệu. Đó là lý do chúng ta nên tạo người dùng

CREATE USER 'mike' IDENTIFIED BY 'difficultpassword'
CREATE USER 'mike'@'localhost' IDENTIFED BY 'difficultpassword'

Đoạn mã trên, chúng ta không tạo ra 2 người dùng, mà 1 người dùng có thể sử dụng được kể cả khi khách hàng ở trong hoặc bên ngoài máy chủ. Giờ chúng ta sẽ xem cách tạo cơ sở dữ liệu và phân quyền cho những người dùng khác nhau


-- Tạo database
CREATE DATABASE University;

-- Chọn database để sử dụng
USE University;

-- Phân quyền
GRANT ALL ON University TO mike
GRANT INSERT, UPDATE ON University.Students TO william
GRANT SELECT(id, name) ON University.Teachers TO john 

-- Xóa database
DROP DATABASE University;

Tạo bảng

Bảng là khái niệm cốt lõi của hệ thống quản trị cơ sở dữ liệu như MySQL. Chúng ta sẽ học cách tạo bảng đơn giản và cách đặt khóa chính, hạn chế, khóa ngoại và giá trị mặc định

CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"

Thêm bản ghi

Sau khi tạo bảng, bước tiếp theo là thêm dữ liệu. Ví dụ tiếp theo bao gồm cả cách thêm 1 bản ghi và nhiều bản ghi cùng lúc

-- Thêm 1 bản ghi, cung cấp giá trị cho từng cột
INSERT INTO Students VALUES (1, 'Peter', 25);

-- Thêm 1 bản ghi, không cung cấp đủ giá trị cho tất cả các cột
INSERT INTO Students(id, name) VALUES (1, 'Peter');

-- Thêm nhiều bản ghi cùng lúc
INSERT INTO Students VALUES (1, 'Peter', 25), (2, 'Frank', 19), (3, 'William', 21);

Thực hiện truy vấn

Truy vấn sẽ được hoàn thành chỉ với một câu lệnh

CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
3, nó cho phép chúng tôi lấy dữ liệu từ cơ sở dữ liệu. MySQL cho phép chúng ta thực hiện các câu truy vấn phức tạp, lấy dữ liệu từ nhiều bảng hoặc tạo các logic toán tử từ kết quả của các câu truy vấn khác


-- Tạo database
CREATE DATABASE University;

-- Chọn database để sử dụng
USE University;

-- Phân quyền
GRANT ALL ON University TO mike
GRANT INSERT, UPDATE ON University.Students TO william
GRANT SELECT(id, name) ON University.Teachers TO john 

-- Xóa database
DROP DATABASE University;
1

Create View

Xem cho phép chúng ta đưa gói lệnh

CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
3 vào trong 1 chế độ xem giống như 1 bảng mới. Sau đó chúng ta có thể đặt quyền cho người dùng đối với chế độ xem đó. Tuy nhiên, nếu như lệnh
CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
3 được đóng gói có các hàm tính toán như
CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
6,
CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
7,. hoặc sử dụng
CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
8,
CREATE TABLE Teachers (name VARCHAR(30), age INT);

-- Primary key:
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT); # primary key: id, không thể lặp lại
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, PRIMARY KEY (code, name, age)); # primary key là tổ hợp
CREATE TABLE Subjects (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(30)); # primary key tăng tự động, bắt đầu từ 1, 2, 3...

-- Restrictions:
CREATE TABLE Teachers (id INT PRIMARY KEY NOT NULL, name VARCHAR(30) NOT NULL, age INT NOT NULL); # NOT NULL: giá trị cột này không thể rỗng
CREATE TABLE Teachers (id INT PRIMARY KEY, name VARCHAR(30), age INT, CHECK (age>18 and age<70)); # CHECK: giá trị của cột phải tuân theo điều kiện
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, passport VARCHAR (20), UNIQUE(passport)); # UNIQUE: giá trị của cột này là duy nhất, không trùng lặp giữa các bản ghi.

-- Foreign keys:
CREATE TABLE Studies (student INT NOT NULL, subject INT NOT NULL, FOREIGN KEY (student) REFERENCES Students(id), FOREIGN KEY (subject) REFERENCES Subjects(id)); # foreign keys: mối quan hệ giữa các bảng

-- Default values:
CREATE TABLE Students (id INT, name VARCHAR(30), age INT, country VARCHAR(20) DEFAULT "Spain"); # nếu thuộc tính "country" không được chỉ định, nó sẽ lưu giá trị mặc định là "Spain"
9,. thì không thể thực hiện các thao tác
-- Thêm 1 bản ghi, cung cấp giá trị cho từng cột
INSERT INTO Students VALUES (1, 'Peter', 25);

-- Thêm 1 bản ghi, không cung cấp đủ giá trị cho tất cả các cột
INSERT INTO Students(id, name) VALUES (1, 'Peter');

-- Thêm nhiều bản ghi cùng lúc
INSERT INTO Students VALUES (1, 'Peter', 25), (2, 'Frank', 19), (3, 'William', 21);
0,
-- Thêm 1 bản ghi, cung cấp giá trị cho từng cột
INSERT INTO Students VALUES (1, 'Peter', 25);

-- Thêm 1 bản ghi, không cung cấp đủ giá trị cho tất cả các cột
INSERT INTO Students(id, name) VALUES (1, 'Peter');

-- Thêm nhiều bản ghi cùng lúc
INSERT INTO Students VALUES (1, 'Peter', 25), (2, 'Frank', 19), (3, 'William', 21);
1, hay
-- Thêm 1 bản ghi, cung cấp giá trị cho từng cột
INSERT INTO Students VALUES (1, 'Peter', 25);

-- Thêm 1 bản ghi, không cung cấp đủ giá trị cho tất cả các cột
INSERT INTO Students(id, name) VALUES (1, 'Peter');

-- Thêm nhiều bản ghi cùng lúc
INSERT INTO Students VALUES (1, 'Peter', 25), (2, 'Frank', 19), (3, 'William', 21);
2 với quan điểm đó


-- Tạo database
CREATE DATABASE University;

-- Chọn database để sử dụng
USE University;

-- Phân quyền
GRANT ALL ON University TO mike
GRANT INSERT, UPDATE ON University.Students TO william
GRANT SELECT(id, name) ON University.Teachers TO john 

-- Xóa database
DROP DATABASE University;
1

Thực hiện giao dịch

Giao dịch là 1 nhóm lệnh, nếu 1 lệnh trong giao dịch không thành công MySQL sẽ hoàn tác lại các lệnh trước đó


-- Tạo database
CREATE DATABASE University;

-- Chọn database để sử dụng
USE University;

-- Phân quyền
GRANT ALL ON University TO mike
GRANT INSERT, UPDATE ON University.Students TO william
GRANT SELECT(id, name) ON University.Teachers TO john 

-- Xóa database
DROP DATABASE University;
2

Tạo thủ tục lưu trữ

Thủ tục lưu trữ là một chuỗi câu SQL có thể được gọi bất cứ lúc nào từ bảng điều khiển hoặc tệp

-- Thêm 1 bản ghi, cung cấp giá trị cho từng cột
INSERT INTO Students VALUES (1, 'Peter', 25);

-- Thêm 1 bản ghi, không cung cấp đủ giá trị cho tất cả các cột
INSERT INTO Students(id, name) VALUES (1, 'Peter');

-- Thêm nhiều bản ghi cùng lúc
INSERT INTO Students VALUES (1, 'Peter', 25), (2, 'Frank', 19), (3, 'William', 21);
3. Nó tương tự như chức năng trong các ngôn ngữ lập trình


-- Tạo database
CREATE DATABASE University;

-- Chọn database để sử dụng
USE University;

-- Phân quyền
GRANT ALL ON University TO mike
GRANT INSERT, UPDATE ON University.Students TO william
GRANT SELECT(id, name) ON University.Teachers TO john 

-- Xóa database
DROP DATABASE University;
4

Chơi với các biến

Biến là một cách hữu dụng để lưu trữ kết quả tạm thời của câu truy vấn hoặc giá trị của 1 cột trong một bản ghi để sử dụng sau. Có 2 loại biến chính trong MySQL. local and user-define (hay còn gọi là biến phiên). Loại đầu tiên được khai báo trước khi sử dụng và phạm vi của chúng được giới hạn trong

-- Thêm 1 bản ghi, cung cấp giá trị cho từng cột
INSERT INTO Students VALUES (1, 'Peter', 25);

-- Thêm 1 bản ghi, không cung cấp đủ giá trị cho tất cả các cột
INSERT INTO Students(id, name) VALUES (1, 'Peter');

-- Thêm nhiều bản ghi cùng lúc
INSERT INTO Students VALUES (1, 'Peter', 25), (2, 'Frank', 19), (3, 'William', 21);
4, nơi định nghĩa chúng. Loại thứ 2 không được khai báo trước, giá trị của nó có thể được sử dụng bất cứ lúc nào, nhưng chỉ trong phiên được tạo bởi khách hàng


-- Tạo database
CREATE DATABASE University;

-- Chọn database để sử dụng
USE University;

-- Phân quyền
GRANT ALL ON University TO mike
GRANT INSERT, UPDATE ON University.Students TO william
GRANT SELECT(id, name) ON University.Teachers TO john 

-- Xóa database
DROP DATABASE University;
6

Play with Cursors

Con trỏ là một công cụ giống như vòng lặp chạy qua từng bản ghi trong kết quả của câu truy vấn. Nó sẽ rất hữu ích khi muốn chuyển mỗi bản ghi thành 1 đối tượng chẳng hạn. Cách khai báo và sử dụng cũng rất dễ dàng

CREATE USER 'mike' IDENTIFIED BY 'difficultpassword'
CREATE USER 'mike'@'localhost' IDENTIFED BY 'difficultpassword'
0

Streaming control

Bên trong thủ tục lưu sẵn, chúng ta có thể điều khiển luồng, giống như trong các ngôn ngữ lập trình khác

CREATE USER 'mike' IDENTIFIED BY 'difficultpassword'
CREATE USER 'mike'@'localhost' IDENTIFED BY 'difficultpassword'
1

Tạo trình kích hoạt

Kích hoạt là một phương thức được chạy trước hoặc sau bất kỳ hành động nào, ví dụ như chèn, cập nhật, hoặc xóa trong bảng hoặc chế độ xem. Chúng ta cần cẩn thận với trigger vì nó có thể biến thành nhiều tài nguyên máy chủ

CREATE USER 'mike' IDENTIFIED BY 'difficultpassword'
CREATE USER 'mike'@'localhost' IDENTIFED BY 'difficultpassword'
2

Tạo một sự kiện đã lên lịch

Sự kiện đã lên lịch là một trình kích hoạt được thực hiện trên một tờ báo cụ thể nào đó. Có sự kiện diễn ra 1 lần, lên lịch vào ngày, giờ cụ thể nào đó, hoặc là sự kiện định kỳ, chạy vào từng phút, giờ, ngày,. in 1 fixed time interval

CREATE USER 'mike' IDENTIFIED BY 'difficultpassword'
CREATE USER 'mike'@'localhost' IDENTIFED BY 'difficultpassword'
3

MySQL rất phức tạp và có quá nhiều thứ để nói, không thể trình bày hết trong bài viết này. Tuy nhiên, những điều trên chắc chắn cũng đủ cho phần lớn các mục đích thông thường, nếu cần nhiều hơn, bạn có thể tham khảo tài liệu chính thức này