数据库面试题数据库的面试题及答案

合集下载

数据库面试题及答案

数据库面试题及答案

数据库面试题 11. 在一个查询中,使用哪一个关键字能够除去重复列值?答案:使用distinct关键字2. 什么是快照?它的作用是什么?答案:快照Snapshot是一个文件系统在特定时间里的镜像,对于在线实时数据备份非常有用。

快照对于拥有不能停止的应用或具有常打开文件的文件系统的备份非常重要。

对于只能提供一个非常短的备份时间而言,快照能保证系统的完整性。

3. 解释存储过程和触发器答案:存储过程是一组Transact-SQL语句,在一次编译后可以执行多次。

因为不必重新编译Transact-SQL语句,所以执行存储过程可以提高性能。

触发器是一种特殊类型的存储过程,不由用户直接调用。

创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行。

4. SQL Server是否支持行级锁,有什么好处?答案:支持动态行级锁定SQL Server 2000动态地将查询所引用的每一个表的锁定粒度调整到合适的级别。

当查询所引用的少数几行分散在一个大型表中时,优化数据并行访问的最佳办法是使用粒度锁,如行锁。

但是,如果查询引用的是一个表中的大多数行或所有行,优化数据并行访问的最佳办法可以是锁定整个表,以尽量减少锁定开销并尽快完成查询。

SQL Serve 2000通过为每个查询中的每个表选择适当的锁定级别,在总体上优化了数据并发访问。

对于一个查询,如果只引用一个大型表中的几行,则数据库引擎可以使用行级锁定;如果引用一个大型表的几页中的多行,则使用页级锁定;如果引用一个小型表中的所有行,则使用表级锁定。

5. 数据库日志干什么用,数据库日志满的时候再查询数据库时会出现什么情况。

答案:每个数据库都有事务日志,用以记录所有事务和每个事务对数据库所做的修改。

6. 存储过程和函数的区别?答案:存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表7. 事务是什么?答案:事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:(1) 原子性事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

php_数据库面试题及答案(3篇)

php_数据库面试题及答案(3篇)

第1篇1. 请简要介绍数据库的基本概念和分类。

答:数据库是按照数据结构来组织、存储和管理数据的仓库。

它包含一系列相互关联的数据集。

数据库分为关系型数据库和非关系型数据库两大类。

2. 什么是SQL?请列举几个常用的SQL语句。

答:SQL(Structured Query Language)是一种标准化的查询语言,用于管理关系型数据库。

常用的SQL语句包括:- SELECT:查询数据- INSERT:插入数据- UPDATE:更新数据- DELETE:删除数据- CREATE:创建数据库或表- DROP:删除数据库或表- ALTER:修改数据库或表结构3. 请解释以下SQL语句的含义:- SELECT FROM students WHERE age > 18;- INSERT INTO employees (name, age, salary) VALUES ('张三', 25, 5000);- UPDATE students SET age = 20 WHERE name = '李四';- DELETE FROM employees WHERE age = 30;答:- SELECT FROM students WHERE age > 18;:查询年龄大于18岁的学生信息。

- INSERT INTO employees (name, age, salary) VALUES ('张三', 25, 5000);向员工表插入一条记录,姓名为张三,年龄为25岁,薪资为5000元。

- UPDATE students SET age = 20 WHERE name = '李四';将姓名为李四的学生年龄修改为20岁。

- DELETE FROM employees WHERE age = 30;删除年龄为30岁的员工记录。

4. 什么是索引?请举例说明索引的作用。

数据库工程师面试题及答案(全)

数据库工程师面试题及答案(全)

数据库工程师面试题及答案1.请简要介绍你对数据库的理解以及你的数据库工作经验?答:数据库是一种可以存储、管理和检索数据的软件系统。

作为一名数据库工程师,我的主要工作职责包括设计和管理数据库系统、调优和优化数据库性能、实现数据备份和恢复、确保数据安全和隐私保护等。

我拥有多年的数据库工作经验,擅长使用MySQL、Oracle、SQL Server等数据库管理系统,对SQL语言和数据库优化有深入的了解。

2.请介绍一下数据库索引的原理和常用类型?答:数据库索引是一种数据结构,可以加速数据检索的速度和效率。

常见的索引类型包括B+树索引、哈希索引、全文索引等。

其中,B+树索引是最常用的索引类型,它采用平衡树结构来存储数据,可以支持快速的范围查找和排序操作。

哈希索引是一种使用哈希函数将数据映射到索引中的索引类型,可以支持快速的精确查找操作。

全文索引是一种可以在文本中进行模糊匹配的索引类型,可以支持全文搜索和关键词查询。

3.请介绍一下数据库事务的概念和ACID特性?答:数据库事务是一组需要被看作为一个单独的操作执行的SQL语句集合。

为了确保数据的完整性和一致性,事务需要满足ACID特性。

ACID是指原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

⏹原子性:事务中的所有操作要么全部执行成功,要么全部失败,不存在中间状态。

⏹一致性:事务执行前后,数据库中的数据保持一致性状态。

⏹隔离性:事务之间的操作互相隔离,一个事务的执行不应该影响其他事务。

⏹持久性:事务执行成功后,其所做的修改应该被持久化存储,不会因为系统故障等原因丢失。

4.请简述一下数据库优化的方法和技巧?答:数据库优化是提高数据库性能和响应速度的重要手段,常用的方法和技巧包括:⏹合理设计和优化数据库结构,避免冗余和无用数据。

⏹创建适当的索引,加快数据检索速度。

⏹使用分区表,优化大数据表的查询速度。

数据库oracle面试题及答案

数据库oracle面试题及答案

数据库oracle面试题及答案数据库Oracle作为一种广泛应用的关系型数据库管理系统,其知识点和面试题目也成为了许多面试者需要关注和准备的重点。

本文将介绍一些常见的Oracle面试题及其答案,希望对广大读者有所帮助。

1. 什么是数据库?简要介绍一下Oracle数据库。

答:数据库是一种结构化数据的集合,用于存储、管理以及访问数据。

Oracle数据库是由Oracle公司开发的一款重要的关系型数据库管理系统,它支持跨平台运行,并且被广泛应用于企业级应用系统中。

2. 请解释什么是数据库事务,以及Oracle中的事务管理。

答:数据库事务是指作为一个逻辑工作单元的一系列数据库操作,要么全部成功完成,要么全部失败回滚到事务开始之前的状态。

