SQL语言
2021/9/10 19:04:49
本文主要是介绍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语言的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02Java管理系统项目实战入门教程
- 2024-11-02Java监控系统项目实战教程
- 2024-11-02Java就业项目项目实战:从入门到初级工程师的必备技能
- 2024-11-02Java全端项目实战入门教程
- 2024-11-02Java全栈项目实战:从入门到初级应用
- 2024-11-02Java日志系统项目实战:初学者完全指南
- 2024-11-02Java微服务系统项目实战入门教程
- 2024-11-02Java微服务项目实战:新手入门指南
- 2024-11-02Java项目实战:新手入门教程
- 2024-11-02Java小程序项目实战:从入门到简单应用