2021-10-19

1、操作符

(1)>;<;<=;>=;=;!=;<>(比较运算)

【大于小于情况】
SELECT * FROM students WHERE age>20;

(2)AND,NOT,OR

【AND 与】
SELECT * FROM students WHERE age>20 AND age<30;
【OR 或】
SELECT * FROM students WHERE age>20 OR age<30;

(3)BETWEEN...AND...和NOT...BETWEEN...AND

【BETWEEN...AND...】
SELECT * FROM students WHERE age BETWEEN 20 AND 30;

(4)IS (NOT) NULL(空值判断)

【空(非空)判断】
SELECT * FROM students WHERE name IS NULL;
SELECT * FROM students WHERE name IS NOT NULL;

(5)LIKE,NOT LIKE(字符串匹配)及%和_通配符

【模糊查询】
【格式:like '%字符%'】
【%可以代替好几位,_只能代替一位】
SELECT * FROM students WHERE name LIKE '张%'

2、常用函数

(1)分组函数

COUNT;SUM;AVG;MAX;MIN

【得出年龄最小(大)的人】
SELECT MIN(age) FROM students;
SELECT MAX(age) FROM students;

【得出年龄平均值】
SELECT AVG(age) FROM students;
SELECT SUM(age)/COUNT(age) FROM students;

【得出年龄总和】
SELECT SUM(age) FROM students;

【统计有多少条记录】
SELECT COUNT(age) FROM students;
SELECT COUNT(1) FROM students;
SELECT COUNT(*) FROM students;

(2)其它函数(非SQL标准)

字符串;日期和时间;NVL

3、Select子句

(1)目标列

· 列名,或者星号

· 常数

· 函数以及列名等构成的表达式

· DISTINCT关键字

【去重】
SELECT DISTINCT sex FROM students;

(2)星号' * '表示所有的列

(3)可以为每一列指定别名

【字段别名】
SELECT SUM(age)/COUNT(age) AS avgs FROM students;
SELECT SUM(age)/COUNT(age) avgs FROM students;

4、From子句

(1)表名

(2)视图的名字

(3)另一个查询的结果

(4)可以指定别名

【给表更改别名(适用于多表联查)】
SELECT SUM(s.age)/COUNT(s.age) avgs FROM students s;

5、排序(Order By)

【排序,默认从小到大ASC,从大到小DESC】
SELECT * FROM students ORDER BY age;
SELECT * FROM students ORDER BY age ASC;
SELECT * FROM students ORDER BY age DESC;

【多字段排序(先按第一个字段排序,若第一字段有重复的部分,则重复部分按第二字段排序)】
SELECT * FROM students ORDER BY age,salary;

6、分组(Group By)

【分组,求各个组的对应个数】
【去重,类似DISTINCT】
SELECT age, COUNT(age) FROM students GROUP BY age;
SELECT sex, COUNT(sex) FROM students GROUP BY sex;

【求年龄最大的男女各是多少岁】
SELECT sex,MAX(age) FROM students GROUP BY sex;

【求男女各有多少人】
SELECT sex,COUNT(1) FROM students GROUP BY sex;

注意:使用GROUP BY时,SELECT子句只能由以下部分组成

(1)聚合函数

(2)Group by中出现的列名

(3)1和2通过函数和表达式的结果

7、HAVING

· 对汇总查询后的结果在此进行过滤

· HAVING智能跟随GROUP BY使用

· 注意和WHERE的区别

【求男生中年龄最大值】
SELECT sex,MAX(age) FROM students WHERE sex = '1' GROUP BY sex;
SELECT sex,MAX(age) FROM students GROUP BY sex HAVING sex = '1';

【求20-29年龄段有多少人】
SELECT age,COUNT(1) FROM students WHERE age BETWEEN 20 AND 29 GROUP BY age;
SELECT age,COUNT(1) FROM students GROUP BY age HAVING age BETWEEN 20 AND 29;

8、多表关联

【笛卡尔积】
SELECT * FROM students,object;

【两张表关联,一定要添加两个表对应条件,不然会出现笛卡尔积】
SELECT s.*,o.* FROM students s,object o WHERE o.user_id = s.id;          (内连接)
SELECT s.*,o.* FROM students s INNER JOIN object o ON o.user_id = s.id;  (内连接)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值