Java教程

SQL语言

本文主要是介绍SQL语言,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

SQL语言

第六章 关系数据库标准语言SQL
1、SQL(Structured Query Language)称为结构化查询语言,SQL已经成为关系数据库领域中
的一种主流语言,1987年被国际标准化组织(ISO)采纳为国际标准
1992年公布了SQL92(SQL2),1999年公布了SQL93(SQL3,对象-关系SQL),2003年公布
SQL2003(SQL4)

2、SQL 特点:SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体
综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式(自含式和
嵌入式SQL)、语言简洁,易学易用。

3、SQL数据库体系结构:外模式对应于视图和部分基本表、模式对应于基本表,内模式对应于存
储文件
基本表是本身独立存在的表,一个关系就是一个基本表(存放实际数据),行对应元组,列对应属
性;一个基本表可以跨一个或多个存储文件存放,一个存储文件可以存放多个基本表;所有基本表
的集合构成了模式;基本表是模式和外模式的一部分。
一个SQL表可以是一个基本表,也可以是一个视图。视图是一个或几个基本表导出的表,数据库中
存放视图的定义,视图的数据仍然在基本表中。视图是一个虚表,是外模式的一部分。
一个SQL表可以有若干索引,索引放在存储文件中。存储文件的逻辑结构组成了SQL数据库的内模
式。物理结构由操作系统管理,对用户透明。
SQL用户可以是一个应用程序,可以一个SQL用户。

4、SQL的数据类型:预定义数据类型、构造数据类型、用户定义数据类型

5、基本的SQL定义语句:关系数据库的基本对象是模式、表、视图、索引和域
基本对象 创建 删除 修改
模式 CREATE SCHEMA DROP SCHEMA
基本表 CREATE TABLE DROP TABLE ALTER TABLE
视图 CREATE VIEW DROP TABLE
索引 CREATE INDEX DROP INDEX
域 CREATE DOMAIN DROP DOMAIN

