数据库笔试面试题汇总
- 格式:doc
- 大小:165.50 KB
- 文档页数:24
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的区别是?
区别: