一、SQL概述
结构化查询语言,是关系数据库的标准语言
特点:综合统一;高度非过程化(无需了解存取路径);面向集合的操作方式;
以同一种语法结构提供多种使用方式(独立、嵌入式);简洁易学
支持关系数据库三级模式结构,外模式处理视图,模式处理基本表,内模式处理存储文件
二、数据定义
模式定义:CREATE SCHEMA/DROP SCHEMA
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>若未指定模式名,则默认与用户名同名
DROP SCHEMA<模式名><CASCADE|RESTRICT>,CASCADE级联,表示删除模式时同时删除该模式下所有数据库对象;RESTRICT限制,表示只有没有任何下属数据库对象时财执行删除
表定义:CREATE TABLE/DROP TABLE/ALTER TABLE
CREATE TABLE<表名>
(<列名><数据类型>[<列级完整性约束条件>],
…
[<表级完整性约束条件>]);
ALTER TABLE<表名>
[ADD <新列名><数据类型>[完整性约束]|[DROP <完整性约束名>|ALTER COLUMN<列名><数据类型>]
DROP TABLE <表名>[RESTRICT|CASCADE]
视图定义:CREATE VIEW/DROP VIEW
CREATE VIEW AS SELECT语句
索引定义:CREATE INDEX/DROP INDEX加快查询速度
CREATE [UNIQUE]|[CLUSTER] INDEX<索引名> ON <表名>(<列名>[<次序>],….)
三、数据查询
SELECT [ALL|DISTINCT] <目标列表达式>
[,<目标列表达式>] …
FROM <表名或视图名>[, <表名或视图名> ] …
[ WHERE <条件表达式> ]
[ GROUP BY <列名1> [ HAVING <条件表达式> ] ]
[ ORDER BY <列名2> [ ASC|DESC ] ];
单表查询:
ORDER BY:ASC升序,DESC降序
聚集函数:计数COUNT([DISTINCT|ALL) *|[列名]
总和SUM();平均值AVG();最值MAX()MIN()
WHERE子句作用于基表或者视图,HAVING短语作用于组
连接查询:同时涉及多个表的查询
[表名1.]<列名1> <比较运算符>[<表名2.>]<列名2>
自身连接需要给自己起别名。
外连接:以指定表为连接主题,将主体表中不满足连接条件的元组一并输出,包括左外连接,右外连接
如:SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student LEFT OUT JOIN SC ON (Student.Sno=SC.Sno);
嵌套查询:将一个查询块嵌套在另一个查询块的WHERE或者HAVING子句中
查询块:一个SELECT-FROM-WHERE语句
子查询不能使用ORDER BY
不相关子查询与相关子查询:子查询是否依赖父查询
集合查询:
集合操作种类:UNION,INTERSECT,EXCEPT
四、数据更新:
插入数据:
插入元组:INSERT INTO<表名>[(<属性列1>,…)] VALUES()
插入子查询:INSERT INTO<表名>[(属性列1,…)] 子查询
删除数据:
DELETE FROM <表名> [WHERE…]
修改数据:
UPDATE<表名> SET<列名> = <表达式>,…[WHERE…]
五、空值的处理:
空值的判断: IS NULL,IS NOT NULL
空值的算术运算结果为NULL,空值的比较结果为UNKONW
六、视图:
特点:虚表,由若干基表导出
只存放视图定义,数据仍存放于原表
基本数据变化会导致视图变化
优点:限制用户直接存取基表的某些记录,带来安全性
可以隐藏数据的复杂性
操作:查询、删除、受限更新、定义新视图
CREATE VIEW <视图名>[<列名1>,…] AS <子查询> [WITH CHECK OPTION]
视图的实现:
实体化视图:有效性检查;执行视图定义,生成临时表;操作临时表;删除临时表
视图消除法:有效性检查;将视图操作转为对基表的操作;执行修改后的操作
作用:简化用户操作;
使用户能多角度看待统一数据;
对重构数据库提供了一定程度的逻辑独立性;
对机密数据提供安全保护;
更清晰的表达查询。