第4次 SQL.docx

上传人:b****6 文档编号:7837237 上传时间:2023-01-26 格式:DOCX 页数:10 大小:35.13KB
下载 相关 举报
第4次 SQL.docx_第1页
第1页 / 共10页
第4次 SQL.docx_第2页
第2页 / 共10页
第4次 SQL.docx_第3页
第3页 / 共10页
第4次 SQL.docx_第4页
第4页 / 共10页
第4次 SQL.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

第4次 SQL.docx

《第4次 SQL.docx》由会员分享,可在线阅读,更多相关《第4次 SQL.docx(10页珍藏版)》请在冰豆网上搜索。

第4次 SQL.docx

第4次SQL

SQL概述

考点:

1.概念

  SQL是结构化查询语言StructuredQueryLanguage的缩写。

是关系数据库的通用语言。

包括数据查询(SELECT)、数据定义(数据库、表、视图的建立、修改和删除)、数据操纵(对数据记录的增加、删除和修改)和数据控制(用户权限的分配与回收)4部分。

VisualFoxPro在SQL方面支持数据定义、数据查询和数据操纵功能。

另外,由于VisualFoxPro自身在安全控制方面的缺陷,所以它没有提供数据控制功能。

  2SQL语言的特点

  

(1)一种一体化的语言。

  

(2)一种高度非过程化的语言//指不需要编写完整的程序

  (3)语言非常简洁。

  (4)可以直接以命令方式交互使用,也可以以程序方式使用。

2.查询功能

  SQL的核心是查询,基本形式由SELECT-FROM-WHERE查询块组成,多个查询块可嵌套执行,如表5-1所示。

        表5-1SQL命令动词

考点:

简单查询

1简单查询

  无条件查询

SELECT…FROM…

或条件查询:

SELECT…FROM…WHERE…

  2简单的连接查询

  连接是关系的基本操作之一,连接查询是一种基于多个关系的查询。

SELECT…;

FROM表AINNERJOIN表B;

ONA.字段名=B.字段名  

3嵌套查询

  嵌套查询所要求的结果出自一个关系,但关系的条件却涉及多个关系。

其内层基本上也是一个SELECT-FROM-WHERE查询语句。

这种简单嵌套查询,可使用谓词IN或NOTIN来判断在外层的查询条件中是否包含内层查询的结果。

SELECT教师信息表.工号,教师信息表.姓名,教师信息表.所在系;

FROM教师信息表;

WHERE教师信息表.工号IN(SELECT选课成绩表.教师工号FROM选课成绩表)

功能:

查询有代课教师的工号,姓名,所在系。

考点:

特殊运算符号

1BETWEEN…AND…

  含义:

该查询的条件是在……范围之内,相当于用AND连接的一个逻辑表达式。

比如:

成绩在[80,90]

成绩BETWEEN80AND90

2LIKE

  含义:

它是一个字符串匹配运算符,与之搭配使用的通配符包括“%”和“_”。

“%”:

可以匹配任意多个任意的字符。

“_”:

只能匹配一个任意字符。

比如:

查找姓“李”的同学,字段为姓名

姓名LIKE“李%”

考点:

排序

使用SQLSELECT可以将查询结果进行排序,排序的短语是ORDERBY。

  格式:

ORDERBYOrder_Item[ASCIDESC][,Order_Item[ASC|DESC]…]

  说明:

可以按升序(ASC)或降序(DESC)排序,允许按一列或多列排序。

考点:

计算查询

1简单的计算查询

  SQL不仅具有一般的检索能力,而且还有计算方式的检索,用于计算检索的函数有:

COUNT(计数)、SUM(求和)、AVG(计算平均值)、MAX(求最大值)及MIN(求最小值)。

比如:

(1)查学生基本情况表中的学生总人数

SELECTCOUNT(*表示参数)AS总人数FROM学生基本情况表

(2)查询选修同一门课程的学生的平均成绩在75分以上的课程号及平均成绩。

