第6讲 关系数据库标准语言SQL_第1页
第6讲 关系数据库标准语言SQL_第2页
第6讲 关系数据库标准语言SQL_第3页
第6讲 关系数据库标准语言SQL_第4页
第6讲 关系数据库标准语言SQL_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、1第六讲 关系数据库标准语言SQL目 录下一页退 出目 录上一页下一页退 出2本本 章章 要要 点点6.16.1SQLSQL语言的基本概述语言的基本概述6.26.2数据定义数据定义6.36.3数据操纵数据操纵6.46.4数据管理数据管理6.56.5SQLSQL中的数据查询语句中的数据查询语句目 录上一页下一页退 出36.1.1 SQL语言的特点1 1综合统一综合统一 SQL语言集数据定义(DDL)、数据操纵(DML)、数据管理(DCL)的功能于一体,语言风格统一,可以独立完成数据库的全部操作,包括定义关系模式、录入数据及建立数据库、查询、更新、维护数据、数据库的重新构造、数据库安全性等一系列操

2、作的要求,为数据库应用系统开发者提供了良好的环境。 2 2高度非过程化高度非过程化3 3面向集合的操作方式面向集合的操作方式4 4以同一种语法结构提供两种使用方式以同一种语法结构提供两种使用方式5 5语言简洁,易学易用语言简洁,易学易用6.1SQL语言的基本概述目 录上一页下一页退 出46.1.2 SQL语言的基本概念SQL语言支持关系型数据库的三级模式结构。其中外模式对应于视图(View)和部分基本表(Base Table),模式对应于基本表,内模式对应于存储文件。基本表是本身独立存在的表,在SQL语言中一个关系对应一个表。一些基本表对应一个存储文件,一个表可以带若干索引,索引存放在存储文件

3、中。存储文件的逻辑结构组成了关系型数据库的内模式。而存储文件的物理文件结构是任意的。视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是说数据库只存放在视力的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。6.1SQL语言的基本概述目 录上一页下一页退 出5数据定义语言DDL用于执行数据定义的操作,如创建或删除表、索引和视图之类的对象。由CREATE、DROP、ALTER命令组成,完成数据库对象的建立(CREATE)、删除(DROP)和修改(ALTER)。6.2.1定义(创建)表【格式】CREATE TABLE (,)完整性约束完整性约束N

4、ULL | NOT NULL,)【功能】定义(也称创建)一个表。目 录上一页下一页退 出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 STRUCT

