第三章关系数据库标准语言SQLSQL(StructuredQueryLanguage)语言是1974年由Boyce和Chamberlin提出的。1975年~1979年IBM公司SanJoseResearchLaboratory研制了著名的关系数据库管理系统原型SystemR并实现了这种语言。1986年10月美国国家标准局(AmericanNationalStandardlnstitute,简称ANSl)的数据库委员会X3H2批准了SQL作为关系数据库语言的美国标准。同年公布了SQL标准文本(简称SQL-86)。1987年国际标准化组织(InternationalOrganizationforStandardization,简称ISO)也通过了这一标准。于1989年公布了SQL-89标准,1992年又公布了SQL-92标准。目前ANSI新的标准SQL-99,亦称SQL3。SQL是一种介于关系代数与关系演算之间的结构化查询语言,其功能并不仅仅是查询。SQL是一个通用的、功能极强的关系数据库语言。3.1SQL概述3.1.1SQL的特点SQL语言集数据查询(DataQuery)、数据操纵(DataManipulation)、数据定义(DataDefinition)数据控制(DataControl)一、综合统一•SQL语言则集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一.•在关系模型中实体和实体间的联系均用关系表示,这种数据结构的单一性带来了数据操作符的统一,查找、插入、删除、修改等每一种操作都只需一种操作符,从而克服了非关系系统由于信息表示方式的多样性带来的操作复杂性。二、高度非过程化三、面向集合的操作方式四、以同一种语法结构提供两种使用方式SQL语言既是自含式语言,又是嵌入式语言五、语言简捷,易学易用3。1。2SQL语言的基本概念SQL语言支持关系数据库三级模式结构3.2数据定义3.2.1定义、删除与修改基本表CREATETABLE语句:•其中:表名是所要定义的基本表的名字,它可以由一个或多个属性(列)组成。•建表的同时通常还可以定义与该表有关的完整性约束条件二、修改基本表ALTERTABLE语句修改基本表,其一般格式为:ADD子句用于增加新列和新的完整性约束条件,DROP子句用于删除指定的完整性约束条件,MODIPY子句用于修改原有的列定义,包括修改列名和数据类型。三、删除基本表3.2.2建立与删除索引一、建立索引•索引可以在一列或多列上建立,各列名之间用逗号分隔。•每个列名后面还可以用次序指定索引值的排列次序,可选ASC(升序)或DESC(降序),缺省值为ASC。•UNIQUE表明此索引的每一个索引值只对应唯一的数据记录。CLUSTER表示要建立的索引是聚簇索引。所谓聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。CREATECLUSTERINDEXStusnameONStudent(Sname):二、删除索引在SQL语言中,删除索引使用DROPINDEX语句:DROPINDEX索引名;例7删除Student表的Stusname索引。DROPINDEXStusname;3.3查询SQL语言提供了SELECT语句其一般格式为:3.3.1单表查询一、选择表中的若干列1.查询指定列2.查询全部列两种方法:(1)一种方法就是在SELECT关键字后面列出所有列名。(2)如果列的显示顺序与其在基表中的顺序相同,也可以简单地将目标列表达式指定为*。3.查询经过计算的值对于上例,可以定义如下列别名:二、选择表中的若干元组1.消除取值重复的行2.查询满足条件的元组(2)确定范围BETWEEN….AND…..和NOTBETWEEN…..AND…可以用来查找属性值在(或不在)指定范围内的元组,其中BETWEEN后是范围的下限(即低值),AND后是范围的上限(即高值)。(3)确定集合(4)字符匹配谓词LIKE可以用来进行字符串的匹配。其一般语法格式如下:[NOT]LIKE,匹配串,[ESCAPE,换码字符,](1)其含义是查找指定的属性列值与匹配串相匹配的元组。(2)匹配串可以是一个完整的字符串,也可以含有通配符%和_。其中:•%(百分号)代表任意长度(长度可以为0)的字符串。•_(下横线)代表任意单个字符。(5)涉及空值的查询(6)多重条件查询•逻辑运算符AND和OR可用来联结多个查询条件。•AND的优先级高于OR•可以用括号改变优先级。三、对查询结果排序用户可以用ORDERBY子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,缺省值为升序。对于空值,若按升序排,含空值的元组将最后显示。若按降序排,空值的元组将最先显示。