第4章 结构化查询语

上传人:gu****n 文档编号:243152249 上传时间:2024-09-17 格式:PPT 页数:42 大小:445.50KB
返回 下载 相关 举报
第4章 结构化查询语_第1页
第1页 / 共42页
第4章 结构化查询语_第2页
第2页 / 共42页
第4章 结构化查询语_第3页
第3页 / 共42页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第四章 结构化查询语言,SQL,本章重点和难点:,掌握如何使用,SQL,数据定义命令;,掌握如何使用,SQL,数据修改命令;,掌握如何使用,SQL,数据查询命令;,主要内容,SQL,是,structured query language,的缩写,即结构化查询语言,它既可以用于大型数据库系统,也可以用于微型数据库系统,是关系数据库的标准语言。,VF6,数据库管理系统除了具有,VF6,命令以外,还支持结构化查询语言(,SQL,)命令。,SQL,能集数据定义语言、数据操纵语言、数据控制语言的功能为一体。同时高度的非过程化,无需一步步地告诉计算机如何做,只要指明怎么做系统就可以自动完成。本章主要介绍在,Visual FoxPro,环境下如何使用,SQL,语言进行数据的定义、查询和修改。,4.1,SQL,概述,结构化查询语言,(Structured Query Language,)最早是,IBM,的圣约瑟研究实验室为其关系数据库管理系统,SYSTEM R,开发的一种查询语言,它的前身是,SQUARE,语言。,SQL,语言结构简洁,功能强大,简单易学,所以自从,IBM,公司,1981,年推出以来,,SQL,语言得到了广泛的应用。如今无论是像,Oracle,、,Sybase,、,DB2,、,Informix,、,SQL Server,这些大型的数据库管理系统,还是像,Visual Foxpro,、,PowerBuilder,这些,PC,上常用的数据库开发系统,都支持,SQL,语言作为查询语言。,SQL,是高级的非过程化编程语言,是沟通数据库服务器和客户端的重要工具,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以,具有完全不同底层结构的不同数据库系统,可以使用相同的,SQL,语言作为数据输入与管理的,SQL,接口。它以记录集合作为操作对象,所有,SQL,语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条,SQL,语句的输出作为另一条,SQL,语句的输入,所以,SQL,语句可以嵌套,这使它具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个,SQL,语句就可以达到目的,这也意味着用,SQL,语言可以写出非常复杂的语句。,4.1,SQL,概述,SQL,语言作为数据库标准语言,具有以下特点。,1,综合统一,SQL,语言集数据库定义语言(,DDL,)、数据操纵语言(,DML,,数据操纵包括数据查询)、数据控制语言(,DCL,)的功能于一体,可以独立完成数据库生命周期中的全部活动,包括定义数据库和表结构、录入数据及建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作的要求,这就为数据应用系统的开发提供了良好的环境。,2,高度非过程化,用,SQL,语言进行数据操作时,用户只需要提出做什么,而不必指明怎么做。这不但大大减轻了用户的负担,而且还有利于提高数据独立性。,4.1,SQL,概述,3,面向集合的操作方式,SQL,语言采用集合操作方式,不仅查找结果可以是记录的集合,而且操作对象的一次插入、删除、更新也可以是记录的集合。,4,以同一种语法结构提供两种使用方式,SQL,语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在键盘上直接输入,SQL,命令对数据库进行操作。作为嵌入式语言,,SQL,能够嵌入到高级语言(例如,C,、,FORTRAN,、,PL/I,)程序中,供程序员设计程序时使用。而在两种不同的使用方法下,,SQL,语言的语法结构基本上是一致的。这种以统一的语法结构提供两种不同的使用方法的做法,为用户提供了极大的灵活性与方便性。,4.1,SQL,概述,5,功能强大,语言简洁,易学易用,SQL,语言语法十分简单,总共只用了,9,个命令动词(见表,4.1,),但是能实现数据定义、数据操作、数据控制等功能。,SQL,功能,命令动词,数据定义,CREATE,,,DROP,,,ALTER,数据操作,UPDATE,,,DELETE,,,INSERT,数据控制,GRANT,,,REVOTE,数据查询,SELECT,表,4.1 SQL,的动词及功能划分,4. 2,SQL,的数据定义命令,数据定义语言由,CREAT,、,DROP,、,ALTER,命令组成。这,3,个命令关键字针对不同的数据库对象(如数据库、查询、视图等)分别有,3,个命令。例如针对表对象的,3,个命令是建表结构命令,CREAT TABLE,、修改表结构命令,ALTER TABLE,、删除表命令,DROP TABLE,。数据库可操作多少个对象就有多少,3,个相应的命令。下面以定义表结构为例,讲解这,3,个命令。,4. 2 .1,表的定义,格式:,CREATE TABLE|DBF ,(,类型, () NULL | NOT NULL,CHECK ERROR DEFAULT ,PRIMARY KEY | UNIQUE REFERENCE TAG NOCPTRANS, | FROM ARRAY , PRIMARY KEY TAG , UNIQUE TAG , FOREIGN KEY TAG NODUP,REFERNCES TAG , CHECK ERROR ,4. 2 .1,表的定义,说明:,1.NULL | NOT NULL,子句说明字段是否可取空值(,NULL,)。,2.CHECK ERROR ,子句用于说明字段的有效性规则。,是有效性规则,,是为字段有效性规则检查出错时给出的提示信息。,3.DEFAULT ,子句使用表达式值给出字段的默认值。,4.PRIMARY KEY|UNIQUE,子句是以该字段创建索引,取,PRIMARY KEY,创建的是主索引,取,UNIQUE,创建的是候选索引。,5.REFERENCE TAG ,子句用于指定与建立永久关系的父表名。,为父表名,若省略,TAG ,就在父表已存在的索引标识上建立联系。,4. 2 .1,表的定义,【,例,4.1】,使用命令建立数据库,CJGL,,然后在该库中建立,XSDA,表,其表结构及要求如下表所示。,字段名,字段类型,字段长度,小数位数,特殊要求,学号,C,8,主索引,姓名,C,8,不能为空值,性别,C,2,年龄,N,3,大于,10,小于,45,出生日期,D,8,允许为空值,团员否,L,简历,M,禁止转换,定义该表的,SQL,命令如下,CREAT DATABASE CJGL,CREAT TABLE XSDA (,学号,C(8) PRIMAY KEY,姓名,C(8) NOT NULL,性别,C(2),;,年龄,N(3) CHECK,年龄,10 AND,年龄,45 ERROR ,年龄范围在,1045,请重输入,! ,;,出生日期,D DEFAULT CTOD(09/01/1990),团员否,L,简历,M NOCPTRANS),4. 2 .1,表的定义,【,例,4.2】,在,CJGL,库中建立,CJ,(成绩)表,其表结构及要求如下表所示。,定义该表的命令序列如下,OPEN DATABASE CJGL,CREATE TABLE CJ(,学号,c (8) REFERENCES XSDA,课程号,c(4),期末,N(5,2),;,PRIMARY KEY,学号,+,课程号,TAG,学号课程号,FOREIGN KEY,课程号,TAG,课程号,;,REFERENCES KC TAG,课程号,字段名,字段类型,字段长度,小数位数,特殊要求,学号,C,8,外关键字,与学生档案表建立关系,课程号,C,4,外关键字,与课程表建立关系,成绩,N,5,2,4. 2 .2,表的删除,语法,:DROP TABLE,表名,【,例,4.3】,删除已建立的,XSDA,表,DROP TABLE XSDA,4. 2 .3,表结构的修改,1.,语法格式,1,语法,1:ALTER TABLE,表名,1,ADD|ALTERCOLUMN,字段名字段类型,(,宽度,小数位数,),NULL|NOT NULLCHECK,expL,ERROR,expC,DEEAULT,expr,PRIMARY KEY|UNIQUE,REFERENCES,表名,2,TAG,标识名,NOCPTRANS,NOVALIDATE,功能,:,为指定的表的指定字段进行修改或添加指定的字段。,4. 2 .3,表结构的修改,【,例,4.4】,为,XSDA,表添加一个字段:“入学成绩”字段,N(5,2),。,ALTER TABLE XSDA ADD,入学成绩,N(5,2),【,例,4.5】,在,XSDA,表中,设置“入学成绩”字段的值小于等于,750,。,ALTER TABLE score ALTER,入学成绩,N(5,2) CHECK,入学成绩,=750 ERROR ,分数不能大于,750! ,4. 2 .3,表结构的修改,2.,语法格式,2,语法,2:ALTER TABLE,表名,ALTER COLUMN,字段名,NULL|NOT NULL,SET DEFAULT,expr,SET CHECK,expL,ERROR,expC,DROP DEFAULTDROP CHECK,功能,:,修改指定的表中指定字段的,DEFAULT,、,CHECK,规则,但不影响原有表的数据。,【,例,4.6】,在,XSDA,表中,删除对“入学成绩”字段的合法值约束,并设置“年龄”字段的默认值为,18,。,ALTER TABLE XSDA ALTER,入学成绩,DROP CHECK,ALTER TABLE XSDA ALTER,年龄,DROP DEFAULT 18,4. 2 .3,表结构的修改,3.,语法格式,3,语法:,ALTER TABLE,表名,1,DROPCOLUMN,字段名,从指定表删除指定的字段,SET CHECK,expL,ERROR,expC,设置该字段的合法值和错误提示信息,DROP CHECK,删除该字段的合法值设置,ADD PRIMARY KEY,expr,TAG,索引标识,FOR 1,expL,DROP PRIMARY KEY,删除该表的主索引,ADD UNIQUE,expr,TAG,索引标识,FOR 1,expL,DROP UNIQUE TAG,索引标识,删除该表的候选索引,ADD FOREIGN KEY,expr,TAG,索引标识,FOR 1,expL,REFERENCES,表名,2,TAG,索引标识,设置该表的外部关键字,DROP FOREIGN KEY TAG,索引标识,SAVE,删除该表的外部关键字,RENAME COLUMN,原字段名,TO,目标字段名,NOVALIDATE,修改表结构时,允许违反该表的数据完整性规则。,功能:删除指定表中的指定字段、修改字段名、修改指定表的完整性规则,包括主索引、外部关键字、候选索引及表的合法值限定的添加与删除。,注意:修改自由表,不能使用,DEFAULT,、,FOREIGH KEY,、,PRIMARY KEY,、,REFERENCES,或,SET,子句。,4. 2 .3,表结构的修改,【,例,4.7】,在,XSDA,表中,删除“团员否”字段,修改“简历”字段名为“其他情况”。,ALTER TABLE student DROP,团员否,RENAME COLUMN,简历,TO,其他情况,如果在删除字段上建立了索引,要先将索引删除再删除该字段。,【,例,4.8】,在,XSDA,表的“年龄”字段上建立候选索引。,ALTER TABLE student ADD UNIQUE,年龄,TAG,年龄,【,例,4.9】,在,XSDA,表中添加一个“专业”字段,删除“年龄”字段。,ALTER TABLE student ADD,专业,C(6),ALTER TABLE student DROP UNIQUE TAG,年龄,DROP,年龄,4. 3,SQL,的数据修改命令,数据操纵语言是完成数据操作的命令,它由,INSERT(,插入,),、,DELETE,(删除)、,UPDATE,(更新)和,SELECT,(查询)等命令组成。查询也划归为数据操纵范畴,但由于它比较特殊,所以又以查询语言单独出现。,4. 3 .1,插入记录,在数据库应用中,需要经常向表中插入数据,这主要是由,INSERT,命令实现的。,1.,语法格式,1,语法,1,:,INSERT INTO,表名,(字段名,1,,字段名,2,,,),VALUES,(表达式,1,,表达式,2,,,),功能:在指定的表尾添加一条新记录,其值为,VALUES,后面表达式的值。,当需要插入表中所有字段的数据时,表名后面的字段名可以缺省,但插入数据的格式必需与表的结构完全吻合;若只需要插入表中某些字段的数据,就需要列出插入数据的字段名,当然相应表达式的数据位置应与之对应。,【,例,4.10】,向,XSDA,表中添加记录,INSERT INTO student(,学号,姓名,) VALUES(05011001,李平,),4. 3 .1,插入记录,2,)语法格式,2,语法,2,:,INSERT INTO,表名,FROM,数组名,|FROM MEMVAR,功能:在指定的表尾添加一条新记录,其值来自于数组或对应的同名内存变量,【,例,4.11】,先定义了数组,AA(5),AA,中各元素的值分别是,AA(1)=,05011001,,,AA(2)=,平,,AA(3)=,女,,AA(4)=,1985/10/21,。利用该数组向,student,表中添加记录。,INSERT INTO XSDA FROM AA,【,例,4.12】,已经定义了内存变量学号,=,05011002,姓名,=,章立新,性别,=,男,利用内存变量向,XSDA,表中添加记录。,INSERT INTO student FROM MEMVAR,4. 3 .1,插入记录,完成以上操作后,在,student,表中添加一条新记录,新记录的值除了“学号”、“姓名”和“性别”字段外,其它字段均为空。因为,VF6,默认,添加的新记录的值与指定表中各字段名同名的内存变量的值。如果同名的内存变量不存在,则相应的字段为空。,注意:在插入数据时,若指定的表没有在任何工作区中打开,在当前工作区中没有表被打开时,该命令执行后将在当前工作区打开该命令指定的表;若当前工作区打开的是其他表,则该命令执行后将在一个新的工作区中打开,添加记录后,仍保持原当前工作区。若指定的表在非当前工作区中打开,添加记录后,指定的表仍在原工作区中打开,且仍保持原当前工作区。,4. 3 .2,更新记录命令,更新记录就是对存储在表中的记录进行修改,命令是,UPDATE-SQL,也可以对用,SELECT-SQL,语句选择出的记录进行数据更新。,语法:,UPDATE,数据库名!,表名,SET,字段名,1,=,expr1,,字段名,2,=,expr2,WHERE,expL1,AND|OR,expL2,功能:用指定的新值更新记录。,【,例,4.13】,将,XSDA,表所有,05,级学生“入学年月”置为,2005/09/10,。,UPDATE XSDA SET,入学年月,=,2005/09/10 WHERE LEFT,(学号,,2,),=05,【,例,4.14】,将所有男生的“入学成绩”成绩初始化为,0,。,UPDATE score SET,入学成绩,=0;,WHERE,学号,IN (SELECT,学号,FROM XSDA WHERE,性别,=,男,),以上命令中,用到了,WHERE,条件关键字“,IN,”和对用,SELECT-SQL,语句选择出的记录进行数据更新。有关,WHERE,条件关键字和,SELECT-SQL,语句的使用,详见,4.4,节。,注意:,UPDATE-SQL,一次只能在单一的表中更新记录。,4. 3 .3,删除记录命令,在,VF6,中,,DELETE-SQL,可以为指定的数据表中的记录加删除标记。,语法:,DELETE FROM ,!,WHEREAND|OR,功能:从指定表中,根据指定的条件逻辑删除记录。,【,例,4.15】,将,XSDA,表中所有男生的记录逻辑删除。,DELETE FROM student WHERE,性别,=,男,完成此命令后所有男生记录被逻辑删除,执行了,PACK,命令,逻辑删除的记录才会被物理删除。逻辑删除的记录可用,RECALL,命令恢复。,4. 4,SQL,的数据查询命令,SQL,数据查询语言只有一条命令,即,SELECT,。这个命令的子句很多,理解了这条命令各项的含义,就能从数据库中查询出各种数据。与其说它是一条命令,倒不如说它是一个,SELECT,命令集合。它的选项极其丰富,同时查询条件和嵌套使用也是很复杂的。本节将重点介绍这条命令,这也是本章的重点内容。,4. 4 .1,简单查询,SELECT,命令的基本结构是,SELECTFROMWHERE,,它的含义是输出字段,数据来源,查询条件。在这种固定模式中,可以不要,WHERE,,但是,SELECT,和,FROM,是必备的。,1.,基本查询,所谓基本查询就是无条件查询,其格式如下所示。,SELECT ALL|DISTINCT,别名,.,选项,AS,显示列名,,,别名,.,选项,AS,显示列名,FROM,表名,1,别名,1,,表名,2,别名,2,其中:,ALL,表示输出所有记录,包括重复记录;,DISTINCT,表示输出无重复结果的记录;,别名,当选择多个数据库表中的字段时,可使用别名来区分不同的数据表;,显示列名,在输出结果中,如果不希望使用字段名,可以根据要求设置一个名称;,选项目,字段名、表达式或函数;,表名,要查询的表。,SELECT,命令类似于,LIST FIELDS,字段名,1,,字段名,2,命令,它指出要输出的列,然后输出结果,但是,SELECT,命令的功能要强大得多。,4. 4 .1,简单查询,【,例,4.16】,列出学生名单。,SELECT * FROM XSDA,结果:,学号,姓名,性别,出生日期,团员否,入学成绩,班级名,05011001,李平,女,10/21/85T502.00,计算计,0101,05011002,章立新,男,02/14/86T489.50,电子,0105,05011003,赵智慧,女,05/07/85T467.00,计算计,0101,05021001,林敏,女,08/01/85T498.00,金融,0102,05021002,王新,男,11/05/84F500.00,电子,0105,05021003,于晶,女,03/04/85T488.00,英语,0104,05021004,朱建华,男,10/20/86T496.00,金融,0102,05031001,李国华,男,11/21/85T482.00,会计,0103,05031002,陈炳章,男,06/01/83T466.00,会计,0103,05031003,崔新荣,女,02/11/85T478.00,英语,0104,4. 4 .1,简单查询,【,例,4.17】,列出所有学生姓名,去掉重名。,SELECT DISTINC,姓名,AS ,学生名单, FROM XSDA,显示的结果中,原表中如有重复姓名,在这里只出现一次。,SELECT,命令中的选项,不仅可以是字段名,还可以是表达式,例如可以是一些函数,,SELECT,命令可操纵的函数很多。,【,例,4.18】,将所有的学生入学成绩四舍五入,只显示学号、姓名和入学成绩。,SELECT,学号,姓名,ROUND,(入学成绩,0,),AS ,入学成绩, FROM XSDA,注意:这个结果不影响数据库表“学生”中的结果,只是在输出时通过函数计算输出。,【,例,4.19】,求出所有的学生入学成绩平均分。,SELECT AVG,(入学成绩),AS ,入学成绩平均分, FROM,学生,由以上两例可见,人们可以直接利用,VF6,提供的各种函数,在输出时进行计算,便可得到相应的输出结果。,4. 4 .1,简单查询,2.,带条件查询,WHERE,是条件语句关键字,是可选项,其格式如下所示。,WHERE,条件表达式,1,AND,OR,条件表达式,2,其中,条件表达式可以是单表的条件表达式,也可以是多表之间的条件表达式,表达式用的比较符为,=,(等于)、!,=,(不等于)、,= =,(精确等于)、(大于)、,=,(大于等于)、(小于)、,=,(小于等于)。,注意:在写条件表达式时,有精确匹配和不精确匹配两种情况。一般情况下,“,= =,”表示要求精确匹配,“,=,”表示可以不精确匹配。但如果系统设置,SET EXACT ON,则“,=,”也表示要求精确匹配。系统默认的是,SET EXACT OFF,条件表达式是子查询的结果集合应满足的条件,如果某行条件为真就包括该行记录。表,4-4,是条件表达式中关键的意义和使用方法。,4. 4 .1,简单查询,关键字,说明,ALL,满足子查询中所有值的记录,例如,子查询的结果为,1,2,3,4,,记录,5,中字段,1,的值等于,5,,则字段,1,大于集合中的所有值。如果字段,1,的值等于,2,3,,则满足大条件,用法:,字段,比较符,ALL,(,子查询,),ANY,字段中的内容满足一个条件就为真,用法:,字段,比较符,ANY,(,子查询,),BETWEEN,字段,的内容在指定范围内,用法:,字段,BETWEEN,范围始值,AND,(,范围终值,),EXISTS,是否存在一个值满足子查询的条件,用法:,EXISTS,(,子查询,),IN,字段内容是结果集合或者子查询中的某一部分,用法:,字段,IN,结果集合,或者,字段,IN,(,子查询,),LIKE,对字符型数据进行字符串比较,提供两种通配符,即下划“,”,和“,%,”,,匹配,0,个或多字符,类似于,DOS,中的“?”和“,*,”号,用法:,字段,LIKE,字符表达式,SOME,满足集合中的某一个值,用法:,字段,比较符,SOME,(,子查询,),这种条件筛选的基本要领是:左边是一个字段,右边是一个集合,在集合中测定字段值,(,谓词演算,),是否满足条件。,NOT,可以与这些谓词演算符号配合使用,得到一个反逻辑。,4. 4 .1,简单查询,(,1,) 计算字段,【,例,4.20】,求出女性学生入学成绩平均分。,SELECT,姓名,AVG(,入学成绩,) ,入学成绩平均分, FROM XSDA WHERE,性别,女,(,2,)排除后列出,【,例,4.21】,列出非计算机专业的学生名单。,SELECT,学号,姓名,专业,FROM XSDA WHERE,专业,计算机,以上命令的功能等同于,SELECT,学号,姓名,专业,FROM XSDA WHERE,专业!,=,计算机,或,SELECT,学号,姓名,专业,FROM XSDA WHERE NOT(,专业,=,计算机,),4. 4 .1,简单查询,(,3,),IN,运算符,【,例,4.22】,列出电子专业和外语专业的学生名单。,SELECT,学号,姓名,专业,FROM XSDA WHERE,专业,IN(,电子,外语,),以上命令的功能等同于,SELECT,学号,姓名,专业,FROM XSDA WHERE,专业,=,电子, OR,专业,=,外语,(,4,),BETWEEN,运算符,【,例,4.23】,列出入学成绩在,450,分到,550,分之间的学生名单。,SELECT,学号,姓名,入学成绩,FROM XSDA WHERE,入学成绩,BETWEEN 450 AND 550,以上命令的功能等同于,SELECT,学号,姓名,专业,FROM XSDA WHERE,入学成绩,560 AND,入学成绩,ANY;,(,SELECT,期末,FROM,成绩,WHERE,课程号,=3002,该查询必须做两件事:先找出“,3002,”课的所有学生的期末成绩,然后选出“,3001,”课成绩中高于“,3002,”课中任何一个成绩的那些学生。,(,2,),ALL,谓词的用法,【,例,4.29】,列出学习“,3001,”课的学生,这些学生的成绩比参加“,3002,”课的最高期末成绩还要高的学生的学号和成绩。,SELECT,学生,成绩,AS,期末成绩,FROM CJ WHERE,课程号,=3001 AND,成绩,ALL;,(SELECT,成绩,FROM CJ WHERE,课号,=3002),该查询的含义是,:,先找出“,3002,”课的所有学生的成绩然后再找“,3001,”课期末成绩中高于“,3002,”课中最高期末成绩的那些学生。,4. 4 .3,嵌套查询,(,3,),IN,谓词的用法,【,例,4.30】,列出文科类,(,即专业类别为“,A,”,),学生的学生名单。,SELECT,学号,姓名,FROM,学生,WHERE,专业,IN;,(SELECT,专业名称,FROM,专业,WHERE,专业类别,=A),该查询先从专业表中找出专业类别为“,A,”的专业名称,然后在学生表中查找专业属于,A,类专业集合的那些记录。,IN,是属于的意思,等价于“,=ANY,”,即等于子查询中任何一个值。,4. 4 .4,分组与排序查询,1.,分组与统计,输出结果可以分组,其格式是:,GROUP BY,分组选项,1,分组选项,2,其中:分组选项可以是字段名、,SQL,函数表达式,也可以是列序号(最左边为,1,)。筛选条件格式是:,HAVING,筛选条件表达式,HAVING,子句与,WHERE,功能一样,只不过是与,GROUP BY,子句连用,不能用于子查询,即,HAVING,子句是用来指定列表输出的分组结果应满足的条件。,【,例,4.31】,统计各专业的学生人数。,SELECT,专业,COUNT(,专业,) FROM,学生表,GROUP BY,专业,【,例,4.32】,统计各专业的女学生数。,SELECT,专业, COUNT(,专业,) AS,女同学人数,FROM XSDA;,WHERE,性别,=,女, GROUP BY,专业,4. 4 .4,分组与排序查询,2.,排序,SELECT,的查询结果是按查询过程中的自然顺序给出的,因此查询结果通常无序,如果希望查询结果有序输出,需要下面的子句配合。,ORDER BY,排序选项,1,ASC,DESC,,排序选项,2,ASC,DESC,其中:,排序选项,可以是字段名,也可以是数字。字段名必须是主,SELECT,子句的选项,当然是,FROM,表中的字段。数字是表的列序号,第一列为,1,;,ASC,指定的排序项按增序排列;,DESC,指定的排序项按降序排列。,【,例,4.33】,按专业顺序列出学生的学号、姓名、专业、课名及期末成绩,同一专业的再先按课程后按期末成绩由高到低排序。,SELECT a.,学号,a.,姓名,a.,专业,c.,课名,b.,期末,AS,期末成绩,FROM XSDA a,CJ b,KC c;,WHERE a.,学号,=b.,学号,AND b.,课程号,=c.,课程号,ORDER BY a.,专业,c.,课程名,b.,成绩,DESC,4. 4 .5,集合的并运算,合并输出,(UNION),是指对两个查询结果进行集合合并操作,其子句格式如下:,UNIONALL,SELECT,命令,其中,,ALL,表示结果全部合并;若没有,ALL,,则重复的记录将被自动去掉。合并的规则如下:,不能合并子查询的结果;,两个,SELECT,命令必须输出同样的列数;,两个表各相应列的数据类型必须相同,数字和字符不能合并;,仅最后一个,SELECT,命令中可以用,ORDER BY,子句,且排序选项必须用数字,说明。,【,例,4.34】,合并“学生”表和“成绩”表中的学号。,SELECT,学号,FROM XSDA UNION SELECT,学号,FROM CJ,在“成绩”表中,尽管学号比较多,但大部分与“学生”表重复,合并后,重复的内容就自动去掉了,所以结果输出的学号最多与“学生”表中的学号个数一致。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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