Oracle中使用回滚段和日志文件,实现事务的原子性、一致性、隔离性和持久性,通过ACID特性来保证事务的可靠性。

3. Oracle中的连接是什么?请解释一下Oracle中连接的类型。

答:连接是指建立应用程序与数据库之间的连接,使得应用程序能够与数据库交互。

Oracle中的连接类型包括物理连接和逻辑连接。

物理连接是指实际的网络连接,它负责传输数据。

逻辑连接是指应用程序与数据库之间的逻辑连接,通过逻辑连接可以对数据库进行访问和操作。

4. 请举例说明Oracle中的DML和DDL操作。

答:DML操作(数据操纵语言)用于对数据库中的数据进行增删改查,比如INSERT、UPDATE和DELETE语句。

例如,可以使用INSERT语句向表中插入新的记录;使用UPDATE语句修改已有记录;使用DELETE语句删除指定的记录。

DDL操作(数据定义语言)用于定义数据库对象,例如创建表、修改表结构等。

例如,可以使用CREATE TABLE语句创建新的表;使用ALTER TABLE语句修改表结构。

5. 请解释Oracle中的索引是什么以及索引的作用。

答:索引是一种数据结构,用于提高数据库查询的效率。

mysql高级面试题及答案

mysql高级面试题及答案

mysql高级面试题及答案mysql高级面试题及答案(一)1.以下聚合函数求数据总和的是( )A.MAXB.SUMC.COUNTD.AVG答案:B2.可以用( )来声明游标A.CREATE CURSORB.ALTER CURSORC.SET CURSORD.DECLARE CURSOR答案:D3.SELECT语句的完整语法较复杂,但至少包括的部分是( )A.仅SELECTB.SELECT,FROMC.SELECT,GROUPD.SELECT,INTO答案:B4.SQL语句中的条件用以下哪一项来表达( )A.THENB.WHILEC.WHERED.IF答案:C5.使用CREATE TABLE语句的( )子句,在创建基本表时可以启用全文本搜索A.FULLTEXTB.ENGINEC.FROMD.WHRER答案:A6.以下能够删除一列的是( )A.alter table emp remove addcolumnB.alter table emp drop column addcolumnC.alter table emp delete column addcolumnD.alter table emp delete addcolumn答案:B7.若要撤销数据库中已经存在的表S,可用()。

A.DELETE TABLE SB.DELETE SC.DROP SD.DROP TABLE S答案:D8.查找表结构用以下哪一项( )A.FINDB.SELETEC.ALTERD.DESC答案:D9.要得到最后一句SELECT查询到的总行数,可以使用的函数是( )A.FOUND_ROWSST_ROWSC.ROW_COUNTST_INSERT_ID答案:A10.在视图上不能完成的操作是( )A.查询B.在视图上定义新的视图C.更新视图D.在视图上定义新的表答案:D11.UNIQUE惟一索引的作用是( )A.保证各行在该索引上的值都不得重复B.保证各行在该索引上的值不得为NULLC.保证参加惟一索引的各列,不得再参加其他的索引D.保证惟一索引不能被删除答案:Amysql高级面试题及答案(二)1、mysql如何创建一个库,添加一个表,在表中插入数据。

数据库面试题及答案

数据库面试题及答案

数据库面试题及答案在数据库领域的面试中,常常会遇到各种各样的问题。

这些问题涵盖了数据库的基本概念、SQL语言、数据库设计、性能优化等方面。

本文将为您详细介绍一些常见的数据库面试题及其答案,以帮助您在面试中更好地表现自己。

1. 什么是数据库的事务(transaction),并描述ACID特性。

答:事务是数据库中一系列操作的逻辑单位,要么全部执行成功,要么全部失败回滚。

ACID特性包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

2. 请解释一下SQL语言中的DDL、DML和DQL的概念。

答:DDL(Data Definition Language)用于定义数据库的结构或模式,如CREATE、ALTER和DROP等操作。

DML(Data Manipulation Language)用于操作数据库中的数据,如INSERT、UPDATE和DELETE等操作。

DQL(Data Query Language)用于查询数据库中的数据,如SELECT等操作。

3. 什么是数据库索引,以及为什么要使用索引?答:数据库索引是一种特殊的数据结构,用于加速对数据库表中数据的查询。

使用索引可以减少查询数据的IO消耗,提高查询效率。

索引的创建需要占用额外的存储空间,并在数据变更时维护索引,因此需要权衡存储空间和查询性能之间的关系。

4. 请简要介绍关系数据库设计中的三大范式。

答:第一范式(1NF)要求字段具有原子性,即每个字段的值不可再分。

第二范式(2NF)要求表中的非主键字段完全依赖于主键,不能存在部分依赖。

第三范式(3NF)要求表中的非主键字段与主键字段不存在传递依赖。

5. 如何进行数据库性能优化?答:数据库性能优化可以从多个方面入手。

首先,合理设计数据库结构,包括表、索引和关联等。

其次,编写高效的SQL查询语句,避免全表扫描和重复查询。

再次,定期优化数据库的配置参数,如缓冲区大小、连接数等。

数据库常问面试题

数据库常问面试题

数据库常问面试题
1.用一句话介绍什么是MySQL?
2.对MySQL数据库去重的关键字是什么?
3.MySQL多表连接有哪些方式?怎么用的?这些连接都有什么区别?
4.MySQL数据库和Redis的区别?
5.说一下索引的优势和劣势?
6.什么是死锁?怎么解决?
7.什么是视图?为什么要使用视图?
8.视图有哪些特点?使用场景有哪些?
9.讲一下视图的优缺点?
10.MySQL的约束有哪些?
11.UNION和UNION ALL的区别?
12.关心过业务系统里面的sql耗时吗?对慢查询都怎么优化过?
13.主键使用自增ID还是UUID,为什么?
14.MySQL数据库cpu飙升的话,要怎么处理呢?
15.什么是存储过程?有哪些优缺点?
16.日常工作中,你是怎么优化sql的?
17.什么情况下应不建或少建索引?
18.了解什么是表分区吗?表分区的好处有哪些?。

数据库面试题及答案

数据库面试题及答案

