编写一个SQL查询,获取Employee表中第二高的薪水(Salary)

单选

class X{
    
    
	Y y=new Y();
	public X(){
    
    
		System.out.print("X");
	}
}
class Y{
    
    
	public Y(){
    
    
		System.out.print("Y");
	}
}
public class Z extends X{
    
    
	Y y=new Y();
	public Z(){
    
    
		System.out.print("Z");
	}
	public static void main(String[] args) {
    
    
		new Z();
	}
}

A.ZYXX

B.ZYXY

C. YXYZ

D.XYZX

public interface IService {String NAME=“default”;}

默认类型等价表示是哪一项:

  • A.public String NAME=“default”;
  • B.public static String NAME=“default”;
  • C .public static final String NAME=“default”;
  • D.private String NAME=“default”;
String s1="abc"+"def";//1
String s2=new String(s1);//2
if(s1.equals(s2))//3
	System.out.println(".equals succeeded");//4
if(s1==s2)//5
	System.out.println("==succeeded");//6

A.行4,行6都不执行

B.行6执行,行4不执行

C. 行4执行,行6不执行

D.行4,行6都将执行

public class TestClass {
    
    

  private static void testMethod(){
    
    
    System.out.println("testMethod");
  }

  public static void main(String[] args) {
    
    
	((TestClass)null).testMethod();
  }
}

A.编译不通过

B.编译通过,运行异常,报NullPointerException

C.编译通过,运行异常,报IllegalArgumentException

D.编译通过,运行异常,报NoSuchMethodException

E.编译通过,运行异常,报Exception

F. 运行正常,输出testMethod

下面有关JAVA异常类的描述,说法错误的是?

  • A. 异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception
  • B.非RuntimeException一般是外部错误(非Error),其必须被 try{}catch语句块所捕获
  • C. Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形,Error不需要捕捉
  • D. RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须被 try{}catch语句块所捕获

.将一颗有 100 个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根节点编号为 1 ,则编号为 98 的节点的父节点编号为

  • A.47
  • B. 48
  • C.49
  • D.50

n 个节点的完全二叉树,最多可以有多少层?

  • A.n/2
  • B. log(n)+1(向下取整)
  • C.n-1
  • D.n

不属于关系数据库的是( )

  • A.Oracle
  • B. Essbase
  • C.SQL Server
  • D.DB2

关于关系型数据库,正确且全面的描述是:( )

  • A.在关系模型中数据的逻辑结构是一张二维表
  • B.DML是介于关系代数和关系演算之间的语言,它充分体现了关系数据库语言的特性和优点
  • C.关系模型的完整性规则是对关系的某种约束,分为实体完整性和参照完整性约束
  • D. 关系数据库中,关系也称为数据库,元组也称为行,属性也称为列

B选项应为“SQL是介于关系代数和关系演算之间的语言,它充分体现了关系数据库语言的特性和优点”,SQL包含了DDL、DCL和DML;C选项漏掉了用户定义完整性,应为“关系模型的完整性规则是对关系的某种约束,分为实体完整性、参照完整性约束和用户定义完整性”;D选项中,关系是一张表,而不是数据库。应为“关系数据库中,关系也称为表,元组也称为行,属性也称为列”;故选A。

一个关系数据库文件中的各条记录 ( ) 。

  • A.前后顺序不能任意颠倒,一定要按照输入的顺序排列
  • B. 前后顺序可以任意颠倒,不影响库中的数据关系
  • C.前后顺序可以任意颠倒,但排列顺序不同,统计处理的结果就可能不同
  • D.前后顺序不能任意颠倒,一定要按照关键字字段值的顺序排列

关系数据库规范化的目的是为了解决关系数据库中的( )

  • A. 插入、删除异常及数据冗余问题
  • B.查询速度低的问题
  • C.数据操作复杂的问题
  • D.数据安全性和完整性保障的问题

B选项中,查询只是展示数据的方法,数据库的核心肯定不是这里。C选项嘛,这个应该是数据结构更关心的问题,而不是数据库本身。至于D选项,抱歉文件系统表示你就是个弟弟。所以选A。数据库本身就是管理数据的,肯定着眼于数据本身,自然是为了解决数据本身相关的问题啦!

SQL中,下列涉及空值的操作,不正确的是?

  • A.name IS NULL
  • B. name= NULL
  • C.namee IS NoT NULL
  • D.NoT(name IS NULL)

在SQL中,NULL是一种特有的数据类型,其等价于没有任何值、是未知数。NULL与0、空字符串、空格都不同。SQL默认情况下对WHERE XX!=NULL和WHERE XX=NULL的判断会永远返回0行,却不会提示语法错误。

