SQL总结
1、只检索前五行数据
mysql: SELECT comment_id FROM t_comment LIMIT 5;
oracle:SELECT comment_id FROM t_comment WHERE ROWNUM <=5;
2、从第n行数据开始检索n行数据
SELECT id FROM user LIMIT n OFFSET n;
所以,LIMIT指定返回的行数。带OFFSET的LIMIT指定从哪儿开始。
3、sql中的注释问题
SELECT id --这是一个注释
FROM user;
#这是一条注释
SELECT id FROM user;
/*这是一个多行注释
*/
SELECT id FROM user;
4、排序查找
#按照2.3列进行排序
SELECT id ,name,age FROM user ORDER BY 2,3;
5、指定排序方向
DESC 降序 ASC升序(实际应用,没什么用,因为默认就是升序的)
6、范围值检查
SELECT ID FROM user WHERE age BETWEEN 5 AND 10;
7、空值检查
SELECT comment_id FROM t_comment WHERE comment_text IS NULL;
8、and操作符和or操作符的顺序
WHERE子句可以包含任意数目的AND和OR操作符,但是存在优先级的问题。and的优先级高于or,解决办法是在过程中使用()
9、in操作符
in最大的优点就是可以包含其他的select语句,能动态的简历where字句。
10、通配符 %和_和[]
%匹配多个字符,_匹配单个字符,[]是用来指定一个字符集。
#找出id是1或者4开头的信息
SELECT comment_id FROM t_comment WHERE comment_id LIKE '[14]%'
11、聚集函数
AVG() 返回某列的平均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列值之和
12、聚集不同值DISTINCT
平均值只考虑各个不同的价格:
SELECT AVG(DISTINCT prod_price) AS avg_price FROM Products WHERE vend_id = 'DLL01';
13、分组数据 GROUP BY 和 HAVING
SELECT uid, COUNT(*) AS name_count
FROM t_user
GROUP BY room_name;
查询评论超过帖子评论超过10的帖子
SELECT content_id, COUNT(*) AS post
FROM t_content
GROUP BY comment_count
HAVING COUNT(*) >= 10;
where 和 having的区别:
# WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤。
where和having也可以结合使用:
例如:列出具有两个以上产品且其价格大于等于4的供应商:
SELECT id, COUNT(*) AS num_shop FROM Products WHERE prod_price >= 4 GROUP BY id HAVING COUNT(*) >= 2;
14、利用子查询进行过滤
#例如 现在有customer 表 和 order表
#查询订购了某商品的顾客
第一步:SELECT order_num FROM OrderItems WHERE product_id = "002";
第二步:根据查询结果:SELECT cust_id FROM order WHERE order_num IN (20007,20008);
合并上面的两条sql语句SELECT cust_id FROM order WHERE order_num IN (SELECT order_num FROM OrderItems WHERE product_id = "002");
15、内连接
SELECT stu_number,detail_graduate FROM student INNER JOIN detail ON student.stu_number = detail.stu_number;
16、外连接
要检索没有订单顾客在内的所有顾客
SELECT Customers.cust_id,Orders.order_num FROM Customers LEFT OUTER JOIN Orders ON Customers.cust_id = Orders.cust_id;
17、查询每门课都大于80的同学
SELECT name FROM table GROUP BY name HAVING MIN(fenshu)>80
---------------------
作者:星星点灯ht
原文: https://blog.csdn.net/qq_38735934/article/details/81981113