一、SQL概述
什么是SQL
SQL是 Structured Query Language(结构化查询语言)的缩写,用户存储、管理、修改和查询(增删改查)关系型数据库
SQL的分类
SQL主要分为六大类:
- 数据查询语言(Database Query Language)DQL:select,使用select关键字从表中获取数据;
- 数据管理语言(Database Manage Language)DML:insert、update以及delete,主要使用insert、update以及delete关键字对数据库中的数据进行管理操作;
- 数据定义语言(Database Define Language)DDL:create、drop,新建/删除数据库表,为表加入索引等;
- 数据控制语言(Database Control Language)DCL:grant与revoke,确定单个用户对数据库对象的访问(某些数据库管理系统可以使用grant与revoke实现对数据库表中但单个列的权限控制);
- 事务处理语言 TPL:确保被DML语句影响的表的所有行及时得以更新。主要关键字:commit与rollback;
- 指针控制语言 CCL:用于对一个或多个表单独的行进行操作。
二、DQL、DML、DDL、DCL
DQL
SELECT完整语法
SELECT [ALL | DISTINCT]
{* | talbe.* | [table.] field1 [AS alias1] [, [table.] field2 [AS alias2] [,…] ] }
FROM tableexpression [,…] [IN externaldatabase]
[WHERE…]
[GROUP BY…]
[HAVING…]
[ORDER BY 列名 [DESC/ASC],... ]
//该顺序有严格要求,where必须在group by前面
以下面的SQL语句为例:说明SELECT语句执行顺序
SELECT <selectlist>
FROM table_name
WHERE 条件
GROUP BY 分组汇总列
HAVING 条件2
ORDER BY 列名1 [ASC/DESC] , 列名2 [ASC/DESC]...;
- 先执行FROM子句,确定从哪张表开始查询(可以使用AS指定别名,AS可省略);
- 再执行WHERE子句,通过条件马上过滤掉不需要的信息;
- 执行GROUP BY子句,对WHERE条件过滤后查询出来的信息进行分类汇总;
- 执行HAVING子句,对汇总后的执行条件2过滤;
- 执行SELECT子句,选择最终需要查询出来的列;
- 最后执行ORDER BY子句ÿ