Giới thiệu
MySQL duy trì dữ liệu mà nó quản lý trong các bảng và cơ sở dữ liệu. Các bảng lưu trữ dữ liệu trong các lược đồ được xác định trước của các cột và kiểu dữ liệu. Cơ sở dữ liệu là một cấu trúc có thể chứa nhiều bảng, chỉ mục, thủ tục và giúp xác định phạm vi cho các đặc quyền, tùy chỉnh và hơn thế nữa.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách tạo bảng và cơ sở dữ liệu trong MySQL. Chúng tôi sẽ chỉ cho bạn cách quản lý một số tính năng của cả hai cấu trúc và sau đó chúng tôi sẽ trình bày cách xóa chúng để dọn dẹp nếu bạn không còn cần đến chúng nữa.
Điều kiện tiên quyết
Để làm theo hướng dẫn này, bạn sẽ cần đăng nhập vào máy chủ MySQL với người dùng có đặc quyền quản trị bằng mysql
máy khách dòng lệnh.
Nếu bạn không muốn đăng nhập bằng root
Tài khoản quản trị MySQL, người dùng của bạn sẽ cần ít nhất CREATE
đặc quyền để thực hiện các hành động được mô tả trong hướng dẫn này.
Bạn có thể kiểm tra các đặc quyền hiện có của người dùng bằng cách nhập:
SHOW GRANTS\G
Bạn tạo cơ sở dữ liệu mới bằng cách nào?
Điều đầu tiên chúng tôi sẽ trình bày cách làm là tạo một cơ sở dữ liệu mới. Trong MySQL, cơ sở dữ liệu chứa các bảng, chỉ mục, thủ tục và các tài nguyên khác thường liên quan đến một dự án. Mỗi tài nguyên trong số đó phải được tạo trong cơ sở dữ liệu, vì vậy học cách tạo cơ sở dữ liệu mới là bước đầu tiên tốt.
Cú pháp cơ bản được sử dụng để tạo một cơ sở dữ liệu mới trông giống như sau:
CREATE DATABASE <db_name>;
Thay thế <db_name>
với tên bạn muốn đặt cho cơ sở dữ liệu của mình trước khi thực hiện lệnh. Lệnh này sẽ tạo cơ sở dữ liệu với tên đã cho và đặt người dùng hiện tại làm chủ sở hữu cơ sở dữ liệu mới.
Cơ sở dữ liệu sẽ sử dụng các giá trị mặc định trên toàn hệ thống cho các thuộc tính bộ ký tự, đối chiếu và mã hóa:
- BỘ NHÂN VẬT: đặt bộ ký tự cho cơ sở dữ liệu mới. Đây là một tùy chọn bản địa hóa ảnh hưởng đến những ký tự nào được coi là chữ hoa, chữ thường và chữ số.
- THU THẬP: đặt đối chiếu hoặc sắp xếp thứ tự cho cơ sở dữ liệu. Đây là tùy chọn bản địa hóa xác định cách tổ chức các mặt hàng khi chúng được đặt hàng.
- THAM GIA: đặt mã hóa cho cơ sở dữ liệu mới. Đây là một tùy chọn boolean có thể là 'Y' nếu có hoặc 'N' nếu không.
Bạn có thể tìm thấy các bộ ký tự có sẵn cho cài đặt của mình bằng cách nhập:
SHOW CHARACTER SET;
Tương tự như vậy, bạn có thể tìm thấy các ảnh ghép có sẵn bằng cách nhập:
SHOW COLLATION;
Nếu bạn muốn chỉ định giá trị không mặc định cho một trong các tham số này, bạn có thể thực hiện việc này bằng cách thêm chúng vào sau câu lệnh tạo chính như sau:
CREATE DATABASE <db_name> CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_0900_ai_ci' ENCRYPTION = 'Y';
Để làm theo các ví dụ trong hướng dẫn này, hãy tạo cơ sở dữ liệu có tên school
sử dụng cài đặt ngôn ngữ mặc định của phiên bản của bạn và bộ ký tự UTF8:
CREATE DATABASE school CHARACTER SET = 'utf8mb4';
Thao tác này sẽ tạo cơ sở dữ liệu mới của bạn bằng cách sử dụng các thông số kỹ thuật bạn đã cung cấp.
Liệt kê các cơ sở dữ liệu hiện có
Để liệt kê các cơ sở dữ liệu có sẵn trên máy chủ của bạn, hãy nhập:
SHOW DATABASES;
Điều này sẽ liệt kê từng cơ sở dữ liệu hiện được xác định trong môi trường:
+--------------------+ Database |+--------------------+ information_schema | mysql | performance_schema | school | sys | testing |+--------------------+6 rows in set (0.00 sec)
Bạn có thể xác minh rằng các cài đặt bạn cung cấp đã được áp dụng cho school
mới cơ sở dữ liệu sử dụng SHOW CREATE DATABASE
lệnh:
SHOW CREATE DATABASE school;
Đầu ra sẽ hiển thị lệnh và các tùy chọn được sử dụng để tạo cơ sở dữ liệu, chèn các tùy chọn với bất kỳ giá trị mặc định nào được áp dụng:
+----------+----------------------------------------------------------------------------------------------------------------------------------+ Database | Create Database |+----------+----------------------------------------------------------------------------------------------------------------------------------+ school | CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |+----------+----------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)
Cách thay đổi sang cơ sở dữ liệu khác trong MySQL
Sau khi cơ sở dữ liệu của bạn được tạo, bạn có thể làm việc với nó theo một số cách khác nhau.
Tùy chọn đầu tiên là chỉ định cơ sở dữ liệu làm đối số trong mọi lệnh bạn sử dụng. Tuy nhiên, để tiết kiệm thời gian nếu bạn đang chạy nhiều lệnh liên quan đến các đối tượng của cơ sở dữ liệu, bạn cũng có thể "chuyển sang" hoặc "sử dụng" cơ sở dữ liệu để đặt cơ sở dữ liệu mới của bạn làm ngữ cảnh mặc định cho bất kỳ lệnh nào liên quan đến cơ sở dữ liệu mà bạn sẽ chạy .
Để thay đổi sang một cơ sở dữ liệu khác, hãy nhập:
USE <db_name>;
Trong trường hợp của chúng tôi, chúng tôi có thể chuyển sang school
cơ sở dữ liệu chúng tôi đã tạo bằng cách nhập:
USE school;
Tạo bảng trong cơ sở dữ liệu
Khi bạn đã tạo cơ sở dữ liệu, bạn có thể xác định bảng và các đối tượng khác bên trong để lưu trữ và quản lý dữ liệu của bạn. Trong MySQL, các bảng bao gồm tên bảng, định nghĩa cột (những định nghĩa này lần lượt bao gồm tên, kiểu dữ liệu và ràng buộc trong số những người khác) và các tùy chọn bảng.
Cú pháp của CREATE TABLE
của MySQL là gì lệnh?
Cú pháp cơ bản để tạo bảng bằng cách sử dụng CREATE TABLE
của MySQL lệnh trông như thế này:
CREATE TABLE <table_name> ( <column_name> <data_type> [<column_constraint>], [<table_constraint>,]);
Chúng ta có thể chia mẫu lệnh trên thành các thành phần sau:
-
CREATE TABLE <table_name>
:Câu lệnh tạo cơ bản.<table_name>
Trình giữ chỗ phải được thay thế bằng tên của bảng bạn muốn sử dụng. -
<column_name> <data_type>
:Xác định một cột cơ bản trong bảng.<column_name>
trình giữ chỗ phải được thay thế bằng tên bạn muốn sử dụng cho cột của mình.<data_type>
chỉ định kiểu dữ liệu MySQL của cột. Dữ liệu được lưu trữ trong bảng phải tuân theo cấu trúc cột và loại dữ liệu cột được chấp nhận. -
<column_constraint>
:Các ràng buộc cột là các hạn chế tùy chọn thêm các yêu cầu bổ sung cho dữ liệu. Ví dụ:bạn có thể yêu cầu các mục nhập không phải là số nguyên rỗng, duy nhất hoặc số nguyên dương. -
<table_constraint>
:Ràng buộc bảng tương tự như ràng buộc cột nhưng liên quan đến sự tương tác của nhiều cột. Ví dụ:bạn có thể có một ràng buộc bảng để kiểm tra xem mộtDATE_OF_BIRTH
trướcDATE_OF_DEATH
trong một bảng.
Làm cách nào để bạn chỉ tạo bảng nếu chúng chưa tồn tại?
Hành vi mặc định của MySQL là gây ra lỗi nếu bạn cố gắng tạo một bảng đã tồn tại. Tuy nhiên, tùy chọn IF NOT EXISTS
mệnh đề có thể được thêm vào câu lệnh tạo để ghi đè hành vi này.
Bạn có thể sử dụng IF NOT EXISTS
bằng cách chèn nó vào lệnh sau CREATE TABLE
cụm từ trừ tên bảng:
CREATE TABLE IF NOT EXISTS table_name ( column_name TYPE [column_constraint], [table_constraint,]);
Điều này sẽ sửa đổi hành vi của lệnh như sau:Nếu tên bảng được chỉ định đã tồn tại, MySQL sẽ đưa ra cảnh báo thay vì lỗi. Phần còn lại của hành vi lệnh vẫn như cũ.
Tạo bảng trong cơ sở dữ liệu MySQL
Mẫu lệnh được đưa ra ở trên là đủ để tạo các bảng cơ bản. Để tiếp tục ví dụ của chúng tôi, chúng tôi sẽ tạo hai bảng trong school
của chúng tôi cơ sở dữ liệu. Một bảng sẽ được gọi là supplies
và người còn lại sẽ được gọi là teachers
:
Trong supplies
bảng, chúng tôi sẽ bao gồm các trường sau:
- id: Một ID duy nhất cho từng loại cung cấp trường học.
- tên: Tên của một mục cụ thể trong trường học.
- mô tả: Mô tả ngắn gọn về mặt hàng.
- nhà sản xuất: Tên của nhà sản xuất mặt hàng.
- màu: Màu sắc của mặt hàng.
- khoảng không quảng cáo: Số lượng các mặt hàng chúng tôi có cho một loại cung cấp trường học nhất định. Con số này không bao giờ được nhỏ hơn 0.
Chúng tôi có thể tạo supplies
bảng có các chất lượng ở trên bằng cách sử dụng SQL sau:
CREATE TABLE supplies ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), description VARCHAR(255), manufacturer VARCHAR(255), color VARCHAR(255), inventory INT CHECK (inventory >= 0));
Thao tác này sẽ tạo supplies
bảng trong school
cơ sở dữ liệu. PRIMARY KEY
ràng buộc cột là một ràng buộc đặc biệt được sử dụng để chỉ ra các cột có thể xác định duy nhất các bản ghi trong bảng. Như vậy, ràng buộc chỉ định rằng cột không được rỗng và phải là duy nhất. MySQL tạo chỉ mục cho các cột khóa chính để tăng tốc độ truy vấn.
Xác minh rằng bảng mới hiện diện bằng cách nhập:
SHOW TABLES;
+------------------+ Tables_in_school |+------------------+ supplies |+------------------+1 row in set (0.01 sec)
Bạn có thể xác minh rằng lược đồ phản ánh định nghĩa của bạn bằng cách nhập:
SHOW CREATE TABLE supplies\G
*************************** 1. row *************************** Table: suppliesCreate Table: CREATE TABLE `supplies` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `description` varchar(255) DEFAULT NULL, `manufacturer` varchar(255) DEFAULT NULL, `color` varchar(255) DEFAULT NULL, `inventory` int DEFAULT NULL, PRIMARY KEY (`id`), CONSTRAINT `supplies_chk_1` CHECK ((`inventory` >= 0))) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.00 sec
Các cột, kiểu dữ liệu và ràng buộc mà chúng tôi đã chỉ định có trong đầu ra, mặc dù thứ tự và hiển thị có thể khác nhau.
Tiếp theo, tạo teachers
bàn. Trong bảng này, cần có các cột sau:
- id :Một số nhận dạng nhân viên duy nhất.
- first_name :Họ của giáo viên.
- last_name :Họ của giáo viên.
- chủ đề :Môn học mà giáo viên được thuê để dạy.
- grade_level :Cấp độ của học sinh mà giáo viên được thuê để dạy.
Tạo teachers
bảng với lược đồ trên với SQL sau:
CREATE TABLE teachers ( id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(255), last_name VARCHAR(255), subject VARCHAR(255), grade_level INT);
Cách tạo bảng có khóa chính và khóa ngoại
Bạn có thể tìm thông tin về cách tạo bảng với khóa chính và khóa ngoại trong một số hướng dẫn MySQL khác của chúng tôi. Khóa chính và khóa ngoại đều là loại ràng buộc cơ sở dữ liệu trong MySQL.
Khóa chính là một cột hoặc cột đặc biệt được đảm bảo là duy nhất trên các hàng trong cùng một bảng. Tất cả các khóa chính có thể được sử dụng để xác định duy nhất một hàng cụ thể. Khóa chính không chỉ đảm bảo rằng mỗi hàng có một giá trị duy nhất cho các cột khóa chính mà còn đảm bảo rằng không có hàng nào chứa NULL
giá trị cho cột đó. Thông thường, khóa chính trong MySQL sử dụng định dạng sau để chỉ định khóa chính tăng dần được gán tự động:id INT AUTO_INCREMENT PRIMARY KEY
.
Khóa ngoại là một cách để đảm bảo rằng một cột hoặc các cột trong một bảng khớp với các giá trị có trong một bảng khác. Điều này giúp đảm bảo tính toàn vẹn tham chiếu giữa các bảng.
Cách xem bảng trong MySQL
Trong MySQL, bạn có thể liệt kê các bảng theo một số cách khác nhau tùy thuộc vào thông tin bạn đang tìm kiếm.
Nếu bạn muốn xem những bảng nào có sẵn trong cơ sở dữ liệu của mình, hãy nhập:
SHOW TABLES;
+------------------+ Tables_in_school |+------------------+ supplies | teachers |+------------------+2 rows in set (0.00 sec)
Bạn cũng có thể kiểm tra xem lược đồ cho bảng có khớp với thông số kỹ thuật của bạn không:
DESCRIBE teachers;
+--------------+--------------+------+-----+---------+----------------+ Field | Type | Null | Key | Default | Extra |+--------------+--------------+------+-----+---------+----------------+ id | int | NO | PRI | NULL | auto_increment | name | varchar(255) | YES | | NULL | | description | varchar(255) | YES | | NULL | | manufacturer | varchar(255) | YES | | NULL | | color | varchar(255) | YES | | NULL | | inventory | int | YES | | NULL | |+--------------+--------------+------+-----+---------+----------------+6 rows in set (0.00 sec)
teachers
bảng có vẻ phù hợp với định nghĩa của chúng tôi.
Cách thay đổi bảng bằng ALTER TABLE
lệnh
Nếu bạn cần thay đổi lược đồ của một bảng hiện có trong MySQL, bạn có thể sử dụng ALTER TABLE
yêu cầu. ALTER TABLE
rất giống với lệnh CREATE TABLE
nhưng hoạt động trên một bảng hiện có.
Cú pháp bảng thay thế
Cú pháp cơ bản để sửa đổi bảng trong MySQL trông giống như sau:
ALTER TABLE <table_name> <change_command> <change_parameters>;
<change_command>
cho biết loại thay đổi chính xác mà bạn muốn thực hiện, cho dù nó liên quan đến việc thiết lập các tùy chọn khác nhau trên bảng, thêm hoặc xóa cột, hoặc thay đổi loại hoặc ràng buộc. <change_parameters>
một phần của lệnh chứa bất kỳ thông tin bổ sung nào mà MySQL cần để hoàn thành thay đổi.
Thêm cột vào bảng
Bạn có thể thêm một cột vào bảng MySQL bằng ADD
thay đổi lệnh. Các tham số thay đổi sẽ bao gồm tên cột, loại và các tùy chọn, giống như bạn sẽ chỉ định chúng trong CREATE TABLE
lệnh.
Ví dụ:để thêm một cột có tên là missing_column
của text
gõ vào bảng có tên some_table
, bạn sẽ nhập:
ALTER TABLE some_table ADD missing_column text;
Xóa cột khỏi bảng
Thay vào đó, nếu bạn muốn xóa một cột hiện có, bạn có thể sử dụng DROP COLUMN
lệnh thay thế. Bạn cần chỉ định tên của cột mà bạn muốn thả làm tham số thay đổi:
ALTER TABLE some_table DROP COLUMN useless_column;
Thay đổi kiểu dữ liệu của cột
Để thay đổi kiểu dữ liệu của một cột, bạn có thể sử dụng ALTER COLUMN
thay đổi lệnh bằng MODIFY COLUMN
lệnh cột. Các tham số trong ngữ cảnh này bao gồm tên cột và kiểu mới của nó:
ALTER TABLE resident MODIFY COLUMN id INT;
Thay đổi bảng khác
Nhiều loại thay đổi khác có thể đạt được với ALTER TABLE
yêu cầu. Để biết thêm thông tin về các tùy chọn có sẵn, hãy xem tài liệu MySQL chính thức cho ALTER TABLE
.
Bỏ bảng
Nếu bạn muốn xóa một bảng, bạn có thể sử dụng DROP TABLE
Câu lệnh sql. Thao tác này sẽ xóa bảng cũng như mọi dữ liệu được lưu trữ trong bảng.
Cú pháp cơ bản giống như sau:
DROP TABLE <table_name>;
Thao tác này sẽ xóa bảng nếu nó tồn tại và gây ra lỗi nếu tên bảng không tồn tại.
Nếu bạn muốn xóa bảng nếu nó tồn tại và không làm gì nếu nó không tồn tại, bạn có thể bao gồm IF EXISTS
định tính trong câu lệnh:
DROP TABLE IF EXISTS <table_name>;
Các bảng có phụ thuộc vào các bảng hoặc đối tượng khác không thể bị xóa theo mặc định trong khi các bảng phụ thuộc đó tồn tại.
Xóa supplies
bảng chúng tôi đã tạo trước đó bằng cách nhập:
DROP TABLE supplies;
Chúng tôi sẽ giữ các teachers
cơ sở dữ liệu để chứng minh rằng câu lệnh xóa cơ sở dữ liệu cũng loại bỏ tất cả các đối tượng con như bảng.
Thả cơ sở dữ liệu
DROP DATABASE
câu lệnh yêu cầu MySQL xóa cơ sở dữ liệu được chỉ định. Cú pháp cơ bản giống như sau:
DROP DATABASE <database_name>;
Thay thế <database_name>
trình giữ chỗ với tên của cơ sở dữ liệu bạn muốn loại bỏ. Thao tác này sẽ xóa cơ sở dữ liệu nếu nó được tìm thấy. Nếu không tìm thấy cơ sở dữ liệu, sẽ xảy ra lỗi:
DROP DATABASE some_database;
ERROR 1008 (HY000): Can't drop database 'some_database'; database doesn't exist
Nếu bạn muốn xóa cơ sở dữ liệu nếu nó tồn tại và không làm gì cả, hãy bao gồm IF EXISTS
tùy chọn tùy chọn:
DROP DATABASE IF EXISTS some_database;
Query OK, 0 rows affected, 1 warning (0.00 sec)
Thao tác này sẽ xóa cơ sở dữ liệu hoặc không làm gì nếu không thể tìm thấy nó.
Để xóa school
cơ sở dữ liệu mà chúng tôi đã sử dụng trong hướng dẫn này, liệt kê các cơ sở dữ liệu hiện có trên hệ thống của bạn:
SHOW DATABASES;
+--------------------+ Database |+--------------------+ information_schema | mysql | performance_schema | school | sys | testing |+--------------------+6 rows in set (0.00 sec)
Xóa school
cơ sở dữ liệu bằng lệnh sau:
DROP DATABASE school;
Thao tác này sẽ xóa school
cơ sở dữ liệu cùng với teachers
bảng được xác định bên trong.
Kết luận
Bài viết này trình bày những kiến thức cơ bản về cách tạo và xóa cơ sở dữ liệu và bảng với MySQL. Đây là một số lệnh cơ bản nhất cần thiết để thiết lập hệ thống cơ sở dữ liệu và xác định cấu trúc dữ liệu của bạn.
Như đã đề cập trước đó, các câu lệnh SQL được đề cập trong hướng dẫn MySQL này, đặc biệt là CREATE TABLE
, có nhiều tham số bổ sung có thể được sử dụng để thay đổi hành vi của hệ thống. Bạn có thể tìm hiểu thêm về những điều này bằng cách xem tài liệu MySQL chính thức.