关系数据库标准语言SQL
- 格式:doc
- 大小:101.50 KB
- 文档页数:11
关系数据库标准语言SQL1.1SQL概述1.11 SQL的标准化历程SQL是1974年提出的;IBM公司首先实现了关系数据库管理系统;1987年SQL被作为国际标准。
1.12 SQL的功能特点SQL集数据查询,数据操作,数据定义和数据控制功能于一体。
具有以下特点:综合统一:非关系模型的数据语言一般都分为模式数据定义语言,外模式数据定义语言,与数据存储有关的描述语言以及数据操作语言,分别用于定义模式,外模式,内模式和进行数据的存取和处理。
而SQL则集数据定义语言,数据操作语言,数据控制语言的红能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动。
高度非过程化:非关系数据模型的数据操作语言是面向过程的语言,使用这样的语言进行数据操作,必须制定存取路径。
而SQL进行数据操作,用户只需提出“做什么”,而不用指明“怎么做”,因此用户无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。
面向集合的操作方式:非关系模具模型采用的是面向标记的操作方式,操作的对象都是一条记录。
而SQL语言采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入,删除,更新操作的对象也可是是元组的集合。
灵活的使用方式:SQL既是自含式语言,又是嵌入式语言。
作为自含式语言,他能够独立的用联机交互的使用方式,用户可以在键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言程序中,供程序员设计程序时使用。
语言简易,易学易用,功能强:SQL功能极强,具有完备的表达能力。
但由于设计巧妙,语言十分简洁,完成数据定义,数据操作,数据控制的核心功能只用了9个动词。
1.13 SQL的基本组成(1)SQL数据库的三级模式结构SQL支持数据库三级模式结构,在SQL中,外模式对应于“视图(View)”和部分基本表,模式对应于基本表“Base Table”,内模式对应于“存储文件”。
一个SQL数据库模式是基本表的集合。
一个关系对应于一个SQL表,行对应于元组,列对应于属性。
一个表可以有若干索引,索引也存放在存储文件中。
存储文件的逻辑结构组成了SQL数据库的内模式,存储文件的物理结构对用户是透明的,由操作系统管理。
一个SQL表可以是一个基本表,也可以是一个视图。
基本表是实际存储在数据库中的表;视图是从一个或几个基本表或其它视图导出的表。
数据库并不存放视图对应的数据,而只存放视图的定义,因此视图是一个虚表。
一个基本表可以跨一个或多个存储文件存放,一个存储文件可一个或多个基本表。
每个存储文件与外部存储器上的一个物理文件对应。
SQL用户可以是应用程序,也可以是终端用户。
SQL环境是SQL数据存在和SQL语句执行的语境。
(2)SQL的组成SQL由以下部分组成数据定义语言DDL:用来创建数据库的各种对象,例如数据库模式,表,视图和索引等。
数据操作语言DML:用来查询和修改SQL数据库中的数据。
数据控制语言DCL:用来授予或收回访问数据库的某种特权,控制数据操作事物的发生时间及效果,对数据库进行监视等。
嵌入式和动态SQL规则:嵌入式和动态SQL用于某种通用的高级程序设计语言中,以便适应较为复杂的应用。
SQL调用和会话规则:SQL调用包括SQL例程和调用规则,以便提高SQL 的灵活性,有效性,共享性,使SQL具有更多的高级语言的特性。
(3)SQL语句的类型根据SQL的组成及其功能,SQL语句可以分为以下类型:SQL定义语句:用来创建,修改,删除数据库模式及其对象。
SQL数据语句:用来完成数据库的查询,插入,删除,更新操作。
SELETE,INSERT,DELETE,UPDATE。
SQL事物的控制语句:用来完成数据库授权,事物管理以及控制SQL数据集的运行。
GRANT,REVOKE,START TRANSACTION,COMMIT,ROBACK,SA VEPOINT SQL连接,会话和诊断语句:用来创建数据库连接,为SQL会话设置参数,获取诊断等。
SET CONNECTION,SET ZONE,SET SESSION AUTHORIZATION1.14 SQL 的数据类型SQL的数据类型可分为如下三类:预定义数据类型构造数据类型用户定义数据类型预定义数据类型又可分为数值型,字符串型,位串型,时间型和布尔型。
而构造数据类型是由特定的保留字和预定义数据类型构造而成,如用“REF”定义的引用类型,用“ROW”定义的行类型,用“ARRAY”定义的聚合数据类型等。
用户定义数据类型是一个对象类型,它由用户按照一定的规则用预定义数据类型组合定义的用户自己专用的数据类型。
1.2 SQL的数据定义SQL的数据定义功能主要包括对SQL模式,基本表,视图,索引的定义和删除以及对基本表的修改和对域的定义等。
模式CREATE SCHEMA DROP SCHEMA基本表CREATE TABLE DROP TABLE ALTER TABLE 视图CREATE VIEW DROP VIEW索引CREATE INDEX DROP INDEX域CREATE DOMAIN DROP DOMAIN1.21 SQL的模式SQL模式是其所属模式对象的集合,SQL模式对象包括表,视图,域,约束,特权,字符集,排序,翻译,用户定义类型,例程及序列等。
(1)定义SQL模式SQL模式由模式名和模式拥有者的用户名或帐号确定。
定义了一个SQL模式,就是定义了一个存储空间,在该空间中存储的数据库对象全体构成该模式对应的SQL数据库。
CREA TE SCHEMA <模式名> AUTHORIZATION <用户名>[<CREATE DOMAIN 字句>|<CREATE TABLE 字句>|<CREATE VIEW 字句>|……](2) 删除SQL模式DROP SCHEMA <模式名> {CASCADE|RESTRICT};当用DROP SCHEMA 语句删除数据库模式时,可以选用以下的两种方式:选用CASCADE(级联方式),则删除数据库模式时,该数据库模式连同其下属的模式对象全部被删除。
选用RESTRICT(约束方式),则删除数据库模式时,该数据库模式下属的模式对象预先已全部删除,才能执行对该数据库模式的删除,否则拒绝删除。
1.22 SQL基本表(1)创建基本表CREATE TABLE [模式名。
] <表名> (<列名><数据类型> [列完整性约束][,<列名><数据类型>[列完整性约束]]…….[,<表级完整性约束>])[其他参数];Primary key ()Foreign key () references ()(2)扩充和修改基本表ALTER TABLE <表名>[ADD <列名><数据类型>[<完整性约束>]][ADD <完整性约束>][DROP<列名>{CASCADE|RESTRICT}][DROP<完整性约束>][MODIFY <列名><数据类型>];(3)删除基本表DROP TABLE<表名>[CASCADE|RESTRICT]1.23 SQL的索引(1)创建索引CREATE [UNIQUE][CLUSTER] INDEX <索引名> ON <表名> (<列名>[<顺序>[,<列名>[<顺序>]]….])每个列名后面还可以用顺序指定索引值的排列顺序,包括ASC(升序),DESC (降序)两种,默认是升序。
UNIQUE表示此索引的每一个索引值只对应唯一的数据CLUSTER表示要建立的索引是聚簇索引聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。
(强制)例如:CREATE CLUSTER INDEX name_index ON course (cname) 则COUNT 表中的记录将按照cname值的升序存放。
一个表只能有一个聚簇索引。
(2)删除索引DROP INDEX [ON <表名>]<索引名>;删除索引时,系统会同时从数据字典中删去有关该索引的描述。
1.24 SQL的域SQL的域是一种特殊的数据类型,用于建立用户自定义的数据类型,它由带有域约束的数据类型的默认值一起构成。
定义域个格式为:CREATE DOMAIN <域名> [AS] <数据类型> [DEFAULT<默认值>][CHECK<约束条件>];如:CREATE DOMAIN item_id CHAR(6) DEFAULT 0 CHECK (V ALUE IS NOT NULL);删除索引的格式为:DROP DOMAIN <域名>1.3 SQL的数据查询SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>]…FROM <基本表名或视图名>[,<基本表名或视图名>]…[WHERE<条件表达式>][GROUP BY<列名1>[HA VING<条件表达式>]][ORDER BY <列名2>[ASC|DESC]]1.31 简单查询查询表中的若干列SELECT * FROM student;查询经过计算的值SELECT sname,2008-age FROM sc;消除取值重复的行SELECT DISTINCT s# FROM sc;条件查询使用WHERE字句实现条件查询比较=,>,<,>=,<=,!=,!>,!<,确定范围BETWEEN AND; NOT BETWEEN AND确定集合IN,NOT IN字符匹配LIKE NOT LIKE空值IS NULL IS NOT NULL多重条件AND ; OR使用BETWEEN 的查询SELECT sname,age FROM studentWHERE age BETWEEN 20 AND 22使用LIKE的查询SELECT * FROM studentWHERE sname LIKE ‘刘%’_ 表示一个字符% 表示任意个字符涉及空值NULL的查询SELECT sname,s# FROM sc WHERE grade IS NULL;对查询结果排序SELECT * FROM student ORDER BY dept,age DESC;按照dept升序排列,dept相同时按照age降序排列使用聚集函数使用在select后面SQL 提供的聚集函数主要有:COUNT ([DISINCT|ALL]*) 统计元组个数COUNT ([DISINCT|ALL]<列名>) 统计一列值的个数SUM ([DISINCT|ALL]<列名>) 计算一列值的总和A VG ([DISINCT|ALL]<列名>) 计算一列值的平均值MAX ([DISINCT|ALL]<列名>) 求一列值中的最大值MIN ([DISINCT|ALL]<列名>) 求一列值中的最小值SELECT COUNT (*) FROM student对查询结果分组GROUP BY子句将查询结果表按某一列或多列值分组,值相等的为一组SELECT * FROM scGROUP BY s# HA VING COUNT (*) >2WHERE子句与HA VING短语的区别在于作用对象不同,WHERE子句作用于基本表或视图,HA VING短语作用于组1.32 连接查询若查询通过连接从多个表中取得数据,则称之为连接查询。