SQL数据库经典面试题(修改笔试题)(有答案)
sql 相关的查询面试题收集及答案

sql 相关的查询面试题收集及答案问题:sql 相关的查询面试题收集及答案回答:一//查询某表中的第30到40行的数据select * from 表名where 字段in( select top 40 字段from 表名)and 字段not in( select top30 字段from 表名)或者select top 10 * from 表名where 字段not in( select top 30 字段from 表名)二//查询一个表中存在重复的字段“字段1”select DISTINCT 字段1 from 表名having count(字段1)>1 group by 字段1(并显示可能重复的次数)select DISTINCT 字段1,count(字段1) As 次数from 表名having count(字段1)>1 group by 字段1某门户网站数据库职位笔试题1、事务是什么2、oracle中truncate和delete命令有何区别3、Oracle中char和varchar2数据类型有什么区别有数据”test”分别存放到char(10)和varchar2(10)类型的字段中,其存储长度及类型有何区别4、参见如下表结构出版社:出版社代码char(2),出版社名称varchar2(32)图书:图书编号char(8),图书名称varchar2(128),出版社代码char(2),作者代号char(4),图书简介varchar2(128)作者:作者代号char(4),作者名称varchar2(10),性别char(1),年龄number(3),文学方向varchar2(64)获奖名单:获奖日期date,获奖人员char(4)编写SQL语句,找出“作者”库中没有出现在“获奖名单”库中所有作者信息的SQL语句(提示:使用notin、not exists以及外关联三种方法,并说明哪种方法最优。
sql语句面试题及答案

sql语句面试题及答案一、基本查询1. 简单查询请问如何查询一个表中的所有记录?答:可以使用SELECT * FROM table_name; 命令来查询表中的所有记录。
2. 条件查询如果我只想查询特定条件下的记录,例如查询年龄大于30的员工信息,应该怎么做?答:可以使用WHERE子句来进行条件查询,语句如下:SELECT * FROM employees WHERE age > 30;3. 限制查询结果在查询时,如果只想获取前5条记录,应该如何操作?答:可以使用LIMIT关键字来限制查询结果的数量,语句如下:SELECT * FROM table_name LIMIT 5;二、聚合查询1. 计数如何计算某个表中的记录数?答:可以使用COUNT()函数来计算表中的记录数,语句如下:SELECT COUNT(*) FROM table_name;2. 求和如果需要计算某列的总和,例如计算销售总额,应该怎么做?答:可以使用SUM()函数来计算某列的总和,语句如下:SELECT SUM(sales_amount) FROM sales_table;3. 平均值如何求某列的平均值,比如平均工资?答:可以使用AVG()函数来计算某列的平均值,语句如下:SELECT AVG(salary) FROM employees;三、分组查询1. 分组统计请问如何按照某个字段进行分组,并计算每个分组的记录数?答:可以使用GROUP BY子句来进行分组统计,语句如下:SELECT department, COUNT(*) FROM employees GROUP BY department;2. 多列分组如果需要按照多个字段进行分组,应该如何操作?答:可以在GROUP BY子句中列出所有需要分组的字段,语句如下:SELECT department, job_title, COUNT(*) FROM employees GROUP BY department, job_title;3. 分组聚合运算在分组查询中,如何对每个分组执行聚合运算,例如计算每个部门的最高工资?答:可以使用GROUP BY子句结合聚合函数来进行分组聚合运算,语句如下:SELECT department, MAX(salary) AS max_salary FROM employees GROUP BY department;四、连接查询1. 内连接如何查询两个表中有关联的记录?答:可以使用INNER JOIN来查询两个表中有关联的记录,语句如下:SELECT * FROM table1 INNER JOIN table2 ON mon_field = mon_field;2. 左连接如果需要查询左表的所有记录,以及右表中与之关联的记录,没有关联的则显示NULL,应该怎么做?答:可以使用LEFT JOIN来实现,语句如下:SELECT * FROM table1 LEFT JOIN table2 ON mon_field = mon_field;3. 右连接请问如何查询右表的所有记录,以及左表中与之关联的记录?答:可以使用RIGHT JOIN来实现,语句如下:SELECT * FROM table1 RIGHT JOIN table2 ON mon_field = mon_field;五、子查询1. 非相关子查询在查询时,如果需要在WHERE子句中使用一个SELECT语句作为条件,应该怎么做?答:可以使用非相关子查询来实现,语句如下:SELECT * FROM table1 WHERE column_name IN (SELECT column_name FROM table2);2. 相关子查询如果子查询需要引用外部查询的列,应该怎么做?答:可以使用相关子查询,在子查询中使用外部查询的列,语句如下:SELECT * FROM table1 WHERE column_name = (SELECT column_name FROM table2 WHERE related_column = table1.related_column);六、更新和删除操作1. 更新数据请问如何使用SQL语句来更新表中的记录?答:可以使用UPDATE语句来更新表中的记录,语句如下:UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;2. 删除数据如果需要删除表中的某些记录,应该如何操作?答:可以使用DELETE语句来删除记录,语句如下:DELETE FROM table_name WHERE condition;七、排序和索引1. 排序查询结果如何对查询结果进行排序?答:可以使用ORDER BY子句对查询结果进行排序,语句如下:SELECT * FROM table_name ORDER BY column_name ASC/DESC;2. 创建索引为了提高查询效率,如何为表中的列创建索引?答:可以使用CREATE INDEX语句来创建索引,语句如下:CREATE INDEX index_name ON table_name (column_name);通过以上问题的探讨,我们了解了SQL语句在面试中常见的问题及答案。
sql语句面试题及答案

