关系数据库语言SQL.ppt

上传人:sh****n 文档编号:7446880 上传时间:2020-03-21 格式:PPT 页数:77 大小:462.50KB
返回 下载 相关 举报
关系数据库语言SQL.ppt_第1页
第1页 / 共77页
关系数据库语言SQL.ppt_第2页
第2页 / 共77页
关系数据库语言SQL.ppt_第3页
第3页 / 共77页
点击查看更多>>
资源描述
第四章关系数据库语言SQL 第四章关系数据库语言SQL 4 1SQL简介4 2查询语句4 3数据更新4 4数据定义小结 4 1SQL简介 SQL是结构化查询语言 StructuredQueryLanguage 的缩写 是一种面向关系数据库的国际标准语言 在当前数据库领域中应用最为广泛和成功 美国国家标准局ANSI在1986年将SQL作为关系数据库系统的标准语言 后被国际标准化组织 ISO 采纳为国际标准 现在很多大型数据库都实现了SQL语言 4 1 1SQL语言的发展 SQL的发展历程主要有以下几个阶段 1 1974年由Boyce和Chamberlin提出 当时称为SEQUEL StructuredEnglishQueryLanguage 2 1975 1979年IBM公司对SEQUEL进行了修改 并由SanJoseResearchLaboratory研制了著名的关系数据库管理系统原型SystemR 实现了这种语言 3 1981年IBM推出了商用关系数据库SQL DS 并将其改名为SQL 由于它功能丰富 语言简洁 因此倍受用户及计算机工业界欢迎 被众多计算机公司和软件公司所采用 4 目前SQL语言不仅用于小型数据库如Foxpro Access 而且更广泛用于各种大型数据库 如Sysbase SQLServer Oracle Informix DB2 Ingres等 SQL在发展中经历了一系列标准化过程 1 1982年美国国家标准局 AmericanNationalStandardInstitute 简称ANSI 开始制订SQL标准 2 1986年10月ANSI的数据库委员会X3H2批准了SQL作为关系数据库语言的美国标准 同年ANSI公布SQL语言的第一个标准SQL 86 并于次年由国际标准化组织 InternationalStandardizationOrganization 简称ISO 通过SQL 86标准 3 1989年ISO对SQL 86进行补充 推出SQL 89标准 也称SQL1 4 1992年ISO又推出SQL 92标准 亦称SQL2 5 1999年起ANSI陆续公布增加了面向对象功能的新标准SQL 99 亦称SQL3 的12个标准文本 4 1 2SQL语言的特点 1 非过程化 SQL语言是非过程化语言 在SQL语言中 只要求用户提出 做什么 而无需指出 怎样做 SQL语句操作的过程由系统自动完成 2 一体化 SQL可以操作于不同层次模式 集数据定义语言 DDL 数据操纵语言 DML 数据控制语言 DCL 为一体 用SQL语言可实现DB生命周期的全部活动 其中包括建立数据库 建立用户账号 定义关系模式 查询及数据维护 数据库安全控制等 3 两种使用方式 统一的语法结构 两种使用方式 自含式语言与嵌入式语言自含式方式就是联机交互使用方式 嵌入式方式是指SQL语句嵌入某种高级程序设计语言的程序中 以实现数据库操作 尽管这两种使用方式不同 但SQL语言的语法结构基本是一致的 4 1 3SQL语言的书写准则 遵从某种准则可以提高语句的可读性 通常遵循的准则主要有 SQL语句对大小写不敏感 但关键字常用大写SQL语句可写在一行上 但为便于理解 增强条理性 常习惯于每个字句占用一行关键字不能在行与行之间分开 很少采用缩写形式SQL中的数据项需同时列出时 分隔符用 字符或字符串常量的定界符用单引号 表示 4 2查询语句 4 2 1基本查询4 2 2使用列表达式4 2 3WHERE从句的进一步使用4 2 4数据汇总4 2 5连接查询4 2 6嵌套查询4 2 7联合查询4 2 8使用系统内置函数的查询 SQL的核心是数据查询 对于数据库的查询操作是通过SELECT查询命令实现的 它的基本形式由SELECT FROM WHERE查询块组成 多个查询块可以嵌套执行 总述 SQL查询语句的完整语法描述如下 SELECT ALL DISTINCT FROM WHERE GROUPBY HAVING ORDERBY ASC DESC 指定要显示的属性列 指定查询对象 指定查询条件 查询结果按指定列的值分组 筛选出只有满足指定条件的组 对查询结果表按指列值的升序或降序排序 4 2 1基本查询 最基本的查询就是从指定的表中找出符合条件的记录 这样的查询由SELECT和FROM短语构成无条件查询 或由SELECT FROM和WHERE或其他短语构成条件查询 1 简单的无条件查询设某个数据库中有表stu info 请把该表中的所有记录的所有属性查询出来 SELECT 表示所有字段 是通配符FROMstu info 选定数据库中的表 2 简单的条件查询请查找stu info表中所有的女生的信息 SELECT FROMstu infoWHERExbm 女 设定条件 在SELECT子句中可以决定哪些列出现在结果关系中 这相当于关系代数中的投影运算 具体办法 在SELECT子句之后不是写 而是根据需要列出在FROM子句中声明的诸关系的属性 例 SELECTxh xm 选定字段FROMstu info 选定数据库中的表WHERExbm 女 设定条件 3 查询语句中的投影操作 使用SQL的SELECT可以将查询结果排序 排序的短语是ORDERBY 具体格式如下 SELECT列名1 列名2 FROM表名WHERE条件表达式ORDERBY列名1 ASC DESC 列名2 ASC DESC 按升序 ASC 或降序 DESC 排序 允许按一列或多列排序 4 设定排序条件 下面是使查询结果排序的例子 SELECT 表示所有字段FROMstu info 选定数据库中的表WHERExbm 女 设定条件ORDERBYxh 设定排序字段 在查询过程中经常会出现一些重复记录 例如 SELECTbhFROMstu info 其查询结果将会有多个重复的班级名 显然这种结果不能令人满意 因此需要去掉重复值 此时需要指定DISTINCT短语 SELECTDISTINCTbhFROMstu info这里短语DISTINCT的作用是去掉查询结果中的重复值 执行结果中班级名都不重复 5 限定重复记录 4 2 2使用列表达式 在SQL中 指定列的方法我们学习了以下两种 1 指定列 2 使用通配符 第 3 种是 可用列表达式 来获取经过计算的查询结果 列表达式不仅可以是算术表达式 还可以是字符串常量 函数等 6 计算列值 SELECT 学号 xh 年龄 YEAR GETDATE YEAR CSRQ bhFROMstu info 7 修改查询结果的列标题 1 SELECTYEAR GETDATE YEAR CSRQ AS年龄 nlFROMstu info 2 SELECT学号 xh nlFROMstu info 3 SELECTxh 学号 nlFROMstu info 查询工作的关键就在通过分析怎样把实际问题中的自然语言描述转化为1 从哪个表中查询 即 from子句2 要查询哪些列 即 select子句3 要查询的条件 即 where子句 完成查询工作的三个关键步骤 其中第3步最复杂 4 1 3WHERE从句的进一步使用 常用的查询条件 8 表达式比较如 SELECT FROMstu infoWHEREnl 20 9 确定范围between and 和notbetween and 如 查询考试成绩在60 70之间的学号 课程号 考试成绩 SELECTxh kch kscjFROMxkWHEREkscjBETWEEN60AND70 10 确定集合 IN和NOTIN例 查询复材0108 复材0109班的学生的信息SELECTxh xm xbm bhFROMstu infoWHEREbhIN 复材0108 复材0109 11 字符匹配 NOTLIKE和LIKE与 和 搭配 代表任意长度的字符串 如a b acb addgb等都满足匹配 下横线 代表任意单个字符 例 查询班级名中第1个字为 计 字的学生信息 SELECT FROMstu infoWHEREbhlike 计 例 查询名字中第2个字为 宁 字的学生信息 SELECT FROMstu infoWHERExmlike 宁 例 查询DB Design课程的课程号和学分 SELECTckh kcxfFROMGCourseWHEREkmLIKE DB Design ESCAPE 例 查询以 DB 开头 且倒数第3个字符为i的课程的详细情况 SELECT FROMGCourseWHEREkmLIKE DB i ESCAPE 当用户要查询的字符串本身就含有 或 时 要使用ESCAPE 换码字符 短语对通配符进行转义 12 涉及空值的查询 SELECT FROMstu infoWHEREbhISNULL 13 多重条件查询 用逻辑运算符and和or连接 and的优先级高于or 如 查询应什么班 姓刘的学生 SELECT FROMstu infoWHEREbhlike 应 and姓名like 刘 4 2 4数据汇总 14 聚合函数 聚合函数一览表 例 查询学生总数SELECTcount FROMstu info 例 已知数据库表XK中高等数学课程的代码为090101 查询学生选修高等数学的平均成绩 SELECTavg KSCJ AS高等数学FROMXKWHEREKCH 090101 15 GROUPBY子句 Groupby子句将查询结果表按某一列或多列值分组 值相等的分为一组 如 在表xk中查询各课程编号及相应的选课人数 注 GROUPBY子句中不能使用聚合函数 并且必须在GROUPBY子句中列出SELECT列表中所有的非聚合项 例 在表stu info中查询每个专业的男生 女生人数 在groupby子句后面加WITHROLLUP或WITHCUBE 如果还要显示每个专业的总人数及全体学生总人数 如何实现 SELECTkch count xh FROMxkGROUPBYkch SELECTzyh xbm count as 人数 FROMstu infoGROUPBYzyh xbm 例 查询选修了3门以上课程的学生及选课数 SELECTXH COUNT FROMXKGROUPBYXHHAVING COUNT 3 HAVING短语指定分组或聚合的条件 只有满足条件的分组才被选出来 HAVING一般与GROUPBY子句一起使用 16 HAVING短语 SELECTXH COUNT FROMXKWHERE XHLIKE 2001 GROUPBYXHHAVING COUNT 3 例 查询学号前四位是2001的学生的学号及选课数 having短语指定选择组的条件 只有满足条件的组才被选出来 一般和groupby子句一起使用 where子句从基本表中选择满足条件的元组 而不是指定满足条件的分组 这是二者的根本区别 若一个查询同时涉及两个以上的表 称为连接查询 连接查询是关系数据库中最主要的查询 按连接类型可分为 内连接 外连接和交叉连接 其中内连接又分 等值连接 非等值连接和自然连接 外连接又分 左外连接 右外连接和全外连接等 4 2 5连接查询 连接查询中用来连接两个关系的条件称为连接条件或连接谓词 格式 表名1 列名比较运算符表名2 列名其中比较运算符主要有 当连接运算符为 时 叫等值连接 使用其它运算符称为非等值连接 连接谓词中的列名称为连接字段 例 查询每个学生及其选课情况 SELECT FROMstu info xkWHEREstu info xh xk xh 例 查询应化041班每个学生及其选修课程的情况 SELECTstu info xh stu info xm stu info bh stu info xbm xk kch xk kscjFROMstu info xkWHEREstu info xh xk xhandstu info bh 应化041 复合条件连接 多表查询 涉及两个表以上的查询 SELECTxmFROMstu info xk gcourseWHEREgcourse km 数据库原理 andgcourse kch xk kchandxk xh stu info xh 为了简化 表名可以取别名 且别名只在本次查询有效 增加表别名后的结果 SELECTxmFROMstu infoa xkb gcoursecWHEREc km 数据库原理 andc kch b kchandb xh a xh 例如 查询选修了有机化学这门课程的学生的姓名 下面讨论另一类基于多个关系的查询 这类查询所要求的结果出自一个关系 但相关的条件却涉及多个关系 在前面的例子中 WHERE之后是一个相对独立的条件 这个条件或者为真 或者为假 但是 有时需要用另外的方式来表达检索要求 比如 当检索关系X中的记录时 它的条件依赖于相关的关系Y中的记录属性值 这时使用SQL的嵌套查询功能将非常方便 4 2 6嵌套查询 在SQL语言中 一个select from where语句称为一个查询块 将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询称为嵌套查询 等价形式 SELECTxmFROMstu info xkWHEREstu info xh xk xhandkch 05 SELECTxmFROMstu info 例 在stu info表中查询选修了05号课程的学生姓名 WHERExhIN SELECTxhFROMxkWHEREkch 05 例 查询与刘玉涛在同一个班学习的学生的学号 姓名 班级 SELECTxh xm bhFROMstu infoWHEREbhIN 17 带有in谓词的子查询 18 带有比较运算符的子查询 例 查询与学号是20029001的学生在同一个班学习的学生 按学号排序 SELECTxh xm bhFROMstu infoWHEREbhORDERBYxh SELECTbhFROMstu infoWHERExm 刘玉涛 SELECTbhFROMstu infoWHERExh 20029001 19 带有any或all谓词的子查询 比较子查询通常用到操作符ALL ANY 其通用格式为 ALL ANY 例 查询其他班级中比应化041班某个学生年龄小的那些学生的姓名和年龄 SELECTxm nlFROMstu infoWHEREbh 应化041 andnl any selectnlfromstu infowherebh 应化041 20 带有exists谓词的子查询 EXISTS是测试子查询是否有数据行返回 有则返回TRUE 否则返回FALSE 例 查询选修了高等数学 090101 的学生姓名 性别和班级 SELECTxm xbm bhFROMstu infoWHEREexists select fromxkwherexh stu info xhandkch 090101 例 查询没有选修高等数学 090101 的学生姓名 性别和班级 SELECTxm xbm bhFROMstu infoWHEREnotexists select fromxkwherexh stu info xhandkch 090101 4 2 7联合 集合 查询 select语句的查询结果是元组的集合 所以多个select语句的结果可进行集合操作 集合操作主要包括 并操作UNION 交操作INTERSECT 差操作MINUS标准SQL只提供UNION 其语法格式如下 SELECT 1UNION ALL SELECT 2 如果要将查询的结果保存在当前数据库新建的表NEWSTU中 可以使用INTO子句 SELECT INTONEWSTUFROMaUNIONALLSELECT FROMb 例 查询编号为01的学院的学生及所有学院的本科生SELECT FROMstu infoWHERExsh 01 UNIONSELECT FROMstu infoWHEREpyccm 本科 4 2 8使用系统内置函数的查询 21 数学函数ABS 数字型表达式 RAND 整型表达式 22 字符串处理函数ASCII 字符型 返回表达式最左端字符的ASCII值CHAR 0 255之间的整数 将ASCII转换为字符LEFT 字符型 整型 返回从字符串左边开始指定个数的字符LTRIM 字符型 删除字符串最左边的空格 并返回字符串REPLACE 字符型1 字符型2 字符型3 用3替换1中包含的2 并返回替换后的表达式SUBSTRING express start length 返回express中指定的部分数据STR float exp length decimal 将数字数据转换为字符数据 23 系统函数getdate 返回当前的系统日期和时间year month day 分别返回指定日期的年 月 日cast 表达式AS数据类型 将表达式的值转换为数据类型参数所指定的类型 case函数 一种是简单的CASE函数 另一种是搜索型的CASE函数 简单CASE语法格式 CASE输入表达式WHEN比较表达式THEN结果表达式 ELSE表达式END 搜索CASE语法格式 CASEWHEN条件1THEN表达式1WHEN条件2THEN表达式2 ELSE表达式END 例 在STU INFO中查询03学院学生的学号 姓名 性别 并将性别分别转换成 男生 女生 SELECTXH XM XBM XBM CASE 男 WHENXBMTHEN 男生 ELSE 女生 ENDFROMSTU INFOWHEREXSH 03 例 查询成绩表CS中选修了 数据库技术及应用 课程的学生的学号 姓名 5分制成绩SELECT学号 姓名 5分制成绩 CASEWHEN成绩 60AND成绩 70AND成绩 80AND成绩 90THEN 优秀 ENDFROMCS 4 3数据更新 4 3 1插入数据4 3 2修改数据4 3 3删除数据 4 2 1插入数据 语句格式INSERTINTO VALUES 功能将新元组插入指定表中 1 插入单个元组 例 INSERTINTOstu info xh xm xbm VALUES 2005090209 王东方 男 如果基本表只有上述三个属性 则该句等价于 INSERTINTOstu infoVALUES 2005090209 王东方 男 2 插入子查询结果 例 在STU INFO表中查询出应化041班的学生情况并存放在YINGHUA表中 INSERTINTOyinghuaSELECTxh xm xbm csrqFROMstu infoWHEREbh 应化041 语句格式INSERT INTO 子查询功能 将子查询结果插入指定表中 用以插入批量记录 4 3 2修改数据 语句格式UPDATESET WHERE 功能修改指定表中满足WHERE子句条件的元组 3 修改一个元组的值UPDATEstu infoSETbh 材0169 WHERExh 2005090209 注意 对批量数据的修改 一定把将要修改的记录先查询出来 确认无误后再修改 4 修改多个元组的值UPDATEgcourseSETkcxf 2 5 带子查询的修改语句将选修了高数的学生的成绩加10分UPDATExkSETkscj kscj 10WHEREkch selectkchfromgcoursewherekm 高等数学 4 3 3删除数据 语法格式DELETEFROM WHERE 功能删除指定表中满足WHERE子句条件的元组WHERE子句指定要删除的元组缺省表示要删除表中的所有元组 6 删除一个元组的值DELETEFROMstu infoWHERExh 2006050010 7 删除多个元组的值DELETEFROMstu infoWHEREbh 应0203 删除表中所有数据DELETEFROMstu info 8 带子查询的删除语句将信息学院学生的成绩全部删除DELETEFROMxkWHERE 12 SELECTxshFROMstu infoWHEREstu info xh xk xh 注意 在日常工作中 操作删除语句 一定要先查询要删除的数据 确认无误后再删除 SELECT FROMxkWHERE 12 selectxshfromstu infowherestu info xh xk xh 4 4数据定义 4 4 1定义基本表4 4 2修改基本表4 4 3删除基本表4 4 4视图4 4 5索引 4 4数据定义 4 4 1定义基本表 语句格式 CREATETABLE 所要定义的基本表的名字 组成该表的各个属性 列 涉及相应属性列的完整性约束条件 涉及一个或多个属性列的完整性约束条件 例 建立一个学生表Student 它由学号Sno 姓名Sname 性别Ssex 年龄Sage 所在系Sdept五个属性组成 其中学号不能为空 值是唯一的 并且姓名取值也唯一 CREATETABLEStudent SnoVARCHAR 5 NOTNULLUNIQUE SnameVARCHAR 20 UNIQUE SsexVARCHAR 1 SageINT SdeptVARCHAR 15 字符型长度为5不能为空值取值唯一 字符型长度为20 字符型长度为1 整数 字符型长度为15 常用完整性约束主码约束 PRIMARYKEY唯一性约束 UNIQUE非空值约束 NOTNULL默认值约束 DEFAULT检查约束 CHECK参照完整性约束 FOREIGNKEY REFERENCE 例 建立一个 学生选课 表SC 它由学号Sno 课程号Cno 修课成绩Grade组成 其中 Sno Cno 为主码 CREATETABLESC SnoVARCHAR 5 CnoVARCHAR 3 Gradeint Primarykey Sno Cno 例 创建表n jobsCREATETABLEn jobs job idsmallintIDENTITY 1 1 PRIMARYKEYCLUSTERED job descvarchar 50 NOTNULLDEFAULT 新部门 min lvltinyintNOTNULLCHECK min lvl 12 max lvltinyintNOTNULLCHECK max lvl 250 例 使用表达式 最低分 最高分 2 生成中等分计算列 CREATETABLE得分 最低分int 最高分int 中等分AS 最低分 最高分 2 4 4 2修改基本表 语法格式 ALTERTABLE ALTERCOLUMN ADD 完整性约束 DROP 要修改的基本表ALTERCOLUMN子句 要更改的列 要更改的列不能是数据类型为text image ntext或timestamp等列ADD子句 增加新列和新的完整性约束条件DROP子句 删除指定的完整性约束条件或列名 1 添加列例 向学生表中添加入学时间列 其数据类型为日期型ALTERTABLEstu infoADDrxsjDATETIME 可能破坏已有数据 2 修改列例 将教师表的xb列改为smallint数据类型ALTERTABLEgtechALTERCOLUMNxbsmallint 3 删除列或约束例 将数据库表gtech中的xb列删除ALTERTABLEgtechDROPCOLUMNxb例 删除学生姓名必须取唯一值的约束ALTERTABLEstu infoDROPUNIQUE xm 4 4 3删除基本表 语法格式 DROPTABLE基本表定义一旦删除 表中的数据 表上的索引和视图都将自动被删除删除基本表时 系统会从数据字典中删去有关该基本表及其索引的描述 例 删除EDU D库中的表stu infoDROPTABLEstu info 4 4 4视图 视图是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制 视图是从一个或多个基本表 或视图 导出的表 是个虚表 数据库只存放视图的定义 不存放视图对应的数据 这些数据仍存放在原来的基本表中 所以 视图的数据跟随基本表的数据而变化 视图一旦被定义 就可以被查询 删除 修改及再定义一个新的视图等 视图包含一系列带有名称的列和行数据 这些数据来自定义视图的查询所引用的基表中 并且在引用视图时动态生成 1 定义视图 1 用企业管理器建立视图请同学们上机自己学习建立视图的方法 2 用SQL语句建立视图CREATEVIEW视图名AS WITHCHECKOPTION 其中 WITHCHECKOPTION 表示对视图进行UPDATE INSERT和DELETE操作时要保证更新 插入或删除的行满足视图定义中的条件表达式 A 选择列定义视图可定义一个视图 该视图由表的部分列组成 下例中 视图MyView1包含了employees表中的三个列 CREATEVIEWMyView1ASSELECTlname fnameFROMemployee定义了视图后 可以和表一样 使用SELECT语句访问它 例如 SELECT FROMMyView1 B 基于列的表达式定义视图在定义视图时 除了使用基础表的列外 还可使用基本表的列的表达式 生成自己的列 下例中 视图MyView2的第四列即由表达式计算而来 CREATEVIEWMyView2 xh xm xbm nl ASSELECTxh xm xbm year getdate year csrq FROMstu info C 选择行定义视图可定义一个视图 该视图由表的部分行组成 下例中 视图MyView3只包含employee表中姓名包含sh的行 CREATEVIEWMyView3ASSELECT FROMemployeeWHEREfnameLIKE sh D 选择行和列可定义一个视图 该视图由表的部分行和列联合组成 下例中 视图MyView4只包括三列CREATEVIEWMyView4ASSELECTlname fname pub idFROMemployeeWHEREfnameLIKE sh E 基于多个表定义视图CREATVIEW查询学生选课情况ASSELECTstu info xh stu info xm gcourse kmFROMstu info gcourse xkWHEREstu info xh xk xhandxk kch gcourse kch 2 更新视图更新视图是指通过视图来插入 INSERT 删除 DELETE 修改 UPDATE 数据 由于视图是不实际存储数据的虚表 因此 对视图的更新最终要转换为对基本表的更新 例 在stu info表创建信息学院学生的视图 CREATEVIEWis stuASSELECT FROMstu infoWHERExsh 03 例 现将视图is stu中学号为1998031001的学生的学院代号改为 12 UPDATEis stuSETxsh 12 WHERExh 1998031001 WITHCHECKOPTION 会使记录从视图中消失 要注意这种问题 例 将is stu中学号为1998031001的学生姓名改为 陈明亮 UPDATEis stuSETxm 陈明亮 WHERExh 1998031001 ANDxsh 03 3 管理和删除视图 1 用企业管理器管理 删除视图 上机实验 2 用SQL语言删除视图DROPVIEW例 删除上例中建立的视图is stuDROPVIEWis stu 4 视图的作用实现集中多表查询条件提供了一个简单有效的安全机制 便于数据安全保护便于用户重新组织数据便于数据的交换操作 4 4 5索引 索引是数据库中的一个列表 该列表包含了某个数据表中的一列或几列值的集合 以及这些值的记录在数据表中存储位置的物理地址 索引类似于目录 通过使用索引 在数据库中获取数据的时候 就可以不用扫描数据库中的所有数据记录 这样能够提高系统获取数据的性能 建立索引是加快查询速度的有效手段但索引的建立要占用额外的存储空间 也要更新 建立索引的一般准则 1 经常被查询的列 例如经常在WHERE子句中出现的列 2 ORDERBY子句中使用的列 3 作为主键或外键的列 4 列的值是惟一的列 5 两个或多个列经常同时出现在WHERE子句或连接条件中 下列情况一般不适合建立索引 在查询中很少被引用的列 包含太多重复值的列 例如stu info表中的XB列 只有 男 女 两个值 在此建立索引显然是无意义的 1 建立索引自动创建在创建表时 如果创建了主键 PrimaryKey 或唯一约束 UNIQUE 系统会自动创建一个唯一索引 2 用企业管理器创建上机练习 3 用SQL语句创建 语句格式CREATE UNIQUE CLUSTER INDEXON 用指定要建索引的基本表名字索引可以建立在该表的一列或多列上 各列名之间用逗号分隔用指定索引值的排列次序 升序 ASC 降序 DESC 缺省值 ASCUNIQUE表明此索引的每一个索引值只对应唯一的数据记录CLUSTER表示要建立的索引是聚簇索引 例 为学生 课程数据库中的Student Course SC三个表建立索引 其中Student表按学号升序建唯一索引 Course表按课程号升序建唯一索引 SC表按学号升序和课程号降序建唯一索引 CREATEUNIQUEINDEXStusnoONStudent Sno CREATEUNIQUEINDEXCoucnoONCourse Cno CREATEUNIQUEINDEXSCnoONSC SnoASC CnoDESC 唯一值索引对于已含重复值的属性列不能建UNIQUE索引对某个列建立UNIQUE索引后 插入新记录时DBMS会自动检查新记录在该列上是否取了重复值 这相当于增加了一个UNIQUE约束聚簇索引建立聚簇索引后 基表中数据也需要按指定的聚簇属性值的升序或降序存放 也即聚簇索引的索引项顺序与表中记录的物理顺序一致例 CREATECLUSTERINDEXStu snameONStudent Sname 在Student表的Sname列上建立一个聚簇索引 而且Student表中的记录将按照Sname值的升序存放 2 修改和删除索引 1 使用企业管理器上机练习 2 使用SQL语句删除索引DROPINDEX 删除索引时 系统会从数据字典中删去有关该索引的描述 例 删除Student表的Stu sname索引 DROPINDEXStudent Stu sname 小结 SQL查询语句是本章学习的重点和基础要能够熟练掌握并运用SQL语句
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!