===== 第 1 页 ===== 第2节、数据表操作 表结构只是表的基本结构,不包括表中数据 表指表结构和表中数据。 1、创建表 只是创建表结构 2、修改表 只是修改表结构 3、删除表 删除整个表,包括表结构和表中数据 ===== 第 2 页 ===== 2-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 页 ===== (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; ===== 第 4 页 ===== 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的变化。 ===== 第 5 页 ===== 3、创建带有默认值的表(default) create table 学生表4 (学号 varchar(3) primary key, 姓名 varchar(4), 性别 varchar(1) default '男', 年龄 int, 生日 date, 成绩 float); 性别,当没有输入时,系统自动赋给默认值‘男’ 自己练习,输入数据,观察变化。 扩展说明:将性别的缺省值改为“女”,可以用改定义 ALTER TABLE 学生表4 ALTER 性别 SET DEFAULT ‘女’; ===== 第 6 页 ===== 4、MySQL支持的完整性约束 说明:mysql-8.0.15之前的版本不支持check约束(值的范围约束) ===== 第 7 页 ===== 5、显示表的结构语句 (1)显示表结构的定义内容 show create table 表名; (2)以表格形式显示表的结构 describe 表名; 或:explain 表名; ===== 第 8 页 ===== 2-2 修改表 1、修改表的名字 Alter table 旧表名 rename 新表名; 如:将“学生表”改名为“学生信息表” Alter table 学生表 rename 学生信息表; 用show tables;查看已修改否? 再将“学生信息表”改名为“学生表” 用show tables;查看已修改否? ===== 第 9 页 ===== 2、修改字段名和数据类型 用change Alter table 表名 change 原字段名 新字段名 数据类型定义 说明: (1)如果只修改字段名,则数据类型定义处写原数据类型 如:Alter table 学生表 change 成绩 考试成绩 float; (2)如果只修改数据类型,则数据类型定义处写新数据类型。 Alter table 表名 change 字段名 字段名 新数据类型 (3)如果修改字段名的同时修改数据类型,则数据类型定义处写新数据类型。 如:Alter table 学生表 change 考试成绩 成绩 int; SHOW CREATE table 学生表; 自己试一试 ===== 第 10 页 ===== 3、只修改数据类型 除了用change外,还可以用modify Alter table 表名 modify 字段名 数据类型定义 只修改学生表的成绩为real 如:Alter table 学生表 change 成绩 成绩 real; SHOW CREATE table 学生表; ===== 第 11 页 ===== 4、增加新的字段 Alter table 表名 add 字段名 数据类型 如:给学生表增加“籍贯”字段 Alter table 学生表 add 籍贯 varchar(10); 5、删除字段 Alter table 表名 drop 字段名 如:删除学生表的“籍贯”字段 Alter table 学生表 drop 籍贯; ===== 第 12 页 ===== 6、删除主键 alter table 表名 drop primary key; 如:删除学生表的主键 alter table 学生表 drop primary key; SHOW CREATE table 学生表; ===== 第 13 页 ===== 7、增加主键 (1)写法一:为表增加一个定义项 alter table 表名 add primary key (字段名); 如:增加学生表的“学号”为主键 alter table 学生表 add primary key (学号); SHOW CREATE table 学生表; (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; ===== 第 14 页 ===== 2-3、删除表 Drop table 表名 如:删除库中的“学生表3” Drop table 学生表3; ===== 第 15 页 ===== 2-4、小结 一、基本命令 1、创建表,用create table命令 2、修改表,用alter table命令 3、删除表,用drop table命令 二、修改表(alter table)命令中 1、增加字段,用关键字add 如:Alter table 学生表 add 籍贯 varchar(10); 2、修改字段名或数据类型,用change 3、只修改字段的数据类型,也可用modify 4、删除字段,用drop ===== 第 16 页 ===== 三、主键 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, ===== 第 17 页 ===== 四、完整性约束 MYSQL目前有7种约束 1、非空约束: not null 2、主键约束: primary key 3、默认约束: default 4、唯一约束: unique 5、外键约束: foreign 6、自增约束: auto_increment 7、检查约束: check [MYSQL8.0.15以后的版本才支持] ===== 第 18 页 ===== 五、显示表 1、显示一个数据库内的所有表名 Show tables; 2、显示某表的定义结构: Show create table 表名; 3、以网格显示表的结构 describe 表名;也可简写为:Desc 表名; 或 explain 表名;(不可简写) ===== 第 19 页 ===== 2-5、综合练习1