sql语句面试题及答案本文将为您提供一些常见的SQL语句面试题,并给出相应的答案。
通过阅读本文,您将对SQL语句有更深入的了解,从而在面试中更加自信。
一、查询相关的面试题1. 如何用SQL语句查询一张表的所有记录?答案:使用SELECT语句来查询表中的所有记录,语法为:SELECT * FROM 表名;2. 如何查询指定条件的记录?答案:使用SELECT语句的WHERE子句来查询指定条件的记录,语法为:SELECT * FROM 表名 WHERE 条件;3. 如何对查询结果进行排序?答案:使用SELECT语句的ORDER BY子句来对查询结果进行排序,语法为:SELECT * FROM 表名 ORDER BY 列名 ASC/DESC;4. 如何获取查询结果的前几条记录?答案:使用SELECT语句的TOP或LIMIT子句来获取查询结果的前几条记录,语法为:SELECT TOP 数量 * FROM 表名; 或 SELECT * FROM 表名 LIMIT 数量;5. 如何对查询结果进行分页?答案:使用SELECT语句的LIMIT子句来实现分页效果,语法为:SELECT * FROM 表名 LIMIT 起始位置, 每页数量;二、插入、更新和删除相关的面试题1. 如何插入一条新记录?答案:使用INSERT INTO语句来插入一条新记录,语法为:INSERT INTO 表名 (列1, 列2, 列3) VALUES (值1, 值2, 值3);2. 如何更新已有的记录?答案:使用UPDATE语句来更新已有的记录,语法为:UPDATE表名 SET 列名 = 新值 WHERE 条件;3. 如何删除指定的记录?答案:使用DELETE FROM语句来删除指定的记录,语法为:DELETE FROM 表名 WHERE 条件;三、聚合函数相关的面试题1. 如何计算表中记录的数量?答案:使用COUNT(*)函数来计算表中记录的数量,语法为:SELECT COUNT(*) FROM 表名;2. 如何计算某一列的总和?答案:使用SUM(列名)函数来计算某一列的总和,语法为:SELECT SUM(列名) FROM 表名;3. 如何计算某一列的平均值?答案:使用AVG(列名)函数来计算某一列的平均值,语法为:SELECT AVG(列名) FROM 表名;四、连接查询相关的面试题1. 如何在两个表之间进行连接查询?答案:使用JOIN语句来进行连接查询,语法为:SELECT * FROM 表1 JOIN 表2 ON 表1.列 = 表2.列;2. 如何实现左连接和右连接?答案:使用LEFT JOIN或RIGHT JOIN来实现左连接和右连接,语法为:SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.列 = 表2.列; 或SELECT * FROM 表1 RIGHT JOIN 表2 ON 表1.列 = 表2.列;五、其他面试题1. 如何创建一个新表?答案:使用CREATE TABLE语句来创建一个新表,语法为:CREATE TABLE 表名 (列1 数据类型, 列2 数据类型, 列3 数据类型);2. 如何修改表的结构?答案:使用ALTER TABLE语句来修改表的结构,语法为:ALTER TABLE 表名 ADD 列名数据类型; 或 ALTER TABLE 表名DROP 列名;3. 如何在表中创建索引?答案:使用CREATE INDEX语句来在表中创建索引,语法为:CREATE INDEX 索引名 ON 表名 (列名);总结:本文介绍了一些常见的SQL语句面试题和对应的答案,涵盖了查询、插入、更新、删除、聚合函数、连接查询、表的创建和修改等方面。
SQL数据库经典面试题(修改笔试题)(有答案)