数据库⾯试题及答案1. 触发器的作⽤? 触发器是⼀种特殊的存储过程, 主要是通过时间来出发⽽被执⾏的. 它可以强化约束,来维护数据的完整性和⼀致性, 可以跟踪数据库内的操作从⽽不允许未经许可的更新和变化. 可以级联运算2. 什么是存储过程? ⽤什么来调⽤? 存储过程是⼀个预编译的SQL语句, 有点事允许模块化的设计, 只需要创建⼀次,就可以被多次调⽤,如果需要执⾏多次SQL,那么存储过程的速度更快. 可以⽤命令对象来调⽤存储过程. 可以供外部程序调⽤, 如java程序3. 存储过程的有优缺点? 优点: 存储过程是⼀个预编译的SQL语句, 执⾏效率⾼ 放在数据库中,直接调⽤,减少⽹络通信 安全性⾼ 可重复使⽤ 缺点: 移植性差4. 存储过程与函数的区别? 存储过程: 在数据库中完成指定的增删改查操作 申明: procedure 函数: 在编程语⾔中进⾏任务的处理 申明: function5. 索引的作⽤? 和他的优点缺点是什么? 索引就是⼀种特殊的查询表, 数据库的搜索可以利⽤它加速对数据的检索. 类似于现实⽣活中的⽬录. 不需要查找整本书就可以找到想要的结果.6. 什么样的字段适合建⽴索引? 唯⼀, 不为空, 经常被查询的字段 7. 索引的类型有哪些? 逻辑上: 单⾏索引,多⾏索引,唯⼀索引,⾮唯⼀索引,函数索引,域索引. 物理上: 分区索引, ⾮分区索引 B-tree: 正常性B树 反转型B树 bitmap位图索引8. 什么是事务? 什么是锁? 事务就是被绑在⼀起作为⼀个逻辑⼯作单元的SQL语句分组, 如果任何⼀个语句操作失败那么整个操作就会失败, 会回滚到之前的状态.要么全部执⾏, 要么⼀个都不执⾏. 锁: DBMS中, 锁是实现事务的关键.9. 什么叫视图? 游标是什么? 视图就是⼀种虚拟的表, 具有和物理表相同的功能. 可以对视图进⾏增改查操作, 视图通常是⼀个表或多个表的⾏或列的⼦集 游标是遍历结果集的⼀个指针, ⽤来逐条处理数据10. 视图的优缺点? 优点: 对数据的选择性访问 ⽤户可以通过简单的查询从复杂查询中得到结果 维护数据的独⽴性 对相同的数据产⽣不同的视图 缺点: 性能11. 列举⼏种表连接的⽅式,有什么区别? 左连接: 左边为主表表数据全部显⽰, 匹配表的不匹配部分不显⽰ 右连接: 右边为主表表数据全部显⽰, 匹配表的不匹配部分不显⽰ 内连接: 只有两个元素表相匹配的才能在结果集中显⽰ 全外连接: 连接中的不匹配的数据全部会显⽰出来 交叉连接: 笛卡尔乘积, 显⽰的结果是连接表数的乘积12. 主键和外键的区别? 主键在本表中是唯⼀的,不为空的, 外键可以重复和为空. 外键和另外⼀张表相关联, 不能创建对应表中不存在的外键.13. 在数据库中查询语句速度很慢, 如何优化? 建⽴索引 减少表之间的关联 优化SQL语句 简化查询字段14. 数据库三范式是什么? 第⼀范式: 列不可再分 第⼆范式: ⾏可以唯⼀区分, 主键约束 第三范式: 表的⾮主属性不能依赖其他表的⾮主属性外键约束15. union和union all有什么不同? union会删掉重复的记录, union all不会16. varchar2和varchar有什么区别? varchar2是Oracle⾃⼰开发的, ⽬前varchar2和varchar是同义词, 关键点是varchar是可变长度的, 可以根据实际的长度来存储17. oracle和mysql的区别? 库函数不同 Oracle是⽤表空间来管理的, mysql不是 SQL语句不同 分页查询不同18. oracle语句有多少类型? DDL, DML, DCL DDL: 建表,建数据库,建⽴约束,修改约束,权限修改 DML: insert, update, delete DCL: 管理⽤户权限19. oracle的分页查询语句? select * from table where row_num between 1 and 10;20. 从数据库中随机选择50条? select * from (select * from example order by dbms_random.random) where rownum <= 50;21. order by与group by的区别? order by是排序查询 group by是分组查询 having只能在group by之后, 使⽤group by查询的语句需要使⽤聚合函数22. commit在哪⾥会运⽤? Oracle的commit就是DML语句提交数据. 在未提交之前你的操作都是保存在内存中, 没有更新到物理内存中. 执⾏commit从⽤户⾓度来讲就是更新到物理⽂件了. 事实上commit还写⼊了⽇志⽂件23. ⾏转列, 列转⾏怎么转? 使⽤decode函数, 或者使⽤case when语句24. 什么是PL/SQL? PL/SQL是⼀种程序语⾔,叫做过程化SQL语⾔, PL/SQL是对oracle数据库对SQL语句的扩展. 在普通的SQL语句的使⽤上增加了编程语⾔的特点. 通过逻辑判断,循环等操作来实现复杂的功能或者计算. PL/SQL只有Oracle数据库有, mySQL现在不⽀持PL/SQL25. 序列的作⽤? Oracle使⽤序列来⽣成唯⼀的编号, ⽤来处理⼀个表中的⾃增字段.26. 表和视图的关系? 视图其实就是⼀条查询语句, ⽤于显⽰⼀个或多个表或其他视图中的数据, 表就是关系型数据库中实际存储数据⽤的.27. oracle基本数据类型? 字符串 char nchar varchar varchar2 nvarchar2 数字 number integer 浮点 binary_float binary_double float ⽇期时间 date timestamp 字符块 blob clob nclob bfile28. truncate与delete的区别? delete table: 删除内容, 不删除定义, 不释放空间 truncate: 删除内容和定义,释放空间29. oracle获取系统时间? select to_char(sysdate,"yyyy-MM-dd") from dual30. oracle如何去重? 使⽤distinct关键字。

SQLSERVER数据库面试题

SQLSERVER数据库面试题

