以sqlServer为例
①语言分类
1.DDL (Data Definition Language )数据库定义语言
DDL是SQL语言的四大功能之一。
用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束
DDL不需要commit.
CREATE
ALTER
DROP
TRUNCATE
COMMENT
RENAME
2.DML (Data Manipulation Language)数据操纵语言
由DBMS提供,用于让用户或程序员使用,实现对数据库中数据的操作。
DML分成交互型DML和嵌入型DML两类。
依据语言的级别,DML又可分成过程性DML和非过程性DML两种。
需要commit.
SELECT
INSERT
UPDATE
DELETE
MERGE
CALL
EXPLAIN PLAN
LOCK TABLE
3.DCL(Data Control Language)数据库控制语言 授权,角色控制等
GRANT 授权
REVOKE 取消授权
4.TCL(Transaction Control Language)事务控制语言
SAVEPOINT 设置保存点
ROLLBACK 回滚
SET TRANSACTION
②相关子查询与不相关子查询
非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。
相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。
③连接的分类:
连接操作,将两个表的记录做笛卡尔乘积,形成一个新的表,假设table1有A列m行,table2有B列n行,则连接后不加条件的情况下,生成的表有A+B列,m*n行。
内连接:
将连接操作的结果用on后面的条件进行过滤,留下想要的行,若右边的无匹配项的时候,就没有这条记录,比如,统计公司的所有部门的员工人数,当这个部门没有人的时候,将部门表与员工表进行join的时候,是没有对应记录的,但是如果要求没有员工的部门也要现实的时候,就要用到外连接。
外连接:
与内连接相似,不同的地方是,如果使用left join,若右边的表没有对应这一项的时候,依旧保留对应的这一项,只是这一条记录的右边项对应为null。以此我们可以得到左外连接,右外连接,和全外连接,全外连接保留左外连接与右外连接的所有记录。
④视图
在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。
视图本质上在数据库里面存的是一个sql语句,将执行的结果返回给调用的视图的语句。
其实视图与sqlserver的视图和with table_name as(sql)本质都是一个可以单独执行的语句,
不同的是前者是存在数据库内部,可以随时调用的,后者是在一次查询中临时生成的,在查询结束的时候就没有了作用。
③子查询可以出现的地方,除了group by 的地方其他都可以