恩 ,在数据库中一直都是认为查询是最难的。因为种类多,花样也太多了,要查哭。但还是学到了很多东西啊,在以后的开发中一定可以用上的,回想起我们实践周老师给讲的。
一个模块 增删改查 至少8个功能
1.查询全部
2.按条件查询
3.按主键查询
4.按分页查询
5.增加一个
6.批量增加
8.按主键修改主要字段
9.特殊修改(修改一个字段就需要一个页面,例如修改密码 找回密码 审核)
10.按主键删除一个
11.批量删除
查询中要用到的:
字句: where/having /limit(o,l) / ORDER BY(desc,asc) / GROUP BY /
方式:精确查询、模糊查询
类型:联合查询 / 子查询 / 连接查询 针对多张表所做的查询
联合查询: 数据容易造成冗余,影响查询速度。
0.基本查询
select sid,sname,sage,ssex,szhuanye from student
select * from student 这两句话的作用是等效的,你可以把所有的字段全部列出来,也可以写星星(*)代表所有的字段。在实际应用中这种查询是存在的,比如查看所用用户信息。
1. WHERE条件子句
# = !=(<>) > < >= <= is is not
# and or not
# between...and (包含边界)
# in(value,value,value)
只能说where是非常强大的,基本上要添加条件都能搭得上这个关键字。where一下就很舒服~如果是多个条件用and关键字连接
利用了where很容易见名知意,翻译起来比较顺畅我觉得。
select sid,sname,sage,ssex,szhuanye from student where sid=100012
select sid,sname,sage from student where sage=19
select sid,sname,sage,ssex,szhuanye from student where sage>=18 and sage<=20
select * from student where sage not between 18 and 20
select * from student where sage=18 or sage=20 or sage=25
select * from student where sage in(18,20,25)
# 起别名: as
select sage as 新年龄 from student where sid=100000
# 把查询结果看做临时的虚拟表
select uid,username as '用户名' from users
查询结果只能看做"虚拟表" : 具有表的形式,但没有物理存在
#在查询中使用聚合函数 count sum avg min max
聚合函数
统计
select count(uid) as '用户总数' from users
select count(uid) from users where age>30
求和
select SUM(age) as '年龄之和' from users
求平均值
select avg(age) as '平均年龄' from users
最大值和最小值
select min(age) as '最小年龄' from users;
select max(age) as '最大年龄' from users
# where中使用模糊查询 LIKE
# 通配符: %表示任意数量的任意字符 _表示一个单位的任意字符,我觉得模糊查询是第二简单的,哈哈哈。只要按照语法匹配一下,他叫什么,姓什么,记清楚%和_的含义,就很容易写出满足条件的sql语句。
名字中带有"静"
select * from users where username LIKE '%静%'
姓张的人有谁
select * from users where username LIKE '张%'
名字是两个字的人有哪些
select * from users where username LIKE '__'
2.LIMIT 限定(用于实现分页)
limit offset,length
offset: 起始位置, 从0开始
length:长度
select * from users LIMIT 0,3
select * from users LIMIT 5,3
规定每页显示3条
第1页:
select * from users LIMIT 0,3
第2页:
select * from users LIMIT 3,3
页数: pageNumber
每页记录数: pageSize
根据变量,任意页数/任意记录数
select * from users LIMIT (pageNumber-1)*pageSize,pageSize
3.order by 排序
asc 升序 默认
desc 降序
select * from users ORDER BY age asc
select * from users ORDER BY age desc
4.group by 分组
select count(uid) from users where address='桐梓林'
select count(uid) from users where address='九眼桥'
select count(uid),address from users GROUP BY address
5.having子句
#group by带有条件:
# 如果和字段有关的条件使用where,且where放在group by前边
# 如果和查询结果有关的条件使用having,且having放在group by的后边
--------------------------------
6. 联合查询 多张表针对指定的字段全查询过程(数量:笛卡尔积)
A表 B表 通过A和B之间的字段的联系,建立对等关系
--------------------------------
7. 子查询,方式一,where型子查询
# 查询所有年龄比平均年龄小的同学信息