SQL2练习题选自Word文档格式.docx
- 文档编号:19511691
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:18
- 大小:24.43KB
SQL2练习题选自Word文档格式.docx
《SQL2练习题选自Word文档格式.docx》由会员分享,可在线阅读,更多相关《SQL2练习题选自Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
750)AND(职工档案.编号=职工工资.编号)
*L.在表“职工档案”和“职工工资”中,检索职称是
“讲师”并且基本工资大于750元的记录。
SELECT职工档案.编号,职工档案.姓名,职工档案.职称,职工工资.基本工资;
FROM职工档案,职工工资WHERE(职称=”讲师”)AND(基本工资>
1.检索工资多于1230元的职工号
SELECT职工号,工资FROM职工WHERE工资>
1230
2.检索哪些仓库有工资多于1210元的职工
SELEDIST仓库号,工资FROM职工WHERE工资>
1210
3.给出在仓库”WH1”或”WH2”工作,并且工资少于1250元
的职工号
SELEDIST职工号FROM职工WHERE工资<
1250;
AND(仓库号="
WH1"
OR仓库号="
WH2"
)
AND仓库号IN(“WH1”,”WH2”)
4.找出工资多于1230元的职工号和他们所在的城市.
SELE职工号,城市FROM仓库C,职工Z;
WHERE工资>
1230ANDC.仓库号=Z.仓库号
SELE职工号,城市FROM仓库CJOIN职工ZON;
C.仓库号=Z.仓库号WHERE工资>
5.找出工作在面积大于400的仓库的职工号以及这
些职工工作所在的城市。
SELE职工号,城市FROM仓库C,职工ZWHERE;
面积>
400ANDC.仓库号=Z.仓库号
6.哪些城市至少有一个仓库的职工工资为1250元
SELE城市FROM仓库C,职工ZWHERE;
工资=1250ANDC.仓库号=Z.仓库号
SELE城市FROM仓库WHERE仓库号IN;
(SELE仓库号FROM职工WHERE工资=1250)
7.查询所有职工的工资都多于1210元的仓库的信息。
SELE*FROM仓库WHERE仓库号NOTIN;
(SELE仓库号FROM职工WHERE工资<
=1210);
AND仓库号IN(SELE仓库号FROM职工)
8.找出和职工E4挣同样工资的所有职工
SELE职工号FROM职工WHERE工资=;
(SELE工资FROM职工WHERE职工号=”E4”)
9.检索出工资在1220元到1240元范围内的职工信息
SELE*FROM职工WHERE工资BETWEEN1220AND1240
SELE*FROM职工WHERE工资NOTBETWEEN1220AND1240
10.从供应商关系中检索出全部公司的信息。
SELE*FROM供应商WHERE供应商名LIKE“公司”
11.找出不在北京的全部供应商信息
SELE*FROM供应商WHERE地址!
=”北京”
SELE*FROM供应商WHERENOT(地址=”北京”)
12.按职工的工资值升序检索出全部职工信息
SELECT*FROM职工ORDERBY工资
SELECT*FROM职工ORDERBY工资DESC
13.先按仓库号排序,再按工资排序并输出全部职工信息
SELECT*FROM职工ORDERBY仓库号,工资
14.找出供应商所在地的数目
SELECTCOUNT(*)FROM供应商
SELECTCOUNT(DISTINCT地址)FROM供应商
15.求所有职工的工资总数
SELECTSUM(工资)FROM职工
SELECTSUM(DISTINCT工资)FROM职工
16.求北京和上海的仓库职工的工资总和
SELECTSUM(工资)FROM职工WHERE仓库号IN;
(SELECT仓库号FROM仓库WHERE城市="
北京"
;
OR城市="
上海"
17.求所有职工的工资都多于1210元的仓库的平均面积
SELECTAVG(面积)FROM仓库WHERE仓库号NOTIN;
(SELECT仓库号FROM职工WHERE工资<
AND仓库号IN(SELECT仓库号FROM职工)
18.求在WH2仓库工作的职工的最高工资值
SELECTMAX(工资),仓库号FROM职工WHERE;
仓库号="
19.*求每个仓库的职工的平均工资。
(首先按仓库号
属性进行分组,然后再计算每个仓库的平均工资,
GROUPBY子句一般在WHERE子句后,没有WHERE
子句时,GROUPBY子句跟在FROM子句后)。
SELECT仓库号,AVG(工资)FROM职工;
GROUPBY仓库号
20.*求至少有两个职工的每个仓库的平均工资
(在分组查询时,如果要求满足某个条件时
才检索,可以在GROUPBY后用HAVING子句来限定,
HAVING子句不可以单独使用)。
说明:
WHERE子句用来表文件记录应该满足的条件;
而HAVING子句用来指定每一分组所满足的条件。
P335,新153
SELECT仓库号,COUNT(*),AVG(工资)FROM职工;
GROUPBY仓库号HAVINGCOUNT(*)>
=2
21.找出尚未确定供应商的订购单(供应商号为空)
22.*将仓库表和职工表的仓库号字段联接在一起。
P346上
SELECT仓库.仓库号,城市,面积,职工号,工资;
FROM仓库JOIN职工ON仓库.仓库号=职工.仓库号
SELECT仓库.仓库号,城市,面积,职工号,工资;
FROM仓库INNERJOIN职工ON仓库.仓库号=职工.仓库号
FROM仓库,职工WHERE仓库.仓库号=职工.仓库号
23.#将仓库表和职工表的仓库号和工资字段联接在一起。
FROM仓库LEFTJOIN职工ON仓库.仓库号=职工.仓库号
(使用LEFT[OUTER]JOIN称为左联接,在查询结果中包含JOIN
左侧表中的所有记录,即左侧表中不满足联接条件的记录也出现
在查询结果中,以及JOIN右侧表中匹配的记录。
执行中首先以
左侧表中的第一条记录为准,在右侧表中查询,找到了则显示,
找不到相应的字段则以NULL显示,以下记录也如此。
24.#将仓库表和职工表的仓库号和工资字段联接在一起。
FROM仓库RIGHTJOIN职工ON仓库.仓库号=职工.仓库号
(使用RIGHT[OUTER]JOIN称为右联接,在查询结果中包含
JOIN右侧表中的所有记录,即右侧表中不满足联接条件的记录
也出现在查询结果中,以及JOIN左侧表中匹配的记录。
执行中
首先以右侧表中的第一条记录为准,在左侧表中查询,找到了
则显示,找不到相应的字段则以NULL显示,以下记录也如此。
25.#将仓库表和职工表的仓库号和工资字段联接在一起。
FROM仓库FULLJOIN职工ON仓库.仓库号=职工.仓库号
(使用FULL[OUTER]JOIN称为完全联接,在查询结果中包含
JOIN两侧表中的所有匹配或不匹配的记录。
完全联接的查询结
果中包含两侧表中的所有记录。
VFP的SQL中SELECT语句的联接格式只能实现两个表的联接。
26.#在仓库表中,显示城市为北京市和上海市的仓库信息。
SELECT*FROM仓库WHERE城市=”北京”;
UNION;
SELECT*FROM仓库WHERE城市=”上海”
27.列出已经确定了供应商的订购单信息
28.列出每个职工经手的具有最高总金额的订购单信息
29.检索那些仓库中还没有职工的仓库的信息
30.检索那些仓库中至少已经有一个职工的仓库的信息
31.检索有职工的工资大于或等于WH1仓库中任意一名职工工资的仓库号
32.检索有职工的工资大于或等于WH1仓库中任何一名职工工资的仓库号
33.检索有职工的工资大于或等于WH1仓库中所有职工工资的仓库号
34.显示工资最高的三位职工的信息
SELECT*TOP3FROM职工ORDERBY工资DESC
35.显示工资最低的30%职工的信息
SELECT*TOP30PERCFROM职工ORDERBY工资
36.显示城市为北京和上海的仓库信息。
37.*将查询到的职工的信息存放到数组TMP中。
SELECT*FROM职工INTOARRAYTMP
LISTMEMOLIKETMP
38.*将最高工资的前三位职工的信息存放到永久表V1中。
SELE*TOP3FROM职工INTOTABLEV1;
ORDERBY工资DESC
39.*将城市为北京的仓库信息存入到临时表TEMP中。
SELE*FROM仓库WHERE城市="
;
INTOCURSORTEMP
LIST
40.*将最高工资的前三位职工的信息存放到表YJ中。
SELE*TOP3FROM职工INTOTABLEYJ;
41.检索在北京的供应商的名称
42.检索出向供应商S3发过订购单的职工号和仓库号
43.检索出向S4供应商发出订购单的仓库所在的城市
44.检索出由工资多于1230元的职工向北京的供应商
发出的订购单号
45.检索出所有仓库的平均面积
46.检索出工资低于本仓库平均工资的职工信息
47.
48.*插入一个新的供应商元组(S9,智通公司,沈阳)
INSERTinto供应商;
values("
S9"
"
智通公司"
沈阳"
49.*往订购单表中插入元组:
(“E7”,”S4”,”OR01”,2001/05/25)
INSERTinto订购单;
values(“E7”,”S4”,”OR01”,{^2001/05/25})
50.往订购单表中插入一条记录:
职工号为“E7”,
订购单号为“OR01”
45.*将职工表中所有记录的工资增加10%(更新命令P351)
UPDATE职工set工资=工资*1.1where;
职工号in(select职工号from职工)
51.将北京的仓库面积增加20。
52.*删除仓库表中仓库号为“WH2”的记录(SQL中的
DELETE命令也是逻辑删除记录,物理删除用PACK)。
DELETEFROM仓库WHERE仓库号=”WH2”
53.*删除职工表中工资低于1230元的记录。
DELETEFROM职工WHERE工资<
54.删除目前没有任何订购单的供应商?
DELETEFROM订购单WHERE供应商号=NULL
55.删除由在上海仓库工作的职工发出的所有订购单
56.给低于所有职工平均工资的职工提高5%的工资?
UPDATE职工set工资=工资*1.05where;
AVG(工资),工资<
AVG(工资);
in(select职工号,AVG(工资)from职工)
57.用SQL命令建立一个仓库1表,表结构为:
仓库号C(5)设为主索引,城市C(10),面积I,
设置字段有效性为面积大于0,信息为:
面积应该大于0。
SELECTCOUNT(DISTINCT学号)AS学生人数;
FROM成绩INTOTABLENEW_TABLE
BROWSELAST
58.用SQLCREATE命令建立职工1表,表结构为:
仓库号C
(2),职工号C(5)设为主索引,工资I设字段有效性规则为:
工资大于等于1000并小于等于5000,信息为:
工资值的范围在1000—5000元之间,默认值为2000。
并与表仓库1建立联系。
59.为职工1表增加一个货币类型的奖金字段,规则为
奖金大于0,信息为:
奖金应大于0。
ALTERTABLE仓库ADD数量ISETCHECK数量>
0;
ERROR“数量应该大于0!
”
60.将仓库1表中的城市字段的宽度改为14。
ALTERTABLE仓库ALTER城市C(14)
61.修改或定义职工1表中奖金字段的有效性规则为:
资金大于100,信息为:
奖金应大于100元。
ALTERTABLE订购单;
ALTER数量SETCHECK数量>
62.删除奖金字段的有效性规则
ALTERTABLE订购单ALTER数量DROPCHECK
ALTERTABLE
63.将职工1中奖金字段名改为加班费。
64.删除加班费字段。
65.定义一个视图V1,它包含职工号,仓库号
66.定义一个视图V2,它只包含北京仓库的信息
67.定义一个视图V3,它包含职工号,职工的工资和
职工工作所在城市的信息。
68.定义一个视图V4,它包含职工号、月工资和年工资
3个字段。
69.删除视图V2
70.利用SQL修改表文件结构。
altertable学生alter学号integer(5)alter姓名chara(10)
MODIFYSTRUCTURE
71.利用SQL修改表文件结构(删除字段)。
altertable学生drop简历drop性别
72.利用SQL建立表文件。
createtablew27(姓名character(6),VFP成绩numer(5,1))
1.用SQLSELECT命令对表数据完成下列查询功能:
(1)用SQL命令查询所有学号为”s1”的学生的姓名、选修的课程名和成绩,并按成绩的降序排序。
select姓名,成绩,课程名from学生,成绩,课程where学生.学号=成绩.学号and成绩.课程号=课程.课程号and学生.学号="
s1"
orderby成绩desc
(2)用SQL语句查询"
计算机软件基础"
课程的考试成绩在85分以下(含85分)的学生的全部信息并将结果按学号升序。
select学生.*from学生,成绩,课程where学生.学号=成绩.学号and成绩.课程号=课程.课程号and成绩<
=85and课程名="
orderby学生.学号
(3)根据表用SQLSELECT命令查询学生的学号、姓名、课程名和成绩,结果按"
课程名"
升序排序,"
相同时按"
成绩"
降序排序,并将查询结果存储到sclist表中。
select学生.学号,姓名,课程名,成绩from学生,课程,成绩where学生.学号=成绩.学号and成绩.课程号=课程.课程号orderby课程名,成绩descintodbfsclist
(4)用SQL命令统计各门课程的平均成绩,统计结果包含"
和"
平均成绩"
两个字段,并将统计结果按课程名升序保存在表NEWTABLE中。
select课程名,avg(成绩)as平均成绩from成绩,课程where成绩.课程号=课程.课程号orderby课程名groupby课程名intodbfNEWTABLE
(5)计选修了课程的学生人数(选修多门时,只计算1次),统计结果保存在一个新表NEW_TABLE中,表中只有一个字段,字段名为学生人数。
selectcount(distinct学号)as学生人数from成绩intotablenew_table
(6)查询每门课程的最高分,查询结果中含"
最高分"
字段,结果按课程名升序保存在表NEW_TABLE3。
select课程名,max(成绩)as最高分from成绩,课程where成绩.课程号=课程.课程号orderby课程名groupby课程名intodbfNEW_TABLE3
2.SQL命令对表的定义、数据基本操作的应用
(1)用SQL命令向成绩表插入一条记录:
学号为"
s3"
、课程号为"
c2"
、成绩是99。
insertinto成绩values("
99)
(2)用SQL命令完成将选修了“软件工程”课程的成绩提高10%。
update成绩set成绩=成绩*1.1where课程号in(select课程号from课程where课程名="
软件工程"
(3)用SQL命令删除成绩表中选修了课程但没有参加考试(成绩字段值为NULL)的记录。
deletefrom成绩where成绩.成绩isnull
(4)用SQL命令删除课程表中没有任何学生选修的课程
deletefrom课程where课程.课程号="
c8"
(5)将所有学生的年龄增加1岁
update学生set年龄=年龄+1
(6)用SQL语言建立一个名为WORKER.DBF的表,包含的字段为:
职工号(C,5)为主索引、姓名(C,8)、性别(C,2)、年龄(N,2)、职称(C,8)、工资(N,7,2)、退休(L,1);
设置性别字段的有效性规则为:
性别$“男女”,默认值为“男”。
createtableWORKER(职工号char(5)primarykey,姓名char(8),性别char
(2),年龄numeric
(2),;
职称char(8),工资numeric(7,2),退休logiccheck性别$"
男女"
default"
男"
(7)用SQL命令为课程表增加字段:
开课学期I,为成绩表"
字段设置字段有效性规则:
成绩>
=0,出错提示信息是:
"
成绩必须大于或等于零"
。
ALTERTABLE课程ADD开课学期I
ALTERTABLE成绩ALTER成绩setCHECK成绩>
=0ERROR"
3.用SQL命令建立视图
(1).使用CREATEVIEW命令建立一个文件名为V2的视图,要求含有学号、姓名、成绩和课程名称,按课程名称升序排序。
createviewv2asselect学生.学号,姓名,成绩,课程名from学生join成绩join课程on课程.课程号=成绩.课程号on成绩.学号=学生.学号orderby课程名
(2)使用SQL的CREATEVIEW命令定义一个名称为SVIEW的视图,该视图的SELECT语句完成查询:
选课数是3门以上(不包括3门)的每个学生的学号、姓名、平均成绩、最低分和选课数,并按"
降序排序。
createviewsviewasselect学生.学号,姓名,avg(成绩)as平均成绩,min(成绩)as最低分,count(学生.学号)as选课数;
from学生join成绩on成绩.学号=学生.学号groupby学号;
orderby平均成绩descwhere选课数>
3
(3)建立视图NEW_VIEW,该视图含有选修了课程但没有参加考试(成绩字段值为NULL)的学生信息(包括"
学号"
、"
姓名"
院系号"
3个字段)。
createviewnew_viewasselect学生.学号,姓名,院系号from学生join成绩on成绩.学号=学生.学号where成绩isnull
二、阅读程序:
1.
SETTALKOFF
CLEAR
SELECT仓库号,MAX(工资)AS最高工资FROM职工;
GROUPBY仓库号ORDERBY仓库号;
INTODBFGGZ
USEGGZ
?
仓库号,最高工资
USE
SETTALKON
RETURN
运行结果:
2.
SETTALKOFF
SELECT城市FROM仓库WHERE仓库号IN;
(SELECT仓库号FROM职工WHERE工资=1250);
INTODBFLSB
SELECTCOUNT(*)FROMLSBINTOARRAYA
?
A
(1)
SETTALKON
RETURN
3.
SETHEADINGOFF
SELECT*TOP3FROM职工ORDERBY工资DESC;
INTODBFGZB
USEGZB
DISPLAYOFF
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL2 练习题 选自