SQLSERVER数据库⾯试题1.⽤⼀条SQL语句查询出每门课都⼤于80分的学⽣姓名name kecheng fenshu张三语⽂ 81张三数学 75李四语⽂ 76李四数学 90王五语⽂ 81王五数学 100王五英语 90A: select distinct name from table where name not in (select distinct name from table where fenshu<=80)2.学⽣表如下:⾃动编号学号姓名课程编号课程名称分数1 2005001 张三 0001 数学 692 2005002 李四 0001 数学 893 2005001 张三 0001 数学 69删除除了⾃动编号不同,其他都相同的学⽣冗余信息A: delete tablename where ⾃动编号 not in(select min(⾃动编号) from tablename group by 学号,姓名,课程编号,课程名称,分数)⼀个叫department的表,⾥⾯只有⼀个字段name,⼀共有4条纪录,分别是a,b,c,d,对应四个球对,现在四个球对进⾏⽐赛,⽤⼀条sql语句显⽰所有可能的⽐赛组合.你先按你⾃⼰的想法做⼀下,看结果有我的这个简单吗?答:select , from team a, team bwhere < 请⽤SQL语句实现:从TestDB数据表中查询出所有⽉份的发⽣额都⽐101科⽬相应⽉份的发⽣额⾼的科⽬。

请注意:TestDB中有很多科⽬,都有1-12⽉份的发⽣额。

AccID:科⽬代码,Occmonth:发⽣额⽉份,DebitOccur:发⽣额。

数据库名:JcyAudit,数据集:Select * from TestDB答:select a.*from TestDB a,(select Occmonth,max(DebitOccur) Debit101ccur from TestDB where AccID='101' group by Occmonth) b where a.Occmonth=b.Occmonth and a.DebitOccur>b.Debit101ccur************************************************************************************⾯试题:怎么把这样⼀个表⼉year month amount1991 1 1.11991 2 1.21991 3 1.31991 4 1.41992 1 2.11992 2 2.21992 3 2.31992 4 2.4查成这样⼀个结果year m1 m2 m3 m41991 1.1 1.2 1.3 1.41992 2.1 2.2 2.3 2.4答案⼀、select year,(select amount from aaa m where month=1 and m.year=aaa.year) as m1,(select amount from aaa m where month=2 and m.year=aaa.year) as m2,(select amount from aaa m where month=3 and m.year=aaa.year) as m3,(select amount from aaa m where month=4 and m.year=aaa.year) as m4from aaa group by year这个是ORACLE 中做的:select * from (select name, year b1, lead(year) over(partition by name order by year) b2, lead(m,2) over(partition by name order by year) b3,rank()over( partition by name order by year) rk from t) where rk=1;************************************************************************************精妙的SQL语句!精妙SQL语句作者:不详发⽂时间:2003.05.29 10:55:05说明:复制表(只复制结构,源表名:a 新表名:b)SQL: select * into b from a where 1<>1说明:拷贝表(拷贝数据,源表名:a ⽬标表名:b)SQL: insert into b(a, b, c) select d,e,f from b;说明:显⽰⽂章、提交⼈和最后回复时间SQL: select a.title,ername,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b说明:外连接查询(表名1:a 表名2:b)SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c说明:⽇程安排提前五分钟提醒SQL: select * from ⽇程安排 where datediff('minute',f开始时间,getdate())>5说明:两张关联表,删除主表中已经在副表中没有的信息SQL:delete from info where not exists ( select * from infobz where info.infid=infobz.infid )说明:--SQL:SELECT A.NUM, , B.UPD_DATE, B.PREV_UPD_DATEFROM TABLE1,(SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATEFROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHANDFROM TABLE2WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X, (SELECT NUM, UPD_DATE, STOCK_ONHANDFROM TABLE2WHERE TO_CHAR(UPD_DATE,'YYYY/MM') =TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') ¦¦ '/01','YYYY/MM/DD') - 1, 'YYYY/MM') ) Y, WHERE X.NUM = Y.NUM (+)AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <> X.STOCK_ONHAND ) BWHERE A.NUM = B.NUM说明:--SQL:select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名称='"&strdepartmentname&"' and 专业名称='"&strprofessionname&"' order by 性别,⽣源地,⾼考总成绩说明:从数据库中去⼀年的各单位电话费统计(电话费定额贺电化肥清单两个表来源)SQL:SELECT erper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS telyear,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01', a.factration)) AS JAN,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02', a.factration)) AS FRI,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03', a.factration)) AS MAR,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04', a.factration)) AS APR,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05', a.factration)) AS MAY,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06', a.factration)) AS JUE,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07', a.factration)) AS JUL,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08', a.factration)) AS AGU,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09', a.factration)) AS SEP,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10', a.factration)) AS OCT,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11', a.factration)) AS NOV,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12', a.factration)) AS DECFROM (SELECT erper, a.tel, a.standfee, b.telfeedate, b.factrationFROM TELFEESTAND a, TELFEE bWHERE a.tel = b.telfax) aGROUP BY erper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy')说明:四表联查问题:SQL: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....说明:得到表中最⼩的未使⽤的ID号SQL:SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleIDFROM HandleWHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)*******************************************************************************有两个表A和B,均有key和value两个字段,如果B的key在A中也有,就把B的value换为A中对应的value这道题的SQL语句怎么写?update b set b.value=(select a.value from a where a.key=b.key) where b.id in(select b.id from b,a where b.key=a.key);***************************************************************************⾼级sql⾯试题原表:courseid coursename score-------------------------------------1 java 702 oracle 903 xml 404 jsp 305 servlet 80-------------------------------------为了便于阅读,查询此表后的结果显式如下(及格分数为60):courseid coursename score mark---------------------------------------------------1 java 70 pass2 oracle 90 pass3 xml 40 fail4 jsp 30 fail5 servlet 80 pass---------------------------------------------------写出此查询语句没有装ORACLE,没试过select courseid, coursename ,score ,decode(sign(score-60),-1,'fail','pass') as mark from course完全正确SQL> desc course_vName Null? Type----------------------------------------- -------- ----------------------------COURSEID NUMBERCOURSENAME VARCHAR2(10)SCORE NUMBERSQL> select * from course_v;COURSEID COURSENAME SCORE---------- ---------- ----------1 java 702 oracle 903 xml 404 jsp 305 servlet 80SQL> select courseid, coursename ,score ,decode(sign(score-60),-1,'fail','pass') as mark from course_v; COURSEID COURSENAME SCORE MARK---------- ---------- ---------- ----1 java 70 pass2 oracle 90 pass3 xml 40 fail4 jsp 30 fail5 servlet 80 pass*******************************************************************************原表:id proid proname1 1 M1 2 F2 1 N2 2 G3 1 B3 2 A查询后的表:id pro1 pro21 M F2 N G3 B A写出查询语句解决⽅案sql求解表a列 a1 a2记录 1 a1 b2 x2 y2 z⽤select能选成以下结果吗?1 ab2 xyz使⽤pl/sql代码实现,但要求你组合后的长度不能超出oracle varchar2长度的限制。

