数据库笔试面试题汇总

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、什么是第三范式(第一范式,第二范式。。。)

2、请说出delete,truncate,drop 的区别

3、怎么样查询特殊字符,如通配符%与_

4、如何插入单引号到数据库表中

5、怎么获得今天是星期几,还关于其它日期函数用法

6、知道出生日期,如何求年龄?

7、求上个月月底的日期

8、数据库类型中Varchar和char的区别是?

9、已知两张表:人员表(person) 和部门表(depart),表结构如下:

10、数据库Teacher 属性:name,tid,desc,表Student属性:name,sid,related_tid ,desc 查询

所属老师名称为”\like” 的全部学生。

11、设有一个关系表Student (学号stu_id,姓名stu_name,系名stu_dept,课程号

stu_courseid,成绩 grade)

11.1 查询至少选修了四门课程的学生的学号、姓名及平均成绩的select语句?

11.2 将选修课程数小于5的学生名字后面增加一个#号

12、用一条sql语句实现下面结果:怎么把这样一个表Testcol:

13、有两个表T_STU表和T_CLASS表和一个序列sequence序列,T_STU表里有如下字段:........

13.1 查询入学年龄在18-20的女生或者未输入性别的,实际年龄小的要排在后面

13.2 查询班级名称、学生姓名、性别、缴费(要求显示单位:元),相同班级的要放在一起,姓名根

据字典顺序排列。

13.3 查询各班名称和人数

13.4 查询各班名称和人数,但人数必须不少于2,人数多的放在前面

13.5 查询1980年出生的有哪些学生。

13.6 查询男生和女生人数,没有输入性别的当作男

13.7 查询没有人员的班级

13.8 查询入学年龄在20以上的同学信息

13.9 查询班级平均入学年龄在20及以上的班级

13.10 有工资表salary(e_id,e_date,e_money),求本月发了2笔以上工资的员工信息。

14、有部门表、人员表、工资表。表名和字段名,如下:

14.1 查询:人员名称、部门名称、个人总工资

14.2 查询所有部门的总工资

14.3 查询2008年8月份各部门工资最高的员工信息:部门名称、员工姓名、员工总工资

15、表warehousestorage

数据库笔试面试题汇总

1.什么是第三范式(第一范式,第二范式。。。)

第一范式:所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。

第二范式:如果关系模式R是1NF,且每个非主属性完全函数依赖于候选键,那么就称R是第二范式。

第三范式:如果关系模式R是2NF,且关系模式R中的所有非主属性对任何候选关键字都不存在传递依赖,则称关系R是属于第三范式。

2.请说出DELETE,TRUNCATE,DROP 的区别

(1)delete和truncate区别:

delete:从数据库的缓存区清除该数据

truncate:把数据删除了,然后清空所占用的空间

delete可以撤销

truncate不能撤销

truncate===delete+commit

truncate和drop 区别

drop:删除表的定义,整个对象删掉,删除的是对象的本身,全部

truncate:删除表的内容,只是删除数据,表的结果会保留

3.怎么样查询特殊字符,如通配符%与_

select * from table where name like 'A_%' escape '_'

4.如何插入单引号到数据库表中

可以用ASCII码处理,其它特殊字符如&也一样,如:

insert into t values('i'chr(39)'m'); -- chr(39)代表字符'

或者用两个单引号表示一个

or insert into t values('I''m'); -- 两个''可以表示一个'

5.怎么获得今天是星期几,还关于其它日期函数用法

(1)可以用to_char来解决,如:

select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;

(2)在获取之前可以设置日期语言,如:

ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';

(3)在函数中指定,如:

select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;

(4)其它更多用法,可以参考to_char与to_date函数

如获得完整的时间格式

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

(5)随便介绍几个其它函数的用法:

本月的天数

SELECT to_char(last_day(SYSDATE),'dd') days FROM dual

今年的天数

select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual 下个星期一的日期

SELECT Next_day(SYSDATE,'monday') FROM dual

6.知道出生日期,如何求年龄?

比如1984年1月23日出生,求现在的年龄:

Foolr() 取比你输入的值小的最大的整数

Months_between()两个时间的之间的月数,而且这个数是一个浮点数724.XX

select floor(months_between(sysdate, birthday) / 12) yyyy,

floor(months_between(sysdate, birthday) - floor(months_between(sysdate, birthday) / 12) *

12) mm,

trunc(sysdate) - add_months(birthday, floor(months_between(sysdate, birthday))) dd from datetest;

select name 姓名,floor(months_between(sysdate,birthday)/12) 岁 from person;

select name 姓名,

floor(months_between(sysdate,birthday)- floor(months_between(sysdate,birthday)/12)*12) from person;

select trunc(sysdate,’yyyy’) from person;

select trunc(sysdate,’mm’) from person;

select trunc(sysdate) from person;

select trunc(sysdate)-add_months(birthday,floor(months_between(sysdate,birthday))) dd from person;

7.求上个月月底的日期

现在时4月23求上个月的月底时几号?(3月31日)

select to_char(trunc(sysdate, 'MM') -1 , 'YYYY-MM-DD') from dual;

select trunc(sysdate,’mm’)-1 from dual;

select to_char() from dual;

8.数据库类型中V ARCHAR和CHAR的区别是?

区别:

相关文档
最新文档