6、基本操作语句
(1)模式的定义与删除 Create Schema <模式名> AUTHORIZATION <用户名>
Drop Schema <模式名>|CASCADE|RESTRICT
(2)基本表的操作:创建:CREATE TABLE[模式名.]<表名>(<列名><数据类型>(列级完整
性约束〕
[,<列名><数据类型>[列级完整性约束]…
〔,<表级完整性约束>〕);
<列级完整性约束条件>:涉及相应属性列的完整性约束条件
<表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件
CREATE TABLE S_SC_C.SC
(S# CHAR(8),C# CHAR(8),GRADE INT NOT NULL,
PRIMARY KEY (S#,C#),FOREIGN KEY(S#) REFERENCES STU(S#)
);
PRIMARY KEY (S#,C#),FOREIGN KEY(S#) REFERENCES STU(S#)为表完整性约束
修改:ALTER TABLE<表名>
「ADD<新列名><数据类型>[完整性约束〕〕
[DROP <列名>][<完整性约束名>]〕
[MODIFY<列名><数据类型>」;
删除:当某个基本表不再需要时,可以用DROP TABLE语句进行删除,其格式为:
DROP TABLE<表名>
基本表一旦被删除,表中的数据、此表上建立的索引和视图都将自动被删除。因此执行删除基本表
的操作时一定要格外小心。DROP TABLE <表名> RESTRICT 视图等关联对象没有事先删除则不能
执行删除操作
(3)索引操作
建立索引是加快查询速度的有效手段,提供多种存取路径
UNIQUE 唯一索引,建立的索引其值必须唯一
CLUSTER聚簇索引,表示索引值的顺序与表中记录的物理顺序一致,适合在经常查询的列上建立,
不适合在经常更新的列上建立
CREATE [UNIQUE][CLUSTER]INDEX<索引名>
ON<表名>(<列名>[<次序>〕[,<列名>[<次序>」…」);
<次序>指定索引值的排列次序,可选ASC(升序)或DESC(降序),默认值为ASC
如:CREATE UNIQUE INDEX SCno ON SC( Sno ASC,Cno DESC);
删除索引:DROP INDEX<索引名>;删除索引时,系统会同时从数据字典中删去有关该索引的描
述

4、SQL的数据操纵语句
SQL语言的数据操纵包括INSERT(插人)、DELETE(删除)、UPDATE(更新)和SELETE(检索,又称查
询)4个语句
SELECT语句是数据操作的核心。
(1)数据查询 SELECT[ALLI DISTINCT]<目标列表达式>〔,<目标列表达式>]…
FROM<基本表或视图>[,<基本表或视图>]…
[WHERE<条件表达式>]
[GROUP BY<列名l>[HAVING<条件表达式>]]
[ORDER BY<列名2>[ASC 1 DESC]];
a.简单查询
简单查询涉及数据库中的一个表,包括以下几种:
(1)查询表中的若干列。
(2)查询经过计算的值。
(3)消除取值重复的行。DISTINCT
(4)查询满足条件的元组。WHERE
(5)利用LIKE的查询。_、%
(6)涉及空值NULL的查询。IS NULL 、IS NOT NULL
(7)对查询结果排序。ORDER BY ASC/DESC
(8)使用集函数。Count 、SUM、AVG、MAX、MIN
(9)对查询结果分组。Group by having
b. 连接查询
外连接的三种类型:左外连接、右外连接、全外连接
左外连接(LEFT OUTER JOIN):结果表中保留连接条件左边关系中的所有元组
右外连接(RIGHT OUTER JOIN): 结果表中保留连接条件右边关系中的所有元组
全外连接(FULL OUTER JOIN): 结果表中保留连接条件左右两边关系中的所有元组
某些系统中用+= 表示左外连接、=+表示右外连接、+=+表示全外连接
c.嵌套查询 (I)由谓词IN引导的子查询:IN是最常用的谓词。
(2)谓词是比较运算符的子查询。
(3)由[NOT]EXISITS谓词引导的子查询。
d.集合查询。
UNION(并)、INTERSECT(交)、EXCEPT(差)

5、SQL的修改语句
(1)插入操作(insert)insert into 表名(字段名,…) values(常量,…)
insert into 表名(字段名,…) select … from
(2)删除操作(delete)delete from 表名 [where F] 删除表中的数据,表的结构还存在数
据字典中
(3)更新操作(update)update 表名 set 列名=表达式,列名=表达式 where F

6、视图
(1)创建视图CREATE VIEW<视图名>〔(<列名>〔,<列名>…〕
AS<子查询>
〔 WITH CHECK OPTION〕:
其中子查询可以是任意复杂的SELECT语句,但通常不允许含有ORDER BY子句和DISTINCT短语。
WITH CHECK OPTION表示对视图进行UPDATE、INSERT和DELETE操作时要保证更新、插人或删除
的行满足视图定义中的谓词条件(即子查询中的条件表达式)。
(2)几种特殊的视图:行列子集视图、表达式视图、分组视图、连接视图
(3)查询视图:将对视图的查询转换为对基本表的查询的过程称为视图的消解(View Resolution)。
视图物化(View Materialization):是指在视图第一次被查询的时候物理地建立一个临时的视
图表(实表),但必须保证更新基本表时自动更新视图表,保持物化视图的最新性。
(4)修改视图
为防止用户通过视图对数据进行增、删、改操作时,无意或有意操作不属于视图范围内的基本表数
据可在定义视图时加上WITH CHECK OPTION子句,这样在视图上增、删、改数据时,DBMS会进一
步检查视图定义中的条件,若不满足条件,则拒绝执行该操作。
改视图包括插入(INSERT)、删除(DELETE)和更新(UPDATE) 3类操作。行列子集视图可以修改,
带表达式视图、连接视图和分组视图不能修改。
(5)视图的作用
(1)能够简化用户的操作。
(2)使用户能以多种角度看待同一数据。
(3)对重构数据库提供了一定程度的逻辑独立性。
(4)能够对机密数据提供安全保护。

7、数据控制语句和嵌入式SQL
(1)GRANT语句和REVOKE语句实现权限授予和权限回收
GRANT 权限 ON 对象名 to 用户 [with grant option]; with grant option 获得权限的用
户允许授予其他用户
(2) REVOKE<权限>[,<权限>]… [ON<对象类型><对象名>] FROM<用户>[,<用户
>]…;
(3) SQL语言分为独立语言和嵌入式语言
SQL语言嵌入主语言解决的3个问题:
SQL语言与主语言的区分:EXEC SQL<SQL语句>
数据库工作单元与程序工作单元的通信(通过主变量)
游标解决集合操作与记录操作的矛盾
DBMS可采用两种方法处理嵌入式SQL,一种是预编译,另一种是修改和扩充主语言
(4)动态SQL:程序在执行过程中动态生成SQL语句。动态SQL的两种执行方式:
	1、立即执行;
	2、先准备后执行
这篇关于SQL语言的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!