七、数据表操作
目标
会使用 SQL 语句实现数据表的新增,查询,删除操作
7.1、创建表
◆ 语法格式
-- 创建表
create table 表名(
字段名 类型 约束,
字段名 类型 约束
...
)
-- 查看创建的表
show create table 表名;
◆ 举例说明
例:创建学生表,字段要求如下:
姓名(长度为 10)
create table students(
name varchar(10)
);
例:创建学生表,字段要求如下: 姓名(长度为 10),年龄,身高(保留小数点 2 位)
create table students(
id int unsigned primary key auto_increment,
-- auto_increment 自动增长
-- unsigned 无符号
-- primary key 主键
name varchar(20),
age int usigned,
height decimal(5,2)
);
扩展:判断表是否存在,若存在自动删除再创建
-- unsigned 无符号
-- primary key 主键
-- auto_increment 自动增长
drop table if exists students;
create table students(
id int unsigned primary key auto_increment,
name varchar(10),
age int unsigned,
height decimal(5,2)
);
7.2、查看表结构
◆ 语法格式
desc 表名;
◆ 举例说明
desc students;
7.3、删除表
◆ 语法格式
格式一:drop table 表名;
格式二:drop table if exists 表名;
◆ 举例说明
drop table students;
drop table if exists students;
八、数据操作-增删改
目标
会使用 SQL 语句实现数据的新增、修改、删除操作
8.1、添加数据
📌 添加一行数据
格式一: 所有字段设置值,值的顺序与表中的字段顺序对应
-
说明:主键列是自动增长,插入时需要占位,通常使用 0 或者 default 或者 null 来占位,后以实际 数据为准
insert into 表名 values(...)
例:插入一个学生,设置所有字段的信息
insert into students values(0,'亚瑟',22,177.56);
格式二: 部分字段设置值,值的顺序与给出的字段顺序对应
insert into 表名(字段一,...) values(值 1,...);
例:插入一个学生,只设置姓名,身高
insert into students(name,height) values('turrander',1.68);
📌 添加多行数据
方式一:写多条 insert 语句,语句之间使用英文分号隔开
insert into students(name) values('萧炎');
insert into students(name) values('萧熏儿');
insert into students values(0,'美杜莎',27,168);
方式二:写入一条 insert 语句,设置多条数据,数据之间用英文逗号隔开
-- 格式一:insert into 表名 values(...)(...)(...)...
-- 例:插入多个学生,设置所有的字段信息
insert into students values(0,'亚瑟',23,175.56),(0,'taozi',27,150.00);
-- 格式二:insert into 表名(列 1,...) values(值 1,...)(值 1,...)...
-- 例:插入多个学生,只设置姓名
insert into students values(0,'亚瑟',23,175.56),(0,'taozi',27,150.00);
insert into students(name,height) values('zhangsna',1.1),('lisi',1.2);
insert into students(name) values('zhangsna'),('lisi'),('wangwu');
8.2、修改字段值
◆ 语法格式
update 表名 列 1=值 1,列 2=值 2...where 条件
注意:where 条件不能省略,否则会修改整列数据
◆ 举例说明
例:修改 ID 位 5 的学生数据,姓名修改位 狄仁杰,年龄修改为 20
update students set name='狄仁杰',age=20 where id=5;
8.3、删除表记录
◆ 语法格式
格式一:delete from 表名 where 条件;
◆ 举例说明
例:删除 ID 为 6 的学生数据
delete from students where id=6;
8.4、删除扩展
8.4.1、逻辑删除
对于重要的数据,不能轻易执行 delete 语句进行删除。因为一旦删除,数据无法恢复,所以有时间可以进行逻辑删除
说明:所谓逻辑删除,就是通过某一特定字段的特定值表示数据是删除或未删除
- 给表添加字段,代表数据是否删除,一般起名为 isdelete,0 代表未删除,1 代表删除,默认值为 0
- 当要删除某条数据时,只需要设置这条数据的 isdelete 字段为 1
- 以后在查数据时,只查询 isdelete 为 0 的数据
# 例:
-- 1、 给学生表添加字段(isdelete),默认值为 0,
-- 如果表中已经有数据,需要把所有数据的 isdelete 字段更改为 0
alter table students add isdelete int unsigned default(0);
update students set isdelete=0;
-- 2、删除id为1的学生
updalete student set isdelete=1 where id=1;
-- 3、 查询未删除数据
selete * from students where isdelete=0;
8.4.2、删除表数据,保留表结构
◆ truncate table students
# 例: 删除学生表的所有数据
truncat table students;
◆ drop table 表名(删除表,所有数据和表结构都删除)
# 例: 删除学生表
drop table students;
8.4.3、truncate、delete、drop 的区别
- delete 删除数据时,即使删除所有数据,其中自增长字段不会从 1 开始
- truncate 删除数据时,其中的自增长字恢复从 1 开始
- drop 时删除表,所有数据和表结构都删掉