![java就业数据库面试题_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-7/24/62d6ac14-98e2-4021-9d46-d4d78f266bcb/62d6ac14-98e2-4021-9d46-d4d78f266bcb1.gif)
![java就业数据库面试题_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-7/24/62d6ac14-98e2-4021-9d46-d4d78f266bcb/62d6ac14-98e2-4021-9d46-d4d78f266bcb2.gif)
![java就业数据库面试题_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-7/24/62d6ac14-98e2-4021-9d46-d4d78f266bcb/62d6ac14-98e2-4021-9d46-d4d78f266bcb3.gif)
![java就业数据库面试题_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-7/24/62d6ac14-98e2-4021-9d46-d4d78f266bcb/62d6ac14-98e2-4021-9d46-d4d78f266bcb4.gif)
![java就业数据库面试题_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-7/24/62d6ac14-98e2-4021-9d46-d4d78f266bcb/62d6ac14-98e2-4021-9d46-d4d78f266bcb5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1. sql2000和sql2005有什么区别?a、 最直观的一点就是两者的界面有很明显的不同。sql2005 的操作风格更接近于 vs2005。b、sql2005 比 sql2000 存储的数据量要大很多, sql2005 支持数据库逻辑分区;c、sql2000 与 sql20005 jdbc 连接不同:sql2000 jdbc 连接: url 地址: jdbc:microsoft:sqlserver:/:;driver : com.microsoft.jdbc.sqlserver.SQLServerDriver;sql2005 jdbc 连接: url 地址: jdbc:sqlserver
2、:/:;databaseName=; driver : com.microsoft.sqlserver.jdbc.SQLServerDriver;d、安全性能的提高: sql Server 2005 包括了一些在安全性能上的改进, 例如将用户和对象分开、 数据 库加密、设置安全默认值、增强密码政策、缜密的许可控制、以及一个增强型的安全模式。e、sql2005 还提供了一些新的特性, 比如文件流支持 (向第三代数据库迈出了可喜的一步 ) 、T-Sql 的改进(处理错误、 递归查询功能、 关系运算符 PIVOT, APPLY , ROW_NUMBER 和其他数据列排行功能, 等等 )、数据库镜像、
3、透明的客户端重定向、新的基于架构的安全模型、内建的 Http 服务1. 存储过程的作用? 存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是SQL 语句和可选控制流语句的预编译集合, 以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行, 而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个 结果集以及返回值。可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点: 可以在单个存储过程中执行一系列 SQL 语句。 可以从
4、自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。 存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快。2.sqlserver和oracle数据库的性能优化3.1 选用适合的 ORACLE 优化器ORACLE 的优化器共有 3 种:a. RULE (基于规则 ) b. COST (基于成本 ) c. CHOOSE (选择性)在缺省情况下 ,ORACLE 采用 CHOOSE 优化器 , 为了避免那些不必要的全表扫描 (full table scan) , 你必须尽量避免使用 CHOOSE 优化器 ,而直接采用基于规则或者基于成本的优化器.访问 Table 的方式3
5、.2ORACLE 采用两种访问表中记录的方式 :a. 全表扫描 全表扫描就是顺序地访问表中每条记录 . ORACLE 采用一次读入多个数据块 (database block) 的 方式优化全表扫描 .b. 通过 ROWID 访问表你可以采用基于 ROWID 的访问方式情况 ,提高访问表的效率 ,RowId 包含了表中记录的物理位置 信息 .ORACLE 采用索引 (INDEX) 实现了数据和存放数据的物理位置 (RowId) 之间的联系。 通常索引提供了快速访问 ROWID 的方法, 因此那些基于索引列的查询就可以得到性能上的提高 .3.3. 选择最有效率的表名顺序 (只在基于规则的优化器中有
6、效)3.4. WHERE 子句中的连接顺序ORACLE 采用自下而上的顺序解析 WHERE 子句 , 根据这个原理 , 表之间的连接必须写在其他 WHERE 条件之前 , 那些可以过滤掉最大数量记录的条件必须写在 WHERE 子句的末尾 .3.5. SELECT 子句中避免使用 * 当你想在 SELECT 子句中列出所有的 COLUMN 时,使用动态 SQL 列引用 * 是一个方便的方法 . 不幸的是 ,这是一个非常低效的方法.实际上ORACLE在解析的过程中,会将* 依次转换成所有的列名,这个工作是通 过查询数据字典完成的 , 这意味着将耗费更多的时间 .3.6. 减少访问数据库的次数当执行
7、每条 SQL 语句时 , ORACLE 在内部执行了许多工作 : 解析 SQL 语句 , 估算索引的利用率 , 绑 定变量 , 读数据块等等 . 由此可见, 减少访问数据库的次数, 就能实际上减少 ORACLE 的工作量 .3.7. 整合简单 ,无关联的数据库访问如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系 )3.8. 使用表的别名 (Alias)当在SQL语句中连接多个表时,请使用表的别名并把别名前缀于每个Column上这样一来,就可以减少解析的时间并减少那些由 Column 歧义引起的语法错误 .3.9. 对经常要查询的字段可以建立一个视图3.10.
8、 在表中的某个字段上建立索引,可以提高检索速度。3. 模糊查询可以用索引吗?(1) 如果模糊查询是下边这个样子:where a like *%, 就可以用索引;如果模糊查询是 where a like %* 的形式 ,就不能使用索引 !(2) 建全文索引后使用 constain4. sql 的关键字及其一些函数sql 关键字: all, alter, as, asc, container, create, delete, desc, drop, first, from, in, index, insert, into, join, last, on, schema, select, selec
9、tschema, selectsecurity, table, to, update, updateidentity, updateowner, updatesecurity, user, with;函数: Avg(), Count(), First(), Last(), Max(), Min(), Sum(),StDev()StDevP()StDev,StDevP 返回总体或总体样本的标准偏差的估计值 , Var(), VarP()Var,VarP 返回一个总体或总体样本的方差的估计值ODBC 标量函数:1. 字 符 串 函 数 ASCIILENGTH RTRIMCHARLOCATESPAC
10、ECONCATLTRIMSUBSTRINGLCASE RIGHT UCASELEFT2.数字函数ABS FLOOR SIN ATANLOGSQRTCEILINGPOWERTANCOSRANDMODEXP SIGN3.时间和日期 函数CURDATEDAYOFYEARMONTHCURTIMEYEARWEEKNOWHOUR QUARTER DAYOFMONTHMINUTEMONTHNAMEDAYOFWEEKSECOND DAYNAME4.数据类型变换CONVERTORACLE5. Oracle中的事务Oracle在缺省情况下任何一个 DML语句都会开始一个事务, 直到用户发出Commit或Rollb
11、ack操作, 这个事务才会结束。在 Oracle中,执行 DDL语句(如Create Table、Create View等)时,会在执行之前自动 发出一个Commit命令,并在随后发出一个 Commit或者Rollback命令。(1) 提交事务提交一事务,即将在事务中由 SQL语句所执行的改变永久化。在提交前,ORACLE已有下列情况:在SGA的回滚段缓冲区已生成回滚段记录,回滚信息包含有所修改值的老值。在SGA的日志缓冲区已生成日志项。这些改变在事务提交前可进入磁盘。对SGA的数据库缓冲区已作修改,这些修改在事务真正提交之前可进入磁盘。在事务提交之后,有下列情况:对于与回滚段相关的内部事务表
12、记录提交事务,并赋给一个相应的唯一系统修改号(SCN),记录在表中。在SGA的日志缓冲区中日志项由 LGWR进程写入到在线日志文件,这是构成提交事务的原子事务。在行上和表上的封锁被释放。该事务标志为完成 。注意:对于提交事务的数据修改不必由DBWR后台进程立即写入数据文件,可继续存储在SGA的数据库缓冲区中,在最有效时将其写入数据文件。(2) 回滚事务回滚事务的含义是撤消未提交事务中的SQL语句所作的对数据修改。ORALCE允许撤消未提交的整个事务,也允许撤消部分。在回滚整个事务(没有引用保留点)时,有下列情况:在事务中所有SQL语句作的全部修改,利用相应的回滚段被撤消。所有数据的事务封锁被释
13、放。事务结束。当事务回滚到一保留点(具有 SAVEPOINT )时,有下列情况:仅在该保留点之后执行的语句被撤消。该指定的保留点仍然被保留,该保留点之后所建立的保留点被删除。自该保留点之后所获取的全部表封锁和行封锁被释放,但指定的保留点以前所获取的全部数据封锁继续保持。该事务仍可继续。(3) 保留点保留点(savepoint)是在一事务范围内的中间标志,经常用于将一个长的事务划分为小的部分。保留 点可标志长事务中的任何点,允许可回滚该点之后的工作。在应用程序中经常使用保留点;例如一过程包 含几个函数,在每个函数前可建立一个保留点,如果函数失败,很容易返回到每一个函数开始的情况。在 回滚到一个保
14、留点之后,该保持点之后所获得的数据封锁被释放。6. 视图在什么情况下可以对其,删除,修改操作:DML操作应遵循的原则:1) .简单视图可以执行 DML 操作;2) .在视图包含 GROUP 函数, GROUP BY 子句, DISTINCT 关键字时不能删除数据行;3) .在视图不出现下列情况时可通过视图修改基表数据或插入数据:a. 视图中包含 GROUP函数,GROUP BY子句,DISTINCT关键字;b. 使用表达式定义的列;c. ROWNUM 伪列。d. 基表中未在视图中选择的其他列定义为非空且无默认值。WITH CHECK OPTION 子句限定:通过视图执行的 INSERTS 和
15、UPDATES 操作不能创建该视图检索不到的数据行, 因为它会对插入或修改的数据行执行完整性约束和数据有效性检查。视图的删除:DROP VIEW VIEW_NAME 语句删除视图。删除视图的定义不影响基表中的数据。只有视图所有者和具备 DROP VIEW 权限的用户可以删除视图。 视图被删除后,基于被删除视图的其他视图或应用将无效。7. oracle 中各种连接的写法 :内连接,外连接 ,左外连接,右外连接 以上几种连接一般用于多表之间复杂的查询, 下面先说说内连接,也即相等连接,如右两张表 dept , employee , dept 里有字段 deptid , deptname , emp
16、loyee 有字段 empno , deptid , ename , sal , age 等 那连接查询语句如下: select A.* ,B.* from dept A,employee B where A.deptid=B.deptid 一般出现这种情况的是一张是主表,另一张是子表,主表的主键作为子表的外键,显示结果按照子表的显 示, 内连接简单,这里就不多说了 外连接在 oralce 里用()表示,先看例子 select empno,ename,sal,emp.deptno,dept.deptnofrom emp,dept where emp.deptno(+)=dept.deptno
17、这是一个右连接 看下面的例子selectempno,ename,sal,emp.deptno,dept.deptnofromemp,deptwheredept.no=emp.deptno(+) 这是一个左连接两个查询显示的查询结果是一样的,刚开始学 oracle 的时候很多人都很难明白这个,现在有个笨办法, 大家不防记下来, ()出现查询条件的左边即右连接,出现在右边即左连接。 ()可以放在左边也可以 放在右边,但是一定要放在缺少条件的那一边,如上面的例子中,如果公司最近准备成立一个新的部门, 测试部门,但现在还没有招新员工,而现在 Boss 想知道公司有知道公司的员工在那个部门并且想知道 没
18、有员工的部门,我们可以用上面的查询语句实现。左外连接 (left outer join) 和右外连接 (reght outer join) 如同上面的外连接,查询的结果是一样的。 左外连接 :select empno,ename,sal,emp.deptno,dept.deptno from dept left outer join emp on (emp.deptno=dept.deptno)右外连接 :select empno,ename,sal,emp.deptno,dept.deptno from emp reight outer join dept on (emp.deptno=de
19、pt.deptno) 以上显示的结果和外连接查询出来的结果是一样的 ,只是写法不一样而已, 实际工作中外连接用的比较多, 没有必要都要去用它,但是概念大家一定要了解。全外关联 :FULL OUTER JOINSELECT e.last_name, e.department_id, d.department_nameFROM employees eFULL OUTER JOIN departments dON (e.department_id = d.department_id);结果为:所有员工及对应部门的记录,包括没有对应部门编号 department_id 的员工记录和没有任何员 工的部门
20、记录。8. 查询的优化1) .根据查询条件建立合适的index2) .因为 SQL 是从右向左解析,多表查询时,记录数少的表放在右边3) .多个条件时,收敛快的条件放在右边。4) .避免使用复杂的集合函数,象not in 等。5) .避免在条件中对字段进行函数操作6) .尽量避免使用 select * ,应该写出需要查询的字段7) .在java中尽量使用preparestatement执行sql,从而共享执行计划9. 怎么看执行计划使用explain或者autotrace查看执行计划10.如何强制一个 SQL 语句使用索引 ? 使用 index hints11.Oracle 中的 PL/SQL
21、 块是否熟悉 ?Oracle 中的内置函数是否熟悉 ? 内置函数: ASCII , CHR, CONCAT, decode,to_date,to_char,to_number 等等。12. 如何取一个没有排序的查询结果中的前 10条记录?select fielda from tablea where rownum=10;13. 问:如何取一个有排序的查询结果中的前 10 条记录?select fielda from (select fielda from tablea order by fieldb ) where rownum=10; 错误写法: select fielda from tab
22、lea where rownum=10 order by fieldb;14. 如何取一个没有排序的查询结果中的第 11 条到第 20 条记录?select fielda from(select fielda,rownum rn from tablea where rownum=11;15. 如何取一个有排序的查询结果中的第11条到第 20 条记录?select fielda from (select fielda ,rownum rn from (select fielda from tablea order by fieldb )where rownum=11;16. 数据库设计中,主键的
23、作用?主键的作用保持数据表记录的唯一性,建立主键索引和作为外键使用.使用主键与外键的配对来表示实体间的连接 .17. Oracle 数据库设计中,建立外键的方法(1)用Create table命令语句在设计数据库表时建立外键Create table Depart (DepNO Number(2),DepName varchar2(10),CONSTRAINT pk_dept PRIMARY KEY (DepNO);Create table Emp (EmpNo Number(4),EmpName varchar2(20),DepNo CONSTRAINT fk_deptno Reference
24、s Depart(DepNo);( 2)用 Alter table 命令语句,为一个存在的表添加外键Create table Depart (DepNO Number(2),DepName varchar2(10),CONSTRAINT pk_dept PRIMARY KEY (DepNO);Create table Emp(EmpNo Number(4),EmpName varchar2(20),DepNo Number(2);Alter table EmpADD CONSTRAINT fk_deptno Foreign key(DepNo) References Depart(DepNo)
25、;18. oracle 中的常用函数,如:日期函数1. 日期函数ADD_MONTHS :返回给指定的日期加上指定的月数后的日期。其格式为 add_months(d,n) , 其中 d 是日期,n表示月数。MONTHS_BETWEEN :返回两个日期之间的月数。其格式为: months_between(d1,d2) , d1 晚于 d2, 结果返回正数 ,否则返回负数。LAST_DAY :返回指定日期当月的最后一天的日期值。格式为: last_day(d) 。ROUND :返回日期值,此日期四舍五入为格式模型指定的单位。格式为: round(d,fmt) 。 NEXT_DAY :返回指定的下一个
26、星期几的日期,格式为:next_day(d,day)。TRUNC :将指定日期截断为由格式模型指定的单位的日期, 与 round 函数不同的是它只舍不入。 格 式为:trunc(d,fmt),如果不指定fmt,日期则被截断为天。EXTRACT :提取日期时间类型中的特定部分。 格式为: extract(fmt from d) 。注意:此处的格式不 用使用单引号。2. 字符函数INITCAP(char) :将首字母转换为大写。LOWER(char) : 转换为小写UPPER(char) : 转换为大写LTRIM(char,set) :左剪裁RTRIM(char,set) :右剪裁TRANSLAT
27、E(char,from) :按字符翻译REPLACE(char,search_str,replace_str): 字符串替换 INSTR(char,substr,pos) :查找子串位置 SUBSTR(char,pos,len) : 取子字符串CONCA T(char1,char2) : 连接字符串CHR :根据提供的 ASCII 码返回对应的字符LPAD 和 RPAD: 左填充和右填充LENGTH :返回字符串的长度translate函数不同的是decode函数进行逐个值的替换。SIGN(n) : 取符号FLOOR(n) : 向下取整FOWER(m,n): m 的 n 次幂MOD(m,n):
28、 取余数TRUNC(m,n): 截断DECODE :与执行逐个字符替换的3. 数字函数ABS(n) : 取绝对值CEIL(n) : 向上取整SIN(n) : 正弦COS(n) : 余弦ROUND(m,n): 四舍五入SQRT(n): 平方根4. 转换函数TO_CHARTO_DATETO_NUMBER5. 其他函数NVL(expre1,expre2) : 将空值替换为指定的值NVL2(expre1,expre2,expre3) : exprel 不是空值,则 NVL2 返回 expre2,否则返回 expre3NULLIF(expre1,expre2) : 比较两个表达式 ,如果相等 ,返回空值
29、 ,否则返回 expre16. 分组函数AVGMIN :参数列中所有值的最小值MAXSUMCOUNT7. 分析函数ROW_NUMBER , RANK , DENSE_RANK数据库 简单 SQL 语句总结1. 在查询结果中显示列名:a. 用 as 关键字: select name as 姓名from students order by ageb. 直接表示: select name 姓名from students order by age2. 精确查找 :a. 用 in 限定范围:select * from students where native in ( 湖南,四川)b. between
30、.and : select * from students where age between 20 and 30c. “=:”select * from students where name = 李山d. like:select * from students where namelike 李% (注意查询条件中有 “ %,”则说明是部分匹配,而且还有先后信息在里面, 即查找以 “李”开头的匹配项。 所以若查询有 “李”的所有对象, 应该命令: % 李%;若是第二个字为李,则应为 _李%或_李或_李_。)e .匹配检查符: select * from courses where cno l
31、ike AC% ( 表示或的关系,与 in(.) 类似,而且 可以表示范围,如:select * from courses where cno like A-C%)3. 对于时间类型变量的处理a.smalldatetime :直接按照字符串处理的方式进行处理,例如:select * from students where birth = 1980-1-1 and birth = 1980-12-314. 集合函数a. count() 求和,如: select count(*) from students ( 求学生总人数 )b. avg( 列) 求平均, 如: select avg(mark)
32、 from grades where cno=?B2?c. max(列)和 min(列),求最大与最小5. 分组 group常用于统计时,如分组查总数: select gender,count(sno) from students group by gender(查看男女学生各有多少 ) 注意:从哪种角度分组就从哪列 group by 对于多重分组,只需将分组规则罗列。比如查询各届各专业的男女同学人数,那么分组规则有:届别 (grade) 、专业 (mno) 和性别 (gender) ,所以有 group by grade, mno, genderselect grade, mno, gend
33、er, count(*) from students group by grade, mno, gender通常 group 还和 having 联用,比如查询 1 门课以上不及格的学生,则按学号 (sno) 分类有:select sno,count(*) from grades where mark16. UNION 联合合并查询结果,如: SELECT * FROM studentsWHERE name like , 张%? UNION ALL SELECT * FROM students WHERE name like , 李%?7. 多表查询a. 内连接select g.sno,s.n
34、ame,c.coursename from grades g JOIN students s ON g.sno=s.snoJOINcourses c ON o=o( 注意可以引用别名 )b. 外连接b1. 左连接select o,max(coursename),count(sno)from courses LEFT JOIN grades ONo=o group by o 左连接特点:显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全。左外连接返回那 些存在于左表而右表中却没有的行,再加上内连接的行。b2. 右连接与左连接类似b3. 全连接select sno,name,major from students FULL JOIN majors ON students.mno=majors.mno 两边表中的内容全部显示c. 自身连接select o,c1.coursename,c1.pno,c2.coursename from courses c1,courses c2 where c1.pno=o 采用别名解决问题。d. 交叉连接select lastname+firstname from lastname
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度高科技产业园区管理费合同模版
- 2025年度汽车美容店员工培训与职业发展合同
- 2025年度自媒体社群运营管理合同
- 2025年度顶账房买卖双方违约责任约定合同
- 2025年深水井钻井技术交流与合作合同
- 装饰装修公司简介(共11篇)
- 2025年山区生态设计合同
- 2025年单面汗布项目投资可行性研究分析报告
- 2025年竹编胶合板项目可行性研究报告
- 2025年冷冻粗项目节能评估报告(节能专) - 副本
- 致命性大出血急救专家共识
- 住院成人高血糖患者血糖监测医护协议处方共识
- DL-T5816-2020分布式电化学储能系统接入配电网设计规范
- 2024年4月自考00832英语词汇学试题
- 竞赛试卷(试题)-2023-2024学年六年级下册数学人教版
- 《电力用直流电源系统蓄电池组远程充放电技术规范》
- T-ACEF 095-2023 挥发性有机物泄漏检测红外成像仪(OGI)技术要求及监测规范
- 骨科手术的术后饮食和营养指导
- 旅游定制师入行培训方案
- 2024年中国南方航空股份有限公司招聘笔试参考题库含答案解析
- 六年级上册数学应用题100题
评论
0/150
提交评论