1,基本查询:SELECT * FROM table;
不要求一定有FROM 子句,SELECT 100+200;
SELECT 查询的结果是一个二维表
2,条件查询:SELECT * FROM table WHERE score >= 80;
SELECT * FROM 表名 WHERE 条件表达式;
OR 或,AND ,NOT 条件 如: NOT class_id = 2 等价于 class_id<> 2;
三个或者更多的条件,(score < 80 OR score > 90) AND gender = 'M';
如果不加括号,条件运算按照NOT
、AND
、OR
的优先级进行,即NOT
优先级最高,其次是AND,
最后是OR
。加上括号可以改变优先级。
%表示任意字符,name LIKE 'ab%' ,name LIKE '%abc%' %任意个字符,_一个字符
BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期,是否能取到区间端点值要看具体的数据库;
3,投影查询:SELECT 列1,列2,列3 FROM..... ,结果集仅包含指定列;
还可以将列重命名,SELECT 列1 别名1,列2 别名2,列3 别名3 FROM
投影查询+WHERE 条件;
4,排序:ORDER BY 默认按照顺序 ASC,ORDER BY 列 DESC;
按照多列排序,ORDER BY sore DESC,gender;
ORDER BY 排序的是结果集,所以需要在WHERE 后面;
5,分页:在最后+LIMIT 3,相当于LIMIT 3 OFFSET 0,对结果集从0号记录开始,最多取3条。注意SQL记录集的索引从0开始。 OFFSET为基准线;
6,聚合:COUNT(*)查询所有列的行数,聚合计算结果仍然是二维表,是一行一列的二维表;
聚合给列别名,SELECT COUNT(*) new_column_name FROM table;
都可以迭代WHERE 条件,如果聚合查询的WHERE
条件没有匹配到任何行,COUNT()
会返回0,而SUM()
、AVG()
、MAX()
和MIN()
会返回NULL
取整函数:
a.round()函数遵循四舍五入原则,用于把数值字段舍入为指定的小数位数 23.33 23
b.floor(value)函数返回小于或等于指定值(value)的最小整数 23.33 23
c.ceiling(value)函数返回大于或等于指定值(value)的最小整数 23.33 24
d.sign(value) 与绝对值函数ABS()相反。ABS()给出的是值的量而不是其符号,sign(value)则给出值的符号而不是量
e.trunc(value,precision)按精度(precision)截取某个数字,不进行舍入操作
例如:对于12.9,floor(12.9)返回12;ceiling(12.9)返回13;round(12.9,0)返回13
7,分组: