数据表操作

4.2 数据表操作

CREATE / ALTER / DROP 表:字段类型、主键、自增、默认值、非空约束。

第4章 SQL 操作数据库SQL19 页课件8 个知识点

本讲导览

核心内容

第2节

数据表操作

表结构只是表的基本结构,不包括表中数据

表指表结构和表中数据。

1、创建表

只是创建表结构

2、修改表

只是修改表结构

3、删除表

删除整个表,包括表结构和表中数据

📄 展开课件原文(第 1–1 页,共 1 页)
第 1 页

第2节、数据表操作

表结构只是表的基本结构,不包括表中数据

表指表结构和表中数据。

1、创建表

只是创建表结构

2、修改表

只是修改表结构

3、删除表

删除整个表,包括表结构和表中数据

2-1

创建表

1、创建基本表

(1)预操作:

SQL
Use 软件4班; #切换数据库到“软件4班”
Show tables; #显示库内所有的表

(2)创建表:

SQL
create table 学生表

(学号 varchar(3) not null primary key,

姓名 varchar(4), 性别 varchar(1),

SQL
年龄 int, 生日 date, 成绩 float);

(3)补充说明:

①对于是主键的字段,not null可以省略。

②如创建表时,忘记了主键,也可以创建后,修改表结构增加主键。

SQL
create table 学生表1(学号 varchar(3) not null,姓名 varchar(4), 性别 varchar(1),年龄 int, 生日 date, 成绩 float);

若增加主键,相当于修改表结构:

SQL
ALTER TABLE 学生表1 ADD PRIMARY KEY (学号);

③主键定义,也可以放在最后一个字段定义之后说明,如:

SQL
create table 学生表2 (学号 varchar(3), 姓名 varchar(4), 性别 varchar(1),年龄 int, 生日 date, 成绩 float, primary key (学号));

④显示表的结构,语句为

SQL
show create table 学生表2;

2、创建标识列id为主键的表

(1)创建学生表3

SQL
create table 学生表3

(id int primary key auto_increment,

SQL
姓名 varchar(4), 性别 varchar(1));

说明:目前,在MYSQL里,AUTO_INCREMENT,初始值为1,增量为1;在一个定表中只能有一个字段设置AUTO_INCREMENT,且为主键。

(后续版本可能会增加初始值和增量的变化)

(2)查看该表结构

(3)自己输入几行姓名、性别数据,观察id的变化。

3、创建带有默认值的表(default)

SQL
create table 学生表4

