




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.1.1SQL语言的发展SQL语言对关系数据库理论的发展和商用RDBMS的研制、使用和推广等起着重要的作用。它的发展历程为:1)1970:E.J.Codd发表了关系数据库理论2)1974-1979:IBM以Codd的理论为基础开发了“Sequel”,并重命名为“结构化查询语言”;3)1979:Oracle发布了商业版结构化查询语言;4)1981-84:出现了其他商业版本,分别来自IBM(DB2),DataGeneral,RelationalTechnology(INGRES);
3.1.1SQL语言的发展5)结构化查询语言/86:6)结构化查询语言/89:7)结构化查询语言;8)1997:成为动态网站的后台支持;9)结构化查询语言/2003:包含了XML相关内容,自动生成列值(ColumnValues);10)结构化查询语言/2006:定义了结构化查询语言与XML(包含XQuery)的关联应用;11)2006:Sun公司将以结构化查询语言基础的数据库管理系统嵌入JavaV
63.1.2SQL语言的特点综合统一:SQL语言集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。高度非过程化:SQL语言只要提出“做什么”,无须了解存取路径。存取路径的选择以及SQL的操作过程由系统自动完成.面向集合的操作方式以同一种语法结构提供多种使用方式:自含式:将SQL作为操作命令独立使用;宿主式:将SQL嵌入到高级语言中使用。3.1SQL语言的基本概念和特点3.1.1SQL语言的发展 3.1.2SQL语言的特点
3.1.3SQL语言的基本概念 3.1.2SQL语言的特点语言简洁:由于SQL是一种结构化的查询语言,它的结构、语法、词汇等本质上都是精确的、典型的英语,这样就使得用户不需要任何编程经验就可以读懂它、使用它,容易学习和使用。其核心功能只使用了11个动词,如表3.7所示。本章节将重点讲解前面9个动词的语法和作用。3.1SQL语言的基本概念和特点3.1.1SQL语言的发展 3.1.2SQL语言的特点 3.1.3SQL语言的基本概念
3.1.3SQL语言的基本概念支持SQL的RDBMS同样支持关系数据库三级模式结构,如图3-1所示。用户可以用SQL对基本表和视图进行查询或其他操作。图3-1SQL对关系数据库模式的支持3.2SQL数据定义3.2.1数据库的定义3.2.2基本表的定义 3.2.3索引的定义 3.2.1数据库的定义1.
创建数据库创建数据库常用的语法格式为:CREATEDATABASEdatabase_name
[ON
[PRIMARY](
NAME=logical_file_name,
FILENAME='os_file_name'
[,SIZE=size]
[,MAXSIZE={max_size|UNLIMITED}]
[,FILEGROWTH=growth_increment])[,...n]
[LOGON[PRIMARY](
NAME=logical_file_name,
FILENAME='os_file_name'
[,SIZE=size]
[,MAXSIZE={max_size|UNLIMITED}]
[,FILEGROWTH=growth_increment])[,...n]3.2.1数据库的定义2. 更改数据库数据库创建后可以通过SQL语句进行修改,如重命名数据库、扩大数据库、修改数据库文件、管理数据库文件组。语法为:ALTERDATABASEdatabase_name{ADDFILE<filespec>[,...n][TOFILEGROUP{filegroup_name|DEFAULT}]|ADDLOGFILE<filespec>[,...n]|REMOVEFILElogical_file_name|MODIFYFILE<filespec>|MODIFYname=new_datatabase_name|ADDFILEGROUP=filegroup_name|MODIFYfilegroup=filegroup_nameDEFAULT|REMOVEfilegroup=filegroup_name}3.2.1数据库的定义3. 删除数据库删除数据库的语法为:DROPDATABASEdatabase_name3.2SQL数据定义3.2.1数据库的定义3.2.2基本表的定义
3.2.3索引的定义 3.2.2基本表的定义1. 创建基本表创建表的语法为:CREATETABLE<表名>
(<列名><数据类型>[<列级完整性约束条件>][,<列名><数据类型>[<列级完整性约束条件>]]…[,<表级完整性约束条件>])
注:如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。3.2.2基本表的定义2. 修改基本表ALTERTABLE修改表是指修改表的结构,包括修改列、增加列、删除列、增加约束、删除约束等。修改表的语法为:ALTERTABLE<表名>[ADD<新列名><数据类型>[完整性约束]][DROPCOLUMN<列名>][ADDCONSTRAINT<完整性约束名>[完整性约束]][DROP<完整性约束名>][ALTERCOLUMN<列名><数据类型>]3.2.2基本表的定义3.删除基本表删除基本表的语法为:DROPTABLE<表名>3.2SQL数据定义3.2.1数据库的定义3.2.2基本表的定义 3.2.3索引的定义
3.2.3索引的定义索引可以加快查询速度,加强行的唯一性。用户可以根据实际应用的需要,在基本表上建立一个或多个索引,以提供多种存取路径,加快查询速度。建立和删除索引一般是由数据库管理员DBA或数据库拥有者DB_Owner负责完成。系统在存取数据时会自动选择合适的索引作为存取路径,用户不必也不能选择索引。SQLServer中的索引主要包括:1)主码索引:2)唯一索引(Unique)3)聚簇索引(Clustered)4)非聚簇索引(NonClustered)3.2.3索引的定义1.创建索引创建索引的语法为:CREATE[Unique][Clustered|NonClustered]INDEX<索引名>ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…);索引可以建在该表的一列或多列上,各列名之间用逗号分隔。每个<列名>后面还可以用<次序>指定索引值的排列次序,包括ASC(升序)和DESC(降序)两种,缺省值为ASC。3.2.3索引的定义2.删除索引删除索引的语法为:DROPINDEX<表名>.<索引名>删除索引时,系统会从数据字典中删去有关该索引的描述。3.3SQL数据查询3.3.1单表查询
3.3.2连接查询 3.3.3嵌套查询 3.3.4集合查询 3.3SQL数据查询SQL数据查询是数据库的核心操作。SQL提供SELECT语句进行数据库的查询,该语句灵活、方便,简单易学。其一般语法格式为:SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]…FROM<表名或视图名>[别名][,<表名或视图名>[别名]]…[WHERE<条件表达式>][GROUPBY<列名1>[HAVING<条件表达式>]][ORDERBY<列名2>[ASC|DESC]3.3SQL数据查询它的执行方式是:1)根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的记录,再按SELECT子句中的目标列表达式,选出记录中的属性值形成结果表。2)如果有GROUPBY子句,则将结果按<列名1>的值进行分组,该属性列值相等的记录为一组。通常会在每组中使用聚合函数求解统计数据。如果GROUPBY子句带HAVING短语,则只有满值指定条件的组才能被查询出来。3)如果有ORDERBY子句,则结果表会按照<列名2>的值升序或降序排序。3.3.1单表查询单表查询是指查询的对象仅涉及到一张表。1.选择表中的若干列1)查询指定列2)查询所有列:在SELECT关键字后面列出所有列名可以将以<目标列表达式>指定为*3)查询经过计算的值SELECT子句的<目标列表达式>不仅可以是表中的属性列,还可以是算术表达式、字符串常量、函数、列别名。3.3.1单表查询2.选择表中的若干记录1)消除取值重复的行:DISTINCT2)查询满足条件的记录:查询条件是通过WHERE子句实现的,常用的查询条件如表3-9所示:3.3.1单表查询3.对查询结果排序:ORDERBY子句ORDERBY子句可以将查询结果按一个或多个属性列排序,排序方式有升序(ASC)和降序(DESC),缺省值为升序。当排序列含空值时,按升序(ASC)排列,空值显示在记录最后,若按降序(DESC)排列,空值显示在最前。3.3.1单表查询3.对查询结果分组统计:GROUPBY子句GROUPBY子句将查询结构按指定的一列或多列值分组,值相等的为一组。对查询结果分组是为了细化聚集函数的作用对象。如果未对查询结果分组,聚集函数将作用于整个查询结果。对查询结果分组后,聚集函数将分别作用于每个组,每个组返回一个函数值。常用的聚集函数包括:计数:COUNT([DISTINCT|ALL]*);
COUNT([DISTINCT|ALL]<列名>)计算总和:SUM([DISTINCT|ALL]<列名>)
计算平均值:AVG([DISTINCT|ALL]<列名>)最大最小值:MAX([DISTINCT|ALL]<列名>);
MIN([DISTINCT|ALL]<列名>)3.3SQL数据查询3.3.1单表查询 3.3.2连接查询
3.3.3嵌套查询 3.3.4集合查询 3.3.2连接查询当查询涉及两个以上的表,称为连接查询。连接查询时关系数据库中最主要、最重要的查询。包括等值查询、自然连接查询、非等值连接查询、自身连接查询、外连接查询和复合条件连接查询等。语法格式为:[<表1>.]<列名1><比较运算符>[<表2>.]<列名2>[<表1>.]<列名1>BETWEEN[<表2>.]<列名2>AND[<表名2>.]<列名3>连接条件中的各连接字段类型必须是可比的,但名字不必是相同的。3.3.2连接查询1.连接操作的执行过程的方法1)嵌套循环法(NESTED-LOOP)2)排序合并法(SORT-MERGE)(常用于=连接)3)索引连接(INDEX-JOIN)3.3.2连接查询2.等值与非等值连接查询1)等值连接:连接运算符为“=”2)非等值连接:连接运算符为“>、<、>=、<=、<>”等。3.3.2连接查询3.自身连接自身连接实现表与其自己的连接,此时需要给表起别名以示区别。由于所有属性名都是同名属性,因此必须使用别名前缀。3.3.2连接查询4.外连接普通连接操作只输出满足连接条件的记录,连接的表中所有不满足连接条件的记录均不显示。外连接操作可以指定某张表为连接主体,将主体表中不满足连接条件的记录一并输出。常用的外连接有:1)左外连接:列出左边关系中所有的记录。2)右外连接:列出右边关系中所有的记录。3)全连接(fulljoin)4)内连接(innerjoin)5.复合条件连接复合条件连接是指WHERE子句中含多个连接条件。3.3SQL数据查询3.3.1单表查询 3.3.2连接查询 3.3.3嵌套查询
3.3.4集合查询 3.3.3嵌套查询一个SELECT-FROM-WHERE语句称为一个查询块,将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询。层层嵌套方式反映了SQL语言的结构化。3.3.3嵌套查询SQL嵌套查询有两种:1)不相关子查询:即子查询的查询条件不依赖于父查询。它的执行方式是:由里向外逐层处理。即每个子查询在上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件。2)相关子查询:即子查询的查询条件依赖于父查询。它的执行步骤是:首先取外层查询中表的第一条记录,根据它与内层查询相关的属性值处理内层查询,若WHERE子句返回值为真,则取此记录放入结果表;然后再取外层表的下一条记录进行同样的操作,重复这一过程,直至外层表全部检查完为止。3.3.3嵌套查询1.带有IN谓词的子查询此查询为不相关子查询,执行过程为:1)首先执行子查询①,从Provider表中找出“浙江康恩贝”的供应商代码为S003;2)然后执行子查询②,在PM表中找出S003供应的药品代码;3)最后执行最外层查询③,从Medicine表中查询MedicineCode和MedicineName。
3.3.3嵌套查询3.带有EXISTS谓词的子查询EXISTS谓词代表存在量词
。带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。使用存在量词EXISTS后,若内层查询结果非空,则外层的WHERE子句返回真值;若内层查询结果为空,则外层的WHERE子句返回假值。由EXISTS引出的子查询,其目标列表达式通常都用*或某个常量如1,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义3.3.3嵌套查询3.带有EXISTS谓词的子查询与EXISTS相对应的是NOTEXISTS谓词。使用存在量词NOTEXISTS后,若内层查询结果非空,则外层的WHERE子句返回假值,若内层查询结果为空,则外层的WHERE子句返回真值。一些带EXISTS或NOTEXISTS谓词的子查询不能被其他形式的子查询等价替换。但是所有带IN谓词、比较运算符的子查询都能用带EXISTS谓词的子查询等价替换,因此实际应用很广泛。SQL中没有全称量词(FORALL),经常把带有全称量词的谓词转换为等价的带有存在量词的谓词。3.3SQL数据查询3.3.1单表查询 3.3.2连接查询 3.3.3嵌套查询 3.3.4集合查询
3.3.4集合查询集合查询是指在某些应用中,查询结果需要通过多条SELECT语句从一个或多个表中来获取,查询最终结果是多条SELECT语句查询结果的汇总数据集。集合查询可以看作是数据的垂直联接,而前面介绍的多表联接查询可以看作是数据的水平联接。SQL提供UNION、INTERSECT和EXCEPT运算符来实现集合查询。这三个查询聚集运算符可以满足不同的需要,但都要求每条SELECT语句生成的数据集中列的个数、列的数据类型和顺序必须相同。3.3.4集合查询1.UNIONUNION是一种并集运算,可以将两个以上的查询结果合并成一个结果,并在后续的结果集中去除前面结果集中已有的数据行。UNION将多个查询结果合并起来时,系统自动去掉重复记录。如果需要保留所有的重复数据,可以使用UNIONALL。3.3.4集合查询2.INTERSECTINTERSECT可以返回多条查询语句中都包含的非重复数据
3.EXCEPTEXCEPT可以比较左右两个查询结果集的差异,并从左侧的查询结果集中返回在右侧结果集找不到的数据,即从左侧的结果集中减去右侧结果集中相同的数据后得到的结果。3.4SQL数据更新3.4.1插入数据 3.4.2更新数据3.4.3删除数据
3.4.1插入数据SQL插入数据有两种方式:1)插入一条记录;2)插入子查询结果,可以一次插入多个记录。1.插入一条记录语法格式为: INSERT INTO<表名>[(<属性列1>[,<属性列2>…)] VALUES(<常量1>[,<常量2>]…)注:VALUES子句中提供的值必须与INTO子句中提供的列的类型和列的个数匹配。3.4.1插入数据2.插入子查询结果语法格式为:INSERTINTO<表名>[(<属性列1>[,<属性列2>…)]
子查询注:子查询中的SELECT子句目标列必须与提供的列的类型和列的个数匹配。3.4SQL数据更新3.4.1插入数据 3.4.2更新数据3.4.3删除数据
3.4.2更新数据更新数据的语法格式:UPDATE<表名>SET<列名>=<表达式>[,<列名>=<表达式>]…[WHERE<条件>]数据修改有三种方式:修改某一条记录的值修改多条记录的值带子查询的修改语句3.4SQL数据更新3.4.1插入数据 3.4.2更新数据3.4.3删除数据
3.4.3删除数据删除数据的语法格式:DELETEFROM<表名> [WHERE<条件>]删除数据有三种方式:删除某一条记录的值删除多个记录的值带子查询的删除语句3.5视图3.5.1视图的定义
3.5.2视图的查询 3.5.3视图的更新 3.5.4视图的作用3.5.1视图的定义1. 创建视图
创建视图的语法为:CREATEVIEW<视图名>[(<列名>[,<列名>]...)]AS<子查询>[WITHCHECKOPTION]其中:<子查询>可以是任意查询语句,但不允许含有ORDERBY子句。[WITHCHECKOPTION]选项表示当对视图进行UPDATE、INSERT和DELETE操作时,要保证更新、插入或删除的行满足视图定义中的子查询的条件。3.5.1视图的定义1. 创建视图
(1)其中某个目标列不是单纯的属性名,而是集函数或列表达式。(2)多表连接时选出了几个同名列作为视图的字段。(3)需要在视图中为某个列启用新的更合适的名字。在SQLServer中创建视图时,CREATEVIEW必须是批查询中的第一条语句。3.5.1视图的定义2.修改视图修改视图的语法为:ALTERVIEW<视图名>[(<列名>[,<列名>]...)]AS<子查询>[WITHCHECKOPTION]修改视图并不会影响数据表所涉及的数据,但是视图定义的更改,可能会导致依赖于此视图的相关数据库对象的执行失败。3.5.1视图的定义3.删除视图删除视图的语法为:DROPVIEW<视图名>删除视图同样不会影响影响原来的数据,但是一个视图被删除后,引用此视图的其它数据库对象可能将会失效或执行错误。因此在确认删除之前,应查看视图的依赖关系窗口,确认是否有数据库对象依赖于将被删除的视图,再做决定3.5视图3.5.1视图的定义 3.5.2视图的查询
3.5.3视图的更新 3.5.4视图的作用3.5.2视图的查询3.5.2视图的查询视图也是表,因此其查询方式与查询表的方式其实是一样的。可以在单个视图上查询,也可以和其他基本表一起使用,实现连接查询或嵌套查询。3.5视图3.5.1视图的定义 3.5.2视图的查询 3.5.3视图的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 可持续纺织品发展趋势试题及答案
- 广告设计师效果反馈机制试题及答案
- 机器人维修试题及答案
- 南京预防接种试题及答案
- 点胶机考试题及答案
- 助听器四级试题及答案
- 文化适应性营销的实践案例分析试题及答案
- 掌握广告设计师考试的重点试题及答案
- 2024年纺织行业市场分析工具试题及答案
- 手工艺考研试题及答案
- 邻水国有资产经营管理集团有限公司2025年公开考试招聘工作人员(8人)笔试参考题库附带答案详解
- 中国古建筑文化与鉴赏智慧树知到期末考试答案章节答案2024年清华大学
- 30题纪检监察位岗位常见面试问题含HR问题考察点及参考回答
- 孤独症儿童评估与诊断
- 国开电大《C语言程序设计》形考任务2答案
- 物业保洁作业指导书(三甲大型医院类)
- 2022年上海奉贤经济发展有限公司招聘笔试题库及答案解析
- 混凝土氯离子含量试验检测记录表(选择性电极法)
- 纳税实务(第三版)项目一纳税基础知识
- DB23∕T 440-1996 柞蚕生产技术规程
- 药物溶解与溶出及释放-精品医学课件
评论
0/150
提交评论