MySQL(一)——MySQL基础和部分面试题

MySQL基础:

  1. 数据库的创建与删除
CREATE DATABASE <数据库名>;//创建数据库
DROP DATABASE <数据库名>;//删除数据库
  1. 数据库表的创建与删除
CREATE TABLE <数据表名>(column_name column_type);//创建表
DROP TABLE <数据表名>;//删除表
  1. 增删改查
  • 查询语句
SELECT [DISTINCT|ALL]<目标列组>
FROM <基本表名>
[WHERE <行条件表达式>]
[GROUP BY <分组列名> [HAVING<组条件表达式>]]
[ORDER BY <排序列名> [ASC|DESC]]
//例:查询学生成绩表SC里平均成绩低于80分的学生学号Snum和平均成绩,并按平均成绩降序排列
SELECT Snum AS 学号,AVG(Score) AS 平均成绩
FROM SC
GROUP BY Snum
HAVING AVG(Score)<80 DESC;
  • 插入数据
INSERT INTO <表名>[(A1,A2,A3...)]
VALUES (v1,v2,v3...);
//例 :向表学生S中添加一位学生的数据
INSERT INTO S(Snum,Sname,Ssex,Sage,Sphone)
VALUES("0001","张三",18,"男","88888888");
  • 更新数据
UPDATE <表名>
SET <列名>=<表达式>
[WHERE <条件>]
//例:将张三的年龄改为20
UPDATE S
SET Sage=20
WHERE Sname="张三";
  • 删除数据
DELETE FROM <表名>
[WHERE <条件>]
//例:删除学生张三的信息
DELETE FROM S
WHERE Sname="张三";

MySQL基础面试题

  1. 说一下MySQL执行一条查询语句的内部执行过程?
    答:
    1)客户端先通过连接器连接到MySQL服务器
    2)连接器权限验证通过后,先查询是否有查询缓存,如果有缓存(之前执行过此语句)则直接返回缓存数据,如果没有则进入分析器
    3)分析器对查询语句进行语法分析和词法分析,判断SQL语法是否正确,如果查询语法错误会直接返回客户端错误信息,如果语法正确则进入优化器
    4)优化器对查询语句进行优化处理,例如一个表里有多个索引,优化器会判别哪个索引性能更好
    5)优化器执行完进入执行器,执行器对语句进行查询对比,查到满足条件的所有数据然后返回

  2. MySQL查询缓存功能有何优缺点?
    答:
    MySQL查询缓存功能是在连接器之后发生的,它的优点是效率高,如果已经有缓存则直接返回结果。缺点是失效太频繁导致缓存的命中率较低,任何更新表操作都会清空查询缓存,一次查询缓存非常容易失效

  3. 如何关闭MySQL的查询缓存功能?
    答:
    MySQL查询缓存功能是默认开启的,配置querycachetyoe参数为DEMAND(按需使用)关闭查询缓存,MySQL8.0之后没有查询缓存功能

  4. MySQL可以针对表级别设置数据库引擎吗?怎么设置?
    答:
    可以针对不同的表设置不同的引擎。在CREATE TABLE语句中使用ENGINE=引擎名(比如Memory)来设置表的存储引擎:

