mysql中只运行一部分数据_MySQL(一)——MySQL基础和部分面试题

本文介绍了MySQL的基础操作,包括数据库和表的创建与删除,以及增删改查操作。同时,文章还讨论了MySQL查询缓存的优缺点、关闭方法,以及一些常见的面试题,如事务的特性、自增主键的连续性、表空间管理和收缩、覆盖索引等概念。
摘要由CSDN通过智能技术生成

MySQL基础:

数据库的创建与删除

CREATE DATABASE ;//创建数据库

DROP DATABASE ;//删除数据库

数据库表的创建与删除

CREATE TABLE (column_name column_type);//创建表

DROP TABLE ;//删除表

增删改查

查询语句

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基础面试题

说一下MySQL执行一条查询语句的内部执行过程?

答:

1)客户端先通过连接器连接到MySQL服务器

2)连接器权限验证通过后,先查询是否有查询缓存,如果有缓存(之前执行过此语句)则直接返回缓存数据,如果没有则进入分析器

3)分析器对查询语句进行语法分析和词法分析,判断SQL语法是否正确,如果查询语法错误会直接返回客户端错误信息,如果语法正确则进入优化器

4)优化器对查询语句进行优化处理,例如一个表里有多个索引,优化器会判别哪个索引性能更好

5)优化器执行完进入执行器,执行器对语句进行查询对比,查到满足条件的所有数据然后返回

MySQL查询缓存功能有何优缺点?

答:

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

如何关闭MySQL的查询缓存功能?

答:

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

MySQL可以针对表级别设置数据库引擎吗?怎么设置?

答:

可以针对不同的表设置不同的引擎。在CREATE TABLE语句中使用ENGINE=引擎名(比如Memory)来设置表的存储引擎:

CREATE TABLE student(

id int PRIMARY KEY auto_increment,

username varchar(120),

age int

)ENGINE=Memory

常用的存储引擎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

什么是事务?特性?

答:

事务是一系列的数据库操作,是数据库的基本单位

事务的四个特性:

1)原子性。要么全部执行,要么全部不执行

2)一致性。事务的执行使得数据库从一种正确状态转化为另一种正确状态

3)隔离型。事务正确提交之前,不允许把该事务对数据的改变提供给其他事务

4)持久性。事务提交后,结果永远保存于数据库中

一张自增表中有三条数据,删除了两条数据之后重启数据库,再新增一条数据,此时数据的ID是几?

答:

如果这张表的引擎是MyISAM,那么ID=4;如果是InnoDB,那么ID=2

MySQL中什么情况会导致自增主键不能连续?

答:

1)唯一主键冲突会导致自增主键不连续

2)事务回滚也会导致自增主键不连续

什么事独立表空间和共享表空间?它们的区别是?

答:

独立表空间:指的是数据库中所有的数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在data目录下

独立表空间:每一个表都会生成以独立的文件方式来存储

共享表空间和独立表空间的最大区别是如果把表放在共享表空间,即使表删除了空间也不会删除,所以表依然很大,而独立表空间如果删除表就会清楚空间

如何设置独立表空间?

答:

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

如何进行表空间收缩?

答:

使用重建表的方式可以收缩表空间:

1)alter table t engine=InnoDB

2)optmize table t

3)truncate table t

重建表的执行流程?

答:

1)建立一个临时文件,扫描表t主键的所有数据页

2)用数据页中表t的记录生成B+树,存储到临时文件中

3)生成临时文件的过程中,将所有对t的操作记录在一个日志文件(row log)中

4)临时文件生成后,将日志文件中的操作应用到临时文件,得到一个逻辑数据上与表t相同的数据文件

5)用临时文件替换表t的数据文件

表的结构信息存在哪里?

答:

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

什么是覆盖索引?

答:

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

如果把一个InnoDB表的主键删掉,是不是就没有主键,就没办法进行回表查询了?

答:

可以回表查询,如果把主键删掉了,那么InnoDB会自己生成一个长度为6字节的rowid作为主键

内存表和临时表有什么区别?

答:

内存表,指的是使用Memory引擎的表,。这种表的数据都保存在内存里,系统重启的时候会被清空,但是表结构还在

临时表,可以使用各种引擎类型。如果是使用InnoDB引擎或者MyISAM引擎的临时表,写数据的时候是写到磁盘上的

并发事务会带来哪些问题?

答:

修改丢失、脏读、不可重复读、幻读

VARCHAR和CHAR的区别是什么?

答:

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

MySQL 存储金额应该使用哪种数据类型?

答:

应该使用decimal,因为如果存储其他数据类型比如float,有导致小数点后数据丢失

的风险

删除表的数据有几张方式?区别是?

答:

有两种方式: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;

MySQL支持几种模糊查询?它们的区别是?

答:

支持两种模糊查询:regexp和like

like是对任意多字符匹配或任意单字符进行模糊匹配,而regexp则支持正则表达式的匹配方式

count(column)和count()有什么区别?

答:

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值