汇总最全的C#.NET(数据库.net其它)面试题及参考答案

汇总最全的C#.NET(数据库.net其它)面试题及参考答案

汇总最全的C#.NET(数据库.net其它)⾯试题及参考答案⼀、数据库篇1.维护数据库的完整性、⼀致性、你喜欢⽤触发器还是⾃写业务逻辑?为什么?答:尽可能⽤约束(包括CHECK、主键、唯⼀键、外键、⾮空字段)实现,这种⽅式的效率最好;其次⽤触发器,这种⽅式可以保证⽆论何种业务系统访问数据库都能维持数据库的完整性、⼀致性;最后再考虑⽤⾃写业务逻辑实现,但这种⽅式效率最低、编程最复杂,当为下下之策。

2.什么是事务?什么是锁?请说出sql server中锁的隔离级别有哪些,默认是哪⼀种?答:事务是指⼀个⼯作单元,它包含了⼀组数据操作命令,并且所有的命令作为⼀个整体⼀起向系统提交或撤消请求操作,即这组命令要么都执⾏,要么都不执⾏。

锁是在多⽤户环境中对数据的访问的限制。

SqlServer⾃动锁定特定记录、字段或⽂件,防⽌⽤户访问,以维护数据安全或防⽌并发数据操作问题,锁可以保证事务的完整性和并发性。

3.什么是索引,有什么优点?使⽤索引需要注意些什么?答:索引与书的⽬录类似,可以快速定位要查找的数据所有位置,索引使数据库程序⽆需扫描整个表,就可以在其中找到所需要的数据,索引包含了⼀个表中包含值的列表,其中包含了各个值的⾏所存储的位置,索引可以是单个或⼀组列,索引提供的表中数据的逻辑位置,合理划分索引能够⼤⼤提⾼数据库性能。

索引需要注意:加索引的列⼀定要是经常使⽤来条件筛选的列,并且where中要避免对有索引的列进⾏计算,索引并不是越多越好,索引会占⽤更多的存储空间,也会对insert 、update、delete这些操作有⼀定的性能影响。

4.视图是什么?游标是什么?答:视图是⼀种虚拟表,虚拟表具有和物理表相同的功能,可以对虚拟表进⾏增该查操作;视图通常是⼀个或多个表的⾏或列的⼦集;视图的结果更容易理解(修改视图对基表不影响),获取数据更容易(相⽐多表查询更⽅便),限制数据检索(⽐如需要隐藏某些⾏或列),维护更⽅便。

数据库研发专家岗位面试题及答案(经典版)

数据库研发专家岗位面试题及答案(经典版)

数据库研发专家岗位面试题及答案1.请简要介绍一下您在数据库研发领域的工作经验。

回答:我在数据库研发领域拥有超过10年的工作经验。

我曾参与设计和优化大规模关系型数据库,解决了性能瓶颈和数据安全等方面的问题。

例如,在上一家公司,我领导了一个团队开发了一个高性能的分布式数据库引擎,将查询速度提升了30%,同时确保了数据的一致性和可靠性。

2.请说明您在数据库设计方面的经验,特别是在处理复杂数据关系时的做法。

回答:在数据库设计中,我注重规范化和反规范化的平衡。

当处理复杂数据关系时,我会根据业务需求进行合理的数据模型设计。

例如,我曾在一个电子商务项目中,根据产品属性的多样性,采用了EAV(EntityAttributeValue)模型,以灵活地存储不同产品的各种属性。

3.请描述您如何保证数据库的安全性和完整性。

回答:确保数据库安全性和完整性是我工作的核心。

我会使用访问控制、加密和审计等措施来保护数据免受未经授权的访问。

同时,我会定期备份数据,并建立灾难恢复计划,以防止数据丢失。

举例来说,在一个医疗保健项目中,我设计了基于角色的访问控制,确保只有经过授权的医生可以访问患者的敏感信息。

4.您在性能优化方面有哪些经验?请分享一个具体案例。

回答:在性能优化方面,我会进行查询计划分析、索引优化和数据分区等操作。

在一个电子支付系统项目中,我发现了一个导致交易查询缓慢的问题,通过重新设计索引和优化查询语句,将查询时间从5秒减少到了不到1秒。

5.请谈谈您对数据库事务管理的理解。

回答:事务管理是确保数据一致性和可靠性的关键。

我会使用ACID(原子性、一致性、隔离性和持久性)原则来管理数据库事务。

举例来说,我曾在一个在线预订系统中,通过实现严格的事务管理,确保用户预订行程后,不会因系统故障导致重复预订或损失数据。

6.在处理大数据量时,您如何设计和优化数据库架构?回答:处理大数据量需要考虑水平扩展和垂直扩展。

我会使用分片、分区和缓存等技术来实现水平扩展,同时优化查询性能。

oracle数据库面试题及答案

oracle数据库面试题及答案

1.-- 查找出部门10中的工种与部门30中任何工种都不相同的职工的姓名与工种。

2.select ename,job from emp3.where deptno=10 and job not in (select distinct job from emp where deptno=30)4.--30号部门工种 select distinct job from emp where deptno=305.6.-- 查找出部门20中的工种相同的职工的姓名与工种。

7.select ename,job from emp8.where deptno=20 and job in9.(select job from emp10.where deptno =2011.group by job12.having count(*)>1);13.14.--先查找出,20号部门中,每个工种的人数超过1人的工种15.select job from emp16.where deptno =2017.group by job18.having count(*)>1;19.20.-- 查找出工资在1000到3500元之间的职工所在部门的所有人员的有关信息。

21.select * from emp22.where deptno in (select deptno from emp where sal between 1000 and 3500);23.24.-- 查找出工资高于20号部门任意一个员工工资的信息。

25.select * from emp26.where sal > (select max(sal) from emp where deptno=20)27.28.-- 查找出工种在部门10中没有的其他部门职工的姓名、工种和工资信息。

29.select ename,job,sal from emp30.where job not in (select distinct job from emp where deptno=10) and deptno != 10;31.32.-- 查找出10号部门中与销售部门中任何职工工种相同的职工的信息。

数据仓库面试题

数据仓库面试题

数据仓库面试题问题1: in exists的区别not in和not exists的区别?是一个集合运算符.a in (a, c, d, s, d-}这个运算中,前面是一个元素, 答案:n后面是一个集合,集合中的元素类型是和前面的元素一样的.而exists是一个存在判断,如果后面的查询中有结果,则exists为真,否则为假。