28、ﻫ数据库:抽出部门,平均工资,要求按部门得字符串顺序排序,不能含有"human resource"部门,employee结构如下:employee_id,employee_name,depart_id,depart_name,wage 答:ﻫselect depart_name, avg(wage)fromemployee where depart_name〈〉'humanresource'ﻫgroup by depart_nameorder by depart_name---—--——----—-——----—--——-—---———----—————-—-29、—-—--—---—-—--————-——--——--——ﻫ给定如下SQL数据库:Test(num INT(4))请用一条SQL语句返回num得最小值,但不许使用统计功能,如MIN,MAX等答:select top1 num from Test orderbynum----—-----——-—----———----—---—----—-—-—-———-—-33、一个数据库中有两个表:——----—-—----—--—--——--—----ﻫ一张表为Customer,含字段ID,Name;一张表为Order,含字段ID,CustomerID(连向Customer中ID得外键),Re venue;ﻫ写出求每个Customer得Revenue总与得SQL语句。
建表create table customerﻫ(ID int primary key,Namechar (10))gocreate table [order]ﻫ(ID int primary key,CustomerID int foreign key references customer(id),Revenue float)go--查询ﻫselect Customer、ID, sum(isnull([Order]、Revenue,0))ﻫfrom customer full join [order]on([order]、custome rid=customer、id)groupby customer、idselectcustomer、id,sum(order、revener) fromorder,customer where customer、id=customerid group by customer、idselect customer、id,sum(order、revener)from customer fulljoin orderon(order、customerid=customer、id)group bycustomer、id5数据库(10)a tabel called “performance”contain :name andscore,please用SQL语言表述如何选出score最high得一个(仅有一个)仅选出分数,Select max(score) from performance仅选出名字,即选出名字,又选出分数:select top 1score,name fromperorder by scoreselect name1,score from per where score in/=(select max(score)fromper)、、、、、4有关系s(sno,sname) c(cno,cname) sc(sno,cno,grade)1 问上课程"db"得学生noselect count(*)from c,scwhere came='db’ and co=scoselect count(*)fromsc wherecno=(select cnofrom c where came=’db')2成绩最高得学生号select sno from sc wheregrade=(select max(grade)from sc )3 每科大于90分得人数select came,count(*)from c,scwhere co=scoand sc、grad e>90 group by cameselect came,count(*)from c join sc on co=sco and sc、grade>90group bycame数据库笔试题*ﻫ建表:dept:ﻫ deptno(primary key),dname,locﻫemp:empno(primary key),ename,job,mgr,sal,deptnoﻫ*/1列出emp表中各部门得部门号,最高工资,最低工资select max(sal) as 最高工资,min(sal) as 最低工资,deptno from e mp groupby deptno;2 列出emp表中各部门job为'CLERK'得员工得最低工资,最高工资select max(sal)as 最高工资,min(sal) as 最低工资,deptno as部门号fromempwherejob = 'CLERK' group by deptno;3对于emp中最低工资小于1000得部门,列出job为’CLERK’得员工得部门号,最低工资,最高工资ﻫselect max(sal)as最高工资,min(sal)as最低工资,deptno as 部门号from empas bﻫwhere job='CLERK'and 1000〉(select min(sal)from emp as a where a、deptno=b、de ptno) groupby b、deptno4 根据部门号由高而低,工资有低而高列出每个员工得姓名,部门号,工资select deptno as部门号,ename as姓名,sal as 工资fromemp order by deptno desc,sal asc5 写出对上题得另一解决方法(请补充)6 列出’张三'所在部门中每个员工得姓名与部门号ﻫselect ename,deptno fromemp wheredeptno =(selectdeptno from emp where ename='张三’)7列出每个员工得姓名,工作,部门号,部门名selectename,job,emp、deptno,dept、dnamefrom emp,deptwhereemp、deptno=dept、deptno8 列出emp中工作为'CLERK'得员工得姓名,工作,部门号,部门名ﻫselect ename,job,dept、deptno,dnamefrom emp,deptwhered ept、deptno=emp、deptnoandjob='CLERK'9对于emp中有管理者得员工,列出姓名,管理者姓名(管理者外键为mgr)ﻫselec ta、enameas 姓名,b、enameas 管理者fromemp as a,empas b where a、mgrisnot null and a、mgr=b、empno10 对于dept表中,列出所有部门名,部门号,同时列出各部门工作为'CLERK'得员工名与工作selectdname as 部门名,dept、deptnoas 部门号,ename as 员工名,jobas 工作from dept,emp ﻫwheredept、deptno*=emp、deptno and job= 'CLE RK’11对于工资高于本部门平均水平得员工,列出部门号,姓名,工资,按部门号排序select a、deptno as部门号,a、enameas姓名,a、sal as工资fr om empas aﻫwherea、sal〉(select avg(sal) from emp as bwhere a、deptno=b、deptno)orderbya、deptno12对于emp,列出各个部门中平均工资高于本部门平均水平得员工数与部门号,按部门号排序select count(a、sal)as 员工数,a、deptno as 部门号from emp asaﻫwhere a、sal〉(select avg(sal)fromemp asbwherea、deptno=b、deptno)group by a、deptnoorder by a、deptno13对于emp中工资高于本部门平均水平,人数多与1人得,列出部门号,人数,按部门号排序ﻫselect count(a、empno)as员工数,a、deptnoas部门号,avg(sal)as 平均工资from emp as awhere(select count(c、empno) from emp asc where c、deptno =a、deptno and c、sal>(select avg(sal)from empas bwhere c、deptno=b、deptno))>1groupby a、deptno order by a、deptno14对于emp中低于自己工资至少5人得员工,列出其部门号,姓名,工资,以及工资少于自己得人数select a、deptno,a、ename,a、sal,(select count(b、ename)from empas b where b、sal<a、sal) as人数from emp as a where(select count(b、ename)from emp as b where b、sal <a、sal)>5数据库笔试题及答案第一套一、选择题1、下面叙述正确得就是CCBAD______.A、算法得执行效率与数据得存储结构无关B、算法得空间复杂度就是指算法程序中指令(或语句)得条数C、算法得有穷性就是指算法必须能在执行有限个步骤之后终止D、以上三种描述都不对2、以下数据结构中不属于线性数据结构得就是______.A、队列B、线性表C、二叉树D、栈3、在一棵二叉树上第5层得结点数最多就是______。
SQL笔试题带答案

