SQL数据库经典面试题(修改笔试题)(有答案)_第1页
SQL数据库经典面试题(修改笔试题)(有答案)_第2页
SQL数据库经典面试题(修改笔试题)(有答案)_第3页
SQL数据库经典面试题(修改笔试题)(有答案)_第4页
SQL数据库经典面试题(修改笔试题)(有答案)_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

28.

数据库:抽出部门,平均工资,要求按部门的字符串顺序排序,不能含有"humanresource"部门,employee结构如下:employee_id,employee_name,depart_id,depart_name,wage答:

selectdepart_name,avg(wage)

fromemployeewheredepart_name<>'humanresource'

groupbydepart_nameorderbydepart_name

29.

给定如下SQL数据库:Test(numINT(4))请用一条SQL语句返回num的最小值,但不许使用统计功能,如MIN,MAX等答:

selecttop1numfromTestorderbynum

33.一个数据库中有两个表:

一张表为Customer,含字段ID,Name;

一张表为Order,含字段ID,CustomerID(连向Customer中ID的外键),Revenue;

写出求每个Customer的Revenue总和的SQL语句。建表createtablecustomer

(IDintprimarykey,Namechar(10))gocreatetable[order]

(IDintprimarykey,CustomerID

intforeignkeyreferencescustomer(id),Revenuefloat)go--查询

selectCustomer.ID,sum(isnull([Order].Revenue,0))

fromcustomerfulljoin[order]on([order].customerid=customer.id)

groupbycustomer.idselectcustomer.id,sum(order.revener)fromorder,customerwherecustomer.id=customeridgroupbycustomer.idselectcustomer.id,sum(order.revener)fromcustomerfulljoinorderon(order.customerid=customer.id)groupbycustomer.id5数据库(10)atabelcalled“performance”contain:nameandscore,please用SQL语言表述如何选出score最high的一个(仅有一个)仅选出分数,Selectmax(score)fromperformance仅选出名字,即选出名字,又选出分数:selecttop1score,namefromperorderbyscoreselectname1,scorefromperwherescorein/=(selectmax(score)fromper)4有关系s(sno,sname)c(cno,cname)sc(sno,cno,grade)

1问上课程"db"的学生noselectcount(*)fromc,scwhereame='db'ando=oselectcount(*)fromscwherecno=(selectcnofromcwhereame='db')

2成绩最高的学生号selectsnofromscwheregrade=(selectmax(grade)fromsc)

3每科大于90分的人数selectame,count(*)fromc,scwhereo=oandsc.grade>90groupbyame

selectame,count(*)fromcjoinscono=oandsc.grade>90groupbyame

数据库笔试题

*

建表:

dept:

deptno(primarykey),dname,loc

emp:

empno(primarykey),ename,job,mgr,sal,deptno

*/1列出emp表中各部门的部门号,最高工资,最低工资

selectmax(sal)as最高工资,min(sal)as最低工资,deptnofromempgroupbydeptno;2列出emp表中各部门job为'CLERK'的员工的最低工资,最高工资

selectmax(sal)as最高工资,min(sal)as最低工资,deptnoas部门号fromempwherejob='CLERK'groupbydeptno;3对于emp中最低工资小于1000的部门,列出job为'CLERK'的员工的部门号,最低工资,最高工资

selectmax(sal)as最高工资,min(sal)as最低工资,deptnoas部门号fromempasb

wherejob='CLERK'and1000>(selectmin(sal)fromempasawherea.deptno=b.deptno)groupbyb.deptno4根据部门号由高而低,工资有低而高列出每个员工的姓名,部门号,工资

selectdeptnoas部门号,enameas姓名,salas工资fromemporderbydeptnodesc,salasc5写出对上题的另一解决方法

(请补充)6列出'张三'所在部门中每个员工的姓名与部门号

selectename,deptnofromempwheredeptno=(selectdeptnofromempwhereename='张三')7列出每个员工的姓名,工作,部门号,部门名

selectename,job,emp.deptno,dept.dnamefromemp,deptwhereemp.deptno=dept.deptno8列出emp中工作为'CLERK'的员工的姓名,工作,部门号,部门名

selectename,job,dept.deptno,dnamefromemp,deptwheredept.deptno=emp.deptnoandjob='CLERK'9对于emp中有管理者的员工,列出姓名,管理者姓名(管理者外键为mgr)

selecta.enameas姓名,b.enameas管理者fromempasa,empasbwherea.mgrisnotnullanda.mgr=b.empno10对于dept表中,列出所有部门名,部门号,同时列出各部门工作为'CLERK'的员工名与工作

selectdnameas部门名,dept.deptnoas部门号,enameas员工名,jobas工作fromdept,emp

wheredept.deptno*=emp.deptnoandjob='CLERK'11对于工资高于本部门平均水平的员工,列出部门号,姓名,工资,按部门号排序

selecta.deptnoas部门号,a.enameas姓名,a.salas工资fromempasa

wherea.sal>(selectavg(sal)fromempasbwherea.deptno=b.deptno)orderbya.deptno12对于emp,列出各个部门中平均工资高于本部门平均水平的员工数和部门号,按部门号排序

selectcount(a.sal)as员工数,a.deptnoas部门号fromempasa

wherea.sal>(selectavg(sal)fromempasbwherea.deptno=b.deptno)groupbya.deptnoorderbya.deptno13对于emp中工资高于本部门平均水平,人数多与1人的,列出部门号,人数,按部门号排序

