面试的数据库问题.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面试的数据库问题

Java 线程和并发 实物的特性 ACID: 原子性(atomicity):一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可以只执行其中的一部分操作。 一致性(consistency):数据库总是从一个一致性的状态转换到另一个一致性的状态。 隔离性(isolation):通常来说,一个事务所做的修改在最终提交之前,对其他事务是不可见的。 持久性(durability):一旦事务提交,则其所做的修改就会永久保存到数据库中。 关系型数据库的一些概念 ======================================================================================== ?????? 隔离级别?????????????? 脏读(Dirty Read)????????? 不可重复读(NonRepeatable Read)???? 幻读(Phantom Read)? ======================================================================================== 未提交读(Read uncommitted?????????? 可能??????????????????????????? 可能?????????????????????? 可能 已提交读(Read committed)????????? 不可能????????????????????????? 可能??????????????????????? 可能 可重复读(Repeatable read)????? ? ? 不可能????????????????????????? 不可能???????????????????? 可能 可串行化(Serializable )??????? ? ? ? ? 不可能????????????????????????? 不可能???????????????????? 不可能 ·未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据 ·提交读(Read Committed):只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别 (不重复读) ·可重复读(Repeated Read):可重复读。在同一个事务内的查询都是事务开始时刻一致的,InnoDB默认级别。在SQL标准中,该隔离级别消除了不可重复读,但是还存在幻象读 ·串行读(Serializable):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞 用例子说明各个级别的情况: ① 脏读:?脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。 ② 不可重复读:是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。 ④ 幻读:第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。 1.3 MySQL mysql -u root -p 直接回车,无需输入密码就可以进入数据库了。 //创建用户 mysql insert into mysql.user(Host,User,Password) values(localhost,phplamp,password(1234)); //刷新系统权限表 mysqlflush privileges; 这样就创建了一个名为:phplamp ?密码为:1234 ?的用户。 //退出后登录一下 mysqlexit; @mysql -u phplamp -p @输入密码 mysql登录成功 show create table seckill\G show databases; 显示数据库? create database name; 创建数据库? use databasename; 选择数据库? drop database name 直接删除数据库,不提醒? show tables; 显示表? describe tablename; 显示具体的表结构? 命令:show databases (注意:最后有个s) mysql sh

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档