mysql查询前5000条记录分页显⽰_数据库完整的查询语句,
查询顺序及分页显⽰功能...
基本的查询语句select (* | 字段名 | 四则运算 | 聚合函数) from 表名称;insert语句字段顺序
取别名 当字段名显⽰较长时 可以添加别名select 字段名 as 别名 from 表名称;as可以省略select 字段名 别名 from 表名称;
计算每个⼈的总分计算每个⼈的各科⽬平均分
增删改查增insert into 表名称(字段,...) values(值,....),(值,....);values中的值的个数 和类型必须与 前⽅声明的字段⼀致insert into 表名称 values(值,....);values中的值的个数 和类型必须与表的字段完全⼀致
into 可以省略
stu name char(20) default "张三",age int
#insert into table_name values(20),(30),(40);
# 错误name虽然有默认值 但是在这种语法下也必须赋值
delete from table_name where 条件;
delete from table_name;
truncate table table_name;
update table_name set 字段名称 = 新的值 where 条件;
update table_name set 字段名称 = 新的值[,字段2 = 值2,...];
select语句的完整语法:
select [distinct] (*|字段|四则运算|聚合函数) from 表名
where 查询条件
group by 分组
having  分组后的过滤
order by 排序
limit    限制获取的条数
必须的 select 字段 from 表名
distinct 去除重复
强调: 书写顺序必须按照上⾯的来
执⾏顺序与书写顺序不⼀致
# 伪代码 演⽰执⾏顺序
def select():
from()
where()
group by()
having()
order by()
limit()
distinct()
# 从⽂件读取数据
def from():
with open("表名称")
pass
# 过滤从⽂件读取的数据def where():
pass
# 分组
def group by()
pass
# 对分组后的数据 进⾏过滤def having():
pass
# 排序
def order by():
pass
# 控制获取的条数
def limit():
pass
# 去除重复
def distinct():
pass
where ⼦查询= > < >= <= !=(<>)in between and like and or not
select *from stu where not(math != 60);#in(1,2,3,4,5)#math 60 80 90select *from stu where math in(60,80,90);select
*from stu where math = 60 or math = 80 or math = 90;
#英语及格并且 数学也及格select *from stu where math >= 60 and english >= 60;
#数学 在60-80之间select *from stu where math between 60 and 90;select *from stu where math >= 60 and math <= 90;
#like 长得像 模糊匹配#% 任意个任意字符#_ ⼀个任意字符
select *from stu where name like "李%"; 所有姓李的select *from stu where name like "%李%"; 名字带有李的select *from stu where name like "%李"; 最后⼀个字是李的
group by 分组查询
什么是分组把⼀个整体 按照某个标识分成不同的部分
分组⽬的通常分组都为了要统计数据
语法select *from emp group by 某个字段;
强调:⽤于分组的字段 通常应该是重复度⾼的 例如 部门 性别⽽不应该
语法要求:select 后⾯的字段 必须是出现在group by后⾯的字段
⼀旦分组后 组内的详细数据就被隐藏了 ⽆法直接查看但是要知道 分组不是为了查看 ⽽是为了统计分组后就只能看到分组的那个字段
聚合函数(统计函数)给他⼀堆数据 它统计后 返回⼀个数据(1,2,3,4,5) sum = 15
sum 求和
avg 平均数
max 最⼤值
min 最⼩值
count 计数
查询每个部门有哪些⼈
group_concat() # 不常⽤select dept,group_concat(name) from emp group by dept;
可以有多个分组依据 ⽐如先按部门 再按⼯作岗位
select dept,job,avg(salary) from emp group by dept,job;
注意注意: 聚合函数不能⽤在where后⾯
如果要对分组数据进⾏过滤 必须使⽤having因为 where在执⾏时,数据还没有读完 ,必须等到数据读完之后再进⾏过滤,where 与 having的区别就在于 执⾏时机不同
select dept,group_concat(name),count() from emp group by dept having count() < 3;
group by where 后不能有聚合函数select 后⾯的字段 必须出现在group by的后⾯通常聚合函数会与group by 连⽤如果要对分组数据进⾏过滤 必须使⽤having having与where 都是过滤 但是执⾏时机不同
伪代码:from 从⽂件读数据 到内存datas = []with open("xxxx") as f:while True:data = f.read()if avg(salary) > 5000;# 数据读取没有完成 不可能统计出结果datas.append(data)
order by排序 默认为升序select *from emp order by salary;⽤desc 来指定为降序select *from emp order by salary desc;可以义多个字段作为排序依据,并且可以单独设置顺序select *from emp order by salary desc,id; # 先按照⼯资降序 如果⼯资相同则按照id 升序
limit 控制要查询的记录数量select *from emp limit a,b;
a 表⽰起始位置
b 要获取的条数如果只有a 则表⽰ 获取的条数select *from emp limit 0,3;
分页显⽰
总共为10页 每⼀页显⽰ 3条 页数 10 / 3 由余数则 + 1 = 4 page = 1
select *from emp limit 0,3
page = 2
(page - 1) * 3
select *from emp limit 3,3
page = 3(page - 1) * 3select *from emp limit 6,3
起始位置的计算公式limit (页数-1) * 每页的条数,每页条数

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。