5、URE【例【例4-2】创建一个表SC(课程成绩表),它由以下字段组成:学号(C,10);课程号(C,2)。CREATE TABLE SC(学号(学号 C(10),课程号),课程号 C(2)LIST STRUCTURE目 录上一页下一页退 出76.2.2修改表【格式】ALTER TABLE ADD (,)完整性约束完整性约束NULL | NOT NULLDROP 完整性约束完整性约束Alter 【功能】修改表结构。【说明】ADD子句用于增加指定表的字段变量名、数据类型、宽度和完整性约束条件;DROP子句用于删除指定的的完整性约束条件;MODIFY子句用于修改原有的字段变量的值。【例【例4-3】在

6、课程成绩表SC中,增加一个成绩字段变量(N,3)。ALTER TABLE SC ADD 成绩成绩 N(3)LIST STRUCTURE目 录上一页下一页退 出86.2.3定义视图【格式】【格式】 CREATE VIEW CREATE VIEW AS AS 【功能功能】利用SQL语句建立视图。【例【例4-44-4】利用SQL语句建立view1视图,要求按职工表中工资字段值降序,列出仓库号,职工号,工资,城市及面积字段。并将结果保存到table1中。open database open database 订货管理订货管理create view view1 as select create view

7、 view1 as select 职工职工. .仓库号仓库号, ,职工职工. .职工号职工号, ,职职工工. .工资工资, ,仓库仓库. .城市城市, ,仓库仓库. .面积面积 from from 仓库仓库, ,职工职工 where where 仓仓库库. .仓库号仓库号= =职工职工. .仓库号仓库号 order by order by 职工职工. .工资工资select select * * from view1 into dbf table1 from view1 into dbf table1注:视图无法设置去向只能通过select * from into table 目 录上一页下一

8、页退 出96.2.4删除数据库【格式】DROP DATABASE 【功能】删除指定数据库的结构和数据。【说明】谨慎使用。6.2.5删除表【格式】DROP TALBE 【功能】删除指定表的结构和内容(包括在此表上建立的索引)。【说明】如果只是想删除一个表中的所有记录,则应使用DELETE语句。目 录上一页下一页退 出10 数据操纵语言是完成数据操作的命令,一般分为两种类型的数据操纵,它们统称为DML: 数据检索(常称为查询):寻找所需的具体数据。 数据修改:添加、删除和改变数据。数据操纵语言一般由INSERT(插入)、DELETE(删除)、UPDATE(更新),SELETE(检索,又称查询)等组

9、成,由于SELETE比较特殊,所以一般又将它以查询(检索)语言单独出现。6.3 数据操纵目 录上一页下一页退 出116.3.1 插入记录【格式1】 INSERT INTO VALUES ()【格式2】 INSERT INTO FROM ARRAY | FROM MEMVAR【功能】在指定的表文件末尾追加一条记录。格式1用表达式表中的各表达式值赋值给中的相应的各字段。格式2用数组或内存变量的值赋值给表文件中各字段。【说明】如果某些字段名在INTO子句中没有出现,则新记录在这些字段名上将取空值(或默认值)。但必须注意的是,在表定义说明了NOT NULL的字段名不能取空值。6.3 数据操纵目 录上一

10、页下一页退 出12:指定表文件中的字段,缺省时,按表文件字段的顺序依次赋值。:指定要追加的记录各个字段的值。【例4-4】在表文件STUD的末尾追加三条记录。*用表达式方式追加第一条记录*INSERT INTO STUD (INSERT INTO STUD (学号,姓名,性别,班级名,系别代号,学号,姓名,性别,班级名,系别代号,地址,出生日期,是否团员地址,出生日期,是否团员) ; VALUES (011110) ; VALUES (011110, 李建国李建国 , 男男 , 计计01210121,0101, 湖北武汉湖北武汉 ,09/28/0209/28/02,. .T T. .) )6.3

11、 数据操纵目 录上一页下一页退 出13*用数组方式追加第二条记录*DIMENSION DATA8DATA(1)=011103DATA(2)=李宁李宁DATA(3)=女女DATA(4)=电电0134DATA(5)=02DATA(6)=江西九江江西九江DATA(7)=05/06/85DATA(8)=.F.INSERT INTO STUD FROM ARRAY DATA6.3 数据操纵目 录上一页下一页退 出14*用内存变量方式追加第三条记录*学号学号=011202姓名姓名=赵娜赵娜性别性别=女女班级名班级名=英英0112系别代号系别代号=03地址地址=广西南宁广西南宁出生日期出生日期=02/21/

12、84是否团员是否团员=.F.INSERT INTO STUD FROM MEMVARLIST6.3 数据操纵目 录上一页下一页退 出156.3.2 更新记录命令【格式】UPDATE SET = ,= WHERE 【功能】更新指定表文件中满足WHERE条件子句的数据。其中SET子句用于指定列和修改的值,WHERE用于指定更新的行,如果省略WHERE子句,则表示表中所有行。【说明】更新操作又称为修改操作。【例4-5】将成绩表(SC)中,所有课程号为02的成绩各加5分。 UPDATE SC SET 成绩成绩=成绩成绩+5 ; WHERE 课程号课程号=026.3 数据操纵目 录上一页下一页退 出16

13、6.3.3 删除记录【格式】DELETE FROM WHERE 【功能】从指定的表中删除满足WHERE子句条件的所有记录。如果在DELETE语句中没有WHERE子句,则该表中的所有记录都将被删除。【说明】这里的删除是逻辑删除,即在删除的记录前加上一个删除标记“*”。【例4-7】删除STUD表中所有性别为男的记录。 DELETE FROM STUD ; WHERE 性别性别=“男男”6.3 数据操纵目 录上一页下一页退 出17 数据管理(也称数据控制)语言是用来管理(或控制)用户的访问权限的。由GRANT(授权)、REVOTE(回收)命令组成。而Visual FoxPro 6没有这种权限管理。6

14、.4 数据管理目 录上一页下一页退 出186.5 SQL中的数据查询语句 数据库中的数据很多时侯是为了查询的,因此,数据查询是数据库的核心操作。而在SQL语言中,查询语言中有一条查询命令,即SELECT语句。目 录上一页下一页退 出196.5.1基本查询语句【格式】SELECT ALL | DISTINCT FROM 【功能】无条件查询。【说明】ALL: 表示显示全部查询记录,包括重复记录。 DISTINCT: 表示显示无重复结果的记录。6.5 SQL中的数据查询语句目 录上一页下一页退 出20【例4-8】显示STUD(学生信息数据表)中的所有记录。SELECT * ;FROM STUD命令中

15、的*表示输出显示所有的字段,数据来源是STUD表,表中的内容以浏览方式显示。【例4-9】显示STUD(学生信息数据表)中的所有的学号及与之对应的姓名,同时能去除重名。SELECT DISTINCT 学号,姓名学号,姓名 ;FROM STUD6.5 SQL中的数据查询语句目 录上一页下一页退 出21【例4-10】显示SC(课程成绩表)中的所有记录,并将成绩一项乘以0.7。SELECT 学号,课程号,成绩学号,课程号,成绩*0.7 AS 成绩成绩 FROM SC6.5 SQL中的数据查询语句目 录上一页下一页退 出226.5.2带条件(WHERE)的查询语句【格式】SELECT ALL | DIS

16、TINCT FROM WHERE 【功能】从一个表中查询满足条件的数据。【说明】由一系列用AND 或 OR 连接的条件表达式组成,条件表达式的格式可以是以下几种: 6.5 SQL中的数据查询语句目 录上一页下一页退 出23(1)。(2)。(3)ALL()(4) ANY | SOME ()(5) NOT BETWEEN AND (6)NOT EXISTS ()(7) NOT IN (8) NOT IN ()(9) NOT LINK 6.5 SQL中的数据查询语句目 录上一页下一页退 出24SQL支持的关系运算符如下:、!、。【例4-11】显示STUD表中所有男生记录的学号,姓名和性别字段值。SE

17、LECT 学号,姓名,性别学号,姓名,性别 ;FROM STUD WHERE 性别性别=男男【例4-12】显示STUD表中出生日期在85年之间的学生的学号,姓名,出生日期。SELECT 学号,姓名,出生日期学号,姓名,出生日期 ;FROM STUD ;WHERE 出生日期出生日期 BETWEEN 01/01/85 AND 12/31/866.5 SQL中的数据查询语句目 录上一页下一页退 出25【例4-13】显示STUD表中姓李的学生的学号,姓名,出生日期。SELECT 学号,姓名,出生日期学号,姓名,出生日期; FROM STUD ;WHERE 姓名姓名 LIKE “李李%”6.5 SQL中

18、的数据查询语句目 录上一页下一页退 出266.5.3SQL的复杂查询1连接查询连接查询 【说明】在一个数据库中的多个表之间一般都存在着某些联系,在一个查询语句中同时涉及到两个或两个以上的表时,这种查询称之为连接查询(也称为多表查询)。在多表之间查询必须处理表与表之间的连接关系。 SELECT ALL | DISTINCT FROM ,表,表2. WHERE 6.5 SQL中的数据查询语句目 录上一页下一页退 出27【例4-14】查询并显示各个学生的学号,姓名,各科成绩及课程名。SELECT a.学号,学号,a.姓名,姓名,b.课程名,课程名,c.成绩成绩 ;FROM STUD a,COURSE

19、 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.课程号课程号6.5 SQL中的数据查询语句目 录上一页下一页退 出282连接问题连接问题在SQL语句中,在FROM子句中提供了一种称之为连接的子句,连接分为内连接和外连接,外连接又可分为左外连接、右外连接和全外连接。(1)内

20、连接)内连接内连接是指包括符合条件的每个表的记录,也称之为全记录操作。而上面两个例子就是内连接。【例4-16】查询并显示各个学生的学号,所学课程及课程成绩。SELECT SC.学号,学号,COURSE.课程名,课程名,SC.成绩成绩 ;FROM SC,COURSE ;WHERE SC.课程号课程号=COURSE.课程号课程号6.5 SQL中的数据查询语句目 录上一页下一页退 出29如果采用内连接方式,则命令如下:SELECT a.学号,学号,b.课程名,成绩课程名,成绩 ;FROM SC a INNER JOIN COURSE b ON a.课课程号程号=b.课程号课程号将会得到完全相同的结果

