表格字段设置如图
语句:
1.输出
1.输出name和age列
sql
SELECT name,age from student
1.2.全部输出
sql
select * from student
2.where子语句
1.运算符:
=等于
>大于
>=大于等于
<小于
<=小于等于
!= <>不等于
sql
select * from student where age!=24
sql
select * from student where age<24
2.逻辑运算符:
and 并且
or 或者
not 取非 主要用在is 或in
sql
select * from student where age>=24 and sex="女" and name="admin"
sql
select * from student where age>=24 or sex="男"
sql
select * from student where age>=20 and age<=24
3.范围
between ..and ..范围查询,在两个值之间
in 范围查询 包含
sql
select * from student where id between 3 and 5
sql
select * from student where id not in(1,4,5)
4.空
is null 为null
sql
select * from student where age is not null
模糊查询 like 为模糊查询 需要配合占位符一起使用 _代表一位字符 %代表任意位字符
3.分页查询
1.语句
limit a,b ----a表示起始的索引值 b表示查询的个数
limit b offset a
sql
select * from student limit 0,5
eg.
一页3个 pagesize
$1.第一页 page
sql
select * from student limit 0,3
$2. 第二页
sql
select * from student limit 3,3
$3. 第三页
sql
select * from student limit 6,3
$4.第四页
sql
select * from student limit 9,3
2.总结 :
select * from student limit (page-1)*pagesize,pagesize
3.位置:
limit 子语句放在最后位置
sql
select * from student where sex="男" limit 0,3
4.排序子语句
1.语句
order by 列名 desc降序排列 || asc升序
sql
select * from student ORDER BY age desc
2.位置:
排序子语句的相对位置
在where子语句之后 在limit子语句之前
sql
select * from student where sex="女" order by class_num desc limit 0,3
5.分组函数和聚合函数
1.聚合函数
-- sum()求和
-- min()取最小值
-- max() 取最大值
-- avg()取平均值
-- count()取得的记录数量 count(*)表示取得当前查询表的所有记录数
count(字段名称)不会统计为null的记录
sql
select count(age) from student
sql
select count(*) from student
2.分组函数
GROUP BY 字段名称 分完组之后做查找用having
sql
select max(age),class_num from student GROUP BY class_num
sql
select max(age),class_num from student GROUP BY class_num having class_num=2
2.多表查询
1.关系
1.1 一对一
$ 1.合并成一张表 效果最好
$ 2. 在其中一张表加入外键
&&or
$3. 单独创建一张表存关系
1.2 一对多
学生对班级
$1. 合成一张表
缺点:有多少学生这些信息得存多少遍 数据冗余
$2. 在多方加入外键 效果最好
修改班级等方便, &&查看班级多少人,只需看cid有多少个
②在1方加入外键 数据冗余
$3. 单独创建一张表存关系
1.3 多对多
学生对课程
课程对学生
$1. 合并成一张表----->重复
$2. 加外键
在谁方谁冗余
①学生方
②课程方
$3. 单独创建一张表存关系
1.4 结论:
2.查询
$1. 建立班级表和学生表
$2. 添加外键
$3. 填入数据
$4. 查询
sql
select * from 班级表,学生表 where 学生表.cid=班级表.id
-- 连表查询 join on
-- 内连接
-- 外连接 左外连接和右外连接
把where的地方换成on
sql
select * from 班级表 join 学生表 on 学生表.cid=班级表.id
#左连接 (公共的部分加上左边空的<独有的>)
sql
select * from 班级表 left join 学生表 on 学生表.cid=班级表.id
#右连接(公共的部分加上右边空的<独有的>)
sql
select * from 班级表 right join 学生表 on 学生表.cid=班级表.id