在满足实体完整性约束的条件下

  • A. 一个关系中应该有一个或多个候选关键字
  • B.一个关系中只能有一个候选关键字
  • C.一个关系中必须有多关键字个候选
  • D.一个关系中可以没有候选关键字

数据库完整性分为实体完整性、域完整性和参照完整性。实体完整性要求表中的主键字段不能为空且不能重复;域完整性要求表中数据都在有效范围内;参照完整性保证了相关联的表的数据一致性。

约束是保证表中数据完整性和一致性的手段,分为主键约束、外键约束、检查约束、唯一约束、非空约束五种。不管哪种约束,体现在表中都可以有1列或多列

若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是?

  • A.一对一
  • B. 一对多
  • C.多对一
  • D.多对多

SQL 查询语句中 WHERE 、 GROUP BY 、 HAVING 这些关键字区别和用法总结错误的是

  • A.HAVING在查询语句中必须依赖于GROUP BY
  • B.WHERE子句用来限制SELECT语句从表中指定选取的行
  • C.GROUP BY子句用来分组WHERE子句的输出结果集
  • D. HAVING子句用来从分组的结果中筛选列

HAVING是从分组结果中筛选数据的(行),而不是筛选列的

已知表T1中有2行数据,T2中有3行数据,执行SQL语句,“select a.* from T1 a,T2 b”后,返回的行数为

  • A.2
  • B.3
  • C.5
  • D. 6

关联查询没有任何条件时,是返回笛卡尔积的结果,行数为乘积,列数为两张表的列相加

Mysql查询时,只有满足联接条件的记录才包含在查询结果,这种联接是

  • A.左联接
  • B.右联接
  • C. 内联接
  • D.全联接

只有内联接始终会按照联接条件进行过滤,外联接当外表中的数据不满足联接条件时,也会返回结果

关于JDBC以下说法错误的是

  • A. DriverManager可以获取数据库连接
  • B.DataSource获取的数据库连接是可以重用的
  • C.DataSource获取的数据库连接也需要关闭物理连接
  • D.DataSource获取数据库连接也需要加载数据库驱动

下列说法错误的是

  • A.使用JDBC拥有更好的可移植性
  • B.JDBC制定了统一的数据库编程规范,需要由数据库厂商提供驱动包
  • C. JDBC也可以使用来连接NoSQL数据库,比如Redis
  • D.JDBC也可以执行DDL指令

关于PreparedStatement与Statement描述错误的是

  • A.一般而言,PreparedStatement比Statement执行效率更高
  • B.PreparedStatement会预编译SQL语句
  • C.Statement每次都会解析/编译SQL,确立并优化数据获取路径
  • D. Statement执行扫描的结果集比PreparedStatement大

有一张员工表emp,字段:姓名name,性别sex,部门depart,工资salary。查询以下数据:

1、查询男女员工的平均工资

2、查询各部门的总薪水

3、查询总薪水排名第二的部门

4、查询姓名重复的员工信息

5、查询各部门薪水大于10000的男性员工的平均薪水

select sex, avg(salary) from emp group by sex;


select depart, sum(salary) from emp group by depart;


select depart, sum(salary) form emp group by depart having order by (salary) desc limit 1;


select * from emp as e1, emp as e2 where s1.name = s2.name;


select depart, avg(salary) from emp where sex = 'male' and salary > 10000 group by depart;

1:select sex,avg(salary) from emp group by sex;

说明:平均值使用聚合函数avg,并且按照性别男女分组,group by 性别字段

2:select depart,sum(salary) from emp group by depart;

说明:总薪水使用聚合函数sum取薪水字段求和,并且按照部门字段分组,group by 部门字段

3:select depart,sum(salary) from emp group by depart order by sum(salary) desc limit 1,1;

说明:order by语句先按照总薪水排序,之后取第二条数据,可以使用分页,每一页1条数据,第二页就是该结果

4:select name from emp group by name having count(name)>1;

说明:名字重复,说明同一个名字有多条数据,可以先按照名字分组,分组之后再过滤行数大于1的,就表示同一个名字至少有2条记录,重复了

5:select depart,avg(salary) from emp where salary>10000 and sex=‘男’ group by depart;

说明:这里需要注意题目要求是查询薪水大于10000的男性员工,这个是在按部门分组前就过滤,在过滤后的结果集中再查询各个部门的平均薪水


有员工表、部门表和薪资表,根据查询条件写出对应的sql【同程艺龙2020届校招笔试题】

现在有员工表、部门表和薪资表。部门表depart的字段有depart_id, name;员工表 staff 的字段有 staff_id, name, age, depart_id;薪资表salary 的字段有 salary_id,staff_id,salary,month。

(问题a):求每个部门’2016-09’月份的部门薪水总额

(问题b):求每个部门的部门人数,要求输出部门名称和人数

