Mysql数据库和表的相关命令
Database常见命令
-
创建数据库
CREATE DATABASE database_name; #完整语法 #指定字符集和排序规则 CREATE DATABASE [IF NOT EXISTS] database_name [CHARACTER SET charset_name] [COLLATE collation_name]; -
删除数据库
DROP DATABASE database_name; # 判断是否存在 DROP DATABASE [IF EXISTS] database_name;- 功能:删除一个数据库及其所有数据
- 注意:此操作不可逆,请谨慎使用
-
选择数据库
USE database_name; -
显示当前选择的数据库
SELECT DATABASE(); -
显示所有的数据库
SHOW DATABASES; -
显示数据库信息
SHOW CREATE DATABASE database_name; 显示创建数据库的 SQL 语句,包括字符集和排序规则 -
修改数据库
ALTER DATABASE database_name CHARACTER SET charset_name COLLATE collation_name; -
数据库备份
mysqldump -u username -p database_name > backup_file.sql -
恢复数据库
mysql -u username -p database_name < backup_file.sql -
重命名:可以先备份在删除再导入
导入sql文件
-
在命令行中使用 mysql 客户端工具执行 SQL 文件
mysql -u root -p mydatabase < /path/to/file.sql -
如果已经进入 MySQL 命令行,可以使用 source 命令执行 SQL 文件
source 文件路径;
表的常用命令
创建表
- 基本语法
CREATE TABLE 表名 (
列名1 数据类型 [约束条件],
列名2 数据类型 [约束条件],
...
[表级约束条件]
)
CHARACTER SET 字符集名称
COLLATE 校对规则名称
ENGINE = 存储引擎名称;
CREATE TABLE employees (
id INT PRIMARY KEY, -- 列级主键约束
first_name VARCHAR(50) NOT NULL, -- 列级非空约束
last_name VARCHAR(50) NOT NULL, -- 列级非空约束
email VARCHAR(100) UNIQUE, -- 列级唯一约束
department_id INT,
salary DECIMAL(10, 2) CHECK (salary > 0), -- 列级检查约束
CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES departments(id), -- 表级外键约束
CONSTRAINT chk_salary CHECK (salary < 100000) -- 表级检查约束
)CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci
ENGINE = InnoDB;
数据类型
- 整数类型:
INT,TINYINT,SMALLINT,BIGINT - 浮点数类型:
FLOAT,DOUBLE,DECIMAL - 字符串类型:
VARCHAR,CHAR,TEXT - 日期时间类型:
DATE,TIME,DATETIME,TIMESTAMP - 布尔类型:
BOOLEAN(实际上是TINYINT(1))
约束条件
PRIMARY KEY:主键,唯一标识每一行。UNIQUE:唯一约束,确保列中的值不重复。NOT NULL:非空约束,确保列中的值不为空。DEFAULT:默认值。AUTO_INCREMENT:自增列(通常用于主键)。FOREIGN KEY:外键约束
修改表
-
添加列
ALTER TABLE 表名 ADD 列名 数据类型 [约束条件]; -
修改列
ALTER TABLE 表名 MODIFY 列名 新数据类型 [约束条件]; 若省略,则新列将 不继承旧列的约束,仅保留重命名和数据类型变更 -
重命名列
ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [约束条件]; 若省略,则新列将 不继承旧列的约束,仅保留重命名和数据类型变更 -
删除列
ALTER TABLE 表名 DROP COLUMN 列名; -
修改字符集和校对规则
ALTER TABLE 表名 CONVERT TO CHARACTER SET 字符集名称 COLLATE 校对规则名称; -
修改存储引擎
ALTER TABLE 表名 ENGINE = 存储引擎名称; -
添加约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束类型 (列名); MySQL 会为每个表的主键约束默认分配名称 PRIMARY,无论用户是否显式命名 ALTER TABLE table_name ADD PRIMARY KEY (column_name); ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column_name); -
删除约束
ALTER TABLE 表名 DROP CONSTRAINT 约束名;# 该格式可以删除外键约束 ALTER TABLE table_name DROP PRIMARY KEY; ALTER TABLE table_name DROP INDEX constraint_name;
清空表
TRUNCATE TABLE 表名;
删除表
DROP TABLE IF EXISTS 表名;
重命名表
RENAME TABLE 旧表名 TO 新表名;
复制表
-
复制表结构
CREATE TABLE 新表名 LIKE 原表名; -
复制表结构和数据
CREATE TABLE 新表名 AS SELECT * FROM 原表名;
查看表信息
-
查看所有表
SHOW TABLES; -
查看表结构
DESC 表名; -
查看建表语句
SHOW CREATE TABLE 表名; -
查看表状态(存储引擎,空间大小等信息)
SHOW TABLE STATUS LIKE '表名';
为表添加计算列
-
创建表时增加计算列
CREATE TABLE table_name ( column1 data_type, column2 data_type, ... generated_column_name data_type GENERATED ALWAYS AS (expression) [STORED | VIRTUAL] );table_name: 表名。column1, column2, ...: 普通列的定义。generated_column_name: 计算列的名称。data_type: 计算列的数据类型。expression: 计算列的表达式。STORED或VIRTUAL: 指定计算列的类型STORED表示计算列的值会实际存储在表中VIRTUAL表示计算列的值在查询时动态计算,不占用存储空间
- 可以为STORED 计算列创建索引,从 MySQL 5.7 开始,支持为 VIRTUAL 计算列创建索引
- 计算列的表达式依赖于其他列的值,当这些列的值更新时,计算列的值会自动更新
CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50), birth_year INT, age INT GENERATED ALWAYS AS (YEAR(CURDATE()) - birth_year) STORED ); -
修改表时增加计算列
ALTER TABLE table_name ADD COLUMN column_name data_type GENERATED ALWAYS AS (expression) [STORED | VIRTUAL]; ALTER TABLE users ADD COLUMN age INT GENERATED ALWAYS AS (YEAR(CURDATE()) - birth_year) STORED;

浙公网安备 33010602011771号