前言

针对数据表的操作语句叫做数据定义语言(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 <表名> [修改操作];
知识点
常用的修改表操作
  • 修改表名
  • 修改字段数据类型或字段名
  • 增加和删除字段
  • 修改字段的排列位置
  • adddropchangemodifyrename

修改表名

语法格式
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;