数据库常见面试题20道

1.MySQL查询时,只有满足联接条件的记录才包含在查询结果,这种联接是(内联接)。

内联接:典型的联接运算,使用像 = 或 <> 之类的比较运算符。包括相等联接和自然联接。内联接使用比较运算符根据每一表共有的列的值匹配两个表中的行。例如,检索 students 和 courses 表中学生标识号相同的所有行。

外联接:外联接可以是左向外联接、右向外联接或完整外部联接。 
在FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:

交叉联接:交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称笛卡尔积。

2.数据库事务正确执行的四个基本要素

ACID — 数据库事务正确执行的四个基本要素

ACID,指数据库事务正确执行的四个基本要素的缩写。 
包含:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)

一个支持事务(Transaction)中的数据库系统,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易。

原子性:一个事务(Transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的默认规则,这包含资料的精准度、串联新以及后续数据库可以自发性地完成预定的工作。

隔离性:当两个或者多个事务并发访问(此处访问指查询和修改的操作)数据库的同一数据时所表现出的互相关系。事务隔离分为不同的级别,包括读为提交(Readuncommitted)、读提交(Read committed)、可重复读(Repeatable read)和串行化(Serializable)。

持久性:在事务完成以后,该事务对数据库所作的更改便持久地保存在数据库之中,而且是完全的。

由于一项操作通常会包含许多子操作,而这些子操作可能会因为硬件的损坏或其他因素产生问题,要正确实现ACID并不容易。ACID建议数据库将所有需要更新以及修改的资料一次操作完毕,但实际上并不可行。

 

3通过JDBC访问数据库包含下面哪几步?

 1. 加载JDBC驱动程序:

 2. 提供JDBC连接的URL  

 3. 创建数据库的连接 

 4. 创建一个Statement  

 5. 执行SQL语句  

 6. 处理结果  

 7. 关闭JDBC对象

4. 数据库运行于哪种状态下可以防止数据的丢失?

在archivelogmode只要其归档日志文件不丢失,就可以有效地防止数据丢失。

5. MySQL的操作

1.    如何登陆mysql数据库:

MySQL -u username -p

2.    如何开启/关闭mysql服务

service mysql start/stop

3.    查看mysql的状态

service mysql status

4.    如何显示所有数据库

show databases;

5.    进入数据库

usedb_name;

6.    显示所有表

show tables;

7.    获取表内所有字段对象名称和类型

desc table_name;

8.    MySQL支持事务吗?

在缺省模式下,MySQL是autocommit模式的,所有的数据库更新操作都会及时提交,所以在缺省情况下,mysql是不支持事务的。

6.索引的存储 

一条索引记录中包含的基本信息包括:键值(即你定义索引时指定的所有字段的值)+逻辑指针(指向数据页或者另一索引页)。

 

 

 

7.什么是事务?

事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。

8.数据库的乐观锁和悲观锁是什么?

数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。

乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。

·        悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作

·        乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。

9.使用索引查询一定能提高查询的性能吗?为什么

通常,通过索引查询数据比全表扫描要快.但是我们也必须注意到它的代价.

索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时,索引本身也会被修改. 这意味着每条记录的INSERT,DELETE,UPDATE将为此多付出4,5 次的磁盘I/O. 因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢.使用索引查询不一定能提高查询性能,索引范围查询(INDEX RANGE SCAN)适用于两种情况:

·        基于一个范围的检索,一般查询返回结果集小于表中记录数的30%

·        基于非唯一性索引的检索

简单说一说drop、delete与truncate的区别

SQL中的drop、delete、truncate都表示删除,但是三者有一些差别

·        delete和truncate只删除表的数据不删除表的结构

·        速度,一般来说: drop>truncate >delete 

·        delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;
如果有相应的trigger,执行的时候将被触发. truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger

10drop、deletetruncate分别在什么场景之下使用?

·        不再需要一张表的时候,用drop

·        想删除部分数据行时候,用delete,并且带上where子句

·        保留表而删除所有数据的时候用truncate

11超键、候选键、主键、外键分别是什么?

超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。

候选键:是最小超键,即没有冗余元素的超键。

主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。

外键:在一个表中存在的另一个表的主键称此表的外键。

12什么是视图?以及视图的使用场景有哪些?

视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。

·        只暴露部分字段给访问者,所以就建一个虚表,就是视图。

·        查询的数据来源于不同的表,而查询者希望以统一的方式查询,这样也可以建立一个视图,把多个表查询结果联合起来,查询者只需要直接从视图中获取数据,不必考虑数据来源于不同表所带来的差异

13说出数据连接池的工作机制是什么
J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。 
实现方式,返回的Connection是原始Connection的代理,代理Connectionclose方法不是真正关连接,而是把它代理的Connection对象还回到连接池中。

14事务的ACID是指什么 
原子性(atomicity):一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可以只执行其中的一部分操作。 
一致性(consistency):数据库总是从一个一致性的状态转换到另一个一致性的状态。 
隔离性(isolation):通常来说,一个事务所做的修改在最终提交之前,对其他事务是不可见的。 
持久性(durability):一旦事务提交,则其所做的修改就会永久保存到数据库中

15游标的含义及分类?

含义:游标是一种处理数据的方法,主要用于存储过程、触发器和Transact-SQL脚本中,在查看或处理结果集中的数据时,游标可以提供在结果集中向前或向后浏览数据的功能。

分类:Transact-SQL游标、应用程序编程接口(API)服务器游标、客户端游标

16.使用游标的基本步骤有哪些?

1.声明游标2.打开游标3.读取游标中的数据4.关闭游标5.释放游标

17简述什么是批处理及其特点?

一组单条或者多条T-SQL语句,为一个整体目标同时执行。批处理可以节省系统开销。GO命令表示批处理结束,如果脚本中没有GO命令,作为单个批处理执行

18 varchar 和char 区别

char是一种固定长度类型,varchar是一种可变长度类型

19. mysql 与其他数据库比较的特点

mysql 是一个小型的关系型数据库管理系统,支持Linux,mac,windows等操作系统,与oracle,sqlserver,db2相比功能较弱

1.sql server 只能在Windows 上运行,开放性不够,但真正的c/s,图形化用户界面,有丰富的编程接口,与windNt完全集成,处理速度快一些,可以跨平台使用,具体的一些命令有所不同 比如分页 可以用 top

2.oracle 稳定性、安全机制,大数据方面,缺点价格昂贵,分页用 rownum

3.mysql 支持5000万条记录的数据仓库,适应所有平台,开源,缺省的桌面格式是MyISAM。MyISAM数据库 与磁盘非常地兼容而不占用过多的CPU和内存。缺点:不支持热备份系统正常运行时的备份),安全系统复杂而非标准;

20. mysql 数据表修复及数据恢复

服务器突然断电,强制关机之前没有关闭mysql服务。

 

 

 

  • 8
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值