一. SQL概述
SQL是英文(Structured Query Language)的缩写,意思为结构化查询语言,它包括了数据定义、查询、操纵和控制四种功能。包括数据定义语句(DDL)、数据操纵语句(DCL)及权限的操作。
SQL的特点:
综合统一;
高度非过程化;
面向集合的操作方式;
以同一种语法结构提供两种使用方法;
语言简洁,易学易用;
二. 数据定义
2.1 定义语句格式
定义表
1.定义基本表
CREATE TABLE <表名>(<列名> <数据类型>[ <列级完整性约束条件> ][,<列名> <数据类型>[ <列级完整性约束条件>] ] …[,<表级完整性约束条件> ] )
2.修改基本表
ALTER TABLE <表名>[ ADD <新列名> <数据类型> [ 完整性约束 ] ][ DROP <完整性约束名> ][ ALTER COLUMN<列名> <数据类型>]
3.删除基本表
DROP TABLE <表名>[RESTRICT| CASCADE]
RESTRICT:删除表是有限制的。
欲删除的基本表不能被其他表的约束所引用
如果存在依赖该表的对象,则此表不能被删除
CASCADE:删除该表没有限制。
在删除基本表的同时,相关的依赖对象一起删除
定义索引
1.建立索引的目的
加快查询速度
2.谁可以建立索引
DBA 或 表的属主(即建立表的人)
DBMS一般会自动建立以下列上的索引:PRIMARY KEYUNIQUE
1.建立索引
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…)
1)用<表名>指定要建索引的基本表名字
2)索引可以建立在该表的一列或多列上,各列名之间用逗号分隔
3)用<次序>指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC
4)UNIQUE表明此索引的每一个索引值只对应唯一的数据记录
5)CLUSTER表示要建立的索引是聚簇索引
2.修改索引
ALTER INDEX <旧索引名> RENAME TO <新索引名>
3.删除索引
DROP INDEX <索引名>
删除索引时,系统会从数据字典中删去有关该索引的描述。
三、数据查询
对于多表查询,优先顺序:不相关子查询;连接查询;相关子查询;Exist查询
SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>] …
FROM <表名或视图名>[, <表名或视图名> ] …
[WHERE <条件表达式> ]
[ GROUP BY <列名1> [ HAVING <条件表达式> ] ]
[ ORDER BY <列名2> [ ASC|DESC ] ]
SELECT子句:指定要显示的属性列
FROM子句:指定查询对象(基本表或视图)
WHERE子句:指定查询条件
GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。
HAVING短语:筛选出只有满足指定条件的组
ORDER BY子句:对查询结果表按指定列值的升序或降序排序
一、单表查询
% (百分号) 代表任意长度(长度可以为0)的字符串
_ (下横线) 代表任意单个字符
ESCAPE 短语
当用户要查询的字符串本身就含有 % 或 _ 时,要使用ESCAPE ‘<换码字符>’ 短语对通配符进行转义。
ORDER BY子句
1)ORDER BY子句
可以按一个或多个属性列排序
升序:ASC;降序:DESC;缺省值为升序
2)当排序列含空值时
ASC:排序列为空值的元组最后显示
DESC:排序列为空值的元组最先显示
GROUP BY子句
GROUP BY子句分组:细化聚集函数的作用对象
HAVING短语与WHERE子句的区别:
作用对象不同
WHERE子句作用于基表或视图,从中选择满足条件的元组
HAVING短语作用于组,从中选择满足条件的组。
二、连接查询
等值与非等值连接查询
等值连接:连接运算符为=
eg:查询每个学生及其选修课程的情况
SELECT Student.*,SC.*
FROM Student,SC
WHERE Student.Sno = SC.Sno;
自然连接:
eg:查询每个学生及其选修课程的情况
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student,SC
WHERE Student.Sno = SC.Sno;
eg:找出每个学生超过他选修课程平均成绩的课程
号。
SELECT Sno, Cno
FROM SC x
WHERE Grade >=(SELECT AVG(Grade)
FROM SC y
WHERE y.Sno=x.Sno);
带有ANY(SOME)或ALL谓词的子查询
谓词语义
➢ ANY:任意一个值
➢ ALL:所有值
五、Select语句的一般形式
SELECT [ALL|DISTINCT]
<目标列表达式> [别名] [ ,<目标列表达式>
[别名]] …
FROM <表名或视图名> [别名]
[ ,<表名或视图名> [别名]] …
[WHERE <条件表达式>]
[GROUP BY <列名1>
[HAVING <条件表达式>]]
[ORDER BY <列名2> [ASC|DESC]
===================================================================
一、插入数据
INSERT
INTO <表名> [(<属性列1>[,<属性列2 >…)]
VALUES (<常量1> [,<常量2>] … )
二、修改数据
UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]…
[WHERE <条件>];
三、删除数据
DELETE
FROM <表名>
[WHERE <条件>];
===================================================================
一、简历视图
1.建立视图
CREATE VIEW
<视图名> [(<列名> [,<列名>]…)]
AS <子查询> [WITH CHECK OPTION];
2.删除视图
DROP VIEW <视图名>;
二、查询视图
用户角度:查询视图与查询基本表相同
三、更新视图
更新视图和更新基本表相同
四、视图的作用
1.视图能够简化用户的操作
2. 视图使用户能以多种角度看待同一数据
3. 视图对重构数据库提供了一定程度的逻辑独立性
4. 视图能够对机密数据提供安全保护
5. 适当的利用视图可以更清晰的表达查询