第五章关系数据库标准语言SQL 一、考试大纲要求: 1、了解 (1)create table---SQL alter table---SQL (2)分组与计算查询 (3)集合的并运算 2、掌握 (1)delete---SQL insert---SQL update---SQL (2)嵌套查询 3、 重点掌握 (1)简单查询 (2)联接查询 二、知识要点 SQL语言的特点 1.一体化语言 SQL语言集数据定义(DDL)、数据操纵(DML)、数据管理(DCL)的功能于一体,语 言风格统一,可以独立完成数据库的全部操作,包括定义关系模式、录入数据及建立数据库、 查询、更新、维护数据、数据库的重新构造、数据库安全性等一系列操作的要求,为数据库 应用系统开发者提供了良好的环境。 2.高度非过程化 3.语言简洁,易学易用 4.以同一种语法结构提供两种使用方式 既可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。 二 SQL语言的基本概念 SQL语言支持关系型数据库的三级模式结构。其中外模式对应于视图(Viw)和部分 基本表(Base Table),模式对应于基本表,内模式对应于存储文件。 基本表是本身独立存在的表,在$QL语言中一个关系对应一个表。一些基本表对应一 个存储文件,一个表可以带若干索引,索引存放在存储文件中。 存储文件的逻辑结构组成了关系型数据库的内模式。而存储文件的物理文件结构是任意 的。 视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是说数据 库只存放在视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中, 因此视图是一个虚表。 三.数据定义 数据定义语言DDL用于执行数据定义的操作,如创建或删除表、索引和视图之类的对象。 由CREATE、DROP、ALTER命令组成,完成数据库对象的建立(CREATE)、删除(DROP) 和修改(ALTER)
第五章 关系数据库标准语言 SQL 一、考试大纲要求: 1、了解 (1)create table---SQL alter table---SQL (2)分组与计算查询 (3)集合的并运算 2、 掌握 (1)delete---SQL insert---SQL update---SQL (2)嵌套查询 3、 重点掌握 (1)简单查询 (2)联接查询 二、知识要点 一. SQL 语言的特点 1.一体化语言 SQL 语言集数据定义(DDL)、数据操纵(DML)、数据管理(DCL)的功能于一体,语 言风格统一,可以独立完成数据库的全部操作,包括定义关系模式、录入数据及建立数据库、 查询、更新、维护数据、数据库的重新构造、数据库安全性等一系列操作的要求,为数据库 应用系统开发者提供了良好的环境。 2.高度非过程化 3.语言简洁,易学易用 4.以同一种语法结构提供两种使用方式 既可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。 二. SQL 语言的基本概念 SQL 语言支持关系型数据库的三级模式结构。其中外模式对应于视图(View)和部分 基本表(Base Table),模式对应于基本表,内模式对应于存储文件。 基本表是本身独立存在的表,在 SQL 语言中一个关系对应一个表。一些基本表对应一 个存储文件,一个表可以带若干索引,索引存放在存储文件中。 存储文件的逻辑结构组成了关系型数据库的内模式。而存储文件的物理文件结构是任意 的。 视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是说数据 库只存放在视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中, 因此视图是一个虚表。 三. 数据定义 数据定义语言 DDL 用于执行数据定义的操作,如创建或删除表、索引和视图之类的对象。 由 CREATE、DROP、ALTER 命令组成,完成数据库对象的建立(CREATE)、删除(DROP) 和修改(ALTER)
1.定义(创建)表 【格式】: CREATE TABLE(: [([,])][完整性约束]: [NULL NOT NULL[,]) 【功能】定义(也称创建)一个表。 【例1】创建一个表SC(课程成绩表),它由以下字段组成:学号(C,10):课程号(C, 2)。 CREATE TABLE SC(学号C(1O),课程号C(2) LIST STRUCTURE 【例2】创建一个表STUD(学生信息表),它由以下字段组成:学号(C,10):姓名(C, 8):性别(C,2):班级名(C,10):系别代号(C,2):地址(C,50):出生日期(D): 是否团员(L):备注(M):照片(G)。 CREATE TABLE STUD(学号C(10),姓名C(10),性别C(2),班级名C(10),系别代号C(2),地 址C(50),出生日期D,是否团员L,备注M,照片G) LIST STRUCTURE 2.修改表 【格式】 ALTER TABLE[ADD[([,])][完 整性约束]NULL I NOT NULL][DROP[完整性约束][MODIFY∝数据类 型>] 【功能】修改表结构。 【说明】ADD子句用于增加指定表的字段变量名、数据类型、宽度和完整性约束条件:DROP 子句用于删除指定的的完整性约束条件:MODIFY子句用于修改原有的字段变量的值。 【例】在课程成绩表SC中,增加一个成绩字段变量(N,3)。 ALTER TABLE SC ADD成绩N(3) LIST STRUCTURE 3.删除数据库 【格式】DROP DATABASE 【功能】删除指定数据库的结构和数据。 【说明】谨慎使用。 4.删除表 【格式】DROP TALBE 【功能】删除指定表的结构和内容(包括在此表上建立的索引)。 【说明】如果只是想删除一个表中的所有记录,则应使用DELETE语句。 【例题】: 1.SQL是 语言。 A.结构化查询 B.数据定义 C.数据操作 D.数据控制 [解析本题考查的知识点是SQL语言的基础知识。在Visual FoxPro中,SQL是结构化查询语 言。选项B,C,D说法错误,在Visual FoxPro中有数据定义语言、数据操作语言、数据 控制语言。 [答案]A
1. 定义(创建)表 【格式】: CREATE TABLE (; [([,])][完整性约束]; [NULL | NOT NULL][,…]) 【功能】定义(也称创建)一个表。 【例 1】创建一个表 SC(课程成绩表),它由以下字段组成:学号(C,10);课程号(C, 2)。 CREATE TABLE SC(学号 C(10),课程号 C(2)) LIST STRUCTURE 【例 2】创建一个表 STUD(学生信息表),它由以下字段组成:学号 (C,10);姓名(C, 8);性别(C,2);班级名(C,10);系别代号(C,2);地址(C,50);出生日期 (D); 是否团员 (L);备注 (M);照片(G)。 CREATE TABLE STUD(学号 C(10),姓名 C(10),性别 C(2),班级名 C(10),系别代号 C(2),地 址 C(50),出生日期 D,是否团员 L,备注 M,照片 G) LIST STRUCTURE 2. 修改表 【格式】 ALTER TABLE [ADD [([,])][完 整性约束][NULL | NOT NULL]][DROP [完整性约束]][MODIFY ] 【功能】修改表结构。 【说明】ADD 子句用于增加指定表的字段变量名、数据类型、宽度和完整性约束条件;DROP 子句用于删除指定的的完整性约束条件;MODIFY 子句用于修改原有的字段变量的值。 【例】在课程成绩表 SC 中,增加一个成绩字段变量(N,3)。 ALTER TABLE SC ADD 成绩 N(3) LIST STRUCTURE 3.删除数据库 【格式】DROP DATABASE 【功能】删除指定数据库的结构和数据。 【说明】谨慎使用。 4. 删除表 【格式】DROP TALBE 【功能】删除指定表的结构和内容(包括在此表上建立的索引)。 【说明】如果只是想删除一个表中的所有记录,则应使用 DELETE 语句。 【例题】: 1.SQL是______语言。 A.结构化查询 B.数据定义 C.数据操作 D.数据控制 [解析] 本题考查的知识点是SQL语言的基础知识。在Visual FoxPro中,SQL是结构化查询语 言。 选项B,C,D说法错误,在Visual FoxPro中有数据定义语言、数据操作语言、数据 控制语言。 [答案] A
2.SQL除了具有数据查询的功能外,还有 A.数据定义 B.数据操纵 C.数据控制 D.以上答案均正确 [解析本题考查的知识点是SQL语言的作用。在Visual FoxPro中,SQL的功能有四个:数 据查询、数据定义、数据操纵、数据控制。因此正确答案为D。 [答案]D 3.下列选项中,不属于数据定义功能的$QL语句是 A.CREATE B.ALTER C.SELECT D.DROP [解析]本题考查的知识点是$QL命令动词的作用。 选项A用来创建表:选项B用来修改表结构:选项C用来查询:选项D用来删除表文件。在Visual FoxPro中,选项A,B,D都具有数据定义功能,只有选项C具有数据查询的功能。 [答案]C 4.SQL的核心是 A.数据查询 B.数据定义 C.数据操纵 D.数据控制 [解析本题考查的知识点是$QL的核心。SQL作为结构化查询语言,其核心是查询。因此 正确答案为A。 [答案]A 5.SQL同其他数据操作语言不同,其关键在于 A.SQL是一种过程性语言 B.SQL是一种非过程性语言 C.SQL语言简练 D.SQL的词汇有限 [解析本题考查的知识点是$QL不同于其他语言的关键。SQL同其他数据操作语言不同的 关键是$QL是一种非过程性语言。通过这一功能用户只需说明做什么,而不用说明怎么 做,不用了解数据存储的格式及$QL命令的内部执行过程,就可以方便地对数据库进行 操作。选项A的说法错误,选项C和D是SQL语言的特点,但不是SQL语言同其他数据操 作语言不同的关键。 [答案]B 6.建立表结构的$QL命令是。 A.ALTER TABLE B.DROP TABLE C.CREAT TABLE D.CREATINDEX [解析]本题考查的知识点是建立表结构的SQL命令。建立表结构的SQL命令是CREAT TABLE。ALTER TABLE命令的作用是修改表结构:DROP TABLE命令的作用是删除表: CREAT INDEX命令的作用是建立索引。 [答案]C 7.$QL可以 使用,也可以使用。 [解析]本题考查的知识点是$QL语言的使用方式。SQL语言可以直接以命令方式交互使 用,也可以嵌入到程序设计语言中以程序方式使用。 [答案]直接以命令方式交互,嵌入到程序设计语言中以程序方式 8.在ALTER TABLE中, 用来添加新字段:修改已有字段。 [解析本题考查的知识点是ALTER TABLE命令及各子项的作用。在ALTER TABLE命令
2.SQL除了具有数据查询的功能外,还有_____。 A. 数据定义 B.数据操纵 C. 数据控制 D.以上答案均正确 [解析] 本题考查的知识点是SQL语言的作用。在Visual FoxPro中,SQL的功能有四个:数 据查询、数据定义、数据操纵、数据控制。因此正确答案为D。 [答案] D 3.下列选项中,不属于数据定义功能的SQL语句是__________。 A.CREATE B.ALTER C.SELECT D.DROP [解析] 本题考查的知识点是SQL命令动词的作用。 选项A用来创建表;选项B用来修改表结构;选项C用来查询;选项D用来删除表文件。在Visual FoxPro中,选项A,B,D都具有数据定义功能,只有选项C具有数据查询的功能。 [答案] C 4.SQL的核心是__________。 A.数据查询 B.数据定义 C.数据操纵 D.数据控制 [解析] 本题考查的知识点是SQL的核心。SQL作为结构化查询语言,其核心是查询。因此 正确答案为A。 [答案] A 5.SQL同其他数据操作语言不同,其关键在于_____。 A.SQL是一种过程性语言 B.SQL是一种非过程性语言 C.SQL语言简练 D.SQL的词汇有限 [解析] 本题考查的知识点是SQL不同于其他语言的关键。SQL同其他数据操作语言不同的 关键是SQL是一种非过程性语言。通过这一功能用户只需说明做什么,而不用说明怎么 做,不用了解数据存储的格式及SQL命令的内部执行过程,就可以方便地对数据库进行 操作。选项A的说法错误,选项C和D是SQL语言的特点,但不是SQL语言同其他数据操 作语言不同的关键。 [答案] B 6.建立表结构的SQL命令是____。 A.ALTER TABLE B.DROP TABLE C.CREAT TABLE D.CREAT INDEX [解析] 本题考查的知识点是建立表结构的SQL命令。建立表结构的SQL命令是CREAT TABLE。ALTER TABLE命令的作用是修改表结构;DROP TABLE命令的作用是删除表; CREAT INDEX命令的作用是建立索引。 [答案] C 7.SQL可以_____使用,也可以_____使用。 [解析] 本题考查的知识点是SQL语言的使用方式。SQL语言可以直接以命令方式交互使 用,也可以嵌入到程序设计语言中以程序方式使用。 [答案] 直接以命令方式交互,嵌入到程序设计语言中以程序方式 8.在ALTER TABLE中,_____用来添加新字段;_____修改已有字段。 [解析] 本题考查的知识点是ALTER TABLE命令及各子项的作用。在ALTER TABLE命令
中,ADD用来添加新字段:ALTER用来修改已有字段。 [答案]ADD ALTER 四、数据操纵 数据操纵语言是完成数据操作的命令,一般分为两种类型的数据操纵,它们统称为DML: ●数据查询:寻找所需的具体数据。 ●数据修改:添加、删除和改变数据。 数据操纵语言一般由NSERT(插入)、DELETE(删除)、UPDATE(更新),SELECT(查 询)等组成,由于SELECT比较特殊,所以一般又将它以查询语言单独出现。 1、插入记录 数据操纵语言是完成数据操作的命令,一般分为两种类型的数据操纵,它们统称为DML: ●数据查询:寻找所需的具体数据。 ●数据修改:添加、删除和改变数据。 数据操纵语言一般由NSERT(插入)、DELETE(删除)、UPDATE(更新),SELECT(查 询)等组成,由于SELECT比较特殊,所以一般又将它以查询语言单独出现。 :指定表文件中的字段,缺省时,按表文件字段的顺序依次赋值。 :指定要追加的记录各个字段的值。 【例1】在表文件STUD的末尾追加三条记录。 *用表达式方式追加第一条记录** NSERT INTO STUD(学号,姓名,性别,班级名,系别代号,地址,出生日期,是否团员); VALUES("011110","李中国","男","计0121","01","湖北武汉",{2005/01/06},T) *用数组方式追加第二条记录** DIMENSION TA[8] TA(1)="011103 TA(2)="李宁” TA(3)="女” TA(4)="电0134 TA(5)="02” TA(6)="北京赛迪网校” TA(7)={2005/01/15} TA(8)=.T. INSERT INTO STUD FROM ARRAY TA *用内存变量方式追加第三条记录* 学号="011202" 姓名="赵娜 性别="女" 班级名="英0112” 系别代号="03” 地址=”广西南宁” 出生日期={2002/12/14} 是否团员=F INSERT INTO STUD FROM MEMVAR LIST 2.更新记录命令
中,ADD用来添加新字段;ALTER用来修改已有字段。 [答案] ADD ALTER 四、数据操纵 数据操纵语言是完成数据操作的命令,一般分为两种类型的数据操纵,它们统称为 DML: ● 数据查询:寻找所需的具体数据。 ● 数据修改:添加、删除和改变数据。 数据操纵语言一般由 INSERT(插入)、DELETE(删除)、UPDATE(更新),SELECT(查 询)等组成,由于 SELECT 比较特殊,所以一般又将它以查询语言单独出现。 1、 插入记录 数据操纵语言是完成数据操作的命令,一般分为两种类型的数据操纵,它们统称为 DML: ● 数据查询:寻找所需的具体数据。 ● 数据修改:添加、删除和改变数据。 数据操纵语言一般由 INSERT(插入)、DELETE(删除)、UPDATE(更新),SELECT(查 询)等组成,由于 SELECT 比较特殊,所以一般又将它以查询语言单独出现。 :指定表文件中的字段,缺省时,按表文件字段的顺序依次赋值。 :指定要追加的记录各个字段的值。 【例 1】在表文件 STUD 的末尾追加三条记录。 ***用表达式方式追加第一条记录*** INSERT INTO STUD (学号,姓名,性别,班级名,系别代号,地址,出生日期,是否团员) ; VALUES("011110","李中国","男","计 0121","01","湖北武汉",{^2005/01/06},.T.) ***用数组方式追加第二条记录*** DIMENSION TA[8] TA(1)="011103" TA(2)="李宁" TA(3)="女" TA(4)="电 0134" TA(5)="02" TA(6)="北京赛迪网校" TA(7)={^2005/01/15} TA(8)=.T. INSERT INTO STUD FROM ARRAY TA ***用内存变量方式追加第三条记录*** 学号="011202" 姓名="赵娜" 性别="女" 班级名="英 0112" 系别代号="03" 地址="广西南宁" 出生日期={^2002/12/14} 是否团员=.F. INSERT INTO STUD FROM MEMVAR LIST 2.更新记录命令
【格式】 UPDATE SET= [,=】[WHERE] 【功能】更新指定表文件中满足WHERE条件子句的数据。其中SET子句用于指定列和修 改的值,WHERE用于指定更新的行,如果省略WHERE子句,则表示表中所有行。 【说明】更新操作又称为修改操作。 【例】将成绩表(SC)中,所有课程号为02的成绩各加5分。 UPDATE SC SET成绩=成绩+5 WHERE课程号="k321" 3.删除记录 【格式】DELETE FROMWHERE 【功能】从指定的表中删除满足WHERE子句条件的所有记录。如果在DELETE语句中没 有WHERE子句,则该表中的所有记录都将被删除。 【说明】这里的删除是逻辑删除,即在删除的记录前加上一个删除标记“*”。 【例】删除STUD表中所有性别为男的记录。 DELETE FROM STUD WHERE性别=“男” 4.数据管理 数据管理(也称数据控制)语言是用来管理(或控制)用户的访问权限的。而Visual FoxPro6.0 没有这种权限管理。 【例题】: 1.下列关于NSERT-一SQL的叙述正确的是一。 A.在表尾插入一条记录 B.在表头插入一条记录 C.在表中任何位置插入一条记录 D.可以向表中插入若干记录 [解析本题考查的知识点是INSERT命令的作用。INSERT-一SQL命令的作用是在表尾插 入一条记录。 选项B,C,D的说法都错误,NSERT-一SQL命令不能完成B,C,D指定的要求。 [答案]A 2.DELETE FROM考生成绩WHERE成绩<90语句的功能是 A.物理删除成绩在90分以下的记录 B.彻底删除成绩在90分以下的记录 C.删除考生成绩表 D.为表中成绩小于90分的记录添加删除标记 [解析本题考查的知识点是SQL语句中DELETE命令的使用。SQL中的DELETE命令 用于逻辑删除记录,如果要物理删除记录,需要用PACK命令。选项A中的物理删除错误。 选项B的彻底删除实际就是物理删除,所以错误。选项C的说法有错误。选项D的说法正 确,因为SQL中的DELETE命令用于逻辑删除记录,FROM用于指定从哪个表中删除记录, 本题即从“考生成绩”表中删除:WHEE用于指定被删除的记录所满足的条件,本题的条 件是成绩在90分以下的记录。 [答案]D 3.SQL语句中,UPDATE命令的功能是
【格式】 UPDATE SET = [,=…] [WHERE ] 【功能】更新指定表文件中满足 WHERE 条件子句的数据。其中 SET 子句用于指定列和修 改的值,WHERE 用于指定更新的行,如果省略 WHERE 子句,则表示表中所有行。 【说明】更新操作又称为修改操作。 【例】将成绩表(SC)中,所有课程号为 02 的成绩各加 5 分。 UPDATE SC SET 成绩=成绩+5 WHERE 课程号="k321" 3.删除记录 【格式】 DELETE FROM WHERE 【功能】从指定的表中删除满足 WHERE 子句条件的所有记录。如果在 DELETE 语句中没 有 WHERE 子句,则该表中的所有记录都将被删除。 【说明】这里的删除是逻辑删除,即在删除的记录前加上一个删除标记“*”。 【例】删除 STUD 表中所有性别为男的记录。 DELETE FROM STUD WHERE 性别=“男” 4. 数据管理 数据管理(也称数据控制)语言是用来管理(或控制)用户的访问权限的。而 Visual FoxPro6.0 没有这种权限管理。 【例题】: 1.下列关于 INSERT—SQL 的叙述正确的是____。 A.在表尾插入一条记录 B.在表头插入一条记录 C.在表中任何位置插入一条记录 D.可以向表中插入若干记录 [解析] 本题考查的知识点是 INSERT 命令的作用。INSERT—SQL 命令的作用是在表尾插 入一条记录。 选项 B,C,D 的说法都错误,INSERT—SQL 命令不能完成 B,C,D 指定的要求。 [答案] A 2.DELETE FROM 考生成绩 WHERE 成绩<90 语句的功能是____。 A.物理删除成绩在 90 分以下的记录 B.彻底删除成绩在 90 分以下的记录 C.删除考生成绩表 D.为表中成绩小于 90 分的记录添加删除标记 [解析] 本题考查的知识点是 SQL 语句中 DELETE 命令的使用。SQL 中的 DELETE 命令 用于逻辑删除记录,如果要物理删除记录,需要用 PACK 命令。选项 A 中的物理删除错误。 选项 B 的彻底删除实际就是物理删除,所以错误。选项 C 的说法有错误。选项 D 的说法正 确,因为 SQL 中的 DELETE 命令用于逻辑删除记录,FROM 用于指定从哪个表中删除记录, 本题即从“考生成绩”表中删除;WHERE 用于指定被删除的记录所满足的条件,本题的条 件是成绩在 90 分以下的记录。 [答案] D 3.SQL 语句中,UPDATE 命令的功能是____
A.数据更新 B.删除数据 C.建立表 D.修改表 [解析本题考查的知识点是SQL语句中UPDATE命令的功能。在SQL语句中,UPDATE 命令的功能是数据更新。删除数据的命令是DELETE。建立表的命令是CREATE TABLE。 修改表结构的命令ALTER TABLE。 [答案]A 4.SQL语言中,删除表命令是。 A.DELETE B.DELETE TABLE C.DROP D.DROP TABLE [解析本题考查的知识点是删除表的命令。SQL中删除表的命令是DROP TABLE。DELETE 命令用于删除数据。DELETE TABLE的格式错误。DROP命令的语法错误。因此正确答案 为D。 5.在SQL语句中,修改表中数据的命令是。 A.ALTER B.UPDATE C.DELETE D.DISTINCT [解析本题考查的知识点是SQL中修改表中数据的命令。$QL语句中修改表中数据的命 令UPDATE。 ALTER命令用于修改表结构。DELETE命令用于删除数据。DISTINCT命令用于 SELECT语句中消除重复出现的记录行。 [答案]B 6.在Visual FoxPro中,向表中输入记录的命令是_。 [解析本题考查的知识点是向表中输入记录的命令。在SQL语句中,向表中输入记录的命 令是INSERT。 [答案]INSERT 7.在Visual FoxPro中SQL DELETE命令是删除记录,如果要物理删除记录应使用 命令。 [解析本题考查的知识点是SQL中的DELETE删除命令。在Visual FoxPro的SQL中 DELETE命令是逻辑删除记录,如果要物理删除记录应使用PACK命令。 [答案]逻辑,PACK 五.SQL中的数据查询语句 数据库中的数据很多时侯是为了查询,因此,数据查询是数据库的核心操作。而在$OL 语言中,查询语言中有一条查询命令,即SELECT语句。 1.基本查询语句 【格式】 SELECT[ALL|DISTINCTFROM 【功能】无条件查询。 【说明】ALL:表示显示全部查询记录,包括重复记录。 DISTINCT:表示显示无重复结果的记录。 【例1】显示STUD(学生信息数据表)中的所有记录。 SELECT FROM STUD 命令中的*表示输出显示所有的字段,数据来源是STUD表,表中的内容以浏览方式显示。 【例2】显示STUD(学生信息数据表)中的所有的学号及与之对应的姓名,同时能去除重 名
A.数据更新 B.删除数据 C.建立表 D. 修改表 [解析] 本题考查的知识点是 SQL 语句中 UPDATE 命令的功能。在 SQL 语句中,UPDATE 命令的功能是数据更新。删除数据的命令是 DELETE。建立表的命令是 CREATE TABLE。 修改表结构的命令 ALTER TABLE。 [答案] A 4.SQL 语言中,删除表命令是____。 A.DELETE B.DELETE TABLE C.DROP D.DROP TABLE [解析]本题考查的知识点是删除表的命令。SQL 中删除表的命令是 DROP TABLE。DELETE 命令用于删除数据。DELETE TABLE 的格式错误。DROP 命令的语法错误。因此正确答案 为 D。 5.在 SQL 语句中,修改表中数据的命令是____。 A.ALTER B.UPDATE C.DELETE D.DISTINCT [解析] 本题考查的知识点是 SQL 中修改表中数据的命令。SQL 语句中修改表中数据的命 令 UPDATE。 ALTER 命令用于修改表结构。DELETE 命令用于删除数据。DISTINCT 命令用于 SELECT 语句中消除重复出现的记录行。 [答案] B 6.在 Visual FoxPro 中,向表中输入记录的命令是____。 [解析]本题考查的知识点是向表中输入记录的命令。在 SQL 语句中,向表中输入记录的命 令是 INSERT。 [答案] INSERT 7.在 Visual FoxPro 中 SQL DELETE 命令是____删除记录,如果要物理删除记录应使用____ 命令。 [解析] 本题考查的知识点是 SQL 中的 DELETE 删除命令。在 Visual FoxPro 的 SQL 中 DELETE 命令是逻辑删除记录,如果要物理删除记录应使用 PACK 命令。 [答案] 逻辑,PACK 五. SQL 中的数据查询语句 数据库中的数据很多时侯是为了查询,因此,数据查询是数据库的核心操作。而在 SQL 语言中,查询语言中有一条查询命令,即 SELECT 语句。 1. 基本查询语句 【格式】 SELECT [ALL | DISTINCT] FROM 【功能】无条件查询。 【说明】ALL: 表示显示全部查询记录,包括重复记录。 DISTINCT: 表示显示无重复结果的记录。 【例 1】显示 STUD(学生信息数据表)中的所有记录。 SELECT * FROM STUD 命令中的*表示输出显示所有的字段,数据来源是 STUD 表,表中的内容以浏览方式显示。 【例 2】显示 STUD(学生信息数据表)中的所有的学号及与之对应的姓名,同时能去除重 名
SELECT DISTINCT学号,姓名FROM STUD 【例3】显示SC(课程成绩表)中的所有记录,并将成绩一项乘以0.7。 SELECT学号,课程号,成绩*0.7AS成绩FROM SC 2.带条件(WHERE)的查询语句 【格式】 SELECT[ALL DISTINCT FROM [WHERE] 【功能】从一个表中查询满足条件的数据。 【说明】由一系列用AND或OR连接的条件表达式组成,SQL支持的关系 运算符如下: =、<>、!=、#、==、>、>=、 FROM[,表2….J WHERE 【例1】查询并显示各个学生的学号,姓名,各科成绩及课程名。 SELECT a.学号,a姓名,b.课程号,c.成绩; FROM STUD a,SCI b,SC c; WHERE a.学号=c.学号ANDb.课程号=c.课程号 【例2】查询并显示各个学生所学课程的情况。 SELECT STUD.学号,STUD.姓名,SC1.课程号; FROM STUD,SC,SCI; WHERE STUD.学号=SC.学号AND SC.课程号=SC1.课程号 (2).连接问题 在SQL语句中,在FROM子句中提供了一种称之为连接的子句,连接分为内部联接和外部 联接,外部联接又可分为左联接、右联接和全联接。 1).内部联接 内部联接是指包括符合条件的每个表的记录,也称之为全记录操作。而上面两个例子就是内
SELECT DISTINCT 学号,姓名 FROM STUD 【例 3】显示 SC(课程成绩表)中的所有记录,并将成绩一项乘以 0.7。 SELECT 学号,课程号,成绩*0.7 AS 成绩 FROM SC 2. 带条件(WHERE)的查询语句 【格式】 SELECT [ALL | DISTINCT] FROM [WHERE ] 【功能】从一个表中查询满足条件的数据。 【说明】由一系列用AND 或 OR 连接的条件表达式组成,SQL支持的关系 运算符如下: =、<>、!=、#、==、>、>=、<、<=。 【例 1】显示 STUD 表中所有男生记录的学号,姓名和性别字段值。 SELECT 学号,姓名,性别 FROM STUD WHERE 性别="男" 【例 2】显示 STUD 表中出生日期在 85-86 年之间的学生的学号,姓名,出生日期。 SELECT 学号,姓名,出生日期 FROM 学生; WHERE 出生日期 BETWEEN {^1985/01/01} AND {^1986/12/31} 【例 3】显示 STUD 表中姓李的学生的学号,姓名,出生日期。 SELECT 学号,姓名,出生日期 FROM 学生; WHERE 姓名 LIKE "l%" (注:LIKE 是字符匹配运算符,可使用通配符%(表示 0-多个字符)、—(表示一个字府)) . SQL 的复杂查询 (1).连接查询 【说明】在一个数据库中的多个表之间一般都存在着某些联系,在一个查询语句中同时涉及 到两个或两个以上的表时,这种查询称之为连接查询(也称为多表查询)。在多表之间查询 必须处理表与表之间的连接关系。 SELECT [ALL | DISTINCT] FROM [,表 2…..] WHERE 【例 1】查询并显示各个学生的学号,姓名,各科成绩及课程名。 SELECT a.学号,a.姓名,b.课程号,c.成绩 ; FROM STUD a,SC1 b,SC c ; WHERE a.学号=c.学号 AND b.课程号=c.课程号 【例 2】查询并显示各个学生所学课程的情况。 SELECT STUD.学号,STUD.姓名,SC1.课程号 ; FROM STUD,SC,SC1; WHERE STUD.学号=SC.学号 AND SC.课程号=SC1.课程号 (2).连接问题 在 SQL 语句中,在 FROM 子句中提供了一种称之为连接的子句,连接分为内部联接和外部 联接,外部联接又可分为左联接、右联接和全联接。 1). 内部联接 内部联接是指包括符合条件的每个表的记录,也称之为全记录操作。而上面两个例子就是内
连接。 【例】查询并显示各个学生的学号,所学课程及课程成绩。 SELECT SC.学号,SC1.课程名,SC.成绩; FROM SC,SCI; WHERE SC.课程号=SC1.课程号 如果采用内部联接方式,则命令如下: SELECT a.学号,b.课程名,成绩; FROM SC a INNER JOIN SCI b ON a.课程号=b.课程号 将会得到完全相同的结果。 2).外部联接 外部联接是指把两个表分为左右两个表。右联接是指连接满足条件右侧表的全部记录。左联 接是指连接满足条件左侧表的全部记录。全联接是指连接满足条件表的全部记录。 (3).嵌套查询 在SQL语句中,一个SELECT一FROM一WHERE语句称为一个查询块。将一个查询块嵌 套在另一个查询块的WHEE子句中的查询称为嵌套查询。 【例1】显示“李宁”所在班级的学生名单。 SELECT学号,姓名,班级名; FROM STUD: WHERE班级名=(SELECT班级名FROM STUD WHERE姓名="李中国") 【例2】显示计算机系男生的名单。 SELECT学号,姓名,系别代号,性别 FROM STUD: WHERE系别代号="OI"AND性别="男 【例3】显示计算机系非男生的名单。 SELECT学号,姓名,系别代号,性别;FROM STUD; WHERE系别代号="O3"AND性别="女 【例4】显示既选修了01课程又选修了02课程学生的名单。 SELECT学号; FROM SC; WHERE课程号=“O1”AND学号N; (SELECT学号FROM SC WHERE课程号=“O2”) 【例5】显示选修了01课程而没有选修02课程学生的名单。 SELECT学号; FROM SC; WHERE课程号="OI"AND学号NOT IN; (SELECT学号FROM SC WHERE课程号="O2") (4).排序 在SQL SELECT中使用ORDER BY短语对查询结果排序,并可以用ASC按升序排序(默 认),用DESC按降序排序,可以按一列或多列排序。 【例1】先按课程号排序、再按成绩排序检索出全部SC表中的学生信息。 SELECT*FROM SC ORDER BY课程号ASC,成绩DESC 【例题】: 1.下列命令中,属于数据查询功能的SQL语句是
连接。 【例 】查询并显示各个学生的学号,所学课程及课程成绩。 SELECT SC.学号,SC1.课程名,SC.成绩 ; FROM SC,SC1 ; WHERE SC.课程号=SC1.课程号 如果采用内部联接方式,则命令如下: SELECT a.学号,b.课程名,成绩 ; FROM SC a INNER JOIN SC1 b ON a.课程号=b.课程号 将会得到完全相同的结果。 2). 外部联接 外部联接是指把两个表分为左右两个表。右联接是指连接满足条件右侧表的全部记录。左联 接是指连接满足条件左侧表的全部记录。全联接是指连接满足条件表的全部记录。 (3).嵌套查询 在 SQL 语句中,一个 SELECT-FROM-WHERE 语句称为一个查询块。将一个查询块嵌 套在另一个查询块的 WHERE 子句中的查询称为嵌套查询。 【例 1】显示“李宁”所在班级的学生名单。 SELECT 学号,姓名,班级名 ; FROM STUD ; WHERE 班级名=(SELECT 班级名 FROM STUD WHERE 姓名="李中国") 【例 2】显示计算机系男生的名单。 SELECT 学号,姓名,系别代号,性别 ; FROM STUD ; WHERE 系别代号="01" AND 性别="男" 【例 3】显示计算机系非男生的名单。 SELECT 学号,姓名,系别代号,性别 ;FROM STUD ; WHERE 系别代号="03" AND 性别="女" 【例 4】显示既选修了 01 课程又选修了 02 课程学生的名单。 SELECT 学号 ; FROM SC ; WHERE 课程号=“01” AND 学号 IN ; (SELECT 学号 FROM SC WHERE 课程号=“02”) 【例 5】显示选修了 01 课程而没有选修 02 课程学生的名单。 SELECT 学号 ; FROM SC ; WHERE 课程号="01" AND 学号 NOT IN ; ( SELECT 学号 FROM SC WHERE 课程号="02") (4).排序 在 SQL SELECT 中使用 ORDER BY 短语对查询结果排序,并可以用 ASC 按升序排序(默 认),用 DESC 按降序排序,可以按一列或多列排序。 【例 1】先按课程号排序、再按成绩排序检索出全部 SC 表中的学生信息。 SELECT * FROM SC ORDER BY 课程号 ASC,成绩 DESC 【例题】: 1.下列命令中,属于数据查询功能的 SQL 语句是_____
A.CREATE B.SELECT C.INSERT D.GRANT [解析本题考查的知识点是SQL中的数据查询命令。在Visual FoxPro中,数据查询的命 令动词是SELECT。CREATE是数据定义命令之一:INSERT是数据操纵命令之一:GRANT 是数据控制命令之一。 本题选项A用于数据定义。选项B用于数据查询。选项C用于数据操纵。选项D 用于数据控制。 [答案]B 2.在Visual FoxPro中,简单查询基于 A.单个表 B.两个表 C.两个有关联的表 D.多个表 [解析本题考查的知识点是$QL语句中的简单查询。简单查询基于单个表,可以有简单 的查询条件。 [答案]A 3.从“学生资料”表中查询所有的姓名,应输入 命令。 A.SELECT学生资料FROM姓名 B.SELECT姓名FROM学生资料 C.SELECT姓名 D.SELECT学生资料WHERE姓名 [解析]本题考查的知识点是简单查询的使用。简单查询由SELECT和FROM短语构成无条 件查询,或由SELECT、ROM和WHERE短语构成条件查询。 选项A中的“学生资料”和“姓名”顺序颠倒:选项B格式及命令都正确: 选项C格式错误:选项D命令错误。 [答案]B 4.从“学生资料”表中查询所有年龄大于22岁的学生并显示其姓名,应输入 命令。 A.SELECT年龄FROM学生资料WHERE姓名>22 B.SELECT年龄FROM学生资料 C.SELECT姓名FROM学生资料WHERE年龄>22 D.SELECT姓名FROM学生资料 [解粉本题考查的知识点是简单查询命令的使用。本题由SELECT、FROMT WHERE短 语构成条件查询,其中WHERE指定了查询条件。 所以本题先排除B、D。选项A中“姓名”和“年龄”顺序颠倒,输入该命令,系统会 提示操作符与操作命令不匹配的对话框:选项C中“SELECT姓名”表示查询姓名,“FROM 学生资料”指定从“学生资料”表中查询,WHERE年龄>22指定查询条件为22岁。 [答案]C 5.联接查询是基于 的查询。 A.一个表 B.两个表 C.多个关系 D.有一个关联的表 [解析本题考查的知识点是联接查询。在Visual FoxPro中,联接查询是一个基于多个关系 的查询。由于联接查询要求的索引信息出于多个关系,因此这样的检索肯定是基于多个关系 的。因此正确答案为C。 [答案]C 6.SQL语句中删除表的命令是 A.DELETE TABLE B.DROP TABLE
A.CREATE B.SELECT C.INSERT D.GRANT [解析] 本题考查的知识点是 SQL 中的数据查询命令。在 Visual FoxPro 中,数据查询的命 令动词是 SELECT。CREATE 是数据定义命令之一;INSERT 是数据操纵命令之一;GRANT 是数据控制命令之一。 本题选项 A 用于数据定义。选项 B 用于数据查询。选项 C 用于数据操纵。选项 D 用于数据控制。 [答案] B 2.在 Visual FoxPro 中,简单查询基于________。 A.单个表 B.两个表 C.两个有关联的表 D.多个表 [解析] 本题考查的知识点是 SQL 语句中的简单查询。简单查询基于单个表,可以有简单 的查询条件。 [答案] A 3.从“学生资料”表中查询所有的姓名,应输入______命令。 A.SELECT 学生资料 FROM 姓名 B.SELECT 姓名 FROM 学生资料 C.SELECT 姓名 D.SELECT 学生资料 WHERE 姓名 [解析]本题考查的知识点是简单查询的使用。简单查询由 SELECT 和 FROM 短语构成无条 件查询,或由 SELECT、FROM 和 WHERE 短语构成条件查询。 选项 A 中的“学生资料”和“姓名”顺序颠倒;选项 B 格式及命令都正确; 选项 C 格式错误;选项 D 命令错误。 [答案] B 4.从“学生资料”表中查询所有年龄大于 22 岁的学生并显示其姓名,应输入_______命令。 A.SELECT 年龄 FROM 学生资料 WHERE 姓名>22 B.SELECT 年龄 FROM 学生资料 C.SELECT 姓名 FROM 学生资料 WHERE 年龄>22 D.SELECT 姓名 FROM 学生资料 [解析] 本题考查的知识点是简单查询命令的使用。本题由 SELECT、FROMT WHERE 短 语构成条件查询,其中 WHERE 指定了查询条件。 所以本题先排除 B、D。选项 A 中“姓名”和“年龄”顺序颠倒,输入该命令,系统会 提示操作符与操作命令不匹配的对话框;选项 C 中“SELECT 姓名”表示查询姓名,“FROM 学生资料”指定从“学生资料”表中查询,WHERE 年龄>22 指定查询条件为 22 岁。 [答案] C 5.联接查询是基于_______的查询。 A.一个表 B.两个表 C.多个关系 D.有一个关联的表 [解析]本题考查的知识点是联接查询。在 Visual FoxPro 中,联接查询是一个基于多个关系 的查询。由于联接查询要求的索引信息出于多个关系,因此这样的检索肯定是基于多个关系 的。因此正确答案为 C。 [答案] C 6.SQL 语句中删除表的命令是____。 A.DELETE TABLE B. DROP TABLE
C.ALTER TABLE D.UPDATE TABLE [解析]本题考查的知识点是从数据库中删除表的SQL命令。删除表的SQL命令是DROP TABLE。DROP TABLE命令将直接从磁盘上删除所对应的.dbf文件。如 果是数据库中的表并且该数据库又是当前数据库,则会从数据库中删除该表:否则 即使从磁盘上删除了.dbf文件,也不会将记录在数据库.dbc文件中的信息删除。 选项A命令错误:选项B命令正确:选项C中的命令用来修改表结构:选项D中的 命令用来更新表。 [答案]B 7.使用SQL SELECT可以将查询结果排序,排序的短语是 A.ORDER BY B.ORDER C.GROUP BY D.COUNT [解本题考查的知识点是SQL中的排序命令。使用SQL SELECT排序的短语是ORDER BY。 选项A即是SQL SELECT中用来排序的短语:选项B命令语法错误:选项C是进 行分组计算查询的命令:选项D是计算查询中的计数函数。 [答案]A 8.在Visual FoxPro中,嵌套查询是基于的查询。 A.一个表 B.多个表 C.一个关系 D.多个关系 [解析]本题考查的知识点是嵌套查询。在Visual FoxPro中,嵌套查询是基于多个关系的 查询。因此正确答案为D。 [答案]D 9.嵌套查询命令中的N相当于一。 A.等号= B.集合运算符∈ C.加号+ D.减号一 [解析本题考查的知识点是嵌套查询命令中的参数。嵌套查询命令中的N相当于集合运 算符∈。选项A,C,D错误,目的是迷惑考生。只有选项B正确。 [答案]B 10.如果将“考生资料”表中的记录按年龄降序排列,应输入命令。 [解析本题考查的知识点是SQL语句中排序命令的使用。在Visual FoxPro中,排序短语为 ORDER BY 如果需要将结果按降序排列,只需加上DESC即可。因此输入的命令为: SELECT*FROM考生资料ORDER BY年龄DESC [答案]SELECT*FROM考生资料ORDER BY年龄DESC Il.SQL SELECT语句中INNER JOIN等价于,为,在Visual FoxPro中称为 。(p128) [解析本题考查的知识点是INNER JOIN联接。在SQL SELECT中,NNDR JOIN等价 于JON,为普通的联接,在Visual FoxPro中称为内部联接。 [答案]JON,普通联接,内部联接 12.在$QL中,除满足联接条件的记录出现在查询结果中外,第一个表中满足联接条件的 记录也出现在查询结果中。这种联接为又称为一。 [解析]本题考查的知识点是左联接的概念,它是指除满足联接条件的记录出现在查询结 果中外,第一个表中满足联接条件的记录也出现在查询结果中。 [答案]LEFT JOIN左联接
C. ALTER TABLE D. UPDATE TABLE [解析]本题考查的知识点是从数据库中删除表的 SQL 命令。删除表的 SQL 命令是 DROP TABLE<表名>。DROP TABLE 命令将直接从磁盘上删除<表名>所对应的.dbf 文件。如 果<表名>是数据库中的表并且该数据库又是当前数据库,则会从数据库中删除该表;否则 即使从磁盘上删除了.dbf 文件,也不会将记录在数据库.dbc 文件中的信息删除。 选项 A 命令错误;选项 B 命令正确;选项 C 中的命令用来修改表结构;选项 D 中的 命令用来更新表。 [答案] B 7.使用 SQL SELECT 可以将查询结果排序,排序的短语是_____。 A.ORDER BY B.ORDER C.GROUP BY D.COUNT [解析] 本题考查的知识点是 SQL 中的排序命令。使用 SQL SELECT 排序的短语是 ORDER BY。 选项 A 即是 SQL SELECT 中用来排序的短语;选项 B 命令语法错误;选项 C 是进 行分组计算查询的命令;选项 D 是计算查询中的计数函数。 [答案] A 8.在 Visual FoxPro 中,嵌套查询是基于____的查询。 A.一个表 B.多个表 C.一个关系 D.多个关系 [解析] 本题考查的知识点是嵌套查询。在 Visual FoxPro 中,嵌套查询是基于多个关系的 查询。因此正确答案为 D。 [答案] D 9. 嵌套查询命令中的 IN 相当于____。 A.等号= B.集合运算符∈ C.加号 + D.减号 - [解析] 本题考查的知识点是嵌套查询命令中的参数。嵌套查询命令中的 IN 相当于集合运 算符∈ 。选项 A,C,D 错误, 目的是迷惑考生。只有选项 B 正确。 [答案] B 10.如果将“考生资料”表中的记录按年龄降序排列,应输入____命令。 [解析]本题考查的知识点是 SQL 语句中排序命令的使用。在 Visual FoxPro 中,排序短语为 ORDER BY。 如果需要将结果按降序排列,只需加上 DESC 即可。因此输入的命令为: SELECT * FROM 考生资料 ORDER BY 年龄 DESC [答案] SELECT * FROM 考生资料 ORDER BY 年龄 DESC 11.SQL SELECT 语句中 INNER JOIN 等价于____, 为____, 在 Visual FoxPro 中称为 _____。(p128) [解析] 本题考查的知识点是 INNER JOIN 联接。在 SQL SELECT 中,INNDR JOIN 等价 于 JOIN, 为普通的联接,在 Visual FoxPro 中称为内部联接。 [答案] JOIN,普通联接,内部联接 12.在 SQL 中,除满足联接条件的记录出现在查询结果中外,第一个表中满足联接条件的 记录也出现在查询结果中。 这种联接为____,又称为____。 [解析] 本题考查的知识点是左联接的概念,它是指除满足联接条件的记录出现在查询结 果中外,第一个表中满足联接条件的记录也出现在查询结果中。 [答案] LEFT JOIN 左联接