not in和not exi sts如果查询语句使用了not in那么内外表都进行全表扫描,没有用到索引;而not extsts的子查询依然能用到表上的索引。

所以无论那个表大,用not exists都比not in要快。

总之:尽量使用not exist ,避免使用not innot in会默认调用子查询not exist会调用关联子查询问题2:拉链表知道么?答案:拉链表就是随着时间变迁产生历史数据。

拉链表的含义:就是记录历史。

记录一个事务从开始一直到当前状态的所有变化信息。

问题3:数仓三层架构,具体每层作用?答案:1:数据访问层:主要是对非原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据库的操作,而不是数据,具体为业务逻辑层或表示层提供数据服务。

2:业务逻辑层:主耍是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。

3:界面层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。

问题4:为什么叫星型模型和雪花模型?答案:星型模型是:多维表的数据关系,它由一个事实表和一组维表组成,每个维作为主键雪花模型是:当一个或多个维没有直接连接到事实表上,而是通过其他维表连接到事实表上的时候,其图解就像雪花模型连接在一起、使用场景:雪花模型使得维度分析更加容易,比如“针对特定的广告主,有哪些客户或者公司是在线的?”星形模型用来做指标分析更适合,比如“给定的一个客户他们的收入是多少?”问题5:星型模型和雪花模型各自的优点?答案:概念一一根据事实表和维度表的关系,可将常见的模型分为星型模型和雪花模型。

数据库面试题及部分答案

数据库面试题及部分答案

数据库面试题及部分答案1.数据库1.1.数据库【炎黄盈动】C员工表的定义如下:Last_name VARCHAR2(25)First_name VARCHAR2(25)Salary NUMBER(7,2)现查询显示未达到平均工资的员工姓名.请考察下面的SQL语句: SELECT last_name, first_name FROM employee WHERE salary < avg(salary);对这条SQL做以下哪项修改能够达到目的?A.改变WHERE子句B.把聚合函数移到SELECT列表中,并增加GROUP子句C.通过子查询得出平均工资水平并在父查询的WHERE子句中比较D.把聚合函数移到SELECT列表中,并增加GROUP BY子句和HAVING子句1.2.数据库【炎黄盈动】D要从员工表中查询所有姓Smith的人,但是并不能确定所有Smith的大小写,以下哪条语句能解决问题?A.SELECT last_name, first_name FROM emp WHERE last_name=’smith’B.SELECT last_name, first_name FROM emp WHERE UPPER(last_name)=’smith’C.SELECT last_name, first_name FROM emp WHERE last_name=UPPER(‘smith’)D.SELECT last_name, first_name FROM emp WHERE LOWER(last_name)=’smith’1.3.delete from tablea & truncate table tablea的区别 ( CD ) 【中美寰宇】A.没有区别B.速度相同C.速度不同D.日志记录不同1.4.下列哪些(或哪个)不是PL/SQL的组成部分(BC)【四川银海】A.DECLAREB.CATCHC.THROWD.EXCEPTION1.5.SQL语句中修改表结构的命令是C。

oracle数据库的面试题及答案

oracle数据库的面试题及答案

oracle数据库的面试题及答案1. 介绍一下Oracle数据库的特点和优势。

Oracle数据库是一种可扩展、可靠、高性能的关系数据库管理系统(RDBMS)。

其特点和优势包括:- 可扩展性:Oracle数据库可以轻松处理大规模数据和用户,并支持横向和纵向扩展。

- 可靠性:具备强大的恢复和容错能力,包括闪回技术、自动故障检测和修复等。

- 高性能:通过优化索引、查询优化器、高效的并发控制和内存管理等功能,提供卓越的性能。

- 安全性:提供多层次的安全性控制,包括用户认证、授权、加密和审计等。

- 支持多种数据类型:支持结构化和非结构化数据以及多媒体数据类型。

- 强大的开发工具支持:包括SQL Developer、PL/SQL开发工具等。

2. 请解释Oracle实例和数据库之间的关系。

Oracle实例是在服务器上运行的Oracle数据库的一个副本。

每个实例由内存结构和后台进程组成,用于管理和处理数据库的数据和操作。

而数据库是存储数据的物理文件集合。

一个服务器可以运行多个实例,但只能有一个数据库。

实例通过访问数据库文件来完成对数据的读写操作。

3. 请解释Oracle中的逻辑结构和物理结构。

逻辑结构是指以逻辑方式组织和访问数据的方式,包括表、索引、视图等。

物理结构则是指数据在磁盘上的存储方式,例如数据文件、控制文件和日志文件等。

4. 请解释Oracle中的事务和事务的四个特性。

事务是指数据库操作的逻辑单元,可以由一个或多个SQL语句组成。

事务具有以下四个特性(通常被称为ACID属性):- 原子性(Atomicity):事务被视为一个不可分割的操作单元,要么全部执行成功,要么全部回滚到初始状态。

- 一致性(Consistency):事务执行的结果必须使数据库从一个一致状态转换到另一个一致状态,不会破坏数据完整性。

- 隔离性(Isolation):每个事务在执行过程中都应该与其他事务隔离,即事务之间不能互相干扰。

oracle的面试题及答案

oracle的面试题及答案

oracle的面试题及答案在Oracle的面试过程中,面试官往往会提出一系列与Oracle数据库相关的问题。

为了帮助你准备面试,本文将介绍一些常见的Oracle面试题及其答案。

以下是一些常见的Oracle面试题及答案供你参考:1. Oracle数据库的基本概念是什么?Oracle数据库是一个基于关系模型的数据库管理系统,它的特点包括数据安全、高可用性、高性能和可扩展性。

2. 什么是Oracle实例和数据库?Oracle实例是Oracle数据库运行时的一个进程,它负责管理和访问数据库的所有资源。

数据库则是存储数据的物理文件集合。

3. 请解释什么是表空间(tablespace)?表空间是逻辑存储结构,它由一个或多个数据文件组成,用于存储数据库中的表、索引和其他对象。

4. Oracle中的数据类型有哪些?Oracle提供了多种数据类型,包括字符型、数值型、日期型、二进制型等。

5. 如何创建表?可以使用CREATE TABLE语句来创建表。

例如,CREATE TABLE employees (id NUMBER, name VARCHAR2(50), age NUMBER);6. 如何在Oracle中插入数据?可以使用INSERT INTO语句来向表中插入数据。

例如,INSERT INTO employees (id, name, age) VALUES (1, 'John', 25);7. 如何更新表中的数据?可以使用UPDATE语句来更新表中的数据。