21、。(2)外连接)外连接外连接是指把两个表分为左右两个表。右外连接是指连接满足条件右侧表的全部记录。左外连接是指连接满足条件左侧表的全部记录。全外连接是指连接满足条件表的全部记录。6.5 SQL中的数据查询语句目 录上一页下一页退 出303嵌套查询嵌套查询 在SQL语句中,一个SELECTFROMWHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询或子查询。【例4-17】显示“李宁”所在班级的学生名单。SELECT 学号,姓名,班级名学号,姓名,班级名 ;FROM STUD ; WHERE 班级名班级名=(SELECT 班级名班

22、级名 FROM STUD WHERE 姓名姓名=李宁李宁)6.5 SQL中的数据查询语句目 录上一页下一页退 出314分组与计算查询分组与计算查询【格式】【格式】SELECT ALL | DISTINCT FROM WHERE GROUP BY HAVING ORDER BY ASC | DESC 【功能】包括有排序、函数运算和谓词演算6.5 SQL中的数据查询语句目 录上一页下一页退 出32【例4-18】按出生日期降序显示STUD表中的学号,姓名,出生日期。SELECT 学号,姓名,出生日期学号,姓名,出生日期 ;FROM STUD ;ORDER BY 出生日期出生日期 DESC【例4-19

23、】按成绩升序显示SC表中的学号,课程号,成绩。SELECT 学号,课程号,成绩学号,课程号,成绩 ;FROM SC ;ORDER BY 成绩成绩6.5 SQL中的数据查询语句目 录上一页下一页退 出33【例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之间的学号,姓

24、名,课程名和成绩。SELECT a.姓名,姓名,c.课程名,课程名,b.成绩成绩 FROM STUD a,SC b,COURSE c WHERE a.学号学号=b.学号学号 AND b.课程号课程号=c.课程号课程号 AND b.成绩成绩 BETWEEN 80 AND 906.5 SQL中的数据查询语句目 录上一页下一页退 出34【例4-22】显示计算机系学生的成绩。SELECT a.姓名,姓名,a.系别代号,系别代号,c.课程名,课程名,b.成绩成绩 ;FROM STUD a,SC b,COURSE c ; WHERE a.学号学号=b.学号学号 AND b.课程号课程号=c.课程号课程号

25、AND a.系别代号系别代号=“01”【例4-23】显示各班总人数。SELECT 班级名,班级名,COUNT(班级名)(班级名) AS 总人数总人数 ;FROM STUD ;GROUP BY 班级名班级名6.5 SQL中的数据查询语句目 录上一页下一页退 出35【例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”6.5 SQL中的数据

温馨提示

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

评论

0/150

提交评论