查询
select 字段1 字段2 * 代表全部字段
from 表名
where 字段名=值
条件:
运算符: = < > <= >= !+
like:模糊查询
一:%表示零个或多个字符的任意字符串
1. LIKE'Mi%' 将搜索以字母 Mi开头的所有字符串
2. LIKE'%er' 将搜索以字母 er 结尾的所有字符串
3. LIKE'%en%' 将搜索在任何位置包含字母 en 的所有字符串
二: _(下划线)表示任何单个字符
LIKE'_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)
三:[ ] 表示指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符
LIKE'[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson,Carson)。
LIKE'[M-Z]inger' 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称
四: [^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符
LIKE'M[^c]%'将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称
五:* 它同于DOS命令中的通配符,代表多个字符
c*c代表cc,cBc,cbc,cabdfec等多个字符。
查询空的字段
where 字段 is null; null 判断只能用is
查询区间
between 开始值 and 结束值 类似于(>= 开始 <=)
select * from 表名 where age between 29 and 34 (年龄在29到34之间的)
多个条件
and or
select * from 表名 where age between 29 and 34 and age = '女' 多条件用and连接
排序
order by 字段1,字段2 (有升序和降序,默认为升序)
升序 asc 降序 desc
先排字段1 ,再排字段2
select * from 表 order by 字段 ( asc / desc )
分页
limit 开始的行数,行数 (开始行数从0开始)
limit 2,4 从第二行开始,取4条 如果后面的数据不够不报错,有多少显示多少
函数
count() 计数 (几行) select count(*) from 表名; (查询表多少行数据)
sum() 求和
avg() 平均值
max() 最大值
min() 最小值
别名:
字段,表
字段名 as 别名(不用加单引号)
as可以默认不写
select count(*) as 行数 from 表名;
多表联查
一:内连接(找到2张表的交集) inner join on
select * from 表1,表2 where 表1.id = 表2.id
(关键字,关联)
select 字段1,字段2 from 表1 inner join 表2 on 表1.字段 = 表2.字段 where 表1的其他条件 and 表2的条件
-- 9、查询学号为AF121105同学的所有科目信息,显示sno,sname,cno,grade
SELECT s.*,c.cno,c.grade FROM zy_student s
INNER JOIN zy_sc c ON s.sno = c.sno WHERE s.sno = 'AF121105'
// inner join添加第一张表 on通过sno关联
二:左外连接 left join on
以左表为主,左表数据全部展示,右表没有就显示空
三:右外连接 right join on
以右表为主,右表数据全部展示,左表没有就显示空
四:全外连接
左表行数 * 右表行数
五:自连接
一张表,承担左表右表的角色