SELECT课程号,AVG(成绩)AS平均成绩FROM学生成绩表GROUPBY课程号HAVING平均成绩>=75

在”学生选课成绩表”中,包含学号、姓名、三门课的成绩:

英语、高数、政治,查询每个学生三门课的平均成绩

SELECT学生选课成绩表.学号,学生选课成绩表.姓名,(学生选课成绩表.英语+学生选课成绩表.高数+学生选课成绩表.政治)/3AS平均成绩;

FROM学生选课成绩表

 

  2分组与计算查询

  在SQLSELECT中可以利用GROUPBY子句进行分组计算查询。

  格式:

GROUPBYGroupColumn[,GroupColumn…][HAVINGFilterCondition]

  说明:

可以按一列或多列分组,还可以用HAVING子句进一步限定分组的条件。

它必须跟在GROUPBY子句之后,不可单独使用,与WHERE子句并不矛盾。

考点:

别名和自连接查询

(1)SQL语句允许在FROM短语中为关系定义别名,格式为:

<关系名><别名>

  

(2)SQL不仅可以对多个关系进行连接操作,也可以将同一关系与其自身进行连接,这种连接就称为自连接。

在关系的自连接操作中,别名是必不可少的。

比如:

对学生基本情况表做自连接后的查询

考点:

VisualFoxPro中SQLSELECT的几个特殊选项

(l)显示部分结果,格式为:

TOPnExpr[PERCENT]

  

(2)将查询结果存放到数组中,格式为:

INTOARRAYArrayName

  (3)将查询结果存放到临时文件中,格式为:

INTOCURSORCursorName

  (4)将查询结果存放到永久表中,格式为:

INTODBF|TABLETableName

  (5)将查询结果存放到文本文件中,格式为:

TOFILEFileName[ADDITIVE]

  (6)将查询结果直接输出到打印机,格式为:

TOPRINTER[PROMPT]

3.数据操纵功能

考点:

插入

VisualFoxPro支持两种SQL插入命令的格式,一种是标准格式,另一种是特殊格式。

INSERT命令

  1标准格式

INSERTINTOdbfname[(frame1[,fname2,…])]

VALUES(eExpressionl[,eExpression2,…])

比如:

往学生选课成绩表中插入一条记录(”044138”,”02”,”0105”,”04051”,85)

INSERTINTO选课成绩表VALUES(”044138”,”02”,”0105”,”04051”,85)

  2特殊格式

INSERTINTOdbf_nameFROMARRAYArrayName|FROMMEMVAR

考点:

数据更新

SQL的数据更新命令格式如下:

UPDATETableName

  SETColumn_Namel=eEpressionl[,Column_Name2=eExpression2…]

WHERECondition

  说明:

利用WHERE字句指定条件,以更新满足条件的一些记录的字段值,并且一次可更新多个字段;如果不使用WHERE子句,则更新全部记录。

比如:

将学生基本情况表中学号为“044140”的学生改为入团,电话改为:

6892222

UPDATE学生基本情况表;

SET是否入团=’T’,电话=”6892222”;

WHERE学号=”044140”

考点:

记录删除

  SQL从表中删除数据的命令格式如下:

DELETEFROMTableName[WHERECondition]

  说明:

FROM指定从哪个表中删除记录,WHERE指定被删除的记录所满足的条件,如果不使用WHERE子句,则删除该表中的全部记录。

小提示:

  当一个表定义一个主索引或候选索引后,由于相应的字段具有关键字的特性,即不能为空,所以只能用此命令插入记录、)APPEND和INSERT都是插入一条空白记录再输入各字段的值,故不能用它们来插入记录。

5.数据定义功能

考点:

表的定义

利用SQL命令建立的数据表同样可以完成在表设计器中设计表的所有功能。

  格式:

CREATETABLEIDBFTableNamel[NAMELongTableName][FREE]

