JAVA后端面试-数据库

290 阅读6分钟
  • 多写写多看看

1.如何创建和删除数据库

创建:cerate database

删除:drop database

2.char与varchar的区别

char:固定长度的字符串类型

varchar():可变长度的字符串类型

3.建表语句中varchar(50)的意思

字段最多放置50个字符

4..int(10)的意思

INT[(M)][UNSIGNED][ZEROFILL] M的默认为11,指最大显示宽度,最大值为255

int(10),字段存的值是10,显示会自动补8个0,即0000000010

int类型在数据库里面存储占4个字节

  • 有符号的整型范围:-2147483648 ~ 2147483647
  • 无符号:0 ~ 4294967295

5.MYSQL如何获取当前日期

select current_date();

6.获取MYSQL版本

select version();

7.什么是触发器?MYSQL都有哪些触发器?

触发器是指一段代码,当触发某个事件时,自动执行这些代码

MYSQL数据库的六种触发器

1.Before Insert

2.After Insert

3.Before Update

4.After Update

5.Befre Delete

6.After Delete

使用场景:

  • 可以通过数据库中的相关表实现级联更改
  • 实时监控表中字段的更改做出相应处理

8.MYSQL显示表前50行

select * from tablename limit 0,50;

9.如何连接MySQL服务端、关闭连接?

连接:使用指令mysql -u -p -h -P(-u:指定用户名 -p:指定密码 -h:主机 -P:端口)连接MYSQL服务端

关闭:使用指令exit或quit

10.说一说MYSQL中的事务

事务四大特性:

1.原子性:一个事务中所有操作,要么全部完成,要么全部不完成

2.一致性:事务开始前和结束后,数据库的完整性没有破坏

3.隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行而导致数据不一致

4:持久性:事务处理结束后,对数据的修改是永久的

事务处理方法: 1.用begin,rollback,commit来实现

  • begin开始事务
  • rollback事务回滚
  • commit事务确认

2.直接用set来改变提交模式

  • set autocommit=0禁用自动提交
  • set autocommit=1开启自动提交

11.MYSQL中text数据类型的最大长度

  • tinytext:256 bytes
  • text:64kb
  • mediumtext:16Mb
  • longtext:4GB

12.Mysql中有哪些时间字段

好多

占用空间

  • datetime:8bytes
  • timestamp:4bytes
  • date:4bytes
  • time: 3bytes
  • year:1bytes

日期格式

  • datetime:yyyy-mm-dd hh:mm:ss
  • timestamp:yyyy-mm-dd hh:mm:ss
  • date:yyyy-mm-dd
  • year:yyyy
  • time:hh:mm:ss

最小值

  • DATETIME:1000-01-01 00:00:00
  • TIMESTAMP:1970-01-01 00:00:01 UTC
  • DATE:1000-01-01
  • TIME:-838:59:59
  • YEAR:1901

最大值

  • DATETIME:9999-12-31 23:59:59
  • TIMESTAMP:2038-01-19 03:14:07 UTC
  • DATE:9999-12-31
  • TIME:838:59:59
  • YEAR:2125

零值

  • DATETIME:0000-00-00 00:00:00
  • TIMESTAMP:1970-01-01 00:00:01 UTC
  • DATE:0000-00-00
  • TIME:00:00:00
  • YEAR:0000

13.MYSQL中datetime和timestamp的区别

存储精度都为秒

区别:

  • datetime 日期范围1001-9999年,timestamp的时间范围1970-2038
  • datetime存储时间与时区无关;timestamp存储时间与时区有关,显示值也依赖于时区
  • datetime的存储空间为8bytes;timestamp存储为4bytes
  • datetime默认值为null;timestamp默认不为空,默认值是当前时间

14.Innodb引擎有什么特性?

  • 插入缓冲
  • 二次写
  • 自适应哈希索引
  • 预读

15.什么是索引?什么场景使用?

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息

使用场景

  • 中到大数据表适合
  • 小数据表,大部分情况全表扫描效率更高
  • 特大数据表。建立和使用索引的代价随之增大,适合分区或分库

16.索引的种类

  • 普通索引:最基本的索引,没有任何限制
  • 唯一搜索:和普通搜索类似,但具有唯一性约束,可以有null
  • 主键索引:特殊的唯一索引,不允许有null,一张表最多有一个主键索引
  • 组合索引:多列值组成一个索引,用于组合搜索,效率大于索引合并
  • 全文索引:对文本的内容进行分词、搜索
  • 覆盖索引:查询列要被所建的索引覆盖,不必读取数据

17.索引如何创建于删除?

  • 创建单个字段索引:create index 索引名 on 表名(字段名)
  • 创建联合索引: create index 索引名 on 表明(字段名1,字段名2)
  • 索引命名格式:idx_表名_字段名。有长度限制
  • 删除索引:drop index 索引名 on 表名

18.索引对性能有哪些影响

优点

  • 减少数据库服务器需要扫描的数据量
  • 帮助数据库服务器避免排序和临时表
  • 将随机I/O变顺序I/O
  • 提高查询速度
  • 唯一索引,能保证数据唯一性

缺点

  • 索引的创建和维护好事随着数据量增加而增加
  • 对表中数据进行增删改时,索引也要动态维护,降低了数据的维护速度
  • 增大磁盘占用

19.MYSQL创建和使用索引注意事项

  • 适合创建索引的列是出现在where和欧尼自居中的列,而不是出现在select关键字后的列
  • 索引列的基数越大,数据区分度越高,索引效果越好
  • 对字符串列进行索引,可制定一个前缀长度,节省索引空间
  • 避免创建过多的索引,索引会额外占用磁盘空间,降低写操作效率
  • 主键尽可能选择较短的数据类型,可减少索引的磁盘空间,提高查询效率
  • 联合索引遵循前缀原则
  • line查询,%在前不到索引(这句看不懂),可考虑使用ElasticSearch、Lucene等引擎
  • MYSQL在数据量较少的情况下可能回不使用索引,因为全表扫描比使用索引速度快
  • 关键词or前面的条件中的列有索引,后面的没有,所有列的索引都不会被用到
  • 列类型是字符串,查询时一定要给值加引导,否则索引失败
  • 联合索引要遵从最左前缀原则,否则不会用到索引

20.创建MYSQL联合索引应该注意什么?

  • 联合索引要遵循最左前缀原则,否则不会用到索引
  • MYSQL从左到右的使用索引中的字段,一个查询可以只使用索引中的一部分,但是只能最左侧
  • 如索引index(a,b,c),可以支持a或a,b或a,b,c 3中组合查询,但不支持b,c进行查找