selectcount(a.empno)as员工数,a.deptnoas部门号,avg(sal)as平均工资fromempasa

where(selectcount(c.empno)fromempascwherec.deptno=a.deptnoandc.sal>(selectavg(sal)fromempasbwherec.deptno=b.deptno))>1

groupbya.deptnoorderbya.deptno14对于emp中低于自己工资至少5人的员工,列出其部门号,姓名,工资,以及工资少于自己的人数

selecta.deptno,a.ename,a.sal,(selectcount(b.ename)fromempasbwhereb.sal<a.sal)as人数fromempasa

where(selectcount(b.ename)fromempasbwhereb.sal<a.sal)>5数据库笔试题及答案第一套一.选择题1.下面叙述正确的是CCBAD______。A、算法的执行效率与数据的存储结构无关B、算法的空间复杂度是指算法程序中指令(或语句)的条数C、算法的有穷性是指算法必须能在执行有限个步骤之后终止D、以上三种描述都不对2.以下数据结构中不属于线性数据结构的是______。A、队列B、线性表C、二叉树D、栈3.在一棵二叉树上第5层的结点数最多是______。A、8B、16C、32D、154.下面描述中,符合结构化程序设计风格的是______。A、使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B、模块只有一个入口,可以有多个出口C、注重提高程序的执行效率D、不使用goto语句5.下面概念中,不属于面向对象方法的是______。A、对象B、继承C、类D、过程调用6.在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是___BDBCA___。A、可行性分析B、需求分析C、详细设计D、程序编码7.在软件开发中,下面任务不属于设计阶段的是______。A、数据结构设计B、给出系统模块结构C、定义模块算法D、定义需求并建立系统模型8.数据库系统的核心是______。A、数据模型B、数据库管理系统C、软件工具D、数据库9.下列叙述中正确的是______。A、数据库是一个独立的系统,不需要操作系统的支持B、数据库设计是指设计数据库管理系统C、数据库技术的根本目标是要解决数据共享的问题D、数据库系统中,数据的物理结构必须与逻辑结构一致10.下列模式中,能够给出数据库物理存储结构与物理存取方法的是______。A、内模式B、外模式C、概念模式D、逻辑模式11.VisualFoxPro数据库文件是__DCBAA____。A、存放用户数据的文件B、管理数据库对象的系统文件C、存放用户数据和系统的文件D、前三种说法都对12.SQL语句中修改表结构的命令是______。A、MODIFYTABLEB、MODIFYSTRUCTUREC、ALTERTABLED、ALTERSTRUCTURE13.如果要创建一个数据组分组报表,第一个分组表达式是"部门",第二个分组表达式是"性别",第三个分组表达式是"基本工资",当前索引的索引表达式应当是______。A、部门+性别+基本工资B、部门+性别+STR(基本工资)C、STR(基本工资)+性别+部门D、性别+部门+STR(基本工资)14.把一个项目编译成一个应用程序时,下面的叙述正确的是______。A、所有的项目文件将组合为一个单一的应用程序文件B、所有项目的包含文件将组合为一个单一的应用程序文件C、所有项目排除的文件将组合为一个单一的应用程序文件D、由用户选定的项目文件将组合为一个单一的应用程序文件15.数据库DB、数据库系统DBS、数据库管理系统DBMS三者之间的关系是______。A、DBS包括DB和DBMSB、DBMS包括DB和DBSC、DB包括DBS和DBMSD、DBS就是DB,也就是DBMS16.在"选项"对话框的"文件位置"选项卡中可以设置_BAABA_____。A、表单的默认大小B、默认目录C、日期和时间的显示格式D、程序代码的颜色17.要控制两个表中数据的完整性和一致性可以设置"参照完整性",要求这两个表______。A、是同一个数据库中的两个表B、不同数据库中的两个表C、两个自由表D、一个是数据库表另一个是自由表18.定位第一条记录上的命令是______。A、GOTOPB、GOBOTTOMC、GO6D、SKIP19.在关系模型中,实现"关系中不允许出现相同的元组"的约束是通过______。A、候选键B、主键C、外键D、超键20.设当前数据库有10条记录(记录未进行任何索引),在下列三种情况下,当前记录号为1时;EOF()为真时;BOF()为真时,命令?RECN()的结果分别是______。A、1,11,1B、1,10,1C、1,11,0D、1,10,021.下列表达式中结果不是日期型的是__CCBBA____。A、CTOD("2000/10/01")B、{^99/10/01}+365C、VAL("2000/10/01")D、DATE()22.只有满足联接条件的记录才包含在查询结果中,这种联接为______。A、左联接B、右联接C、内部联接D、完全联接23.索引字段值不唯一,应该选择的索引类型为______。A、主索引B、普通索引C、候选索引D、唯一索引24.执行SELECT0选择工作区的结果是______。A、选择了0号工作区B、选择了空闲的最小号工作区C、关闭选择的工作区D、选择已打开的工作区25.从数据库中删除表的命令是______。A、DROPTABLEB、ALTERTABLEC、DELETETABLED、USE26.DELETEFROMSWHERE年龄>60语句的功能是_BBCCB_____。A、从S表中彻底删除年龄大于60岁的记录B、S表中年龄大于60岁的记录被加上删除标记C、删除S表D、删除S表的年龄列27.SELECT-SQL语句是______。A、选择工作区语句B、数据查询语句C、选择标准语句D、数据修改语句28.SQL语言是______语言。A、层次数据库B、网络数据库C、关系数据库D、非数据库29.在SQL中,删除视图用______。A、DROPSCHEMA命令B、CREATETABLE命令C、DROPVIEW命令D、DROPINDEX命令30.以下属于非容器类控件的是______。A、FormB、LabelC、pageD、Container31.将查询结果放在数组中应使用__d____短语。A、INTOCURSORB、TOARRAYC、INTOTABLED、INTOARRAY32.在命令窗口执行SQL命令时,若命令要占用多行,续行符是__d____。A、冒号(:)B、分号(;)C、逗号(,)D、连字符(-)33.设有图书管理数据库:图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2))读者(借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20))借阅(借书证号C(4),总编号C(6),借书日期D(8))对于图书管理数据库,查询0001号借书证的读者姓名和所借图书的书名。SQL语句正确的是______。SELECT姓名,书名FROM借阅,图书,读者WHERE;借阅.借书证号="0001"AND;__________a__A、图书.总编号=借阅.总编号AND;读者.借书证号=借阅.借书证号B、图书.分类号=借阅.分类号AND;读者.借书证号=借阅.借书证号C、读者.总编号=借阅.总编号AND;读者.借书证号=借阅.借书证号D、图书.总编号=借阅.总编号AND;读者.书名=借阅.书名34.设有图书管理数据库:图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2))读者(借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20))借阅(借书证号C(4),总编号C(6),借书日期D(8))对于图书管理数据库,分别求出各个单位当前借阅图书的读者人次。下面的SQL语句正确的是______。SELECT单位,______FROM借阅,读者WHERE;借阅.借书证号=读者.借书证号a______A、COUNT(借阅.借书证号)GROUPBY单位B、SUM(借阅.借书证号)GROUPBY单位C、COUNT(借阅.借书证号)ORDERBY单位D、COUNT(借阅.借书证号)HAVING单位35.设有图书管理数据库:图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2))读者(借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20))借阅(借书证号C(4),总编号C(6),借书日期D(8))对于图书管理数据库,检索借阅了《现代网络技术基础》一书的借书证号。下面SQL语句正确的是______。SELECT借书证号FROM借阅WHERE总编号=;______bA、(SELECT借书证号FROM图书WHERE书名="现代网络技术基础")B、(SELECT总编号FROM图书WHERE书名="现代网络技术基础")C、(SELECT借书证号FROM借阅WHERE书名="现代网络技术基础")D、(SELECT总编号FROM借阅WHERE书名="现代网络技术基础")二、填空题36.算法的复杂度主要包括______复杂度和空间复杂度。37.数据的逻辑结构在计算机存储空间中的存放形式称为数据的______。38.若按功能划分,软件测试的方法通常分为白盒测试方法和______测试方法。39.如果一个工人可管理多个设施,而一个设施只被一个工人管理,则实体"工人"与实体"设备"之间存在______联系。40.关系数据库管理系统能实现的专门关系运算包括选择、连接和______。41.命令?LEN("THISISMYBOOK")的结果是______。42.SQLSELECT语句为了将查询结果存放到临时表中应该使用______短语。43.多栏报表的栏目数可以通过______来设置。44.在打开项目管理器之后再打开"应用程序生成器",可以通过按ALT+F2键,快捷菜单和"工具"菜单中的______。45.数据库系统的核心是______。46.查询设计器中的"联接"选项卡,可以控制______选择。47.设有图书管理数据库:图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2))读者(借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20))借阅(借书证号C(4),总编号C(6),借书日期D(8))用SQL的CREATE命令建立借阅表(字段顺序要相同),请对下面的SQL语句填空:______48.设有图书管理数据库:图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2))读者(借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20))借阅(借书证号C(4),总编号C(6),借书日期D(8))对图书管理数据库,查询由"清华大学出版社"或"电子工业出版社"出版,并且单价不超出20元的书名。请对下面的SQL语句填空:SELECT书名,出版单位,单价FROM图书;WHERE_______AND;_______49.设有图书管理数据库:图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2))读者(借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20))借阅(借书证号C(4),总编号C(6),借书日期D(8))对图书管理数据库,求共借出多少种图书。请对下面的SQL语句填空:SELECT_______FROM借阅第一套题答案选择题1-5CCBAD6-10BDBCA11-15DCBAA16-20BAABA21-25CCBBA26-30BBCCB31-35DDAAB填空题36.时间37.模式或逻辑模式38.黑盒39.一对多或1对多或一对n或1:N或1:n或1:n或1:N或一对m或1:M或1:m或1:m或1:N40.投影41.1542.Intocursor或Intocursorcursorname43.页面设置或列数44.应用程序生成器45.数据库管理系统或DBMS46.联接类型或联接条件47.CREATETABLE借阅(借书证号C(4),总编号C(6),借书日期D(8))或CREATABL借阅(借书证号C(4),总编号C(6),借书日期D(8))或CREATETABLE借阅(借书证号C(4),总编号C(6),借书日期D)或CREATABL借阅(借书证号C(4),总编号C(6),借书日期D)48.单价<=20或(出版单位="清华大学出版社"OR出版单位="电子工业出版社")或(出版单位="电子工业出版社"OR出版单位="清华大学出版社")或(出版单位='清华大学出版社'OR出版单位='电子工业出版社')与(出版单位="清华大学出版社"OR出版单位="电子工业出版社")或(出版单位='清华大学出版社‘)49.COUNT(DISTINCT总编号)或COUN(DISTINCT总编号)或COUNT(DIST总编号)或COUN(DIST总编号)第二套题一、选择题1.以下数据结构中不属于线性数据结构的是______。A、队列B、线性表C、二叉树D、栈2.在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是______。A、可行性分析B、需求分析C、详细设计D、程序编码3.结构化程序设计主要强调的是______。A、程序的规模B、程序的易读性C、程序的执行效率D、程序的可移植性4.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是______。A、概要设计B、详细设计C、可行性分析D、需求分析5.下列关于栈的叙述中正确的是______。A、在栈中只能插入数据B、在栈中只能删除数据C、栈是先进先出的线性表D、栈是先进后出的线性表6.下面不属于软件设计原则的是______。A、抽象B、模块化C、自底向上D、信息隐蔽7.对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。A、N+1B、NC、(N+1)/2D、N/28.视图设计一般有3种设计次序,下列不属于视图设计的是______。A、自顶向下B、由外向内C、由内向外D、自底向上9.下列有关数据库的描述,正确的是______。A、数据库是一个DBF文件B、数据库是一个关系C、数据库是一个结构化的数据集合D、数据库是一组文件10.下列说法中,不属于数据模型所描述的内容的是______。A、数据结构B、数据操作C、数据查询D、数据约束11.在下面的VisualFoxPro表达式中,运算结果是逻辑真的是______。A、EMPTY(.NULL.)B、LIKE('acd','ac?')C、AT('a','123abc')D、EMPTY(SPACE(2))12.表达式VAL(SUBS("奔腾586",5,1))*Len("visualfoxpro")的结果是______。A、13.00B、14.00C、45.00D、65.0013.以下关于自由表的叙述,正确的是______。A、全部是用以前版本的FOXPRO(FOXBASE)建立的表B、可以用VisualFoxPro建立,但是不能把它添加到数据库中C、自由表可以添加到数据库中,数据库表也可以从数据库中移出成为自由表D、自由表可以添加到数据库中,但数据库表不可从数据库中移出成为自由表14.下面关于数据环境和数据环境中两个表之间的关系的陈述中,______是正确的。A、数据环境是对象,关系不是对象B、数据环境不是对象,关系是对象C、数据环境是对象,关系是数据环境中的对象D、数据环境和关系均不是对象15.在"报表设计器"中,可以使用的控件是______。A、标签、域控件和线条B、标签、域控件和列表框C、标签、文本框和列表框D、布局和数据源16.用二维表数据来表示实体及实体之间联系的数据模型称为______。A、实体--联系模型B、层次模型C、网状模型D、关系模型17.用来指明复选框的当前选中状态的属性是______。A、SelectedB、CaptionC、ValueD、ControlSource18.使用菜单操作方法打开一个在当前目录下已经存在的查询文件zgjk.qpr后,在命令窗口生成的命令是____。A、OPENQUERYzgjk.qprB、MODIFYQUERYzgjk.qprC、DOQUERYzgjk.qprD、CREATEQUERYzgjk.qpr19.可以伴随着表的打开而自动打开的索引是______。A、单一索引文件(IDX)B、复合索引文件(CDX)C、结构化复合索引文件D、非结构化复合索引文件20.在数据库设计器中,建立两个表之间的一对多联系是通过以下索引实现的______。A、"一方"表的主索引或候选索引,"多方"表的普通索引B、"一方"表的主索引,"多方"表的普通索引或候选索引C、"一方"表的普通索引,"多方"表的主索引或候选索引D、"一方"表的普通索引,"多方"表的候选索引或普通索引21.下列函数中函数值为字符型的是______。A、DATE()B、TIME()C、YEAR()D、DATETIME()22.下面对控件的描述正确的是______。A、用户可以在组合框中进行多重选择B、用户可以在列表框中进行多重选择C、用户可以在一个选项组中选中多个选项按钮D、用户对一个表单内的一组复选框只能选中其中一个23.确定列表框内的某个条目是否被选定应使用的属性是______。A、ValueB、ColumnCountC、ListCountD、Selected24.设有关系R1和R2,经过关系运算得到结果S,则S是______。A、一个关系B、一个表单C、一个数据库D、一个数组25.DBAS指的是______。A、数据库管理系统B、数据库系统C、数据库应用系统D、数据库服务系统26.设X="ABC",Y="ABCD",则下列表达式中值为.T.的是______。A、X=YB、X==YC、X$YD、AT(X,Y)=027.在表结构中,逻辑型、日期型、备注型字段的宽度分别固定为______。A、3,8,10B、1,6,4C、1,8,任意D、1,8,428.在标准SQL中,建立视图的命令是______。A、CREATESCHEMA命令B、CREATETABLE命令C、CREATEVIEW命令D、CREATEINDEX命令29.有关SCAN循环结构,叙述正确的是______。A、SCAN循环结构中的LOOP语句,可将程序流程直接指向循环开始语句SCAN,首先判断EOF()函数的真假B、在使用SCAN循环结构时,必须打开某一个数据库C、SCAN循环结构的循环体中必须写有SKIP语句D、SCAN循环结构,如果省略了子句\FOR和WHILE条件子句,则直接退出循环30.设有图书管理数据库:图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2))读者(借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20))借阅(借书证号C(4),总编号C(6),借书日期D(8))对于图书管理数据库,要查询所藏图书中,各个出版社的图书最高单价、平均单价和册数,下面SQL语句正确的是______。SELECT出版单位,______,______,______;FROM图书管理!图书______出版单位A、MIN(单价)AVGAGE(单价)COUNT(*)GROUPBYB、MAX(单价)AVG(单价)COUNT(*)ORDERBYC、MAX(单价)AVG(单价)SUM(*)ORDERBYD、MAX(单价)AVG(单价)COUNT(*)GROUPBY31.设有图书管理数据库:图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2))读者(借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20))借阅(借书证号C(4),总编号C(6),借书日期D(8))对于图书管理数据库,求CIE单位借阅图书的读者的人数。下面SQL语句正确的是______。SELECT______FROM借阅WHERE;借书证号_______A、COUNT(DISTINCT借书证号)IN(SELECT借书证号FROM读者WHERE单位="CIE")B、COUNT(DISTINCT借书证号)IN(SELECT借书证号FROM借阅WHERE单位="CIE")C、SUM(DISTINCT借书证号)IN(SELECT借书证号FROM读者WHERE单位="CIE")D、SUM(DISTINCT借书证号)IN(SELECT借书证号FOR借阅WHERE单位="CIE")32.查询订购单号(字符型,长度为4)尾字符是"1"的错误命令是______。A、SELECT*FROM订单WHERESUBSTR(订购单号,4)="1"B、SELECT*FROM订单WHERESUBSTR(订购单号,4,1)="1"C、SELECT*FROM订单WHERE"1"$订购单号D、SELECT*FROM订单WHERERIGHT(订购单号,1)="1"33.在关系模型中,为了实现"关系中不允许出现相同元组"的约束应使用______。A、临时关键字B、主关键字C、外部关键字D、索引关键字34.根据"职工"项目文件生成emp_sys.exe应用程序的命令是______。A、BUILDEXEemp_sysFROM职工B、BUILDAPPemp_sys.exeFROM职工C、LIKEEXEemp_sysFROM职工D、LIKEAPPemp_sys.exeFROM职工35.当前盘当前目录下有数据库:学院.dbc,其中有"教师"表和"学院"表。"教师"表:"学院"表:有SQL语句:SELECTDISTINCT系号FROM教师WHERE工资>=;ALL(SELECT工资FROM教师WHERE系号="02")与如上语句等价的SQL语句是______。A、SELECTDISTINCT系号FROM教师WHERE工资>=;(SELECTMAX(工资)FROM教师WHERE系号="02")B、SELECTDISTINCT系号FROM教师WHERE工资>=;(SELECTMIN(工资)FROM教师WHERE系号="02")C、SELECTDISTINCT系号FROM教师WHERE工资>=;ANY(SELECT工资FROM教师WHERE系号="02")D、SELECTDISTINCT系号FROM教师WHERE工资>=;SOME(SELECT工资FROM教师WHERE系号="02")二、填空题36.若按功能划分,软件测试的方法通常分为白盒测试方法和______测试方法。37.数据库系统的三级模式分别为______模式、内部级模式与外部级模式。38.在最坏情况下,冒泡排序的时间复杂度为______。39.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。40.关系模型的数据操纵即是建立在关系上的数据操纵,一般有______、增加、删除和修改四种操作。41.要把帮助文件设置为复制到硬盘上的Foxhelp.chm文件,需要在"选项"对话框的______选项卡上设置。42.TIME()的返回值的数据类型是______类型。43.在定义字段有效性规则中,在规则框中输入的表达式中类型是________。44.设计报表通常包括两部分内容:______和布局。45.______是指只有满足联接条件的记录才包含在查询结果中。46.设有图书管理数据库:图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2))读者(借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20))借阅(借书证号C(4),总编号C(6),借书日期D(8))检索书价在15元至25元(含15元和25元)之间的图书的书名、作者、书价和分类号,结果按分类号升序排序。SELECT书名,作者,单价,分类号FROM图书;WHERE______;ORDERBY______;47.设有如下关系表R、S和T:R(BH,XM,XB,DWH)S(SWH,DWM)T(BH,XM,XB,DWH)实现R∪T的SQL语句是_______。48.设有如下关系表R:R(NO,NAME,SEX,AGE,CLASS)主关键字是NO其中NO为学号,NAME为姓名,SEX为性别,AGE为年龄,CLASS为班号。写出实现下列功能的SQL语句。插入"95031"班学号为30,姓名为"郑和"的学生记录;_______。49.设有如下关系表R:R(NO,NAME,SEX,AGE,CLASS)主关键字是NO其中NO为学号(数值型),NAME为姓名,SEX为性别,AGE为年龄,CLASS为班号。写出实现下列功能的SQL语句。删除学号为20的学生记录;______。第二套题答案1-5CBBDD6-10CBBCC11-15DDCCA16-20DCBCA21-25BBDAC26-30CDCBD31-35ACBBA36.黑盒37.概念或概念级38.n(n-1)/239.封装40.查询41.文件位置42.字符或C43.逻辑表达式44.数据源45.内部联接46.单价BETWEEN15AND25或单价BETW15AND25或单价BETWE15AND25或单价>=15and单价<=25或单价>=15and单价=<25或单价=>15and单价<=25或单价=>15and单价=<25与分类号ASC或分类号47.SELECT*FROMRUNIONSELECT*FROMT或SELE*FROMRUNIOSELE*FROMT或SELECT*FROMRUNIOSELECT*FROMT或SELE*FROMRUNIONSELE*FROMT48.INSERTINTOR(NO,NAME,CLASS)VALUES(30,"郑和","95031")或INSEINTOR(NO,NAME,CLASS)VALUES(30,"郑和","95031")49.DELETEFROMRWHERENO=20或DELEFROMRWHERENO=20或DELEFROMRWHERNO=20或DELETEFROMRWHERNO=20

12:存在表T(a,b,c,d),要根据字段c排序后取第21—30条记录显示,请给出sqlcreatetablet(anumber(,bnumber(,cnumber(,dnumber();

/

begin

foriin1..300loop

insertintotvalues(mod(i,2),i/2,dbms_random.value(1,300),i/4);

endloop;

end;

/

select*from(selectc.*,rownumasrnfrom(select*fromtorderbycdesc)c)wherernbetween21and30;

/

select*from(select*fromtestorderbycdesc)xwhererownum<30minus

select*from(select*fromtestorderbycdesc)ywhererownum<20orderby3desc题目内容如下

*

一表TB

Id

字段为编号,递增不一定连续.

M

字段为区段路费,比如从家到哈尔滨是60元,从哈尔滨到长春是70元,数值类型.

S

字段站点名称.

现有500元钱,从家先经哈尔滨出发,能走多远?

(例:60+70+80+50+90+75=42560+70+80+50+90+75+80=505所以答案应该是6武汉)Id

M

S

1

60

哈尔滨

2

70

长春

3

80

沈阳

4

50

北京

5

90

郑州

6

75

武汉

7

80

长沙

8

90

广东要求,请用一句SQL语句实现

*/

--创建表

CreateTableTB

(

Id

IntIdentity(1,1)NotNull,

M

Int,

S

varchar(50)

)

--测试数据

InsertIntoTBValues(60,'哈尔滨')

InsertIntoTBValues(70,'长春')

InsertIntoTBValues(80,'沈阳')

InsertIntoTBValues(50,'北京')

InsertIntoTBValues(90,'郑州')

InsertIntoTBValues(75,'武汉')

InsertIntoTBValues(80,'长沙')

InsertIntoTBValues(90,'广东')实现方法两种

1.

SELECTTOP1B.id,b.s,sum(A.m)s_sum

FROMTBA,

TBB

WHEREA.ID<=B.ID

GROUPBYb.id,

b.s

HAVINGsum(a.m)<=500

ORDERBYb.idDESC

2.

SELECTTOP1ID,S,M_SUM

FROM(SELECT*,

(SELECTSUM(M)

FROMTB

WHEREID>=1

ANDID<=A.ID)ASM_SUM

FROMTBA)B

WHEREM_SUM<=500

ORDERBYIDDESC

SQL面试题(二)有一张工资表,包含三列:员工编号(ID),部门编号(GROUPS),工资(SALARY)1..找到每个部门工资最高的人(包括并列第一)2.找到每个部门工资最高的人(只选一个)SQL语句如下:1.select*from工资表asawherea.工资=(selectmax(b.工资)from工资表asbwherea.部门编号=b.部门编号)--2select*from工资表asawherea.工资=(selectmax(b.工资)from工资表asbwherea.部门编号=b.部门编号)anda.员工编号=(selectmax(c.员工编号)from工资表ascwherea.部门编号=c.部门编号)selectmin(员工编号)as员工编号,部门编号,工资from工资表asawherea.工资=(selectmax(b.工资)from工资表asbwherea.部门编号=b.部门编号)groupby部门编号,工资SQL面试题(一)有一个张员工工资表(SALARY),表有三列:员工编号(ID),工资(SALARY)1.查询id重复记录select*from工资表asawhere((selectcount(*)from工资表asbwherea.员工编号=b.员工编号)>1)SELECT*FROM工资表WHERE员工编号IN(SELECT员工编号FROM工资表GROUPBY员工编号HAVINGCOUNT(*)>1)2.删除id重复记录,只保留第一条(说明,不需要考虑表中存在完全相同纪录的情况)SQL语句如下:CREATETABLESALARY(

IDINTNOTNULL,

SALARYMONEYNOTNULL)INSERTINTOSALARYSELECT1,1000UNIONALLSELECT1,800UNIONALLSELECT2,1200UNIONALLSELECT3,1100UNIONALLSELECT3,1200UNIONALLSELECT3,1300SELECT*FROMSALARY--1SELECT*FROMSALARYWHEREIDIN(SELECTIDFROMSALARYGROUPBYIDHAVINGCOUNT(*)>1)--2DELETETFROMSALARYTWHEREEXISTS(SELECT1FROMSALARYWHERET.ID=IDANDSALARY>T.SALARY)四、设计题(本大题共2小题,每小题10分,共20分)2、学生表:Student学生表(学号,姓名,性别,年龄,组织部门)

Course课程表(编号,课程名称)

Sc选课表(学号,课程编号,成绩)表结构如下:(1).写一个SQL语句,查询选修了’计算机原理’的学生学号和姓名(2).写一个SQL语句,查询’周星驰’同学选修了的课程名字(3).写一个SQL语句,查询选修了5门课程的学生学号和姓名

(1)selectsno,snamefromstudentwheresnoin(selectsnofromscwherecno=(selectcnofromcoursewherecname='计算机原理'))

(2)

selectcnamefromcoursewherecnoin(selectcnofromscwheresno=(selectsnofromstudentwheresname='周星驰'))

(3)selectsno,snameFromstudentWheresnoin(selectsnofromscgroupbysnohavingcount(sno)=5)

一道凊华同方的SQL面试题

已知一个表的结构为:

姓名科目成绩

张三语文20

张三数学30

张三英语50

李四语文70

李四数学60

李四英语90

怎样通过select语句把他变成以下结构:

姓名语文数学英语

张三203050

李四706090在Mysql上测试通过:

usetest;

droptableifexistsstudentscore;

createtablestudentscore(idintauto_incrementprimarykey,姓名varchar(20),科目varchar(20),成绩varchar(20))defaultcharset=utf8;createviewteststudentasselectA.姓名,A.成绩as语文,B.成绩as数学,C.成绩as英语fromstudentscoreA,studentscoreB,studentscoreCwhereA.姓名=B.姓名andB.姓名=C.姓名andA.科目='语文'andB.科目='数学'

andC.科目='英语';

(2)金蝶的一道SQL笔试题,上个周六的时候去金蝶面试,出了这样一道SQL题,共享之

给下面这样的一个表记录:

购物人

商品名称

数量

A

2

B

4

C

1

A

2

B

5

给出所有购入商品为两种或两种以上的购物人记录usetest;

droptableifexistsproduct;

createtableproduct(idintauto_incrementprimarykey,购物人varchar(20),商品名称varchar(20),数量varchar(20));

insertintoproduct(id,购物人,商品名称,数量)values

(1,'A','甲','2');

insertintoproduct(id,购物人,商品名称,数量)values

(2,'B','乙','4');

insertintoproduct(id,购物人,商品名称,数量)values

(3,'C','丙','1');

insertintoproduct(id,购物人,商品名称,数量)values

(4,'A','丁','2');

insertintoproduct(id,购物人,商品名称,数量)values

(5,'B','丙','5');

select*fromproductgroupby购物人havingcount(商品名称)>=2;错误,因为结果是这样的:A

2

B

4

select*fromproductwhere购物人in(select购物人fromproductgroupby购物人havingcount(商品名称)>=2)正确A

2

B

4

A

2

B

5

sql语言实现查找成绩排名10到20的学生

sql语句实现:

查询成绩表中10名至20名的学生方法

selecttop11*fromscorewheresnonotin(selecttop9snofromscoreorderbyscdesc)orderbyscdesc补充说明:score,sc,sno

分别为成绩表,成绩和学号。这道冥思苦想了N久的题目原来只用一个top就搞定了,真是狂汗,看来还要看书。

用一句SQL取出第m条到第n条记录的方法

从Table

表中取出第

m

条到第

n

条的记录:(Not

In

版本)

SELECT

TOP

n-m+1

*

FROM

Table

WHERE

(id

NOT

IN

(SELECT

TOP

m-1

id

FROM

Table

))

--从TABLE表中取出第m到n条记录

(Exists版本)

SELECT

TOP

n-m+1

*

FROM

TABLE

AS

a

WHERE

Not

Exists

(Select

*

From

(Select

Top

m-1

*

From

TABLE

order

by

id)

b

Where

b.id=a.id

)

Order

by

id

--m为上标,n为下标,例如取出第8到12条记录,m=8,n=12,Table为表名

Select

Top

n-m+1

*

From

Table

Where

Id>(Select

Max(Id)

From

(Select

Top

m-1

Id

From

Table

Order

By

Id

Asc)

Temp)

Order

By

Id

Asc

直接取得数据库中的分页记录前提是表中必须有主键

取得第M条记录之后的N条记录:

SELECTTOPN*FROM[TABLE]WHERE(IDNOTIN(SELECTTOPMidFROM[TABLE]ORDERBY[ORDER]))ORDERBY[ORDER]

Oracle中的实现,取得第M到N条记录:SELECT*FROM

(SELECT*,ROWNUMASCONFROM(SELECT*FROM[TABLE]ORDERBY[ORDER])WHEREROWNUM<=N)WHERECON>=M;查询表中连续的某几条记录不要传任何列的条件参数,查询表中连续的某几条记录

如:表A,id列为主键

idnamesexage

1luoyimale21

2yayafemale20

3lilifemale22

4wuyongmale25

这个表的记录还有很多,如果我想取第二、第三条记录,不为别的,我就想要这两条,这不仅在编程中会用到,而且在一些公司面试时也有类似考题(呵呵,我没有遇到过),在oracle和mssqlserver中SQL代码分别为:

二、mssqlserver

在server中没有minus,只能用类似于oracle的第二种方法

select*from(selecttop3*fromA)asbwhereb.idnotin(selecttop1idfromA)

三、绘制出来的结果为:

idnamesexage

2yayafemale20

3lilifemale22特点:一次查询,数据库只返回一页的数据。而不是取出所有的数据。

说明:

pagesize:每页显示记录数

cureentpage:当前页数

select*from(selectTOPpagesize*FROM(SELECTTOPpagesize*cureentpage*fromuser_tableORDERBYidASC)asaSysTableORDERBYidDESC)asbSysTableORDERBYidASC

例子说明:

假如数据库表如下:

user_table:

id:主键,自增

username:字符

password:字符

假设有80条记录,每页显示10条记录,id从1到80现在按照id升序排列取出第三页的数据应该为:所取得记录的id应该为21到30。这时该语句应该为:

select*from(selectTOP10*FROM(SELECTTOP30*fromuser_tableORDERBYidASC)asaSysTableORDERBYidDESC)asbSysTableORDERBYidASC

原理如下:

先按照id从小到大升序取出30条记录(3*10),也就是:id在1-30之间的记录(SELECTTOP30*fromuser_tableORDERBYidASC)然后按照ID降序排列这30条记录,得到记录为id在:从30到1然后在这些30条记录中取出前10条记录:取得的记录为:id在30-21之间。这就是我们需要的数据,但这时是按照降序排列的,不符合要求。最后在重新排序得到最终我们需要的数据。id在21-30之间。随机取出若干条记录的SQL语句

Sqlserver:

selecttop20*from表orderbynewid()A、B两个表拥有一样的表结构,都以id为主键,如何将A表中存在而B表中不存在的记录插入到B表中。

表结构如下:createtableA(idintprimarykey,namevarchar(20),passwordvarchar(20))

A表记录:ID

NAME

PASSWORD1

Tom

1234

2

Mary

1234

3

Lucy

1234

4

Billy

1234

5

Henry

1234

B表记录:ID

NAME

PASSWORD1

Tom

1234

2

Mary

1234

3

Lucy

1234

SQL语句一(通过notin实现):

insertintoBselect*fromAwhereidnotin(selectidfromB)Sql语句二(通过notexists实现):insertintoBselect*fromAanotexists(select*fromBbwherea.id=b.id)

若两表的记录不同,如下:A表记录:ID

NAME

PASSWORD1

Tom

1234

2

Mary

1234

3

Lucy

1234

4

Billy

2548

5

Henry

1234

B表记录:ID

NAME

PASSWORD1

Jojoy

1234

2

Mary

1234

3

Lucy

1234

4

Billy

1234

5

Henry

1234

找出两表中的不同记录,以下两条SQL语句都能实现。

select*frombwherenamenotin(selectnamefroma)orpasswordnotin(selectpasswordfroma)

select*frombwherenotexists(select*fromawhere=anda.password=b.password)select*frombwherenotexists(select*fromawhere=anda.password=b.password)SQLServer不同行列相减实例解析

昨天技术主管面试新人时出了道数据库编程题,自己也是新人,所以顺便拿过来研究一下,题目如下:

数据库表TEST,表结构及数据如下:

CREATETABLETEST(IDchar(10)PRIMARYKEY,NAMEchar(10),AMOUNTnumeric(9))

ID

NAME

AMOUNT101

dr

100

102

cr

200

101

cr

50

102

dr

150

101

dr

300

103

dr

300

103

cr

300

104

cr

345

104

dr

355

104

dr

225

105

dr

225105

cr

500用一条SQL语句得出以下查询结果(要求SQL的查询性能和效率为最高):ID

AMOUNT101

350

102

-50

103

0

104

235

105

-275要得出以上结果,先得分析一下,可以看出是将ID相同并且NAME为dr的AMOUNT减去NAME为cr的AMOUNT得出。

在不考虑效率的情况下,可使用以下SQL语句:selectid,amount=(selectsum(amount)fromtestwherename='dr'andid=t.id)-(selectsum(amount)fromtestwherename='cr'andid=t.id)fromtestt

groupbyid但这条语句还是有问题,例如:当去掉ID

NAME

AMOUNT105

cr

500这条记录后,查询结果如下:ID

AMOUNT101

350

102

-50

103

0

104

235

105

NULL

出现了一条空值,因为ID='105'的记录只有一条,没有与之相匹配的记录。再看下面的语句:selectid,sum((casename

WHEN'dr'THEN1ELSE-1END)*amount)asamountfromtestgroupbyidselectid,sum(casename

WHEN'dr'THENamountELSE-amountEND)asamountfromtestgroupbyid这两条语句的效率和查询结果等同,也是我们所要的SQL语句。其实要获得高效率的SQL语句,解题的思路很重要,这里运用SQLServer的CASE函数实现将AMOUNT字段的值根据NAME的不同赋不同的值(加个负号),再用sum函数实现数据的相减。考题:现有两张表,以下为表结构createtabledep(depidintidentityprimarykey,--部门号depnamevarchar(20)

--部门名称)createtableemp(empidintidentityprimarykey,empnamevarchar(20),salarymoney,depidint)问题:1、请用一条sql语句查询出各部门的平均工资。结果显示为如下形式:

部门号

平均工资

1

2500.4521

2

2845.0121这个比较简单,不过有几种方式。正解1:

selectdepid部门号,avg(salary)平均工资fromempgroupbydepid正解2:

selectt1.depid部门号,avg(t2.salary)平均工资fromdept1innerjoinempt2ont1.depid=t2.depidgroupbyt1.depid正解3:

select部门号=depid,平均工资=avg(salary)fromempgroupbydepid2、请列出工资大于本部门平均工资的员工姓名和部门号以及统计此部门的人数。结果显示为如下形式:

EMPNAME

DEPID

部门人数

ZHANGSAN

1

15

LISI

2

10这个有点难度,我试了半天都没解决。正解1:SELECTT1.empname,T1.depid,T2.部门人数FROMdbo.empT1INNERJOIN(selectt1.depid,avg(t2.salary)ASsalary,COUNT(empid)AS部门人数fromdept1innerjoindbo.empt2ont1.depid=t2.depidgroupbyt1.depid)T2ONT1.depid=T2.depidWHERET1.salary>T2.salary正解2:

selectempname,emp.depid,s部门人数fromempInnerJoin(selectdepid,avg(salary)a,count(1)sfromempgroupbydepid)bonemp.depid=b.depid

温馨提示

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

评论

0/150

提交评论