SQL笔试题带答案一单词解释(2分/个) 34分Data 数据Database 数据库RDBMS 关系数据库管理系统GRANT 授权REVOKE 取消权限DENY 拒绝权限DECLARE 定义变量PROCEDURE存储过程事务Transaction 触发器TRIGGER 继续continue 唯一unqiue主键primary key 标识列identity 外键foreign key 检查check 约束constraint二编写SQL语句(5分/题) 50分(包含笔试题问题和解答答案)1) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话Create table stu (学号int ,姓名varchar(8),年龄int,性别varchar(4),家庭地址varchar(50),联系电话int);2) 修改学生表的结构,添加一列信息,学历Alter table stu add 学历varchar(6);3) 修改学生表的结构,删除一列信息,家庭住址Alter table stu drop column 家庭地址4) 向学生表添加如下信息:学号姓名年龄性别联系电话学历1A22男123456小学2B21男119中学3C23男110高中4D18女114大学Insert into stu values(1,’A’,22,’男’,123456,’小学’)Insert into stu values(2,’B’,21,’男’,119,’中学’)Insert into stu values(3,’C’,23,’男’,110,’高中’)Insert into stu values(4,’D’,18,’女’,114,’大学’)5) 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”Update stu set 学历=’大专’where 联系电话like ‘11%’6) 删除学生表的数据,姓名以C开头,性别为‘男’的记录删除Delect from stu where 性别=’男’and 姓名like ‘c%’7) 查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号示出来Select 姓名,学号from stu where 年龄<22 and 学历=’大专’8) 查询学生表的数据,查询所有信息,列出前25%的记录Select top 25 percent * from stu9) 查询出所有学生的姓名,性别,年龄降序排列Select 姓名,性别from stu order by 年龄desc10) 按照性别分组查询所有的平均年龄Select avg(年龄) from stu group by 性别三填空(3分/题) 36分(包含笔试题问题和解答答案)1) 索引分为__聚集索引___和__非聚集索引__在一张表上最多可以创建1个聚集索引_索引。
sql面试题及答案

