您的位置:首页 > 数据库

SQL语言基础

2006-02-03 02:36 267 查看
SQL语言分类

1.数据定义语言(DDL)
常用的DDL语句
Create Table 创建数据库对象
Create Index 创建数据库表索引
Drop Table 删除数据库表
Drop Index 删除数据库表索引
Truncate 删除表中所有行业

Alert Table 增加表列,重定义表列,更改存储分配
Alert Table ADD CONSTRAINT 在已有的表上增加约束

2.数据操纵语言(DML)
Insert 增加数据行到表
Delete 从表中删除数据行
Update 更改表中数据
Select 从表或视图中检索数据行

3.数据控制语言(DCL)
DCL用于规定数据库用户的各种权限

GRANT 将权限或角色授予用户或其他角色
REVOKE 从用户或数据库角色回收权限
Set ROLE 禁止或允许一个角色

4.数据库事务控制

常用的事务语句包括

COMMIT WORK 把当前事务更改永久化(写入磁盘)
ROLLBACK 作废上次提交以来的所有更改

SQL语句基本语法

每条SQL语句必须以分号结束.

每条SQL语句可以单独写成一行,但为了清楚,也可以分成若干行.

SQL语句对大小写不敏感,对于SQL语句的关键字(例如,Insert,Select 等),

表名、列名等,可以大小写混写;但是对列的内容是大小写敏感的。

别名

数据表名称 AS 数据表别名
或者是:
数据表名称 数据表别名

Eg:
Use SAMPLE
Select e.员工编号 ,e.员工姓名
From 员工数据表 AS e

Select 语句
Select 语句基本结构如下:
Select select_list
[INTO new_table_name]
From table_list
[Where search_conditions]
[GROUP BY group_by_list]
[Having search_conditions]
[ODER BY order_list[ASC|DESC]]

1.DISTINCT关键字
eg:
Use SAMPLE
Select DISTINCT 所属部门
from 员工数据表
2.TOP 关键字

From子句
联接条件---on子句
派生表---sp

Select 员工数据表.员工编号,项目数据表.项目名称
From 员工数据表 join 项目数据表 ON
(员工数据表.员工编号 = 项目数据表.负责人)

Select EMP.员工编号,EMP.员工姓名,SP.部门名称
From 员工数据表 AS EMP ,
(Select 部门数据表.部门编号,部门数据表.部门名称
From 部门数据表
Where 部门数据表.部门编号>2
) AS SP
Where EMP.部门编号=SP.部门编号

Where 子句
Where子句中查询和限定的条件可以是
比较运算符(如常=、<>、<和>).
范围说明(BETWEEN 和 NOT BETWEEN)。
可选列表(IN、NOT IN)
模式匹配(Like 和NOT Like).
是否为空值(IS NULL 和 IS NOT NULL)。
上述条件的逻辑组合(AND 、OR和NOT)。

GROUP BY 子句
GROUP BY 子句的主要作用是可以将数据记录依据设置的条件分成多个组,
而且只有使用了GROUP BY

子句,SELECT中所使用的汇总函数(例如SUM、COUNT、MIN、MAX等)
才会起作用。
eg:
Select 所属部门,***G(工资) AS 平均工资 From 员工数据表 GROUP BY
所属部门
H***ING 关键字
H***ING子句将对GROUP BY 子句选择出来的结果进行再次筛选,最后输出符

合H***ING 子句中条件的记录。
eg:
Select 所属部门,***G(工资) AS 平均工资 From 员工数据表 GROUP BY
所属部门 H***ING 平均工资>2000

Where 子句用来筛选From子句中指定的操作所产生的记录
GROUP BY 子句将Where子句中结果惊醒分组
H***ING 子句将从经过分组后的中间结果集中筛选记录

ALL关键字
CUBE关键字
WITH CUBE 关键字的主要作用是自动对GROUP BY 子句中列出的字段进行
分组汇总运算。
EG:
Select 所属部门 ,性别,***G(工资) From 员工数据表 GROUP BY
所属部门,性别 WITH CUBE

ROLLUP 关键字

ORDER BY 子句

ASC ---升序
DESC --降序

COMPUTE 和COMPUTE BY 子句

使用UNION 子句
UNION运算符可以用来将2个或多个查询结果集组合起来,成为一个结果集

。使用UNION运算符的结果集都必须满足下列条件:
具有相同的结构
字段数目相同
结果集中相对应的数据类型必须兼容
UNION运算符指定的格式如下:
Select 语句
UNION[ALL]
Select 语句

汇总函数
SUM函数
***G函数
COUNT函数
COUNT(*)函数
MAX函数
MIN函数

联接查询
通过使用联接产寻可以根据各个数据表之间的逻辑关系从2个或多个
数据表中检索数据。

如何提高Select语句的效率
(1).使用EXISTS关键字检查结果集
(2).使用标准的连接代替嵌套查询
(3).有效避免整表扫描

联接的类型

内联接
内联结的格式为:
数据表1 INNER JOIN 数据表2 ON 联接表达式
内联接将通过使用比较运算符根据需要联接的数据表的公共的字段
值来匹配二表中的记录。
eg:
Select * From 员工数据表 INNER JOIN 项目数据表
ON 员工数据表.员工编号 = 项目数据表.负责人

外联接
外联接包括3种 左向外联接、右向外联接、完整外部联接

左向外联接的格式为:
数据表1 LEFT JOIN 数据表2 ON 连接表达式
或者是:
数据表1 LEFT OUTER JOIN 数据表2 ON 连接表达式
使用左向联接进行查询的结果集将包括数据表1中所有的记录,而仅仅是连

接字段所匹配的记录,那么结果集想对应的有关数据表2的所有字段将为空值

.例如下面将检索员工数据表中所有记录,并将项目表中显得负责人字段匹配

的记录输出到结果集:
Select *
From 员工数据表 LEFT JION 项目数据表
ON 员工数据表.员工编号 =项目数据表.负责人

右向外联接
右向外联接的格式:
数据表1 RIGHT JOIN 数据表2 ON 表达式
或者是:
数据表1 RIGHT OUTER JOIN 数据表2 ON 表达式
和左向外联接相反.

完整外联接
完整外联接的格式
数据表1 FULL JOIN 数据表2 ON 表达式
或者是:
数据表1 FULL OUTER JOIN 数据表2 ON 表达式

交叉联接
交叉连接的格式为:
数据表1 CROSS JOIN 数据表2
如果在Select语句中没有使用Where子句,那么交叉联接将返回数据表1和数

据表2的卡笛尔积,即交叉联接返回数据表1中的所有记录,以及数据表1中所

有的记录与数据表2中所有句路的组合.结果集的记录数等于数据表1的记录

数目乘以数据表2的记录数目.

在From和Where分句中指定联接

嵌套查询
嵌套查询指的是一个外层查询中包含一个内层查询.其中外层查询称为主

查询,内层查询称为子查询.
使用IN 和 NOT IN 关键字
Use SAMPLE
Select 员工姓名
From 员工数据表
Where 员工编号 IN
(Select DISTINCT 负责人
From 项目数据表
Where 结束日期<'January 1,1,2006')
使用比较运算符
主要是返回单个值
Use SAMPLE
Select 员工姓名
From 员工数据表
Where 员工编号 =
(Select DISTINCT 负责人
From 项目数据表
Where 项目名称='Demo1')
使用EXISTS 和 NOT EXISTS 关键字

数据更改
Insert
Update
Delete
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: