-- 模糊查询 -- _ 代表一个字符 SELECT*FROM `student` WHERE `username` LIKE'_博'
-- % 代表多个字符 SELECT*FROM `student` WHERE `username` LIKE'%博'
-- IN() 返回一个或多个、只要是匹配 SELECT*FROM `student` WHERE `id` IN(1,2,3,4,5,6,7,8,9,10,11)
-- 查询为空字符串或为空的数据 -- OR 或 -- IS NULL 为空 SELECT*FROM `student` WHERE `address` =''OR `address` ISNULL
-- IS NOT NULL 不为空 SELECT*FROM `student` WHERE `address` ISNOTNULL
-- AND 和 且 SELECT*FROM `student` WHERE `address` ISNULLAND `id` <10
联表查询
内连接(INNER JOIN)
1 2 3
-- 内连接 -- SELECT 字段名(字段名在两个表中重复时必须指定是哪个表中的) FROM 表 别名 INNER JOIN 表 别名 ON 连接表达式 SELECT s.*,`clazzname`,`version` FROM `student` s INNERJOIN `clazz` c ON s.clazzid = c.clazzid
INNER JOIN 表中只要有一个匹配、就返回行
左外连接(LEFT JOIN)
1 2 3
-- 左外连接 -- SELECT 字段名(字段名在两个表中重复时必须指定是哪个表中的) FROM 表 别名 LEFT JOIN 表 别名 ON 连接表达式 SELECT s.*,`clazzname`,`version` FROM `student` s LEFTJOIN `clazz` c ON s.clazzid = c.clazzid
LEFT JOIN 会从左表中返回所行值、无论右表中是否匹配
右外连接(RIGHT JOIN)
1 2 3
-- 右外连接 -- SELECT 字段名(字段名在两个表中重复时必须指定是哪个表中的) FROM 表 别名 RIGHT JOIN 表 别名 ON 连接表达式 SELECT s.*,`clazzname`,`version` FROM `student` s RIGHTJOIN `clazz` c ON s.clazzid = c.clazzid
RIGHT JOIN 会从右表中返回所有行值、无论左表中是否匹配
自连接
就是写在一个表中的关系、实质上可以写成两张表
1 2
-- 自连接 SELECT y.typename AS 父类,t.typename As 子类 FROM type AS t,type AS y WHERE t.pid = y.typeid
分页和排序
排序
1 2 3 4 5
-- ORDER BY 排序 desc 降序 asc 升序(默认) SELECT*FROM `student` ORDERBY `id` DESC
-- ORDER BY 排序 desc 降序 asc 升序(默认) SELECT*FROM `student` ORDERBY `id` ASC
-- 分组 -- GROUP BY 分组字段 -- HAVING 过滤条件 SELECT s.`username`, SUM(`id`) AS'编号和',AVG(`id`) AS'平均编号',MAX(`id`) AS'最大编号', MIN(`id`) AS'最小编号' FROM `student` s INNERJOIN `clazz` c WHERE s.clazzid = c.clazzid GROUPBY s.`username` HAVINGAVG(`id`) >10