sql面试题及答案数据库面试的技术员,对常见的面试题目了解会对面试结果有所帮助。
以下是为大家的sql面试题及答案,希望可以帮到大家。
1. 在一个查询中,使用哪一个关键字能够除去重复列值?答案:使用distinct关键字2. 什么是快照?它的作用是什么?答案:快照Snapshot是一个文件系统在特定时间里的镜像,对于在线实时数据备份非常有用。
快照对于拥有不能停顿的应用或具有常翻开文件的文件系统的备份非常重要。
对于只能提供一个非常短的备份时间而言,快照能保证系统的完整性。
3. 解释存储过程和触发器答案:存储过程是一组Transact-SQL语句,在一次编译后可以执行屡次。
因为不必重新编译Transact-SQL语句,所以执行存储过程可以提高性能。
触发器是一种特殊类型的存储过程,不由用户直接调用。
创立触发器时会对其进展定义,以便在对特定表或列作特定类型的数据修改时执行。
4. SQL Server是否支持行级锁,有什么好处?答案:支持动态行级锁定SQL Server 2000动态地将查询所引用的每一个表的锁定粒度调整到适宜的级别。
当查询所引用的少数几行分散在一个大型表中时,优化数据并行访问的最正确方法是使用粒度锁,如行锁。
但是,如果查询引用的是一个表中的大多数行或所有行,优化数据并行访问的最正确方法可以是锁定整个表,以尽量减少锁定开销并尽快完成查询。
SQL Serve 2000通过为每个查询中的每个表选择适当的锁定级别,在总体上优化了数据并发访问。
对于一个查询,如果只引用一个大型表中的几行,那么数据库引擎可以使用行级锁定;如果引用一个大型表的几页中的多行,那么使用页级锁定;如果引用一个小型表中的所有行,那么使用表级锁定。
5. 数据库日志干什么用,数据库日志满的时候再查询数据库时会出现什么情况。
答案:每个数据库都有事务日志,用以记录所有事务和每个事务对数据库所做的修改。
6. 存储过程和函数的区别?答案:存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表7. 事务是什么?答案:事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:(1) 原子性事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。
sql语句面试题及答案

