SQL笔记03 - 查询数据
基本查询
SELECT * FROM <表名>SELECT关键字可以直接计算, 不适用FROM关键作用:SELECT 1验证数据库是否连接成功SELECT查询结果始终是个二维表
条件查询
- 
WHERE设定查询条件 - 
第一种:
SELECT * FROM <表名> WHERE <条件表达式>
 - 
第二种:
- 条件表达式: 
<条件1> AND <条件2> - 或者是
OR满足两个条件之一就可以 
 - 条件表达式: 
 - 
第三种:
NOT- 可以使用
<>表示 
 - 
NOT优先级最高, 其次是AND和OR - 
()可以改变优先级 - 
IN:SELECT * FROM students WHERE score in (90, 91); - 
The IN operator is a shorthand for multiple OR conditions.
 - 
BETWEEN: The BETWEEN operator is inclusive: begin and end values are included. - 
SELECT * FROM students WHERE score BETWEEN 60 AND 90; 
常用表达式条件
=: 相等>: 大于>=: 大于或相等<: 小于<>: 不等LIKE: 判断相似:SELECT * FROM students WHERE name LIKE '%明';%进行相似匹配
投影查询
- 只希望返回某些列数据
 SELECT 列1, 列2, 列3 FROM...- 结果集的列表列名, 可以有别名
 SELECT 列1 列1别名, 列2, 列2别名 FROM..
排序
- 
查询结果通常按照主键
id排序 - 
ORDER BY按照从低到高排 - 
默认升序,
ASC - 
再加上
DESC表示倒序 - 
SELECT id, name, gender, score FROM students ORDER BY score DESC; - 
根据两个数据, 排序时, 先根据第一个排序, 第一个相同的时候, 再根据第二个排序
 - 
排序方式跟在条件
WHERE后面 
分页
- 
分页通过截取实现:
LIMIT <M> OFFSET <N> - 
SELECT * FROM students ORDER BY score DESC LIMIT 3 OFFSET 0; - 
结果集从0开始, 最多取3条
 - 
SQL记录集的索引从0开始
LIMIT: 总是设定为pagesizeOFFSET: 计算:pagesize * (pageIndex - 1)
 - 
OFFSET: 超出最大值, 返回空数组 - 
注意:
OFFSET: 默认是0- MySQL: 
OFFSET可以省略 <N>越大, 查询效率越低
 
聚合查询
- 
统计总数, 平均数等计算, 可以使用聚合函数
 - 
COUNT(): 查询所有的列的行数 - 
SELECT COUNT(*) num FROM students;: 设置别名, 便于统计 - 
聚合查询配合添加查询, 查询满足条件的列数
 - 
常用聚合函数
SUM: 计算某一列的合计值, 该列必须是数值类型AVG: 计算某一列的平均值, 该列必须是平均值MAX: 计算某一列的最大值MIN: 计算某一列的最小值MAX和MIN不限定数值类型, 如果是字符类型, 会返回排序最后和排序最前的字符FLOOR: 向下取整CEILING: 向上取整
 - 
如果没有查询到任何数据,
COUNT返回0, 其他返回NULL - 
GROUP BY: 对数据进行分组查询计算 - 
SQL引擎, 不能把多个
name的值放入同一行记录中. 聚合查询的列中, 只能放入分组的列 
多表查询
SELECT * FROM <表1> <表2>- 结果是两个表的
乘积 - 重复的属性名, 通过设置别名解决
 - 也可以对表, 设置别名 
SELECT s.id sid, s.name, s.gender, s.score, c.id cid, c.name cname FROM students s, classes c; - 多表查询, 也可以添加
where条件 
连接查询
- 先确定一个主表作为结果集, 其他表有选择的连接到主表
 - 内连接查询 
INNER JOIN- 确定主表 
FROM <表1> - 确定需要连接的表: 
INNER JOIN <表2> - 确定连接条件: 
ON <条件1> - 可选: 使用
WHERE,ORDER BY等 
 - 确定主表 
 - 外连接: 
LEFT OUTER JOIN - 包含关系:
INNER: 两张表都存在的数据LEFT OUTER JOIN: 左表存在的数据RIGHT OUTER JOIN: 右表存在的数据FULL OUTER JOIN: 左右都存在的数据 MySQL不支持
 
FROM x, y使用笛卡尔积, 效率低, 所以不能用WHERE替代内连接运算
                    
                
                
            
        
浙公网安备 33010602011771号