(学号 varchar(3) primary key, 姓名 varchar(4),

性别 varchar(1) default '男',

性别,当没有输入时,系统自动赋给默认值‘男’

自己练习,输入数据,观察变化。

扩展说明:将性别的缺省值改为“女”,可以用改定义

SQL
ALTER TABLE 学生表4 ALTER 性别 SET DEFAULT ‘女’;

4、MySQL支持的完整性约束

说明:mysql-8.0.15之前的版本不支持check约束(值的范围约束)

5、显示表的结构语句

(1)显示表结构的定义内容

SQL
show create table 表名;

(2)以表格形式显示表的结构

SQL
describe 表名;

或:explain 表名;

2-2 修改表

1、修改表的名字

SQL
Alter table 旧表名 rename 新表名;

如:将“学生表”改名为“学生信息表”

SQL
Alter table 学生表 rename 学生信息表;

用show tables;查看已修改否?

再将“学生信息表”改名为“学生表”

2、修改字段名和数据类型

用change

SQL
Alter table 表名 change 原字段名 新字段名 数据类型定义

说明:

(1)如果只修改字段名,则数据类型定义处写原数据类型

如:Alter table 学生表 change 成绩 考试成绩 float;

(2)如果只修改数据类型,则数据类型定义处写新数据类型。

SQL
Alter table 表名 change 字段名 字段名 新数据类型

(3)如果修改字段名的同时修改数据类型,则数据类型定义处写新数据类型。

如:Alter table 学生表 change 考试成绩 成绩 int;

SQL
SHOW CREATE table 学生表;

自己试一试

3、只修改数据类型

除了用change外,还可以用modify

SQL
Alter table 表名 modify 字段名 数据类型定义

只修改学生表的成绩为real

如:Alter table 学生表 change 成绩 成绩 real;

4、增加新的字段

SQL
Alter table 表名 add 字段名 数据类型

如:给学生表增加“籍贯”字段

SQL
Alter table 学生表 add 籍贯 varchar(10);

5、删除字段

SQL
Alter table 表名 drop 字段名

如:删除学生表的“籍贯”字段

SQL
Alter table 学生表 drop 籍贯;

6、删除主键

SQL
alter table 表名 drop primary key;

如:删除学生表的主键

SQL
alter table 学生表 drop primary key;

7、增加主键

(1)写法一:为表增加一个定义项

SQL
alter table 表名 add primary key (字段名);

如:增加学生表的“学号”为主键

SQL
alter table 学生表 add primary key (学号);

(2)写法二:修改表中主键字段的定义

SQL
alter table 表名 modify 主键字段 数据类型 primary key;

或者:

SQL
Alter table表名 change 主键字段 主键字段 数据类型 primary key;

如:修改学生表的“学号”为主键

SQL
alter table 学生表 modify 学号 varchar(3) primary key;
Alter table 学生表 change 学号 学号 varchar(3) primary key;
第6页 · 课件原图
第6页 · 课件原图
📄 展开课件原文(第 2–13 页,共 12 页)
第 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;

2-3

删除表

SQL
Drop table 表名

如:删除库中的“学生表3”

SQL
Drop table 学生表3;
📄 展开课件原文(第 14–14 页,共 1 页)
第 14 页

2-3、删除表

Drop table 表名

如:删除库中的“学生表3”

Drop table 学生表3;

2-4

小结

1、创建表,用create table命令

2、修改表,用alter table命令

3、删除表,用drop table命令

1、增加字段,用关键字add

SQL
如:Alter table 学生表 add 籍贯 varchar(10);

2、修改字段名或数据类型,用change

3、只修改字段的数据类型,也可用modify

4、删除字段,用drop

📄 展开课件原文(第 15–15 页,共 1 页)
第 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

三

主键

1、建表时,直接定义主键。

(1)单字段主键可以把primary key直接写在主键字段之后。

(2) 如不写在字段定义之后,也可以将 primary key (字段名)单独放在最后一项。注意此时字段名要带括号。

如定义联合主键,必须单独放在最后一项,primary key (字段名1,字段名2)

2、建表后,增加主键定义。

SQL
alter table 表名 add primary key (字段名);

3、共有三种类型的主键:

(1)单字段为主键

(2)多字段为主键,又称联合主键

(3)标识列作主键(要有关键字auto_increment)

如:id int primary key auto_increment,

📄 展开课件原文(第 16–16 页,共 1 页)
第 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,

四

完整性约束

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 页)
第 17 页

四、完整性约束

MYSQL目前有7种约束

1、非空约束: not null

2、主键约束: primary key

3、默认约束: default

4、唯一约束: unique

5、外键约束: foreign

6、自增约束: auto_increment

7、检查约束: check [MYSQL8.0.15以后的版本才支持]

五

显示表

1、显示一个数据库内的所有表名

SQL
Show tables;

2、显示某表的定义结构:

SQL
Show create table 表名;

3、以网格显示表的结构

SQL
describe 表名;也可简写为:Desc 表名;

或 explain 表名;(不可简写)

📄 展开课件原文(第 18–18 页,共 1 页)
第 18 页

五、显示表

1、显示一个数据库内的所有表名

Show tables;

2、显示某表的定义结构:

Show create table 表名;

3、以网格显示表的结构

describe 表名;也可简写为:Desc 表名;

或 explain 表名;(不可简写)

2-5

综合练习1

📄 展开课件原文(第 19–19 页,共 1 页)
第 19 页

2-5、综合练习1

课件里的提醒 课件原文中的“说明 / 注意 / 出错”

  • 说明:目前,在MYSQL里,AUTO_INCREMENT,初始值为1,增量为1;在一个定表中只能有一个字段设置AUTO_INCREMENT,且为主键。
  • 说明:mysql-8.0.15之前的版本不支持check约束(值的范围约束)

本讲 SQL 速览 把课件里出现的语句集中起来,方便照着敲

SQL
Use 软件4班; #切换数据库到“软件4班”
SQL
Show tables; #显示库内所有的表
SQL
create table 学生表
SQL
年龄 int, 生日 date, 成绩 float);
SQL
create table 学生表1(学号 varchar(3) not null,姓名 varchar(4), 性别 varchar(1),年龄 int, 生日 date, 成绩 float);
SQL
ALTER TABLE 学生表1 ADD PRIMARY KEY (学号);
SQL
create table 学生表2 (学号 varchar(3), 姓名 varchar(4), 性别 varchar(1),年龄 int, 生日 date, 成绩 float, primary key (学号));
SQL
show create table 学生表2;
SQL
create table 学生表3
SQL
姓名 varchar(4), 性别 varchar(1));
SQL
create table 学生表4
SQL
ALTER TABLE 学生表4 ALTER 性别 SET DEFAULT ‘女’;