MySQL(一)-数据库和表操作

157 阅读4分钟

写在前面:部分内容摘抄于冰河的MySQL运维大全

一.创建数据库

1.1创建数据库

CREATE DATABASE database_name
CREATE DATABASE IF NOT EXISTS database_name [推荐]

1.2查看数据库

1.2.1查看数据库

SHOW DATABASES;
SELECT DATABASE();

1.2.2查看数据库的创建信息

SHOW CREATE DATABASE database_name
SHOW CREATE DATABASE database_name \G [推荐]

1.3修改数据库名称

RENAME DATABASE db_name TO new_db_name

1.4数据库编码

1.4.1创建时指定

CREATE DATABASE [IF NOT EXISTS] database_name DEFAULT CHARACTER SET character_name COLLATE collate_name [DEFAULT ENVRYPTON = 'N']

1.4.2修改编码

ALTER DATABASE database_name CHARACTER SET character_name collate collate_name

1.5删除数据库

DROP DATABASE [IF EXISTS] database_name

二.创建数据表

2.1创建空数据表

CREATE TABLE [IF NOT EXISTS] 表名(
字段1,数据类型 [约束条件] [默认值],
字段2,数据类型 [约束条件] [默认值],
字段3,数据类型 [约束条件] [默认值],
...
[表约束条件]
)

备注:1.表名称在Windows上不区分大小写,在Linux上区分大小写,如果想在Linux上不区分大小写,需要在配置文件my.cnf中添加一项配置

lower_case_table_names = 1

2.MySQL 8.x版本中,不再推荐为INT类型指定显示长度,未来可能回去掉这样的语法,建议大家不再使用

2.2指定表主键

2.2.1创建时指定主键

字段 数据类型 PRIMART KEY [默认值]

2.2.2定义完数据表后指定主键

[CONSTRAINT 约束条件名] PRIMARY KEY [字段名]

2.2.3联合主键

PRIMARY KEY [字段1,字段2,字段3...,字段n]

2.2.4指定外键

主表:主键所在的表

从表:外键所在的表

[CONSTRAINT 外键名] FOREIGN KEY 字段1 [,字段2,字段3,...]
REFERENCES 主表名 主键列1 [,主键列2,主键列3,...]

注意:

1.一张表的外键与其关联的另一张表的主键的数据类型必须相同

2.不推荐使用外键,程序上做处理

2.2.5创建表时指定非空

字段名称 数据类型 NOT NULL

2.2.6指定默认值

字段名称 数据类型 DEFAULT 默认值

2.2.7指定主键自增

字段名称 数据类型 AUTO_INCREMENT

2.2.8指定引擎

ENGINE=存储引擎名称

三.修改表数据

3.1 DESCRIBE/DESC查看表的结构

结构信息包括字段名称、数据类型及是否是主键等信息

DESCRIBE 表名称
DESC 表名称

字段含义:

Field:数据表中的字段

Type:数据表中的数据类型

Null:字段值是否可以为NULL

Key:当前字段是否存在索引。PRI表示主键,或是主键的一部分;UNI表示当前列时UNIQUE标识的唯一索引列,或是唯一索引列的一部分;MUL表示在当前列中的某个值可以出现多次

Default:当前列有默认值,同事会显示默认值

Extra:附加信息

3.2 SHOW CREATE TABLE语句查看表结构

SHOW CREATE TABLE 表名 \G

3.3修改数据表

3.3.1修改表名称

ALTER TABLE 原表名 RENAME [TO] 新表名

3.3.2添加字段

ALTER TABLE 表名 ADD COLUMN 新字段名 数据类型 [NOT NULL DEFAULT 默认值]

3.3.3添加字段并设置在第一列

ALTER TABLE 表名 ADD COLUMN 新字段名 数据类型 [NOT NULL DEFAULT 默认值] FIRST

3.3.4添加字段并设置在指定字段后面

ALTER TABLE 表名 ADD COLUMN 新字段名 数据类型 [NOT NULL DEFAULT 默认值] AFTER 原有字段名

3.3.5修改字段名称

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型

3.3.6修改字段的数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型 [DEFAULT 默认值]

3.3.7修改字段的位置

ALTER TABLE 表名 MODIFY 字段名 数据类型 FIRST
ALTER TABLE 表名 MODIFY 字段1名称 数据类型 AFTER 字段2名称

3.3.8删除字段

ALTER TABLE 表名 DROP 字段名

3.3.9取消外键

ALTER TABLE 表名 DROP FOREIGN KEY 外键名

四.删除数据表

4.1删除数据表

DROP TABLE [IF EXISTS] 数据表1 [,数据表2,数据表3...,数据表n]

注意:如果表存在外键,删除会报错。先取消外键然后再删除

五.临时表

5.1创建临时表

CREATE TEMPORARY TABLE [IF NOT EXISTS] 表名

MySQL临时表和正式表的区别:

  1. 生命周期:临时表在当前会话结束时会自动销毁,而正式表则持久保存在数据库中。
  2. 权限:通常情况下,创建临时表的用户需要具有创建临时表的权限,而创建正式表则需要相应的权限。
  3. 存储位置:临时表通常存储在内存或者临时文件中,而正式表则存储在数据库的数据文件中。
  4. 事务影响:临时表通常受当前事务的影响,而正式表可以跨多个事务存在。

注意:SHOW TABLES无法查到临时表, 可以使用DESCRIBE/DESC或者SHOW CREATE TABLE语句查询临时表的结构,删除表的操作和正式表一样