sql语句的分类
DML:数据操作语言:用于检索或者修改数据;
DDL:数据定义语言:用于定义数据的结构,如创建、修改或者删除数据库的对象;
DCL:数据控制语言:用于定义数据库用户的权限;
sql的基本语句
基本操作:
sql的高级查询语句
:
union(联合多个表的内容,查询列数必须相同) except(求差集) intersect(求交集) | lleft join right join(这两个会搜出不满足on条件的相应表中的所有数据) join就不会
| group by
A: UNION 运算符
A、left join:左链接
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
select A.*, B.c, B.d, B.f from table_AAA A LEFT OUT JOIN table_BBB B ON a.a = b.c
B:right join: 右连接
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
需要以下格式显示
把两个表中的所有数据,组合在一起,两个表中都有id,name字段
B:算符 except
B:算符 except
EXCEPT 返回两个结果集的差(即从左查询中返回右查询没有找到的所有非重复值)。
select [id],[name] from [MYDB].[dbo].[user] except SELECT [id],[name] from [MYDB].[dbo].[coustom]
C: 运算符 intersect
INTERSECT 返回 两个结果集的交集(即两个查询都返回的所有非重复值)。
select [id] from [MYDB].[dbo].[user] INTERSECT SELECT [id] from [MYDB].[dbo].[coustom]A、left join:左链接
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
select A.*, B.c, B.d, B.f from table_AAA A LEFT OUT JOIN table_BBB B ON a.a = b.c
B:right join: 右连接
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
left right join 会把其他的数据一块select出来,而inner join 只把约束的数据找出来
例子:
表名字:stu_no
表名字:stu_score
需要以下格式显示
no
|
name
|
class
|
code
|
101
|
xiaoming
|
yuwen
|
88
|
...
|
|
|
|
|
|
|
|
语句如下: selectA.no
as no,
A.name as name,
B.ckass as class,
B.code as code
from stu_no A
join stu_score B
on A.name = B.name
如果join没有修饰符,那么结果只显示满足on条件的条目,结果如下图
语句如下: select A.no
as no,
A.name as name,
B.ckass as class,
B.code as code
from stu_no A right
join stu_score B
on A.name = B.name
right join修饰符,会显示B表的其他内容 ,如下图
语句如下: select A.no
as no,
A.name as name,
B.ckass as class,
B.code as code
from stu_no A left
join stu_score B
on A.name = B.name
right join修饰符,会显示B表的其他内容 ,如下图
- where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
- having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。
错误的用法: