数据库面试题目Mysql-基础篇

参考地址

1.SQL语言共分为哪四大类

查询语言DQL

SELECT FROM WHERE

数据操纵语言DML

插入:INSERT
更新:UPDATE
删除:DELETE

数据定义语言DDL

CREATE TABLE/VIEW/INDEX/SYN/CLUSTER

数据控制语言DCL

GRANT:授权。
ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。回滚—ROLLBACK;回滚命令使数据库状态回到上次最后提交的状态。其格式为:
SQL>ROLLBACK;
COMMIT [WORK]:提交。

2.where、jion、limit、group by、having等执行先后顺序?

1.查询中用到的关键词主要包含六个,并且他们的顺序依次为 select–from–where–group by–having–order by
其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序 与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行
**from:**需要从哪个数据表检索数据
**where:**过滤表中数据的条件
**group by:**如何将上面过滤出的数据分组
**having:**对上面已经分组的数据进行过滤的条件
**select:**查看结果集中的哪个列,或列的计算结果
**order by 😗*按照什么样的顺序来查看返回的数据

2.from后面的表关联,是自右向左解析 而where条件的解析顺序是自下而上的。
也就是说,在写SQL语句的时候,尽量把数据量小的表放在最右边来进行关联(用小表去匹配大表),而把能筛选出小量数据的条件放在where语句的最左边 (用小表去匹配大表)

3.触发器的作用?什么是存储过程。

触发器是一种特殊的存储过程,主要是通过事件来触发执行的。
储存过程是一个预编译的sql语句,只需要创建一次,就可以在程序中多次调用,可以供外部的c#,java等程序调用。
缺点:移植性差,代码写在数据库中。

4.什么叫视图?

一种虚拟的表,可以进行查询,对于进行多表查询,使得我们获取数据更容易。
优点:查询简单,事先定义好视图,程序中不需要写多余的sql。
缺点:多表联合的视图,修改需要通过表修改,不能通过视图来修改。

5.drop、truncate、 delete区别

drop是直接删除整个表
truncate是删除整个表的数据,id重新从1开始
delete是删除表的某些数据,可以加where条件,自增不会删除。

delete语句每次操作有日志记录,是可以恢复的,truncate,drop是不可恢复的

6 count(*)、count(1)、count(column)的区别

count(*)和count(1)是一样的,列出所有数目,包括null
count(column)s列出对应字段的列数,不包括null

如果表没有主键,那么count(1)比count()快。
如果有主键,那么count(主键,联合主键)比count(
)快。
如果表只有一个字段,count(*)最快。

7.临时表

临时表只在当前连接可见,当关闭连接时,MySQL会自动删除表并释放所有空间

8 like %和-的区别

模糊查询 %是任意字符出现任意的次数 比如 like’%a‘只要有a就行 可以是iiiajjj
但是-只能代表一个 比如like’-a‘ 只能是 ia 这种 限定了长度

9.什么是 内连接、外连接、交叉连接、笛卡尔积等?

A 五条记录 B 七条记录 id关联四条
内连接:只连接匹配的,查询出来就是四条
左外连接:左边全部,右边只匹配的 查询出来是五条记录 不匹配的字段为null
右外连接:右边全部,左边只匹配的,查询出来是七条记录,不匹配的字段为null
交叉连接:就是相乘 三十五条记录 叫笛卡尔积

10 MySQL 的逻辑架构了解吗?

主要分为三层

第一层:服务层,主要提供连接处理,授权认证,安全等功能
第二层:主要实现核心功能,查询语句解析,日志,存储过程等,还有一些日期的函数。
第三层:引擎层,InnoDB 只要用户存储和提取数据。

11.存储引擎InnoDB、MyISAM、MEMORY的区别?

InnoDB 是mysql默认的存储引擎,用来处理短期的大量的事务,采用mvcc来支持高并发,没有

MyISAM在mysql5.1之前默认得存储引擎,但是不支持事务和行锁,所以在数据可以接受得情况下性能比较优异。

Memory 如果需要快速访问数据且这些数据不会被修改,重启以后丢失也没有关系,那么使用 Memory 表是非常有用的。因为所有数据都保存在内存,不需要磁盘 IO,Memory 表的结构在重启后会保留,但数据会丢失。

三者比较

1.InnoDB支持事务,MyISAM不支持, **这一点是非常之重要。**事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了。
2.MyISAM适合查询以及插入为主的应用。
3.InnoDB适合频繁修改以及涉及到安全性较高的应用。
Memory 就显然是,不能被存储数据。但是速度很快。

12.事务得特性

事务是一组sql查询,如果一个失败了,所有得sql都不会被执行,也就是说一组事务要么全部被执行成功,要么被全部执行失败。
事务得特性

原子性:一个事务是一组sql得最小单位,不可以分割,也就是说要么全部成功,要么全部回滚。
一致性:数据库总是从一个一致性的状态转换到另一个一致性的状态。
隔离性:一个事务得修改,在成功之前对其他事务是不可见的。
持久性:一旦事务提交成功,其修改就会永久保存到数据库中

13 事务的并发 脏读 幻读 不可重复读

一般来说,事务是隔离的,但是对于性能会收到影响,所以会按照隔离级别进行隔离,在并发的情况下可能就会遇到一些问题

脏读:a读到b的更新的数据,但是b发生回滚了,a读到的就是脏数据。
不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果因此本事务先后两次读到的数据结果会不一致。
幻读解决了不重复读,保证了同一个事务里,查询的结果都是事务开始时的状态(一致性)

可重复读 REPEATABLE READ(MySQL默认的隔离级别)

14.VARCHAR 和 CHAR 的区别?

char的长度是不可变的,而varchar的长度是可变的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值