数据库的创建、修改与删除属于DDL数据定义语言应用
1、数据库操作
1.1、库创建的规范
- 库名使用小写字符
- 库名不能以数字开头
- 库名不能是数据库关键字
- 必须设置字符集
1.2、创建库
-
语法
CREATE DATABASE [数据库名称] CHARSET [字符集] COLLATE [校对规则]; -
示例
CREATE DATABASE test_db CHARSET utf8mb4 COLLATE utf8mb4_bin;
1.3、删除库
-
语法
DROP DATABASE [数据库名称] -
示例
DROP DATABASE test_db;
-
修改库
说明:修改数据库一般修改数据库的字符集、校对规则等。在修改字符集时,目标字符集一定要是原字符集的超集,否则会出现乱码-
语法:
ALTER DATABASE [数据库名称] CHARSET [字符集]; -
示例:
ALTER DATABASE test8 CHARSET utf8mb4;
-
2、表的操作
2.1、建表规范
- 表名小写
- 不能以数字开头,不能使用保留字符
- 表名要见其名知其义
- 选择合适的数据类型及长度
- 每个列设置NOT NULL、DEFAULT属性,对于数字类数据默认使用“0”填充,对于字符类数据使用有效字符串填充
- 每个列设置注释
- 表必须设置存储引擎和字符集
- 主键列尽量是无关数字列,最好是自增长
- enum类型不要保存数字,只能是字符串类型
2.2、建表
-
列属性
PRIMARY KEY :主键约束,表中只能有一个,非空且唯一
NOT NULL :非空约束,不允许空值
UNIQUE KEY :唯一键约束,不允许重复值
DEFAULT :默认值,一般配合NOT NULL使用
UNSIGNED :无符号,一般配合数字列,非负数
AUTO_INCREMENT :自增
COMMENT :注释 -
语法
CREATE TABLE [[数据库.]表名] (
[列名] [列属性1 列属性2 ...],
[列名] [列属性1 列属性2 ...],
...
[列名] [列属性1 列属性2 ...]
)ENGINE [存储引擎] CHARSET [字符集] -
示例
CREATE TABLE stu( id INT PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT "学号", s_name VARCHAR(255) NOT NULL COMMENT "姓名", age TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT "年龄", sex ENUM('男','女','保密') NOT NULL DEFAULT '保密' COMMENT '性别', intime DATETIME NOT NULL DEFAULT NOW()) COMMENT '进入时间' )ENGINE INNODB CHARSET utf8mb4;
-
创建一个结构与现有表相同的表
- 语法
CREATE TABLE [新表] LIKE [源表]
-
示例
CREATE TABLE stu_copy LIKE stu;
2.3、删表
-
语法
drop TABLE [表名] -
示例
drop TABLE stu_copy;
2.4、改表
注意:在线修改表列时,会造成锁表
2.4.1、在所有列后面添加列
-
语法
ALTER TABLE [表名] ADD [列名] [列属性 列属性1 ...]
-
示例
ALTER TABLE stu ADD ph_num VARCHAR(15) NOT NULL COMMENT '手机号码';
2.4.2、在指定列后面添加列
-
语法
ALTER TABLE [表名] ADD [列名] [列属性 列属性1 ...] AFTER [列名]
-
示例
ALTER TABLE stu ADD address VARCHAR(255) NOT NULL COMMENT '住址' AFTER s_name;
2.4.5、在列最前面添加列
-
语法
ALTER TABLE [表名] ADD [列名] [列属性 列属性1 ...] FIRST
-
示例
ALTER TABLE stu ADD num VARCHAR(10) NOT NULL COMMENT '序号' FIRST;
2.4.6、删除指定列
注意:删除数据是直接物理删除整列数据,不可恢复
-
语法
ALTER TABLE [表名] DROP [列名]
-
示例
ALTER TABLE stu DROP num;
2.4.7、修改指定列的数据属性(不修改列名)
注意:修改列属性时,修改后的属性为最终属性,因此在修改属性时需要输入所有列属性
-
语法
ALTER TABLE [表名] MODIFY [列名] [列属性 列属性1 ...]
-
示例
ALTER TABLE stu MODIFY ph_num INT NOT NULL COMMENT '手机号码';
2.4.8、同时修改列名与列属性
-
语法
ALTER TABLE [表名] CHANGE [原列名] [新列名] [列属性 列属性1 ...]
-
示例
ALTER TABLE stu CHANGE sex gender CHAR(6) NOT NULL DEFAULT '保密' COMMENT '性别';
2.5、查看表结构
-
语法
DESC [表名]
-
示例
DESC student;