MySQL基本命令

⚠️本篇适用于 MySQL 8.0.X 版本
使用前请使用命令mysql --version确认是否安装 MySQL

登陆 mysql 数据库

使用命令mysql -h localhost -u root -p
其中：

-u 后面跟的是你的 MySQL 用户名。

-p 表示你打算输入密码。注意 -p 后面没有空格。如果没有输入密码则回车时系统提示你输入密码。

-h 参数来指定我们想要连接的 MySQL 服务器位于 localhost。
如果 MySQL 服务器位于不同的主机或远程服务器，可以将 localhost 替换为那台服务器的主机名或 IP 地址。

MySQL 备份和恢复数据库

备份数据库

使用 mysqldump 工具来备份数据库。基本语法如下

Copy
mysqldump -u [username] -p[password] [database_name] > [backup_file.sql]

[username]：你的 MySQL 用户名。

[password]：你的 MySQL 密码。注意，这里的 -p 和密码之间没有空格。

[database_name]：你想要备份的数据库名。

[backup_file.sql]：备份文件的名称。

例如：mysqldump -u root -p123456 mydatabase > mydatabase_backup.sql

以上命令将会把 mydatabase 数据库备份到 mydatabase_backup.sql 文件中。

MySQL 备份和恢复数据库

例如：
mysql -u root -p123456 mydatabase < mydatabase_backup.sql
以上命令将会把mydatabase_backup.sql文件中的数据恢复到mydatabase数据库中。
请注意，恢复数据库时，数据库应该已经存在。如果还未创建，需要先创建数据库。

创建和查看数据库

创建数据库

在 MySQL 中，可以使用 CREATE DATABASE 语句来创建一个新的数据库。例如，要创建一个名为 "my_database" 的数据库，您可以使用以下命令：
CREATE DATABASE my_database;

查看数据库

要查看所有的数据库，可以使用 SHOW DATABASES 命令：
SHOW DATABASES;
要查看特定的数据库，可以先使用 USE 命令选择数据库，然后使用 SHOW TABLES 命令来查看该数据库中的所有表：

Copy
USE my_database;
SHOW TABLES;

创建、查看、删除表

创建表

使用 CREATE TABLE 语句来创建一个新的表。例如，要在 "my_database" 数据库中创建一个名为 "my_table" 的表，您可以使用以下命令：

Copy
USE my_database;
CREATE TABLE my_table (
id INT AUTO_INCREMENT,
name VARCHAR(100),
age INT,
PRIMARY KEY (id)
);

查看表

要查看表的结构，可以使用DESCRIBE 或 DESC 命令：

Copy
DESCRIBE my_table;

删除表

使用 DROP 语句：(会直接完全删除表，不保留结构)

Copy
DROP TABLE table_name;

使用 DELETE 语句：

Copy
DELETE FROM table_name;

使用 TRUNCATE 语句：

Copy
TRUNCATE TABLE table_name;

这里的 table_name 是你要删除数据的表的名称。这两个命令的效果相同，都会删除表中的所有数据，保留表格结构。但是 TRUNCATE 通常会更快，并且会重置表的 AUTO_INCREMENT 计数器。在删除大量数据时，TRUNCATE 是更好的选择。
约束条件被用于规定在表中所允许的数据。在创建表或修改表结构时，可以为每个列添加约束条件。以下是 MySQL 中常见的约束条件：

MySQL 约束条件

PRIMARY KEY (主键)

列级别主键约束
在定义表列时，直接将某列定义为主键：

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

表级别主键约束
在定义所有表列之后，将某列或多列定义为主键：

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

如果您想创建复合主键（由两列或以上组成的主键），则只能在表级别进行定义：

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

UNIQUE

唯一约束保证某列的每一行都必须有唯一的值。

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

NOT NULL

非空约束确保某列不能有 NULL 值。

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

FOREIGN KEY (外键)

外键约束用于防止破坏两个表之间的链接。

Copy
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(ID)
);

MySQL 增删改查、分组统计、聚合函数

SQL 操作

创建表

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

CREATE TABLE 语句用于在数据库中创建新表。它允许指定表的名称和表中每个列的名称。

插入数据

直接插入

Copy
INSERT INTO table_name
VALUES (value1, value2);

指定列插入

Copy
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

同时插入多个数据

Copy
INSERT INTO table_name (column1, column2, column3, ...)
VALUES
(value1, value2, value3, ...),
(value4, value5, value6, ...),
(value7, value8, value9, ...);

MySQL 修改表结构

在 MySQL 中，我们使用 ALTER TABLE 命令来修改现有的表结构。以下是一些常用的 ALTER TABLE 命令：

添加列

Copy
ALTER TABLE table_name
ADD column_name datatype;

删除列

Copy
ALTER TABLE table_name
DROP COLUMN column_name;

修改列类型

Copy
ALTER TABLE table_name
MODIFY COLUMN column_name datatype;

重命名列

Copy
ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name datatype;

添加主键

Copy
ALTER TABLE table_name
ADD PRIMARY KEY (column_name);

删除主键

Copy
ALTER TABLE table_name
DROP PRIMARY KEY;

添加索引

Copy
ALTER TABLE table_name
ADD INDEX index_name (column_name);

删除索引

Copy
ALTER TABLE table_name
DROP INDEX index_name;

重命名表

Copy
ALTER TABLE old_table_name
RENAME TO new_table_name;

删除记录

Copy
DELETE FROM table_name
WHERE some_column = some_value;

DELETE 语句用于删除表中的记录（行）。WHERE 子句指定应删除哪个记录或记录。如果省略 WHERE 子句，将删除所有记录。

更新记录

Copy
UPDATE table_name
SET column1 = value1, column2 = value2
WHERE some_column = some_value;

UPDATE 语句用于编辑表中的记录（行）。它包括一个 SET 子句，该子句指示要编辑的列，以及一个 WHERE 子句，用于指定记录。