(FieldNamelFieldType[(nFieldWidth[,nPrecision])][NULL|NOTNULL]

[CHECKIExpressionl[ERRORcMessageTextl]]

[DEFAULTeExpressionl]

[PRIMARYKEYIUNIQUE]

[PEFERENCESTableName2[AGTagName1]]

[NOCPTRANS]

[,FieldName2…]

[,PRIMARYKEYeEpression2TAGTagName2|,

UNIQUEeExpression3TAGTagName3]

[,FOREIGNKEYeExpression4TagName4[NODUP]

REFERENCESTableName3[TAGTagName5]]

[,CHECKlExpression2[ERRORcMessageText2]])

|FROMARRAYArravNasne

定义一个“student”表,字段情况如下:

num字符型,长度8

name字符型,长度10

grade数值型,长度为6,允许1位小数

CREATETABLEstudent(

numC(8),

nameC(10),

gradeN(6.1)

  说明:

此命令除了建立表的基本功能外,还包括满足实体完整性的主关键字(主索引)PRIMARYKEY、定义域完整性的CHECK约束及出错提示信息ERROR、定义默认值DEFAULT等,另外还有描述表之间联系的FOREIGNKEY和REFERENCES等。

考点:

表的删除

  利用SQL命令删除表,可直接使用语句,格式为:

DROPTABLETable_name

  说明:

如果删除的是自由表,则应该将当前打开的数据表先关闭,才能进行删除。

如果删除数据库表,则要先打开数据库,在数据库中进行操作;否则,即使删除了数据库表,但记录在数据库中的信息并没有被删除,此后会出现错误提示。

考点:

表结构的修改

修改表结构的命令是ALTERTABLE,该命令有3种格式。

  

(1)为某个表添加字段:

ALTERTABLETableNamelADD|ALTER[COLUMN]FieldNamel

FieldTvpe[(nFieldWidth[,nPrecision])][NULL|NOTNULL]

[CHECKlExpressionl[ERRORcMessageTextl]][DEFAULTeExpressionl]

[PRIMARYKEY|UNIQUE]

[REFERENCESTableName2[TAGTagNamel〕]

  

(2)为某个表已存在的字段修改其相关设置:

ALTERTABLETableNamelALTER[COLUMN]FieldName2[NULL|NOTNULL]

[SETEFAULTeExpression2][SETCHECKlExpression2[ERRORcMessageText2]

[DROPDEFAULT][DROPCHECK]

  (3)ALTERTABLETableName1[DROP[COLUMN]FieldName3]

[SETCHECKlExpression3[ERRORcMessageText3]

[DROPCHECK]

[ADDPRIMARYKEYeExpression3TAGTagName2[FORlExpression4]]

[DROPPRIMARYKEY〕

[ADDUNIQUEeExpression4[TAGTagName3[FORlExpression5]]]

[DROPUNIQUETAGTagName4]

[ADDFOREIGNKEY[eExpression5]TAGTagName4[FORlExpression6]

REFERENCESTableName2[TAGTagName5]]

[DROPFOREIGNKEYTAGTagName6[SAVE]]

[RENAMECOLUMNFieldName4TOFieldName5]

考点:

视图的定义

1视图的定义

  格式为:

CREATEVIEWview_name[(column_name[,column_name]…)]ASselect_statement

  2从单个表派生出来的视图

  视图一经定义,就可以和基本表一样进行各种查询,也可以进行一些修改操作。

对于最终用户来说,有时并不需要知道操作的是基本表还是视图。

  3从多个表派生出来的视图

  视图一方面可以限定对数据的访问,另一方面又可以简化对数据的访问。

  4视图的删除

  视图由于是从表派生出来的,所以不存在修改结构的问题,但是视图可以删除。

  格式:

DROPVIEW<视图名>

  5关于视图的说明

  在关系数据库中,视图始终不真正含有数据,它总是原有表的一个窗口。

所以,虽然视图可以像表一样进行各种查询,但是插入、更新和删除操作在视图上却有一定限制。

在一般情况下,当一个视图是由单个表导出时可以进行插入和更新操作,但不能进行删除操作;当视图是从多个表导出时,插入、更新和删除操作都不允许进行。

这种限制是很有必要的,它可以避免一些潜在问题的发生。

真题举例:

2012.3:

(19)查询“教师”表中“住址”字段中含有“望京”字样的教师信息,正确的SQL语句是

A)SELECT*FROM教师WHERE住址LIKE"%望京%"

B)SELECT*FROM教师FOR住址LIKE"%望京%"

C)SELECT*FROM教师FOR住址="%望京%"

)SELECT*FROM教师WHERE住址="%望京%"

 

(22)为“教师”表的职工号字段添加有效性规则:

职工号的最左边三位字符是“110”,正确的SQL语句是

A)CHANGETABLE教师ALTER职工号SETCHECKLEFT(职工号,3)="110"

