赞
踩
下面我给大家带来一些数据库知识点和面试题。
下列的链接是我看到非常好的java基础面试题的博文推荐给大家。
http://blog.csdn.net/jackfrued/article/details/44921941/
关系数据库这一块是非常重要的,对于我们初级程序员,数据库考察的很大一部分知识其实就是SQL语言的掌握了,至于使用的是mysql、sqlserver、oracle等其中的哪种关系数据库都差不多。下面简单做一个介绍吧!
SQL语言包括四类种主要程序设计语言类别的语句:
数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。
数据操作语言(DML), 例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
数据控制语言(DCL), 例如:GRANT、REVOKE等语句。
事物控制语言(TCL), 例如:COMMIT、ROLLBACK等语句。
绝大多数的操作都是使用DDL和DML。实用中需要熟练的使用join,这个比较重要。例如一些常用的函数decode()、NVL()等等。大家找找资料多动手写写sql就会了。如何sql优化这类比较深入的知识,我觉得除了掌握理论知识外,还需要实际工作中积累,在工作中才会有真实的数据来测试。大家应该了解in和exists的区别,exists在查询时会使用到索引,所以大表查询时尽量使用exists替代in。但是没有实际的测试数据是很难形成对比的。我公司用的oracle,具体花多少钱买了多好的我不知道,数据库中数据量也不小,下面是我测试的结果。
Sfcusn、Sfcmo表的数据量(表结构就不能放出来了)
oracle有一个优化查询,建议先去看下介绍,下面链接是简单的介绍http://blog.itpub.net/519536/viewspace-619516/
1、测试一(子查询为小表)
1)All rows模式下查询结果
在进行All rows优化查询所花费的时间是差不多的。
2)first rows模式下查询结果
在first rows优化模式下,exists的查询用时短。
2、测试2(子查询为大表)
1)All rows下查询结果
可以看出exitst用时明显少。
2)first rows下查询结果
同样exists查询用时少。
本来想说下索引的,但感觉知识点太大了,就不在本章说了。(提一嘴吧)建适当的索引有利于查询的速度,经常作为查询条件的字段应该优先建立索引。
下面是关于sql的一些笔试题,相信大家也可以找到更多的实例来练习(建议多练习一些基础)。
如上图,新建一张表xsda,写出sql语句
create table xsda
(
Xh char(10) not null unique,
Xm char(8),
csny datetime,
Gz decimal(6,1),
Zy char(10)
);
1.在xsda表中插入一条记录(2000jsj008,李平)
INSERT INTO Xsda(Xh, Xm) VALUES('2000jsj008','李平');
2.把xsda表中80-01-01前出生的人的工资增加20%
UPDATE Xsda SET gz = gz*1.2 WHERE csny > '80-01-01';
3.查询xsda表中不同专业的人数
SELECT Zy, COUNT(Xh) FORM Xsda WHERE GROUP BY Zy;
4.假如另外还有一个学生成绩表xscj(xh,kch,kccj), xh,kch,kccj分别指学号、课程号、成绩, 要求查询姓名为李平的同学的各门课程的成绩。
SELECT A.kch, A.kccj FROM Xscj A, Xsda B WHERE A.xh = B.xh AND B.xm = '李平';
5. xsda、xscj表同上,查询选修了kch为Yy2的学生的xh和Xm
SELECT B.xh, B.xm FROM Xscj A, Xsda B WHERE A.xh = B.xh AND A.kch = 'Yy2';
下面是我收集的一些总结
1.数据库的实质:硬盘上存储数据的文件
2.注意Oracle与Mysql中的null值。
在mysql中,null与''是不相同的,''会插入一个空字符串;在oracle中,null与''是相同的。
3.尽量不要使用like查询。
4.用 EXISTS 替代 IN、用 NOT EXISTS 替代 NOT IN(这个已经有验证了)
5.用 >= 替代 > 高效,前者定位快扫描少。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。