sql语句面试题及答案一、概述SQL(Structured Query Language)是一种用于管理和操作关系型数据库的标准化语言。
在数据库领域,掌握SQL语句的知识是非常重要的。
本文将提供一些常见的SQL语句面试题及答案,帮助读者更好地了解和掌握SQL语句的应用。
二、查询语句1. 查询所有表的信息答案:SELECT * FROM information_schema.tables;2. 查询指定表的所有字段答案:SELECT COLUMN_NAME FROMinformation_schema.columns WHERE TABLE_NAME='表名';3. 查询指定字段的数据,并按照指定字段进行排序答案:SELECT 列名 FROM 表名 ORDER BY 排序字段 ASC/DESC;4. 使用DISTINCT关键字查询指定字段的不重复数据答案:SELECT DISTINCT 列名 FROM 表名;5. 使用LIMIT关键字查询指定数量的数据答案:SELECT * FROM 表名 LIMIT 数量;三、条件查询1. 查询满足指定条件的数据答案:SELECT * FROM 表名 WHERE 条件;2. 多条件查询答案:SELECT * FROM 表名 WHERE 条件1 AND 条件2;3. 使用LIKE关键字进行模糊查询答案:SELECT * FROM 表名 WHERE 列名 LIKE '关键字%';4. 使用IN关键字查询指定字段值在指定范围内的数据答案:SELECT * FROM 表名 WHERE 列名 IN (值1, 值2, 值3, ...);四、聚合函数1. 求和答案:SELECT SUM(列名) FROM 表名;2. 平均值答案:SELECT AVG(列名) FROM 表名;3. 最大值答案:SELECT MAX(列名) FROM 表名;4. 最小值答案:SELECT MIN(列名) FROM 表名;五、表操作1. 创建表答案:CREATE TABLE 表名 (列名1 数据类型1, 列名2 数据类型2, ...);2. 删除表答案:DROP TABLE 表名;3. 修改表结构答案:ALTER TABLE 表名 ADD 列名数据类型;六、数据操作1. 插入数据答案:INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);2. 更新数据答案:UPDATE 表名 SET 列名=值 WHERE 条件;3. 删除数据答案:DELETE FROM 表名 WHERE 条件;七、表连接答案:SELECT * FROM 表1 INNER JOIN 表2 ON 表1.列名 = 表2.列名;2. 左连接答案:SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.列名 = 表2.列名;3. 右连接答案:SELECT * FROM 表1 RIGHT JOIN 表2 ON 表1.列名 = 表2.列名;八、子查询1. 子查询作为列答案:SELECT (SELECT COUNT(*) FROM 表名) AS 列名 FROM 表名;2. 子查询作为条件答案:SELECT * FROM 表名 WHERE 列名 = (SELECT 列名 FROM 表名 WHERE 条件);九、索引和优化1. 创建索引答案:CREATE INDEX 索引名 ON 表名 (列名);答案:DROP INDEX 索引名 ON 表名;3. 优化查询答案:使用合适的索引、减少不必要的查询、优化查询语句等。
经典sql面试题及答案

SQL面试题数据结构如下:模拟数据:ss1:选修过“李明”老师讲授课程的所有学生姓名步骤:1找到选修老师的学生id参考答案1参考答案22:找出没有选修过“李明”老师讲授课程的所有学生姓名步骤1 找见选修李明老师的学生参考答案1参考答案23:列出有两门以上(含两门)不及格课程的学生姓名及其平均成绩步骤:找见不及格的成绩的数量大于2的学生id参考答案1参考答案24:列出即学过名称为“1”号课程,又学过名称为“2”号课程的所有学生姓名步骤1 查询出课程1步骤2 查询出课程2参考答案1参考答案25:列出名称为“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号步骤1 找出课程1的所有成绩步骤2找出2号同学的成绩参考答案1参考答案26:列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩步骤1 找出一号课的成绩步骤2找出2号课的成绩参考答案1参考答案27:查询不选修课程编号为'5'学员的编号,姓名步骤:先查出选修5课程的学员参考答案1参考答案28:查询选修课程编号为'1'学员的编号,姓名步骤1 查询选修课程1的学号参考答案1参考答案29:查询选修课程名称为'5'的学员的编号,姓名步骤: 找出选修课程名称为5的学员编号参考答案1参考答案210:查询选修了课程的学员人数参考答案1参考答案211:查询选修全部课程的学员的编号,姓名步骤1 查询出一共有多少课程步骤2 查询用户的选修参考答案12:查询选修课程超过2门的学生步骤1 查询出一共有多少课程参考答案13:查询至少有3名学生选修的并且课程号2为的学生及平均分数步骤:至少有3名学生选修的参考答案14:查询学生选修了至少3门课程并且课程号3为的学生及平均分数步骤1 学生选修了至少3门课程参考答案115:查询最低分数大于60分,最高分数小于95分的学生学生的编号步骤1 先找出每个学生的最高分步骤2 找出最低分参考答案1参考答案216:显示选修了课程名称为“1”号课程的成绩高于“7”号同学成绩的所有同学的学生的编号步骤找出课程1的成绩步骤2 找出7号同学1号课程的成绩参考答案参考答案217:查询成绩比该课程平均成绩低的同学的成绩表步骤1:找出每门课程的平均成绩参考答案118:查询选修某课程的同学人数多于2人的课程号,课程名,教师姓名步骤找出选修的人数达鱼2人的课程id参考答案1参考答案219:横向列出每个学生的成绩(假说固定有门课程)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
28、数据库:抽出部门,平均工资,要求按部门的字符串顺序排序,不能含有"human resource"部门,employee结构如下:employee_id, employee_name,depart_id,depart_name,wage答:select depart_name, avg(wage)from employee where depart_name <> 'human resource'group by depart_name order by depart_name--------------------------------------------------------------------------29、给定如下SQL数据库:Test(num INT(4)) 请用一条SQL语句返回num的最小值,但不许使用统计功能,如MIN,MAX等答:select top 1 num from Test order by num--------------------------------------------------------------------------33、一个数据库中有两个表:一张表为Customer,含字段ID,Name;一张表为Order,含字段ID,CustomerID(连向Customer中ID的外键),Revenue; 写出求每个Customer的Revenue总与的SQL语句。
建表create table customer(ID int primary key,Name char(10))gocreate table [order](ID int primary key,CustomerID int foreign key references customer(id) , Revenue float)go--查询select Customer、ID, sum( isnull([Order]、Revenue,0) )from customer full join [order] on( [order]、customerid=customer、id ) group by customer、idselect customer、id,sum(order、revener) from order,customer where customer、id=customerid group by customer、idselect customer、id, sum(order、revener ) from customer full join order on( order、customerid=customer、id ) group by customer、id5数据库(10)a tabel called “performance”contain :name and score,please 用SQL语言表述如何选出score最high的一个(仅有一个)仅选出分数,Select max(score) from performance仅选出名字,即选出名字,又选出分数:select top 1 score ,name from per order by scoreselect name1,score from per where score in/=(select max(score) from per)、、、、、4 有关系s(sno,sname) c(cno,cname) sc(sno,cno,grade)1 问上课程"db"的学生noselect count(*) from c,sc where c、cname='db' and c、cno=sc、cno select count(*) from sc where cno=(select cno from c where c、cname='db')2 成绩最高的学生号select sno from sc where grade=(select max(grade) from sc )3 每科大于90分的人数select c、cname,count(*) from c,sc where c、cno=sc、cno and sc、grade>90 group by c、cnameselect c、cname,count(*) from c join sc on c、cno=sc、cno and sc、grade>90 group by c、cname数据库笔试题*建表:dept:deptno(primary key),dname,locemp:empno(primary key),ename,job,mgr,sal,deptno*/1 列出emp表中各部门的部门号,最高工资,最低工资select max(sal) as 最高工资,min(sal) as 最低工资,deptno from emp group by deptno;2 列出emp表中各部门job为'CLERK'的员工的最低工资,最高工资select max(sal) as 最高工资,min(sal) as 最低工资,deptno as 部门号from emp where job = 'CLERK' group by deptno;3 对于emp中最低工资小于1000的部门,列出job为'CLERK'的员工的部门号,最低工资,最高工资select max(sal) as 最高工资,min(sal) as 最低工资,deptno as 部门号from emp as bwhere job='CLERK' and 1000>(select min(sal) from emp as a where a、deptno=b、deptno) group by b、deptno4 根据部门号由高而低,工资有低而高列出每个员工的姓名,部门号,工资select deptno as 部门号,ename as 姓名,sal as 工资from emp order by deptno desc,sal asc5 写出对上题的另一解决方法(请补充)6 列出'张三'所在部门中每个员工的姓名与部门号select ename,deptno from emp where deptno = (select deptno from emp where ename = '张三')7 列出每个员工的姓名,工作,部门号,部门名select ename,job,emp、deptno,dept、dname from emp,dept where emp、deptno=dept、deptno8 列出emp中工作为'CLERK'的员工的姓名,工作,部门号,部门名select ename,job,dept、deptno,dname from emp,dept where dept、deptno=emp、deptno and job='CLERK'9 对于emp中有管理者的员工,列出姓名,管理者姓名(管理者外键为mgr)select a、ename as 姓名,b、ename as 管理者from emp as a,emp as b wherea、mgr is not null and a、mgr=b、empno10 对于dept表中,列出所有部门名,部门号,同时列出各部门工作为'CLERK'的员工名与工作select dname as 部门名,dept、deptno as 部门号,ename as 员工名,job as 工作from dept,empwhere dept、deptno *= emp、deptno and job = 'CLERK'11 对于工资高于本部门平均水平的员工,列出部门号,姓名,工资,按部门号排序select a、deptno as 部门号,a、ename as 姓名,a、sal as 工资from emp as a where a、sal>(select avg(sal) from emp as b where a、deptno=b、deptno) order by a、deptno12 对于emp,列出各个部门中平均工资高于本部门平均水平的员工数与部门号,按部门号排序select count(a、sal) as 员工数,a、deptno as 部门号from emp as awhere a、sal>(select avg(sal) from emp as b where a、deptno=b、deptno) group by a、deptno order by a、deptno13 对于emp中工资高于本部门平均水平,人数多与1人的,列出部门号,人数,按部门号排序select count(a、empno) as 员工数,a、deptno as 部门号,avg(sal) as 平均工资from emp as awhere (select count(c、empno) from emp as c where c、deptno=a、deptno and c、sal>(select avg(sal) from emp as b where c、deptno=b、deptno))>1 group by a、deptno order by a、deptno14 对于emp中低于自己工资至少5人的员工,列出其部门号,姓名,工资,以及工资少于自己的人数select a、deptno,a、ename,a、sal,(select count(b、ename) from emp as b where b、sal<a、sal) as 人数from emp as awhere (select count(b、ename) from emp as b where b、sal<a、sal)>5数据库笔试题及答案第一套一、选择题1、下面叙述正确的就是CCBAD ______。
A、算法的执行效率与数据的存储结构无关B、算法的空间复杂度就是指算法程序中指令(或语句)的条数C、算法的有穷性就是指算法必须能在执行有限个步骤之后终止D、以上三种描述都不对2、以下数据结构中不属于线性数据结构的就是______。