Java面试题(每天10题)-------连载(38)

目录

Mysql篇

1、Mysql支持事务吗?

2、Mysql里记录货币用什么字段类型好?

3、Mysql数据表在什么情况下容易损坏?

4、Mysql有关权限的表有哪几个? 

5、Mysql中有哪几种锁?

6、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15.16.17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15?

7、Mysql的技术特点是什么?

8、Heap表是什么?

9、与Oracle相比,Mysql有什么优势?

10、如何区分FLOAT和DOUBLE?


Mysql篇

1、Mysql支持事务吗?

在缺省模式下, MYSQL autocommit 模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,mysql 是不支持事务的。
但是如果你的 MYSQL 表类型是使用 InnoDB Tables BDB tables 的话,你的 MYSQL 就可以使用事务处理, 使用 SET AUTOCOMMIT=0 就可以使 MYSQL 允许在非 autocommit 模式,在非autocommit 模式下,你必须使用 COMMIT 来提交你的更改,或者用 ROLLBACK 来回滚你的更改。
示例如下:
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summmary=@A WHERE type=1;
COMMIT;

2、Mysql里记录货币用什么字段类型好?

NUMERIC DECIMAL 类型被 Mysql 实现为同样的类型,这在 SQL92 标准允许。他们被用于保存值,该值的准确精度是极其重要的值,例如与金钱有关的数据。当声明一个类是这些类型之一时,精度和规模的能被(并且通常是 ) 指定;点击这里有一套最全阿里面试题总结。
例如:
salary DECIMAL(9,2)
在这个例子中, 9(precision) 代表将被用于存储值的总的小数位数,而 2(scale) 代表将被用于
存储小数点后的位数。
因此,在这种情况下,能被存储在 salary 列中的值的范围是从 -9999999.99 9999999.99
ANSI/ISO SQL92 中,句法 DECIMAL(p) 等价于 DECIMAL(p,0)
同样,句法 DECIMAL 等价于 DECIMAL(p,0) ,这里实现被允许决定值 p Mysql 当前不支持
DECIMAL/NUMERIC 数据类型的这些变种形式的任一种。
这一般说来不是一个严重的问题,因为这些类型的主要益处得自于明显地控制精度和规模
的能力。

DECIMAL NUMERIC 值作为字符串存储,而不是作为二进制浮点数,以便保存那些值的小数精度。
一个字符用于值的每一位、小数点 ( 如果 scale>0) 和“ - ”符号 ( 对于负值 ) 。如果 scale 0
DECIMAL NUMERIC 值不包含小数点或小数部分。
DECIMAL NUMERIC 值得最大的范围与 DOUBLE 一样,但是对于一个给定的 DECIMAL 或NUMERIC 列,实际的范围可由制由给定列的 precision scale 限制。
当这样的列赋给了小数点后面的位超过指定 scale 所允许的位的值,该值根据 scale 四舍五入。
当一个 DECIMAL NUMERIC 列被赋给了其大小超过指定 ( 或缺省的) precision scale 隐含的范围的值,Mysql 存储表示那个范围的相应的端点值。
我希望本文可以帮助你提升技术水平。那些,感觉学的好难,甚至会令你沮丧的人,别担心,我认为,如果你愿意试一试本文介绍的几点,会向前迈进,克服这种感觉。这些要点也许对你不适用,但你会明确一个重要的道理:接受自己觉得受困这个事实是摆脱这个困境的第一步。

3、Mysql数据表在什么情况下容易损坏?

服务器突然断电导致数据文件损坏。
强制关机,没有先关闭 mysql 服务等。

4、Mysql有关权限的表有哪几个? 

Mysql 服务器通过权限表来控制用户对数据库的访问,权限表存放在 mysql 数据库里,由
mysql_install_db 脚本初始化。这些权限表分别 user db table_priv columns_priv
host

5、Mysql中有哪几种锁?

MyISAM 支持表锁, InnoDB 支持表锁和行锁,默认为行锁
表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并发量最低
行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最高

6、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15.16.17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15?

 (1)如果表的类型是MylSAM,那么是18
因为MyISAM表会把自增主键的最大ID记录到数据文件里,重启MySQL自增主键的最大ID也不会丢失。

(2)如果表的类型是InnoDB,那么是15

lnnoDB表只是把自增主键的最大ID记录到内存中,所以重启数据库或者是对表进行OPTIMIZE操作,都会导致最大ID丢失。

7、Mysql的技术特点是什么?

Mysql 数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程 SQL 服务器、不同的后端、广泛的应用程序编程接口和管理工具。

8、Heap表是什么?

HEAP 表存在于内存中,用于临时高速存储。
  • BLOB 或 TEXT 字段是不允许的
  • 只能使用比较运算符=,<,>,=>,= <
  • HEAP 表不支持 AUTO_INCREMENT
  • 索引不可为 NULL

9、与Oracle相比,Mysql有什么优势?

  • Mysql 是开源软件,随时可用,无需付费。
  • Mysql 是便携式的
  • 带有命令提示符的 GUI。
  • 使用 Mysql 查询浏览器支持管理

10、如何区分FLOAT和DOUBLE?

以下是 FLOAT 和 DOUBLE 的区别:
浮点数以 8 位精度存储在 FLOAT 中,并且有四个字节。
浮点数存储在 DOUBLE 中,精度为 18 位,有八个字节。

你可能感兴趣的:(java,开发语言)