B)CHANGETABLE教师ALTER职工号SETCHECKOCCURS(职工号,3)="110"

C)ALTERTABLE教师ALTER职工号SETCHECKLEFT(职工号,3)="110"

D)ALTERTABLE教师ALTER职工号CHECKLEFT(职工号,3)="110"

(24)删除视图salary的命令是

A)DROPVIEWsalaryB)DROPsalaryVIEW

C)DELECTsalaryD)DELECTsalaryVIEW

31—35题使用如下三个数据库表:

图书(索书号,书名,出版社,定价,ISBN)

借书证(借书证号,姓名,性别,专业,所在单位)

借书记录(借阅号,索书号,借书证号,借书日期,还书日期)

其中:

定价是货币型,借书日期和还书日期是日期型,其他是字符型。

(31)查询借书证上专业为“计算机”的所有信息,正确的SQL语句是

A)SELECTALLFROM借书证WHERE专业="计算机"

B)SELECT借书证号FROM借书证WHERE专业="计算机"

C)SELECTALLFROM借书记录WHERE专业="计算机"

D)SELECT*FROM借书证WHERE专业="计算机"

(32)查询2011年被借过图书的书名、出版社和借书日期,正确的SQL语句是

A)SELECT书名,出版社,借书日期FROM图书,借书记录

WHERE借书日期=2011AND图书.索书号=借书记录.索书号

B)SELECT书名,出版社,借书日期FROM图书,借书记录

WHERE借书日期=YEAR(2011)AND图书.索书号=借书记录.索书号

C)SELECT书名,出版社,借书日期FROM图书,借书记录

WHERE图书.索书号=借书记录.索书号ANDYEAR(借书日期)=2011

D)SELECT书名,出版社,借书日期FROM图书,借书记录图书.索书号=借书记录.索书号ANDWHEREYEAR(借书日期)=YEAR(2011)

(33)查询所有借阅过“中国出版社”图书的读者的姓名和所在单位

A)SELECT姓名,所在单位FROM借书证,图书,借书记录WHERE图书.索书号=借书记录.索书号

AND借书证.借书证号=借书记录.借书证号AND出版社="中国出版社"

B)SELECT姓名,所在单位FROM图书,借书证WHERE图书.索书号=借书证.借书证号

AND出版社="中国出版社"

C)SELECT姓名,所在单位FROM图书,借书记录WHERE图书.索书号=借书记录.索书号

AND出版社="中国出版社"

D)SELECT姓名,所在单位FROM借书证,借书记录

WHERE借书证.借书证号=借书记录.借书证号AND出版社="中国出版社"

(34)从借书证表中删除借书证号为“1001”的记录,正确的SQL语句是

A)DELETEFROM借书证WHERE借书证号="1001"

B)DELETEFROM借书证FOR借书证号="1001"

C)DROPFROM借书证WHERE借书证号="1001"

D)DROPFROM借书证FOR借书证号="1001"

