已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第4章 关系数据库标准语言SQL,目 录,上一页,下一页,退 出,2,本 章 要 点,4.1 SQL语言的基本概述 4.2 数据定义 4.3 数据操纵 4.4 数据管理 4.5 SQL中的数据查询语句,3,1综合统一 SQL语言集数据定义(DDL)、数据操纵(DML)、数据管理(DCL)的功能于一体,语言风格统一,可以独立完成数据库的全部操作,包括定义关系模式、录入数据及建立数据库、查询、更新、维护数据、数据库的重新构造、数据库安全性等一系列操作的要求,为数据库应用系统开发者提供了良好的环境。 2高度非过程化 3面向集合的操作方式 4以同一种语法结构提供两种使用方式 5语言简洁,易学易用,4.1.1 SQL语言的特点,4,4.1.2 SQL语言的基本概念 SQL语言支持关系型数据库的三级模式结构。其中外模式对应于视图(View)和部分基本表(Base Table),模式对应于基本表,内模式对应于存储文件。 基本表是本身独立存在的表,在SQL语言中一个关系对应一个表。一些基本表对应一个存储文件,一个表可以带若干索引,索引存放在存储文件中。 存储文件的逻辑结构组成了关系型数据库的内模式。而存储文件的物理文件结构是任意的。 视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是说数据库只存放在视力的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。,5,数据定义语言DDL用于执行数据定义的操作,如创建或删除表、索引和视图之类的对象。由CREATE、DROP、ALTER命令组成,完成数据库对象的建立(CREATE)、删除(DROP)和修改(ALTER)。 4.2.1 定义(创建)表 【格式】CREATE TABLE (,)完整性约束NULL | NOT NULL,) 【功能】定义(也称创建)一个表。,4.2 数据定义,6,【例4-1】创建一个表STUD(学生信息表),它由以下字段组成:学号 (C,10);姓名(C,8);性别(C,2);班级名(C,10);系别代号(C,2);地址(C,50);出生日期 (D);是否团员 (L);备注 (M)。 CREATE TABLE STUD(学号C(10),姓名 C(10),性别 C(2),班级名 C(10),系别代号 C(2),地址 C(50),出生日期 D,是否团员 L,备注 M,照片 G) LIST STRUCTURE 【例4-2】创建一个表SC(课程成绩表),它由以下字段组成:学号(C,10);课程号(C,2)。 CREATE TABLE SC(学号 C(10),课程号 C(2) LIST STRUCTURE,7,【格式】ALTER TABLE ADD (,)完整性约束NULL | NOT NULLDROP 完整性约束MODIFY 【功能】修改表结构。 【说明】ADD子句用于增加指定表的字段变量名、数据类型、宽度和完整性约束条件;DROP子句用于删除指定的的完整性约束条件;MODIFY子句用于修改原有的字段变量的值。 【例4-3】在课程成绩表SC中,增加一个成绩字段变量(N,3)。 ALTER TABLE SC ADD 成绩 N(3) LIST STRUCTURE,4.2.2 修改表,8,【格式】DROP DATABASE 【功能】删除指定数据库的结构和数据。 【说明】谨慎使用。 4.2.4 删除表 【格式】DROP TALBE 【功能】删除指定表的结构和内容(包括在此表上建立的索引)。 【说明】如果只是想删除一个表中的所有记录,则应使用DELETE语句。,4.2.3 删除数据库,9,数据操纵语言是完成数据操作的命令,一般分为两种类型的数据操纵,它们统称为DML: 数据检索(常称为查询):寻找所需的具体数据。 数据修改:添加、删除和改变数据。 数据操纵语言一般由INSERT(插入)、DELETE(删除)、UPDATE(更新),SELETE(检索,又称查询)等组成,由于SELETE比较特殊,所以一般又将它以查询(检索)语言单独出现。,4.3 数据操纵,10,【格式1】INSERT INTO VALUES () 【格式2】INSERT INTO FROM ARRAY | FROM MEMVAR 【功能】在指定的表文件末尾追加一条记录。格式1用表达式表中的各表达式值赋值给中的相应的各字段。格式2用数组或内存变量的值赋值给表文件中各字段。 【说明】如果某些字段名在INTO子句中没有出现,则新记录在这些字段名上将取空值(或默认值)。但必须注意的是,在表定义说明了NOT NULL的字段名不能取空值。,4.3.1 插入记录,11,:指定表文件中的字段,缺省时,按表文件字段的顺序依次赋值。 :指定要追加的记录各个字段的值。 【例4-4】在表文件STUD的末尾追加三条记录。 *用表达式方式追加第一条记录* INSERT INTO STUD (学号,姓名,性别,班级名,系别代号,地址,出生日期,是否团员) ; VALUES (“011110“,“李建国“,“男“,“计0121“,“01“,“湖北武汉“,09/28/02,.T.),12,DIMENSION DATA8 DATA(1)=“011103“ DATA(2)=“李宁“ DATA(3)=“女“ DATA(4)=“电0134“ DATA(5)=“02“ DATA(6)=“江西九江“ DATA(7)=05/06/85 DATA(8)=.F. INSERT INTO STUD FROM ARRAY DATA,*用数组方式追加第二条记录*,13,学号=“011202“ 姓名=“赵娜“ 性别=“女“ 班级名=“英0112“ 系别代号=“03“ 地址=“广西南宁“ 出生日期=02/21/84 是否团员=.F. INSERT INTO STUD FROM MEMVAR LIST,*用内存变量方式追加第三条记录*,14,【格式】UPDATE SET = ,= WHERE 【功能】更新指定表文件中满足WHERE条件子句的数据。其中SET子句用于指定列和修改的值,WHERE用于指定更新的行,如果省略WHERE子句,则表示表中所有行。 【说明】更新操作又称为修改操作。 【例4-5】将成绩表(SC)中,所有课程号为02的成绩各加5分。 UPDATE SC SET 成绩=成绩+5 ; WHERE 课程号=“02“,4.3.2 更新记录命令,15,4.3.3 删除记录,【格式】DELETE FROM WHERE 【功能】从指定的表中删除满足WHERE子句条件的所有记录。如果在DELETE语句中没有WHERE子句,则该表中的所有记录都将被删除。 【说明】这里的删除是逻辑删除,即在删除的记录前加上一个删除标记“*”。 【例4-7】删除STUD表中所有性别为男的记录。 DELETE FROM STUD ; WHERE 性别=“男”,16,数据管理(也称数据控制)语言是用来管理(或控制)用户的访问权限的。由GRANT(授权)、REVOTE(回收)命令组成。而Visual FoxPro 6没有这种权限管理。,4.4 数据管理,17,4.5 SQL中的数据查询语句,数据库中的数据很多时侯是为了查询的,因此,数据查询是数据库的核心操作。而在SQL语言中,查询语言中有一条查询命令,即SELECT语句。,18,4.5.1 基本查询语句 【格式】SELECT ALL | DISTINCT FROM 【功能】无条件查询。 【说明】ALL: 表示显示全部查询记录,包括重复记录。 DISTINCT: 表示显示无重复结果的记录。,19,【例4-8】显示STUD(学生信息数据表)中的所有记录。 SELECT * ; FROM STUD 命令中的*表示输出显示所有的字段,数据来源是STUD表,表中的内容以浏览方式显示。 【例4-9】显示STUD(学生信息数据表)中的所有的学号及与之对应的姓名,同时能去除重名。 SELECT DISTINCT 学号,姓名 ; FROM STUD,20,【例4-10】显示SC(课程成绩表)中的所有记录,并将成绩一项乘以0.7。 SELECT 学号,课程号,成绩*0.7 AS 成绩 FROM SC,21,4.5.2 带条件(WHERE)的查询语句 【格式】SELECT ALL | DISTINCT FROM WHERE 【功能】从一个表中查询满足条件的数据。 【说明】由一系列用AND 或 OR 连接的条件表达式组成,条件表达式的格式可以是以下几种:,22,(1)。 (2)。 (3)ALL() (4) ANY | SOME () (5) NOT BETWEEN AND (6)NOT EXISTS () (7) NOT IN (8) NOT IN () (9) NOT LINK ,23,SQL支持的关系运算符如下: 、!、。 【例4-11】显示STUD表中所有男生记录的学号,姓名和性别字段值。 SELECT 学号,姓名,性别 ; FROM STUD WHERE 性别=“男“ 【例4-12】显示STUD表中出生日期在85年之间的学生的学号,姓名,出生日期。 SELECT 学号,姓名,出生日期 ; FROM STUD ; WHERE 出生日期 BETWEEN 01/01/85 AND 12/31/86,24,【例4-13】显示STUD表中姓李的学生的学号,姓名,出生日期。 SELECT 学号,姓名,出生日期; FROM STUD ; WHERE 姓名 LIKE “李%”,25,4.5.3 SQL的复杂查询,1连接查询 【说明】在一个数据库中的多个表之间一般都存在着某些联系,在一个查询语句中同时涉及到两个或两个以上的表时,这种查询称之为连接查询(也称为多表查询)。在多表之间查询必须处理表与表之间的连接关系。 SELECT ALL | DISTINCT FROM ,表2 WHERE ,26,【例4-14】查询并显示各个学生的学号,姓名,各科成绩及课程名。 SELECT a.学号,a.姓名,b.课程名,c.成绩 ; FROM STUD a,COURSE b,SC c ; WHERE a.学号=c.学号. AND .b.课程号=c.课程号 【例4-15】查询并显示各个学生所学课程的情况。 SELECT STUD.学号,STUD.姓名,COURSE.课程名 ; FROM STUD,SC,COURSE ; WHERE STUD.学号=SC.学号. AND .SC.课程号=COURSE.课程号,27,2连接问题 在SQL语句中,在FROM子句中提供了一种称之为连接的子句,连接分为内连接和外连接,外连接又可分为左外连接、右外连接和全外连接。 (1)内连接 内连接是指包括符合条件的每个表的记录,也称之为全记录操作。而上面两个例子就是内连接。 【例4-16】查询并显示各个学生的学号,所学课程及课程成绩。 SELECT SC.学号,COURSE.课程名,SC.成绩 ; FROM SC,COURSE ; WHERE SC.课程号=COURSE.课程号,28,如果采用内连接方式,则命令如下: SELECT a.学号,b.课程名,成绩 ; FROM SC a INNER JOIN COURSE b ON a.课程号=b.课程号 将会得到完全相同的结果。 (2)外连接 外连接是指把两个表分为左右两个表。右外连接是指连接满足条件右侧表的全部记录。左外连接是指连接满足条件左侧表的全部记录。全外连接是指连接满足条件表的全部记录。,29,3嵌套查询 在SQL语句中,一个SELECTFROMWHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询或子查询。 【例4-17】显示“李宁”所在班级的学生名单。 SELECT 学号,姓名,班级名 ; FROM STUD ; WHERE 班级名=(SELECT 班级名 FROM STUD WHERE 姓名=“李宁“),30,4分组与计算查询 【格式】SELECT ALL | DISTINCT FROM WHERE GROUP BY HAVING ORDER BY ASC | DESC 【功能】包括有排序、函数运算和谓词演算,31,【例4-18】按出生日期降序显示STUD表中的学号,姓名,出生日期。 SELECT 学号,姓名,出生日期 ; FROM STUD ; ORDER BY 出生日期 DESC 【例4-19】按成绩升序显示SC表中的学号,课程号,成绩。 SELECT 学号,课程号,成绩 ; FROM SC ; ORDER BY 成绩,32,【例4-20】按班级分类显示学生的姓名,课程名,成绩,同一班级按分数排序。 SELECT a.姓名,a.班级名,c.课程名,b.成绩 ; FROM STUD a,SC b,COURSE c ; WHERE a.学号=b.学号 AND b.课程号=c.课程号; ORDER BY a.班级名,b.成绩; 【例4-21】显示成绩在80至90之间的学号,姓名,课程名和成绩。 SELECT a.姓名,c.课程名,b.成绩 FROM STUD a,SC b,COURSE c WHERE a.学号=b.学号 AND b.课程号=c.课程号 AND b.成绩 BETWEEN 80 AND 90,33,【例4-22】显示计算机系学生的成绩。 SELECT a.姓名,a.系别代号,c.课程名,b.成绩 ; FROM STUD a,SC b,COURSE c ; WHERE a.学号=b.学号 AND b.课程号=c.课程号 AND a.系别代号=“01” 【例4-23】显示各班总人数。 SELECT 班级名,COUNT(班级名) AS 总人数 ; FROM STUD ; GROUP BY 班级名,34,【例4-24】显示计算机系的学生及所有男学生。 SELECT 学号,姓名,系别代号,性别 ; FROM STUD ; WHERE 系别代号=“01“ UNION ; SELECT 学号,姓名,系别代号,性别 ; FROM STUD ; WHERE 性别=“男“ 【例4-25】显示选修了英语或数学科目的学生学号。 SELECT 学号,课程号 FROM SC ; WHERE 课程号=“01” UNION ; SELECT 学号,课程号 ; FROM SC ; WHERE 课程号=“02”,35,【例4-26】显示计算机系男生的名单。 SELECT 学号,姓名,系别代号,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024东航物流客服岗面试高频题及服务类问题标准答案
- 2020山东医专单招押题卷试题及答案 押中率超80%
- 2020年幼儿养育照护语言启蒙考点试题及标准答案
- 2021年物业服务中心半结构化面试题库及满分答案
- 2021铁塔代维日常巡检考试真题及官方标准答案
- 2021铁塔代维电源系统维护考试专项试题及答案
- 2024上海事业单位考试历年真题+常识考点速记
- 2022年库伦分析法期末考试押题卷及官方参考答案
- 江苏泰州市姜堰区实验初级中学2025-2026学年下学期九年级数学第一次独立作业(含解析)
- 太阳能安装运维协议书
- 蔬果采购员管理制度
- 2026年广州市高三语文一模作文题目解析及范文:那些被遗忘的后半句
- 广东省广州市黄埔区第八十六中学2024-2025学年八年级下学期4月期中物理试题(含答案)
- DZ/T 0275.4-2015岩矿鉴定技术规范第4部分:岩石薄片鉴定
- 贵州省六盘水市英武水库工程环评报告
- JTGT F20-2015 公路路面基层施工技术细则
- 保洁礼节礼仪培训
- 土建劳动力计划表劳动力安排计划及劳动力计划表
- 天然气加工工程轻烃回收课件
- 英语四级长篇匹配阅读练习题
- 健康管理师资料:《健康管理师》 国家职业资格培训介绍
评论
0/150
提交评论