Navicat中一些查找操作 笔记07
一、单表查询
1.查找所有(*)
slect * from st01 【注:以下操作代码中的st01是表格名字】
2.where子语句中的一些运算符
-- =等于
-- >大于
-- >=大于等于
-- <小于
-- <=小于等于
-- !=不等于
select * from st01 where age=21
select * from st01 where age>18
select * from st01 where age>=20
3.逻辑运算符
-- and与
-- or 或
-- not非(主要用在in和is中使用)
select * from st01 where age>10 and age<21
select * from st01 where age<15 or age>20
4.范围查询
-- between...and... 介于范围之内
-- in 包含
-- not in 不包含
select * from st01 where id in(2,6,7)
-- is null 判空
-- is not null判断非空
5.模糊查询
-- like为模糊查询,需要配合占位符一起使用 _代表一位字符 %代表任意位字符
select * from st01 where name like "%t%"
6.分页查询(限制查询)
-- limit a,b a表示开始的索引值,b表示查询的个数
select * from st01 limit 4,10
-- 一页3个 pagesize
-- 第一页 page
select * from st01 limit 0,3
-- 第二页
select * from st01 limit 3,3
-- ......
select * from st01 limit (page-1)*pagesize,pagesize
【limit 子语句放到最后位置】
select * from st01 where sex="女" limit 0,2
-- 排序(where子语句之后,limit子语句之前)
-- order by 列名 desc降序 |asc升序
select * from st01 order by age desc
7.分组函数和聚合函数
-- sum() 取最小值
-- max() 取最大值
-- min() 取最小值
-- avg() 取平均值
-- count() 取得的记录数量
-- count(*)表示取得当前查询表的所有记录,count(字段名称)不会统计null
select count(age) from st01
-- group by字段名称 分完组后查找用having
select min(age),class from st01 group by class having class=3
二、多表查询(一对一,一对多,多对多)
1. 一对一(e.g丈夫、妻子表)
①合并成一张表√(在一对一的连接处理中,最优)
②在其中一张表中加入外键,通过外键连接
③单独创建一张表,存关系×(不推荐,耗费更多空间和精力)
2. 一对多(e.g班级和学生,部门和员工)
①合并成一张表×(非常不适用,修改操作冗余)
②在多方加入外键√(在一对多的处理过程中最优)
③在单方加入外键×(操作冗余)
④单独创建一个表格存储关系(虽然无冗余,但是额外创建了资源,相比于②的处理方式,稍逊一筹)
3. 对对多×(e.g学生和课表)
①合成一张表×(信息冗余)
②加外键×(无论在哪一方加外键,都会造成冗余现象)
③创建新表存储关系√(在多对多关系中最优)