例如,UPDATE employees SET age = 26 WHERE id = 1;8. 如何删除表中的数据?可以使用DELETE语句来删除表中的数据。

例如,DELETE FROM employees WHERE id = 1;9. Oracle中的索引有哪些类型?Oracle提供了多种索引类型,包括B树索引、位图索引、散列索引等。

mysql的面试题及答案

mysql的面试题及答案

mysql的面试题及答案MySQL作为一款常用的关系型数据库管理系统,广泛应用于各个行业的数据存储和管理中。

在进行MySQL相关职位的面试中,了解和掌握一些常见的MySQL面试题和对应的答案,对于应聘者具有重要意义。

本文将针对MySQL的面试题及答案展开讨论,帮助读者更好地应对MySQL面试。

一、基础知识类面试题及答案在MySQL面试中,基础知识类题目是最常见的,以下是一些典型的基础知识类面试题及答案:1. 什么是数据库?答:数据库是指将大量数据按一定的数据模型进行组织和存储的集合,可以对其中的数据进行有效地存取、管理和更新。

2. 数据库的三范式是什么?答:数据库范式是指数据库中的关系被分解成符合一定规则的若干关系的过程。

其中,第一范式要求每个属性都是原子性的,第二范式要求每个非主键属性完全依赖于主键,第三范式要求消除传递依赖。

3. 什么是SQL语言?答:SQL(Structured Query Language)是用于与关系型数据库进行通信的标准化语言,可用于创建、查询、修改和管理数据库。

4. MySQL中的存储引擎有哪些?答:MySQL中常用的存储引擎有InnoDB、MyISAM、Memory等。

不同存储引擎具有不同的特点和适用场景。

二、高级知识类面试题及答案除了基础知识类题目外,MySQL的高级知识类题目也经常出现在面试中。

以下是一些高级知识类面试题及答案:1. 请介绍一下数据库的事务和ACID特性。

答:事务是指由一个或多个操作组成的逻辑工作单元,要么全部执行,要么全部不执行。

ACID特性是指事务必须具备的特性,包括原子性、一致性、隔离性和持久性。

2. 什么是索引?索引有什么作用?答:索引是一种数据结构,用于加快数据库表中数据的检索速度。

索引可以帮助数据库引擎快速定位到指定的数据行,提高检索效率。

3. MySQL中的锁机制有哪些?请分别介绍。

答:MySQL中的锁机制包括共享锁(读锁)和排他锁(写锁)。

常见SQL数据库面试题和答案

常见SQL数据库面试题和答案

常见SQL数据库面试题和答案(一)Student(S#,Sname,Sage,Ssex) 学生表 S#:学号;Sname:学生姓名;Sage:学生年龄;Ssex:学生性别Course(C#,Cname,T#) 课程表 C#,课程编号;Cname:课程名字;T#:教师编号SC(S#,C#,score) 成绩表 S#:学号;C#,课程编号;score:成绩Teacher(T#,Tname) 教师表 T#:教师编号; Tname:教师名字问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;select # from (select s#,score from SC where C#='001') a,(select s#,scorefrom SC where C#='002') bwhere > and #=#;2、查询平均成绩大于60分的同学的学号和平均成绩;select S#,avg(score)from scgroup by S# having avg(score) >60;3、查询所有同学的学号、姓名、选课数、总成绩;select #,,count#),sum(score)from Student left Outer join SC on #=#group by #,Sname4、查询姓“李”的老师的个数;select count(distinct(Tname))from Teacherwhere Tname like '李%';5、查询没学过“叶平”老师课的同学的学号、姓名;select #,from Studentwhere S# not in (select distinct( #) from SC,Course,Teacher where #=# and #=# and ='叶平');6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;select #, from Student,SC where #=# and #='001'and exists( Select * from SC as SC_2 where #=# and #='002');7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select S#,Snamefrom Studentwhere S# in (select S# from SC ,Course ,Teacher where #=# and #=# and ='叶平' group by S# having count#)=(select count(C#) from Course,Teacher where #=# and Tname='叶平'));8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;Select S#,Sname from (select #,,score ,(select score from SC SC_2 where #=# and#='002') score2from Student,SC where #=# and C#='001') S_2 where score2 <score;9、查询所有课程成绩小于60分的同学的学号、姓名;select S#,Snamefrom Studentwhere S# not in (select # from Student,SC where #=# and score>60);10、查询没有学全所有课的同学的学号、姓名;select #,from Student,SCwhere #=# group by #, having count(C#) <(select count(C#) from Course);11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;select S#,Sname from Student,SC where #=# and C# in select C# from SC where S#='1001';12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;select distinct #,Snamefrom Student,SCwhere #=# and C# in (select C# from SC where S#='001');13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;update SC set score=(select avgfrom SC SC_2where #=# ) from Course,Teacher where #=# and #=# and ='叶平');14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select S# from SC where C# in (select C# from SC where S#='1002')group by S# having count(*)=(select count(*) from SC where S#='1002');15、删除学习“叶平”老师课的SC表记录;Delect SCfrom course ,Teacherwhere #=# and #= # and Tname='叶平';16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、号课的平均成绩;Insert SC select S#,'002',(Select avg(score)from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分SELECT S# as 学生ID,(SELECT score FROM SC WHERE #=# AND C#='004') AS 数据库,(SELECT score FROM SC WHERE #=# AND C#='001') AS 企业管理,(SELECT score FROM SC WHERE #=# AND C#='006') AS 英语,COUNT(*) AS 有效课程数, AVG AS 平均成绩FROM SC AS tGROUP BY S#ORDER BY avg18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分SELECT # As 课程ID, AS 最高分, AS 最低分FROM SC L ,SC AS RWHERE # = # and= (SELECT MAXFROM SC AS IL,Student AS IMWHERE # = # and #=#GROUP BY #)AND= (SELECT MINFROM SC AS IRWHERE # = #GROUP BY #);19、按各科平均成绩从低到高和及格率的百分数从高到低顺序SELECT # AS 课程号,maxAS 课程名,isnull(AVG(score),0) AS 平均成绩,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数FROM SC T,Coursewhere #=#GROUP BY #ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数FROM SC。

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

数据库面试题:数据库的面试题及答案
疯狂代码 / ĵ:http://DataBase/Article25003.html
. 数据库切换日志的时候,为什么一定要发生检查点?这个检查点有什么意义?
答:触发dbwr的执行,dbwr会把和这个日志相关的所有脏队列写到数据文件里,缩短实例恢复所需要的时间。

2. 表空间管理方式有哪几种,各有什么优劣。

答:字典管理方式和本地管理方式,本地管理方式采用位图管理extent,减少字典之间的竞争,同时避免了碎片。

本地管理表空间与字典管理表空间相比,其优点如下:
1).减少了递归空间管理;
2).系统自动管理extents大小或采用统一extents大小;
3).减少了数据字典之间的竞争;
4).不产生回退信息;
5).不需合并相邻的剩余空间;
6).减少了空间碎片;
7).对临时表空间提供了更好的管理。

