vf关系数据库标准语言SQL.ppt_第1页
vf关系数据库标准语言SQL.ppt_第2页
vf关系数据库标准语言SQL.ppt_第3页
vf关系数据库标准语言SQL.ppt_第4页
vf关系数据库标准语言SQL.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 第4章关系数据库标准语言SQL 目录 上一页 下一页 退出 2 本章要点 4 1SQL语言的基本概述4 2数据定义4 3数据操纵4 4数据管理4 5SQL中的数据查询语句 3 1 综合统一 一体化的语句 SQL语言集数据定义 DDL 数据操纵 DML 数据管理 DCL 的功能于一体 语言风格统一 可以独立完成数据库的全部操作 包括定义关系模式 录入数据及建立数据库 查询 更新 维护数据 数据库的重新构造 数据库安全性等一系列操作的要求 为数据库应用系统开发者提供了良好的环境 2 高度非过程化3 以同一种语法结构提供两种使用方式 命令方式 程序方式 4 语言简洁 易学易用 4 1 1SQL语言的特点 4 4 1 2SQL语言的基本概念SQL语言支持关系型数据库的三级模式结构 其中外模式对应于视图 View 和部分基本表 BaseTable 模式对应于基本表 内模式对应于存储文件 基本表是本身独立存在的表 在SQL语言中一个关系对应一个表 一些基本表对应一个存储文件 一个表可以带若干索引 索引存放在存储文件中 存储文件的逻辑结构组成了关系型数据库的内模式 而存储文件的物理文件结构是任意的 视图是从基本表或其他视图中导出的表 它本身不独立存储在数据库中 也就是说数据库只存放在视图的定义而不存放视图对应的数据 这些数据仍存放在导出视图的基本表中 因此视图是一个虚表 5 数据定义语言DDL用于执行数据定义的操作 如创建或删除表 索引和视图之类的对象 由CREATE DROP ALTER命令组成 完成数据库对象的建立 CREATE 删除 DROP 和修改 ALTER 4 2 1定义 创建 表 格式 CREATETABLE 完整性约束 NULL NOTNULL 功能 定义 也称创建 一个表 4 2数据定义 6 例4 1 创建一个表STUD 学生信息表 它由以下字段组成 学号 C 10 姓名 C 8 性别 C 2 班级名 C 10 系别代号 C 2 地址 C 50 出生日期 D 是否团员 L 备注 M CREATETABLESTUD 学号C 10 姓名C 10 性别C 2 班级名C 10 系别代号C 2 地址C 50 出生日期D 是否团员L 备注M 照片G LISTSTRUCTURE 例4 2 创建一个表SC 课程成绩表 它由以下字段组成 学号 C 10 课程号 C 2 CREATETABLESC 学号C 10 课程号C 2 LISTSTRUCTURE 7 格式 ALTERTABLE ADD 完整性约束 NULL NOTNULL DROP 完整性约束 MODIFY 功能 修改表结构 说明 ADD子句用于增加指定表的字段变量名 数据类型 宽度和完整性约束条件 DROP子句用于删除指定的的完整性约束条件 MODIFY子句用于修改原有的字段变量的值 例4 3 在课程成绩表SC中 增加一个成绩字段变量 N 3 ALTERTABLESCADD成绩N 3 LISTSTRUCTURE 4 2 2修改表 8 格式 DROPDATABASE 功能 删除指定数据库的结构和数据 说明 谨慎使用 4 2 4删除表 格式 DROPTALBE 功能 删除指定表的结构和内容 包括在此表上建立的索引 说明 如果只是想删除一个表中的所有记录 则应使用DELETE语句 4 2 3删除数据库 9 数据操纵语言是完成数据操作的命令 一般分为两种类型的数据操纵 它们统称为DML 数据检索 常称为查询 寻找所需的具体数据 数据修改 添加 删除和改变数据 数据操纵语言一般由INSERT 插入 DELETE 删除 UPDATE 更新 SELETE 检索 又称查询 等组成 由于SELETE比较特殊 所以一般又将它以查询 检索 语言单独出现 4 3数据操纵 10 格式1 INSERTINTO VALUES 格式2 INSERTINTOFROMARRAY FROMMEMVAR 功能 在指定的表文件末尾追加一条记录 格式1用表达式表中的各表达式值赋值给中的相应的各字段 格式2用数组或内存变量的值赋值给表文件中各字段 说明 如果某些字段名在INTO子句中没有出现 则新记录在这些字段名上将取空值 或默认值 但必须注意的是 在表定义说明了NOTNULL的字段名不能取空值 4 3 1插入记录 11 指定表文件中的字段 缺省时 按表文件字段的顺序依次赋值 指定要追加的记录各个字段的值 例4 4 在表文件STUD的末尾追加三条记录 用表达式方式追加第一条记录 INSERTINTOSTUD 学号 姓名 性别 班级名 系别代号 地址 出生日期 是否团员 VALUES 011110 李建国 男 计0121 01 湖北武汉 09 28 02 T 12 DIMENSIONDATA 8 DATA 1 011103 DATA 2 李宁 DATA 3 女 DATA 4 电0134 DATA 5 02 DATA 6 江西九江 DATA 7 05 06 85 DATA 8 F INSERTINTOSTUDFROMARRAYDATA 用数组方式追加第二条记录 13 学号 011202 姓名 赵娜 性别 女 班级名 英0112 系别代号 03 地址 广西南宁 出生日期 02 21 84 是否团员 F INSERTINTOSTUDFROMMEMVARLIST 用内存变量方式追加第三条记录 14 格式 UPDATESET WHERE 功能 更新指定表文件中满足WHERE条件子句的数据 其中SET子句用于指定列和修改的值 WHERE用于指定更新的行 如果省略WHERE子句 则表示表中所有行 说明 更新操作又称为修改操作 例4 5 将成绩表 SC 中 所有课程号为02的成绩各加5分 UPDATESCSET成绩 成绩 5 WHERE课程号 02 4 3 2更新记录命令 15 4 3 3删除记录 格式 DELETEFROMWHERE 功能 从指定的表中删除满足WHERE子句条件的所有记录 如果在DELETE语句中没有WHERE子句 则该表中的所有记录都将被删除 说明 这里的删除是逻辑删除 即在删除的记录前加上一个删除标记 例4 7 删除STUD表中所有性别为男的记录 DELETEFROMSTUD WHERE性别 男 16 数据管理 也称数据控制 语言是用来管理 或控制 用户的访问权限的 由GRANT 授权 REVOTE 回收 命令组成 而VisualFoxPro6没有这种权限管理 4 4数据管理 17 4 5SQL中的数据查询语句 数据库中的数据很多时侯是为了查询的 因此 数据查询是数据库的核心操作 而在SQL语言中 查询语言中有一条查询命令 即SELECT语句 18 4 5 1基本查询语句 格式 SELECT ALL DISTINCT FROM 功能 无条件查询 说明 ALL 表示显示全部查询记录 包括重复记录 DISTINCT 表示显示无重复结果的记录 19 例4 8 显示STUD 学生信息数据表 中的所有记录 SELECT FROMSTUD命令中的 表示输出显示所有的字段 数据来源是STUD表 表中的内容以浏览方式显示 例4 9 显示STUD 学生信息数据表 中的所有的学号及与之对应的姓名 同时能去除重名 SELECTDISTINCT学号 姓名 FROMSTUD 20 例4 10 显示SC 课程成绩表 中的所有记录 并将成绩一项乘以0 7 SELECT学号 课程号 成绩 0 7AS成绩FROMSC 21 4 5 2带条件 WHERE 的查询语句 格式 SELECT ALL DISTINCT FROM WHERE 功能 从一个表中查询满足条件的数据 说明 由一系列用AND或OR连接的条件表达式组成 条件表达式的格式可以是以下几种 22 1 2 3 ALL 4 ANY SOME 5 NOT BETWEENAND 6 NOT EXISTS 7 NOT IN 8 NOT IN 9 NOT LIKE 23 SQL支持的关系运算符如下 例4 11 显示STUD表中所有男生记录的学号 姓名和性别字段值 SELECT学号 姓名 性别 FROMSTUDWHERE性别 男 例4 12 显示STUD表中出生日期在85年之间的学生的学号 姓名 出生日期 SELECT学号 姓名 出生日期 FROMSTUD WHERE出生日期BETWEEN 01 01 85 AND 12 31 85 24 例4 13 显示STUD表中姓李的学生的学号 姓名 出生日期 SELECT学号 姓名 出生日期 FROMSTUD WHERE姓名LIKE 李 25 4 5 3SQL的复杂查询 1 连接查询 说明 在一个数据库中的多个表之间一般都存在着某些联系 在一个查询语句中同时涉及到两个或两个以上的表时 这种查询称之为连接查询 也称为多表查询 在多表之间查询必须处理表与表之间的连接关系 SELECT ALL DISTINCT FROM 表2 WHERE 26 例4 14 查询并显示各个学生的学号 姓名 各科成绩及课程名 SELECTa 学号 a 姓名 b 课程名 c 成绩 FROMSTUDa COURSEb SCc WHEREa 学号 c 学号 AND b 课程号 c 课程号 例4 15 查询并显示各个学生所学课程的情况 SELECTSTUD 学号 STUD 姓名 COURSE 课程名 FROMSTUD SC COURSE WHERESTUD 学号 SC 学号 AND SC 课程号 COURSE 课程号 27 2 连接问题在SQL语句中 在FROM子句中提供了一种称之为连接的子句 连接分为内连接和外连接 外连接又可分为左外连接 右外连接和全外连接 1 内连接内连接是指包括符合条件的每个表的记录 也称之为全记录操作 而上面两个例子就是内连接 例4 16 查询并显示各个学生的学号 所学课程及课程成绩 SELECTsc 学号 COURSE 课程名 SC 成绩 FROMSC COURSE WHERESC 课程号 COURSE 课程号 28 如果采用内连接方式 则命令如下 SELECTa 学号 b 课程名 成绩 FROMSCaINNERJOINCOURSEbONa 课程号 b 课程号将会得到完全相同的结果 2 外连接外连接是指把两个表分为左右两个表 右外连接是指连接满足条件右侧表的全部记录 左外连接是指连接满足条件左侧表的全部记录 全外连接是指连接满足条件表的全部记录 29 3 嵌套查询在SQL语句中 一个SELECT FROM WHERE语句称为一个查询块 将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询或子查询 例4 17 显示 李宁 所在班级的学生名单 SELECT学号 姓名 班级名 FROMSTUD WHERE班级名 SELECT班级名FROMSTUDWHERE姓名 李宁 30 4 分组与计算查询 格式 SELECT ALL DISTINCT FROM WHERE GROUPBY HAVING ORDERBY ASC DESC 功能 包括有排序 函数运算和谓词演算 31 例4 18 按出生日期降序显示STUD表中的学号 姓名 出生日期 SELECT学号 姓名 出生日期 FROMSTUD ORDERBY出生日期DESC 例4 19 按成绩升序显示SC表中的学号 课程号 成绩 SELECT学号 课程号 成绩 FROMSC ORDERBY成绩 32 例4 20 按班级分类显示学生的姓名 课程名 成绩 同一班级按分数排序 SELECTa 姓名 a 班级名 c 课程名 b 成绩 FROMSTUDa SCb COURSEc WHEREa 学号 b 学号ANDb 课程号 c 课程号 ORDERBYa 班级名 b 成绩 例4 21 显示成绩在80至90之间的学号 姓名 课程名和成绩 SELECTa 学号 a 姓名 c 课程名 b 成绩FROMSTUDa SCb COURSEcWHEREa 学号 b 学号ANDb 课程号 c 课程号ANDb 成绩BETWEEN80AND90 33 例4 22 显示计算机系学生的成绩 SELECTa 姓名 a 系别代号 c 课程名 b 成绩 FROMSTUDa SCb COURSEc WHEREa 学号 b 学号ANDb 课程号 c 课程号ANDa 系别代号 01 例4 23 显示各班总人数 SELECT班级名 COUNT 班级名 AS总人数 FROMSTUD GROUPBY班级名 34 例4 24 显示计算机系的学生及所有男学生 SELECT学号 姓名 系别代号 性别 FROMSTUD WHERE系别代号 01 UNION SELECT学号 姓名 系别代号 性别 FROMSTUD WHERE性别 男 例4 25 显示选修了英语或数学科目的学生学号 SELECT学号 课程号FROMSC WHERE课程号 01 UNION SELECT学号 课程号 FROMSC WHERE课程号 02 35 例4 26 显示计算机系男生

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论