前言
针对数据表的操作语句叫做数据定义语言(DDL)
数据表有哪些操作
- 创建数据表
- 查看表结构
- 查看数据表的创建语句
- 复制数据表
- 修改数据表
- 删除数据表
创建数据表
语法格式
CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];
知识点
- 表名:两种写法,可以直接写数据表的名字tb_name,也可以db_name.tb_name,先指定数据库在指定数据表名;
- 表定义选项:一般都是列名、列定义、默认值、约束、索引组成
实际例子
CREATE TABLE yytest(
id int(10) NOT NULL UNIQUE PRIMARY KEY,
uname VARCHAR(20) NOT NULL,
sex VARCHAR(4),
birth YEAR,
department VARCHAR(20),
address VARCHAR (50),
yypolo VARCHAR (20)
);
#指定数据库,创建数据表
CREATE TABLE test.yytest(
id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT,
stu_id INT (10) NOT NULL,
c_name VARCHAR (20),
istester VARCHAR(50),
grade INT(10)
);
查看表结构
desc yytest.yytest;
知识点
- Null:表示该字段是否可以存储Null值
- Key:表示该字段是否已编制索引。PRI 表示主键,UNI表示UNIQUE 索引,MUL表示某个指定给定值允许出现多次
- Default:表示该字段是否有默认值,如果有,值是多少
- Extra:表示该字段的附加信息,如AUTO_INCREMENT等
查看数据表的创建语句
show create table yytest;
知识点
不仅可以查看创建表时的详细语句,而且可以查看存储引擎和字符编码
#仅复制表结构
CREATE TABLE person_1 LIKE person;
#复制表结构和数据
CREATE TABLE person_2 AS SELECT * FROM person;
#仅复制表的指定字段结构
CREATE TABLE yytest_4 AS SELECT id,c_name,grade FROM yytest WHERE 1<>1;
#复制表的指定字段结构和数据
CREATE TABLE yytest_5 AS SELECT id,c_name,grade FROM yytest;
#查看表创建语句:没有包含主键和自增
SHOW CREATE TABLE yytest_5;
知识点
- 仅复制全部字段的结构直接加 like
- 复制表不包含主键,索引,自增等
修改数据表
语法格式
ALTER TABLE <表名> [修改操作];
知识点
常用的修改表操作
- 修改表名
- 修改字段数据类型或字段名
- 增加和删除字段
- 修改字段的排列位置
- add、drop、change、modify、rename
修改表名
语法格式
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
注意
- [to] 加不加都行,不影响结果
- 修改表名不影响表结构
实际例子
ALTER TABLE yytest RENAME TO yytest2;
ALTER TABLE yytest2 RENAME yytest22;
修改字段列顺序
语法格式
ALTER TABLE <表名> MODIFY <字段名> <数据类型> [FIRST AFTER 已存在的字段名];
实际例子
#将birth字段放在第一列
ALTER TABLE yytest22 MODIFY birth year(4) FIRST;
#将birth字段放在sex之后
ALTER TABLE yytest22 MODIFY birth year(4) AFTER sex;
修改字段数据类型
语法格式
ALTER TABLE <表名> MODIFY <字段名> <数据类型>;
实际例子
ALTER TABLE yytest22 MODIFY sex int(3);
修改字段名字
语法格式
ALTER TABLE <表名> CHANGE <旧字段> <新字段> <数据类型>;
实际例子
ALTER TABLE yytest22 CHANGE sex gender VARCHAR(20);
知识点
change 不仅可以改字段名,也可以改字段数据类型
添加字段
语法格式
ALTER TABLE yytest22 add <字段名> <数据类型> [约束条件] [FIRST | AFTER 已经存在的字段名];
实际例子
#添加字段,默认加到最后一列
ALTER TABLE yytest22 ADD phone VARCHAR(20);
#添加字段到首位
ALTER TABLE yytest22 ADD phone VARCHAR(20) NOT NULL DEFAULT 2 FIRST;
#添加字段到某个字段后面
ALTER TABLE yytest22 ADD phone VARCHAR(20) AFTER gender;
删除字段
ALTER TABLE <表名> DROP <字段名>;
实际例子
ALTER TABLE yytest22 DROP phone;
删除数据表
语法格式
DROP TABLE [IF EXISTS] 表名1 [ ,表名2, 表名3 ...]
实际栗子
DROP TABLE IF EXISTS yytest21,yytest22;