3. 本地索引与全局索引的差别与适用情况。

答:对于local索引,每一个表分区对应一个索引分区,当表的分区发生变化时,索引的维护由Oracle自动进行。

对于global索引,可以选择是否分区,而且索引的分区可以不与表分区相对应。

当对分区进行维护操作时
,通常会导致全局索引的INVALDED,必须在执行完操作后REBUILD。

Oracle9i提供了UPDATE GLOBAL INDEXES语句,可以使在进行分区维护的同时重建全局索引。

4. 一个表a varchar2(1),b number(1),c char(2),有100000条记录,创建B-Tree索引在字段a上,那么表与索引谁大?为什么?
答:这个要考虑到rowid所占的字节数,假设char总是占用2字节的情况,比较rowid,另外,table和index在segment free block的管理也有差别。

5. Oracle9i的data guard有几种模式,各有什么差别。

答:三种模式:
最大性能(maximize performance):这是data guard默认的保护模式。

primay上的事务commit前不需要从standby上收到反馈信息。

该模式在primary故障时可能丢失数据,但standby对primary的性能影响最小。

最大可用(maximize availability):在正常情况下,最大可用模式和最大保护模式一样;在standby不可用时
,最大可用模式自动最大性能模式,所以standby故障不会导致primay不可用。

只要至少有一个standby可用的情况下,即使primarydown机,也能保证不丢失数据。

最大保护(maximize protection):最高级别的保护模式。

primay上的事务在commit前必须确认redo已经传递到至少一个standby上,如果所有standby不可用,则primary会挂起。

该模式能保证零数据丢失。

6. 执行计划是什么,查看执行计划一般有哪几种方式。

答:执行计划是数据库内部的执行步骤:
set autotrace on
select * from table
alter session set event '10046 trace name context forever,level 12 ';
SYS.DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION=(SID,SERIAL#,TRUE);
一般采用pl/sql developer,再加个explain plan , v$sql_plan.
7. 简单描述一下nest loop与hash join的差别。

答:nest loop适用于返回结果比较小的情况。

for in 1...n loop
对小表进行遍历
根据小表的结果遍历大表(大表需要索引)
end loop
hash join适用在返回大结果集的情况。

8. db file sequential read与db file scattered read等待的差别,如果以上等待比较多,证明了什么问题? 答:db file sequential read-DB文件顺序读取,这一事件通常显示与单个数据块相关的读取操作(如索引读取)。

如果这个等待事件比较显著,可能表示在多表连接中,表的连接顺序存在问题,可能没有正确的使用驱动表;或者可能说明不加选择地进行索引。

在大多数情况下我们说,通过索引可以更为快速的获取记录,所以对于一个编码规范、调整良好的数据库,这个等待很大是很正常的。

但是在很多情况下,使用索引并不是最佳的选择
,比如读取较大表中大量的数据,全表扫描可能会明显快于索引扫描,所以在开发中我们就应该注意,对于这样的查询应该进行避免使用索引扫描。

db file sequential read-DB文件分散读取,这种情况通常显示与全表扫描相关的等待。

当数据库进行全表扫时,基于性能的考虑,数据会分散(scattered)读入Buffer Cache。

如果这个等待事件比较显著,可能说明对于某些全表扫描的表,没有创建索引或者没有创建合适的索引,我们可能需要检查这些数据表已确定是否进行了正确的设置。

然而这个等待事件不一定意味着性能低下,在某些条件下Oracle 会主动使用全表扫描来替换索引扫描以提高性能,这和访问的数据量有关,在CBO 下Oracle 会进行更为智能的选择,在RBO 下Oracle 更倾向于使用索引。

当这个等待事件比较显著时,可以结合v$session_longops 动态性能视图来进行诊断,该视图中记录了长时间(运行时间超过6 秒的)运行的事物,可能很多是全表扫描操作(不管怎样,这部分信息都是值得我们注意的)。

9. library cache pin与library cache lock是什么地方的等待事件,一般说明什么问题?
答:"LIBRARY CACHE PIN"通常是发生在编译或重新编译PL/SQL,VIEW,TYPES等object时.
10. 在一个24*7的应用上,需要把一个访问量很大的1000万以上数据级别的表的普通索引(a,b)修改成唯一约束(a,b,c),你一般会选择怎么做,请说出具体的操作步骤与语句。

答:不能确定,是否可以采用先建索引后建约束:
create index idx_w1 on w_1 (a,b,c) online ;
alter table w_1 add constraint uni_w1 unique (a,b,c) novalidate;
11. 如果一个linux上的oracle数据库系统突然变慢,你一般从哪里去查找原因。

答:1).用vmstat,iostat命令查看系统的负载(I/O读写是否严重,CPU是否空闲).
2).用top工具查看有哪些进程CPU占用率高;
3). 查询v$session_wait和v$system_event数据字典,找出当前比较严重的等待事件,并试图优化影响性能的SQL语句。

12. 说明一下对raid5与raid01/10的认识。

答:raid5采用校验信息,硬盘的利用率n-1/n, 以RAID5(4D+P)为例子来讲,使用4块磁盘存放数据位,使用
1块磁盘存放校验位。

其基本原理是这样的:根据条带化的数据4D(使用四位数据)生成一位的校验信息,存放在第五块磁盘中。

raid10先采用先镜像在进行条带化,是最高效的硬盘利用方式,硬盘的利用率50%,是一个Raid 0与Raid1的组合体,它是利用奇偶校验实现条带集镜像,所以它继承了Raid0的快速和Raid1的安全。

13. 列举5个10g的新特性.
答:1).自动共享内存(SGA)管理
2).自动存储管理(ASM)
3).ADDM和查询优化器
4).闪回表(flashback table)
5).Data Pump(expdp、impdp) 2008-11-28 11:36:26
疯狂代码 /。

相关文档
最新文档