(问题c):求公司每个部门的月支出薪资数,要求输出月份和本月薪资总数

select depart, sum(salary) from salary, staff 
    where staff.staff_id = staff.staff_id
    and month = '2016-09' group by depart_id;


select depart_name, count(staff_id) from depart, staff 
    where depart.depart_id = staff.depart_id 
    group by depart.depart_id;


select month, sum(salary) from salary, staff
    where salary.staff_id = staff.staff_id
    group by depart_id by month;

(问题a):求每个部门’2016-09’月份的部门薪水总额

答案:

SELECT

dep.NAME,

sum( sal.salary )

FROM

salary sal

JOIN staff sta ON sal.staff_id = sta.staff_id

JOIN depart dep ON sta.depart_id = dep.depart_id

WHERE

YEAR ( sal.MONTH ) = 2016

AND MONTH ( sal.MONTH ) = 9

GROUP BY

dep.depart_id

说明:

mysql中年和月的函数分别是year(字段),month(字段)

查询要求的是每个部门的信息,所以要按照部门进行分组,部门和员工为1:m,员工与薪水为1:m,查询要求有部门,有薪水,所以必须关联3张表查询

(问题b):求每个部门的部门人数,要求输出部门名称和人数

答案:

SELECT

dep.NAME,

count( sta.staff_id )

FROM

staff sta

JOIN depart dep ON dep.depart_id = sta.depart_id

GROUP BY

sta.depart_id

说明:查询要求的信息有部门,有人数,人数只能从员工表中获取,所以关联表为部门表/员工表。按照部门id分组查询员工id的行数

(问题c):求公司每个部门的月支出薪资数,要求输出月份和本月薪资总数

答案:

SELECT

dep.NAME,

sal.MONTH,

sum( sal.salary )

FROM

depart dep

JOIN staff sta ON dep.depart_id = sta.depart_id

JOIN salary sal ON sta.staff_id = sal.staff_id

GROUP BY

dep.depart_id,

sal.MONTH

说明:按照题目要求,查询信息有部门/月/每个部门每月薪资总额,其中薪水信息再薪水表中,每个员工可以有多条薪资记录(不同时间)。所以需要按照部门分组,再按照月份分组,查询分组的部门在不同月份下的总薪水


写出以下数据库的查询条件【交大思诺2020届校招笔试题】

有两个表分别如下:

表A(varchar(32) name, int grade)

数据:zhangshan 80, lisi 60, wangwu 84

表B(varchar(32) name, int age)

数据:zhangshan 26, lisi 24, wangwu 26, wutian 26

写SQL语句得到如下查询结果:

| NAME | GRADE | AGE |

| --------- | ----- | ---- |

| zhangshan | 80 | 26 |

| lisi | 60 | 24 |

| wangwu | 84 | 26 |

| wutian | null | 26 |

select a.name, a.grade, b,age from B left join A where A.name = B.name;

SELECT

B.NAME,

A.grade,

B.age

FROM

B left join A

ON

A.NAME = B.NAME

说明:主要考察使用关联查询时需要使用内联还是外联,这里wutian再A表中没有记录,但还是需要返回结果,所以应该将B表作为外表进行外连接查询


编写一个SQL查询,获取Employee表中第二高的薪水(Salary)【陌陌科技2020届校招笔试题】

编写一个SQL查询,获取Employee表中第二高的薪水(Salary)【陌陌科技2020届校招笔试题】

±----±------+

| Id | Salary|

±----±------+

| 1 | 100 |

±----±------+

| 2 | 200 |

±----±------+

| 3 | 300 |

±----±------+

例如上述Employee表,SQL查询应该返回200作为第二高的薪水。如果不存在第二高的薪水,那么查询应该返回null。

±--------------------+

| SecondHighestSalary |

±--------------------+

| 200 |

±--------------------+

select salary as SecondHighestSalary from employee order by salary asc limit 1;

SELECT

max( Salary ) AS SecondHighestSalary

FROM

Employee

WHERE

Salary < ( SELECT max( Salary ) FROM Employee );

说明:这里使用标准sql支持的语法,先查找到最大的薪水,再查询所有薪水薪资中,比最大薪水小的结果,再查询这个结果中的最大值。还可以考虑使用简单的分页操作,limit 1,1。注意limit是mysql独有的关键字,不是标准sql。


使用UNION语句查询

已知T1和T2的字段定义完全相同,T1有5条不同数据,T2有5条不同数据,其中T1有2条数据存在表T2中,使用UNION语句查询这些数据,要求重复数据不出现

select * from t1 union select * from t2;

SELECT * FROM T1 UNION SELECT * FROM T2

说明:union不能出现重复,union all会出现重复数据。根据题目要求使用union

猜你喜欢

转载自blog.csdn.net/qq_56884023/article/details/124463230