本文目录:
增加数据
insert [into] 表名[(可选字段名)] values(一堆值1),(一堆值2),.....
into 可以省略
表名后的字段可以选
如果写了 后面的values中的值必须与表名后的字段一一对应
如果没写 后面的values中的值必须与表的所有字段一一对应
values后面可以给多组值 用逗号隔开
删除数据
delete from 表名[where 条件] 条件不写 是删除所有记录 是一行一行删除 注意自增id 不会归零 truncate 重建表 先记录表结构 删除整个表再重新建出来表 自增id 会归零
二、单表查询
不带关键字的查询 select {1.*|2.字段名|3.运算|4.聚合函数} from 表名 [where 条件] 1.* 表示查询所有字段 2.可以手动要查询的字段 3.字段的值可以进行加减乘除运算 4.聚合函数,用于统计 where 是可选的
数据准备1:
create table stu(id int primary key auto_increment,name
char(10),math float,english float);
insert into stu values(null,"赵云",90,30);
insert into stu values(null,"小乔",90,60);
insert into stu values(null,"小乔",90,60);
insert into stu values(null,"大乔",10,70);
insert into stu values(null,"李清照",100,100);
insert into stu values(null,"铁拐李",20,55);
insert into stu values(null,"小李子",20,55);
create table stu(id int primary key auto_increment,name
char(10),math float,english float);
insert into stu values(null,"赵云",90,30);
insert into stu values(null,"小乔",90,60);
insert into stu values(null,"小乔",90,60);
insert into stu values(null,"大乔",10,70);
insert into stu values(null,"李清照",100,100);
insert into stu values(null,"铁拐李",20,55);
insert into stu values(null,"小李子",20,55);
关键字的作用 distinct 去除重复数据 所有数据全都重复才算重复 where 在逐行读取数据时的一个判断条件 group by 对数据分组 having 对分组后的数据进行过滤 order by 对结果排序
by 后面可以有多个排序依据
limit 指定获取数据条数
limit 限制显示条数
limit a,b
limit 1,5
从1开始 到5结束 错误
从1开始 不包含1 取5条
limit 1,5
从1开始 到5结束 错误
从1开始 不包含1 取5条
分页查询
每页显示3条 共有10条数据
if 10 % 3 == 0:
10 / 3
else:
10/3 +1
总页数4
每页显示3条 共有10条数据
if 10 % 3 == 0:
10 / 3
else:
10/3 +1
总页数4
第一页
select *from emp limit(0,3)
第二页
select *from emp limit(3,3)
第二页
select *from emp limit(6,3)
select *from emp limit(0,3)
第二页
select *from emp limit(3,3)
第二页
select *from emp limit(6,3)
起始位置的算法
页数 - 1 * 条数
1 - 1 = 0 * 3 = 0
2 - 1 = 1 * 3 = 3
页数 - 1 * 条数
1 - 1 = 0 * 3 = 0
2 - 1 = 1 * 3 = 3
栗子1:查询去重后所有学生的名字
栗子2:获取大乔的数学与英语的成绩
栗子3:对全班数学分数做升序排列(order by后面不加默认升序)
栗子4:对全班英语分数做降序排列(升序asc,降序desc)
栗子5:获取英语成绩为55分的第一条记录
完整的select 语句 语法 ***** select [distinct] * from 表名 [where group by having order by limit ] 注意 在书写时 必须按照这个顺序来写 但是顺写不代表执行顺序 数据库伪代码 def from(): 打开文件 def where(): 对读取的数据进行过滤 def group_by(): 对数据分组 def having(): 对分组后的数据进行过滤 def distinct(): 去除重复数据 def order(): 排序 def limit(): 指定获取条数 select 语句的执行顺序 ***** def select(sql): data = from() data = where(data) data = group by(data) data = having(data) data = distinct(data) data = orderby(data) data = limit(data) return data;
concat()函数用于拼接字符串 select ( case when english + math > 120 then concat(name," nice") when english + math <= 130 then concat(name," shit") end ) ,english,math from stu; *完全不重要