4.2 数据表操作
CREATE / ALTER / DROP 表:字段类型、主键、自增、默认值、非空约束。
本讲导览
核心内容
数据表操作
表结构只是表的基本结构,不包括表中数据
表指表结构和表中数据。
1、创建表
只是创建表结构
2、修改表
只是修改表结构
3、删除表
删除整个表,包括表结构和表中数据
📄 展开课件原文(第 1–1 页,共 1 页)
创建表
1、创建基本表
(1)预操作:
Use 软件4班; #切换数据库到“软件4班”
Show tables; #显示库内所有的表(2)创建表:
create table 学生表(学号 varchar(3) not null primary key,
姓名 varchar(4), 性别 varchar(1),
年龄 int, 生日 date, 成绩 float);(3)补充说明:
①对于是主键的字段,not null可以省略。
②如创建表时,忘记了主键,也可以创建后,修改表结构增加主键。
create table 学生表1(学号 varchar(3) not null,姓名 varchar(4), 性别 varchar(1),年龄 int, 生日 date, 成绩 float);若增加主键,相当于修改表结构:
ALTER TABLE 学生表1 ADD PRIMARY KEY (学号);③主键定义,也可以放在最后一个字段定义之后说明,如:
create table 学生表2 (学号 varchar(3), 姓名 varchar(4), 性别 varchar(1),年龄 int, 生日 date, 成绩 float, primary key (学号));④显示表的结构,语句为
show create table 学生表2;2、创建标识列id为主键的表
(1)创建学生表3
create table 学生表3(id int primary key auto_increment,
姓名 varchar(4), 性别 varchar(1));说明:目前,在MYSQL里,AUTO_INCREMENT,初始值为1,增量为1;在一个定表中只能有一个字段设置AUTO_INCREMENT,且为主键。
(后续版本可能会增加初始值和增量的变化)
(2)查看该表结构
(3)自己输入几行姓名、性别数据,观察id的变化。
3、创建带有默认值的表(default)
create table 学生表4(学号 varchar(3) primary key, 姓名 varchar(4),
性别 varchar(1) default '男',
性别,当没有输入时,系统自动赋给默认值‘男’
自己练习,输入数据,观察变化。
扩展说明:将性别的缺省值改为“女”,可以用改定义
ALTER TABLE 学生表4 ALTER 性别 SET DEFAULT ‘女’;4、MySQL支持的完整性约束
说明:mysql-8.0.15之前的版本不支持check约束(值的范围约束)
5、显示表的结构语句
(1)显示表结构的定义内容
show create table 表名;(2)以表格形式显示表的结构
describe 表名;或:explain 表名;
2-2 修改表
1、修改表的名字
Alter table 旧表名 rename 新表名;如:将“学生表”改名为“学生信息表”
Alter table 学生表 rename 学生信息表;用show tables;查看已修改否?
再将“学生信息表”改名为“学生表”
2、修改字段名和数据类型
用change
Alter table 表名 change 原字段名 新字段名 数据类型定义说明:
(1)如果只修改字段名,则数据类型定义处写原数据类型
如:Alter table 学生表 change 成绩 考试成绩 float;
(2)如果只修改数据类型,则数据类型定义处写新数据类型。
Alter table 表名 change 字段名 字段名 新数据类型(3)如果修改字段名的同时修改数据类型,则数据类型定义处写新数据类型。
如:Alter table 学生表 change 考试成绩 成绩 int;
SHOW CREATE table 学生表;自己试一试
3、只修改数据类型
除了用change外,还可以用modify
Alter table 表名 modify 字段名 数据类型定义只修改学生表的成绩为real
如:Alter table 学生表 change 成绩 成绩 real;
4、增加新的字段
Alter table 表名 add 字段名 数据类型如:给学生表增加“籍贯”字段
Alter table 学生表 add 籍贯 varchar(10);5、删除字段
Alter table 表名 drop 字段名如:删除学生表的“籍贯”字段
Alter table 学生表 drop 籍贯;6、删除主键
alter table 表名 drop primary key;如:删除学生表的主键
alter table 学生表 drop primary key;7、增加主键
(1)写法一:为表增加一个定义项
alter table 表名 add primary key (字段名);如:增加学生表的“学号”为主键
alter table 学生表 add primary key (学号);(2)写法二:修改表中主键字段的定义
alter table 表名 modify 主键字段 数据类型 primary key;或者:
Alter table表名 change 主键字段 主键字段 数据类型 primary key;如:修改学生表的“学号”为主键
alter table 学生表 modify 学号 varchar(3) primary key;
Alter table 学生表 change 学号 学号 varchar(3) primary key;
📄 展开课件原文(第 2–13 页,共 12 页)
删除表
Drop table 表名如:删除库中的“学生表3”
Drop table 学生表3;📄 展开课件原文(第 14–14 页,共 1 页)
小结
1、创建表,用create table命令
2、修改表,用alter table命令
3、删除表,用drop table命令
1、增加字段,用关键字add
如:Alter table 学生表 add 籍贯 varchar(10);2、修改字段名或数据类型,用change
3、只修改字段的数据类型,也可用modify
4、删除字段,用drop
📄 展开课件原文(第 15–15 页,共 1 页)
主键
1、建表时,直接定义主键。
(1)单字段主键可以把primary key直接写在主键字段之后。
(2) 如不写在字段定义之后,也可以将 primary key (字段名)单独放在最后一项。注意此时字段名要带括号。
如定义联合主键,必须单独放在最后一项,primary key (字段名1,字段名2)
2、建表后,增加主键定义。
alter table 表名 add primary key (字段名);3、共有三种类型的主键:
(1)单字段为主键
(2)多字段为主键,又称联合主键
(3)标识列作主键(要有关键字auto_increment)
如:id int primary key auto_increment,
📄 展开课件原文(第 16–16 页,共 1 页)
完整性约束
MYSQL目前有7种约束
1、非空约束: not null
2、主键约束: primary key
3、默认约束: default
4、唯一约束: unique
5、外键约束: foreign
6、自增约束: auto_increment
7、检查约束: check [MYSQL8.0.15以后的版本才支持]
📄 展开课件原文(第 17–17 页,共 1 页)
显示表
1、显示一个数据库内的所有表名
Show tables;2、显示某表的定义结构:
Show create table 表名;3、以网格显示表的结构
describe 表名;也可简写为:Desc 表名;或 explain 表名;(不可简写)
📄 展开课件原文(第 18–18 页,共 1 页)
综合练习1
📄 展开课件原文(第 19–19 页,共 1 页)
课件里的提醒 课件原文中的“说明 / 注意 / 出错”
- 说明:目前,在MYSQL里,AUTO_INCREMENT,初始值为1,增量为1;在一个定表中只能有一个字段设置AUTO_INCREMENT,且为主键。
- 说明:mysql-8.0.15之前的版本不支持check约束(值的范围约束)
本讲 SQL 速览 把课件里出现的语句集中起来,方便照着敲
Use 软件4班; #切换数据库到“软件4班”Show tables; #显示库内所有的表create table 学生表年龄 int, 生日 date, 成绩 float);create table 学生表1(学号 varchar(3) not null,姓名 varchar(4), 性别 varchar(1),年龄 int, 生日 date, 成绩 float);ALTER TABLE 学生表1 ADD PRIMARY KEY (学号);create table 学生表2 (学号 varchar(3), 姓名 varchar(4), 性别 varchar(1),年龄 int, 生日 date, 成绩 float, primary key (学号));show create table 学生表2;create table 学生表3姓名 varchar(4), 性别 varchar(1));create table 学生表4ALTER TABLE 学生表4 ALTER 性别 SET DEFAULT ‘女’;