CREATE TABLE student(
     id int PRIMARY KEY auto_increment,
     username varchar(120),
     age int
)ENGINE=Memory
  1. 常用的存储引擎InnoDB和MyISAM有什么区别?
    答:
    最大的区别是InnoDB支持事务,而MyISAM不支持事务。主要区别如下:
    1)InnoDB支持崩溃后安全恢复,MyISAM不支持崩溃后安全恢复
    2)InnoDB支持行级锁,MyISAM不支持行级锁,只支持到表锁
    3)InnoDB支持外键,MyISAM不支持外键
    4)MyISAM性能比InnoDB高
    5)MyISAM支持FULLTEXT类型的全文索引,InnoDB不支持FULLTEXT类型的全文索引,但是InnoDB可以使用sphinx插件支持全文索引,并且效果更好
    6)InnoDB主键查询性能高于MyISAM

  2. 什么是事务?特性?
    答:
    事务是一系列的数据库操作,是数据库的基本单位
    事务的四个特性:
    1)原子性。要么全部执行,要么全部不执行
    2)一致性。事务的执行使得数据库从一种正确状态转化为另一种正确状态
    3)隔离型。事务正确提交之前,不允许把该事务对数据的改变提供给其他事务
    4)持久性。事务提交后,结果永远保存于数据库中

  3. 一张自增表中有三条数据,删除了两条数据之后重启数据库,再新增一条数据,此时数据的ID是几?
    答:
    如果这张表的引擎是MyISAM,那么ID=4;如果是InnoDB,那么ID=2

  4. MySQL中什么情况会导致自增主键不能连续?
    答:
    1)唯一主键冲突会导致自增主键不连续
    2)事务回滚也会导致自增主键不连续

  5. 什么事独立表空间和共享表空间?它们的区别是?
    答:
    独立表空间:指的是数据库中所有的数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在data目录下
    独立表空间:每一个表都会生成以独立的文件方式来存储
    共享表空间和独立表空间的最大区别是如果把表放在共享表空间,即使表删除了空间也不会删除,所以表依然很大,而独立表空间如果删除表就会清楚空间

  6. 如何设置独立表空间?
    答:
    独立表空间是由参数innodb fileper_table控制的,把它设置成ON就是独立表空间了。在MySQL5.6.6版本之后,这个值默认为ON

  7. 如何进行表空间收缩?
    答:
    使用重建表的方式可以收缩表空间:
    1)alter table t engine=InnoDB
    2)optmize table t
    3)truncate table t

  8. 重建表的执行流程?
    答:
    1)建立一个临时文件,扫描表t主键的所有数据页
    2)用数据页中表t的记录生成B+树,存储到临时文件中
    3)生成临时文件的过程中,将所有对t的操作记录在一个日志文件(row log)中
    4)临时文件生成后,将日志文件中的操作应用到临时文件,得到一个逻辑数据上与表t相同的数据文件
    5)用临时文件替换表t的数据文件

  9. 表的结构信息存在哪里?
    答:
    MySQL8之前,表结构的定义信息存在以.frm为后缀的文件里;MySQL8之后,允许把表结构的定义信息存在系统数据表中

  10. 什么是覆盖索引?
    答:
    覆盖索引是指,索引上的信息足够满足查询请求,不需要再回到主键上去取数据

  11. 如果把一个InnoDB表的主键删掉,是不是就没有主键,就没办法进行回表查询了?
    答:
    可以回表查询,如果把主键删掉了,那么InnoDB会自己生成一个长度为6字节的rowid作为主键

  12. 内存表和临时表有什么区别?
    答:
    内存表,指的是使用Memory引擎的表,。这种表的数据都保存在内存里,系统重启的时候会被清空,但是表结构还在
    临时表,可以使用各种引擎类型。如果是使用InnoDB引擎或者MyISAM引擎的临时表,写数据的时候是写到磁盘上的

  13. 并发事务会带来哪些问题?
    答:
    修改丢失、脏读、不可重复读、幻读

  14. VARCHAR和CHAR的区别是什么?
    答:
    VARCHAR和CHAR最大的区别是,VARCHAR的长度是可变的,CHAR是固定长度。所以CHAR适合存储长度较短的字段和固定长度的字段比如身份证号、手机号等。反之则适合用VARCHAR

  15. MySQL 存储金额应该使用哪种数据类型?
    答:
    应该使用decimal,因为如果存储其他数据类型比如float,有导致小数点后数据丢失
    的风险

  16. 删除表的数据有几张方式?区别是?
    答:
    有两种方式:delete和truncate,区别如下:
    1)delete可以添加where条件删除部分数据,truncate不能添加where条件,只能删除整张表
    2)delete的删除信息会在MySQL的日志中记录,而truncate的删除信息不回被记录。因此delete的信息可以被找回,而truncate的信息无法被找回
    3)truncate因为不记录日志所以执行效率比delete快

delete from t where id=1;
truncate table t;
  1. MySQL支持几种模糊查询?它们的区别是?
    答:
    支持两种模糊查询:regexp和like
    like是对任意多字符匹配或任意单字符进行模糊匹配,而regexp则支持正则表达式的匹配方式

  2. count(column)和count()有什么区别?
    答:
    最大的区别是统计结果可能不一致,count(column)统计不会统计列值为null的数据,而count(*)则会统计所有信息

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339