(35)将选项为“锦上计划研究所”的所在单位字段值重设为“不详”,正确的SQL语句是

A)UPDATE借书证SET所在单位="锦上计划研究所"WHERE所在单位="不详"

B)UPDATE借书证SET所在单位="不详"WITH所在单位="锦上计划研究所"

C)UPDATE借书证SET所在单位="不详"WHERE所在单位="锦上计划研究所"

D)UPDATE借书证SET所在单位="锦上计划研究所"WITH所在单位="不详"

2011.9:

第(32)-(35)题使用如下3个表:

商店(商店号,商店名,区域名,经理姓名)

商品(商品号,商品名,单价)

销售(商店号,商品号,销售日期,销售数量)

(32)查询在“北京”和“上海”区域的商店信息的正确命令是

A)SELECT*FROM商店WHERE区域名='北京'AND域名名='上海'

B)SELECT*FROM商店WHERE区域名='北京'OR域名名='上海'

C)SELECT*FROM商店WHERE区域名='北京'AND'上海'

D)SELECT*FROM商店WHERE区域名='北京'OR'上海'

(33)查询单价最高的商品销售情况,查询结果包括商品号、商品名、销售日期、销售数量和销售金额。

正确命令是

A)SELECT商品.商品号,商品名,销售日期,销售数量,销售数量*单价AS销售金额

FROM商品JOIN销售ON商品.商品号=销售.商品号WHERE单价=(SELECTMAX(单价)FROM商品)

B)SELECT商品.商品号,商品名,销售日期,销售数量,销售数量*单价AS销售金额

FROM商品JOIN销售ON商品.商品号=销售.商品号WHERE单价=MAX(单价)

C)SELECT商品.商品号,商品名,销售日期,销售数量,销售数量*单价AS销售金额

FROM商品JOIN销售WHERE单价=(SELECTMAX(单价)FROM商品)

D)SELECT商品.商品号,商品名,销售日期,销售数量,销售数量*单价AS销售金额

FROM商品JOIN销售WHERE单价=MAX(单价)

(34)查询商品单价在10到50之间、并且日销售数量高于20的商品名、单价、销售日期和销售数量,查询结果按单价降序。

正确命令是

A)SELECT商品名,单价,销售日期,销售数量FROM商品JOIN销售

WHERE(单价BETWEEN10AND50)AND销售数量>20ORDERBY单价DESC

B)SELECT商品名,单价,销售日期,销售数量FROM商品JOIN销售

WHERE(单价BETWEEN10AND50)AND销售数量>20ORDERBY单价

C)SELECT商品名,单价,销售日期,销售数量FROM商品,销售

WHERE(单价BETWEEN10AND50)AND销售数量>20ON商品.商品号=销售.商品号ORDERBY单价

D)SELECT商品名,单价,销售日期,销售数量FROM商品,销售WHERE(单价BETWEEN10AND50)

AND销售数量>20AND商品.商品号=销售.商品号ORDERBY单价DESC

(35)查询销售金额合计超过20000的商店,查询结果包括商店名和销售金额合计。

正确命令是

A)SELECT商店名,SUM(销售数量*单价)AS销售金额合计FROM商店,商品,销售

WHERE销售金额合计20000

B)SELECT商店名,SUM(销售数量*单价)AS销售金额合计>20000FROM商店,商品,销售

WHERE商品.商品号=销售.商品号AND商店.商店号=销售.商店号

C)SELECT商店名,SUM(销售数量*单价)AS销售金额合计FROM商店,商品,销售

WHERE商品.商品号=销售.商品号AND商店.商店号=销售.商店号

ANDSUM(销售数量*单价)>20000GROUPBY商店名

D)SELECT商店名,SUM(销售数量*单价)AS销售金额合计FROM商店,商品,销售

WHERE商品.商品号=销售.商品号AND商店.商店号=销售.商店号

GROUPBY商店名HAVINGSUM(销售数量*单价)>20000

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1