SQL初级学习常见问题
几个容易忘记的要点
合并表单操作(JOIN & Union/Union all)
一、几个容易忘记的要点
- 使用where进行条件筛选;但是如果使用了group by 就只能用 having 进行筛选
- As的用法,SELECT 里面 用as , From 里面不能用 as, 直接跟重命名的名称即可
- Typical expression, function and wildcards
是否为空 | IS NULL |
是否相等 | =(相等) / !=(不等) |
返回查询选择的不为空的行数/返回查询的所有行 | COUNT / COUNT(*) |
返回和/平均值 | SUM / AVG |
全选 | 通配符(Wildcards) * |
任意字符集合 | 通配符(Wildcards) % |
正好一个字符 | 通配符(Wildcards) _ |
Note :
‘%Desk’ | ‘xxxDesk’ |
‘Desk%’ | ‘Deskxxx’ |
‘%Desk%’ | ‘xxxDeskxxx’ |
-
Boolean 优先级: NOT > AND > OR
-
IN and NOT IN LIST
State In ('FR', 'CA', 'HI')
相当于
State = 'FR' OR State = 'CA' OR State = 'HI'
- 常见排序类:
selcet —(想展示/输出的列名;重新定义计算的展示列)
from —(什么表)
where — (加上筛选条件)
order by — (用什么来排序)—desc(降序)/asc(升序) —limit(展示前几个)
select GPA
from STUDENT_profile
where 专业='xx专业'
order by GPA desc limit 10
1.join
不使用join如何进行合并表单
举例情景:查看所有来自北京的用户资质认证结果情况
俩表中的字段相同的情况下需要指定表名
select e.eid, e.test, result
from eligibility_details e, user_detail u
where e.eid = u.eid and u.hometown='Beijing'
但是也等同于 (left join)
select e.eid, e.test, result
from eligibility_details e
left join user_detail u on e.eid = u.eid
where u.hometown='Beijing'
left join 返回左表全表以及右表中满足on 后条件语句的行
right join 返回右表全表以及左表中满足on 后条件语句的行
inner join 返回两表中满足on 后条件语句的行
1.union & union all
UNION默认去重
select 筛选展示列
from 表
where 条件1
union
SELECT 筛选展示列
from 表
where 条件1;
如何不去重合并两个条件筛选后的表格 > union all
select 筛选展示列
from 表
where 条件1
union ALL
SELECT 筛选展示列
from 表
where 条件1;