java面试题网

普通会员

15

帖子

1

回复

33

积分

楼主
发表于 2018-06-06 17:55:49 | 查看: 353| 回复: 0

题目:

  1. 编写语句以将EMPLOYEE_ID设置为employee表中的主键。

  2. 编写语句将2个字段(EMPLOYEE_ID,FIRST_NAME)设置为employee表中的主键。

  3. 编写语句在INCENTIVES表中创建EMPLOYEE_REF_ID作为相对于employee表中的EMPLOYEE_ID的外键。

  4. select Count(*) 和select Count(1) 的区别?

  5. 查询EMPLOYEE表中雇员的详细信息,且数据存在INCENTIVES表中?

  6. 从employee表中获取在Last_Name中具有“%”的员工的姓名。

  7. 从右侧删除空格后,从employee表中获取FIRST_NAME。

  8. 如何优化GROUP BY?

  9. 何时使用索引?

  10. 使用索引的优缺点?


答案:

  1. ALTER TABLE EMPLOYEE add CONSTRAINT EMPLOYEE_PK PRIMARY KEY(EMPLOYEE_ID)

  2. ALTER TABLE EMPLOYEE add CONSTRAINT EMPLOYEE_PK PRIMARY KEY(EMPLOYEE_ID,FIRST_NAME)

  3. ALTER TABLE INCENTIVES ADD CONSTRAINT INCENTIVES_FK FOREIGN KEY (EMPLOYEE_REF_ID) REFERENCES EMPLOYEE(EMPLOYEE_ID)

  4. 一般情况下,select count(*) 和select count(1) 两着返回结果是一样的;

    假如表沒有主键(Primary key),那么count(1)比count(*)快,如果有主键的話,那主键作为count的条件时候count(主键)最快;

    如果你的表只有一个字段的话那count(*)就是最快的;

    count(*) 跟 count(1) 的结果一样,都包括对NULL的统计,而count(column) 是不包括NULL的统计。

  5. select * from EMPLOYEE where exists (select * from INCENTIVES)

  6. Select FIRST_NAME from employee where Last_Name like '%[%]%'

  7. select RTRIM(FIRST_NAME) from employee

  8. 提高GROUP BY语句的效率, 可以通过将不需要的记录在GROUP BY之前过滤掉。例如下面两个查询返回相同结果但第二个明显就快了许多:

    效率低:

    select depno, avg(sal) from emp group by depno having depno = 101 or depno = 102;

    效率高:

    select depno, avg(sal) from emp where depno = 101 or depno = 102 group by depno;

  9. a. 当某字段数据更新频率较低,查询频率较高,经常有范围查询(>, <, =, >=, <=)或order by、group by发生时建议使用索引。并且选择度越大,建索引越有优势,这里选择度指一个字段中唯一值的数量/总的数量。

    b. 经常同时存取多列,且每列都含有重复值可考虑建立复合索引。

  10. 优点:

    大大加快了数据库检索的速度,包括对单表查询、连表查询、分组查询、排序查询。经常是一到两个数量级的性能提升,且随着数据数量级增长。

    缺点:

    索引的创建和维护存在消耗,索引会占用物理空间,且随着数据量的增加而增加。在对数据库进行增删改时需要维护索引,所以会对增删改的性能存在影响。



您需要登录后才可以回帖 登录 | 立即注册

java面试题网无聊看看网与java建站系统提供技术支持V2.1 网站地图 © 2016-2018