mysql面试题 常用函数_MySQL常见面试题
01. 列举常见的关系型数据库和非关系型都有那些?
关系型:Oracle、DB2、Microsoft SQL Server、MySQL、SQLite
非关系型:Redis、Hbase、MongodDB
02. MySQL常见数据库引擎及比较?
03. 简述数据三大范式?
04. 什么是事务?MySQL如何支持事务?
05. 简述数据库设计中一对多和多对多的应用场景?
一对多:学生与班级---一个学生只能属于一个班级,一个班级可以有多个学生
多对多:学生与课程---一个学生可以选择多个课程,一个课程也可以被多个学生选择
一对多把一写在多中,多对多把两者的关系另外建一张表联系起来
06. 如何基于数据库实现商城商品计数器?
创建一个商城表---包含(id,商品名,每一个商品对应数量)
create tableproduct(
idprimary keyauto_increment,
pnamevarchar(64),
pcountint);
07. 简述触发器、函数、视图、存储过程?
触发器:触发器是一个特殊的存储过程,它是MySQL在insert、update、delete的时候自动执行的代码块。
create triggertrigger_name
after/before insert /update/delete on表名foreach rowbeginsql语句:(触发的语句一句或多句)end
函数:MySQL中提供了许多内置函数,还可以自定义函数(实现程序员需要sql逻辑处理)
自定义函数创建语法:
创建:CREATE FUNCTION函数名称(参数列表)RETURNS返回值类型 函数体
修改:ALTER FUNCTION 函数名称 [characteristic ...]删除:DROP FUNCTION [IF EXISTS]函数名称
调用:SELECT 函数名称(参数列表)
视图:视图是由查询结果形成的一张虚拟表,是表通过某种运算得到的一个投影
create view view_name as select 语句
存储过程:把一段代码封装起来,当要执行这一段代码的时候,可以通过调用该存储过程来实现(经过第一次编译后再次调用不需要再次编译,比一个个执行sql语句效率高)
create procedure存储过程名(参数,参数,…)begin
//代码end
08. MySQL索引种类?
09. 索引在什么情况下遵循最左前缀的规则?
在使用组合索引查询的时候需要遵循“最左前缀”规则
最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、 3 and d= 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。=和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,MySQL的查询优化器会帮你优化成索引可以识别的形式。
10. 主键和外键的区别?
主键Primary key:数据库实体完整性的一种规则,唯一标示一个实体,取值非空唯一。比如,学生表的学号。
外键 Foreign key:数据库参照完整性的一种规则,将两表或者多张表联系起来,取值必须来自参照表的参照字段的值,可为空也可不为空。比如,选课表里的学号。
11. MySQL常见的函数?
聚合函数:
AVG(col)返回指定列的平均值
COUNT(col)返回指定列中非NULL值的个数
MIN(col)返回指定列的最小值
MAX(col)返回指定列的最大值
SUM(col)返回指定列的所有值之和
GROUP_CONCAT(col) 返回由属于一组的列值连接组合而成的结果
数学函数:
ABS(x) 返回x的绝对值
BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制)
12. 列举 创建索引但是无法命中索引的8种情况。
1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)
2.对于多列索引,不是使用的第一部分,则不会使用索引
3.like查询是以%开头
4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引
6 对小表查询
7 提示不使用索引
8 统计数据不真实
9.单独引用复合索引里非第一位置的索引列.
13. 如何开启慢查询日志?
1 执行 SHOW VARIABLES LIKE “%slow%”,获知 mysql 是否开启慢查询 slow_query_log 慢查询开启状态 OFF 未开启 ON 为开启 slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)
2 修改配置文件( 放在[mysqld]下),重启 long_query_time 查询超过多少秒才记录
3 测试是否成功
4 慢查询日志文件的信息格式
作用:开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。
14. 数据库导入导出命令(结构+数据)?
15. 数据库优化方案?
1、选取最适用的字段属性
2、使用连接(JOIN)来代替子查询(Sub-Queries)
3、使用联合(UNION)来代替手动创建的临时表
4、事务(当多个用户同时使用相同的数据源时,它可以利用锁定数据库的方法来为用户提供一种安全的访问方式,这样可以保证用户的操作不被其它的用户所干扰)
5.锁定表(有些情况下我们可以通过锁定表的方法来获得更好的性能)
6、使用外键(锁定表的方法可以维护数据的完整性,但是它却不能保证数据的关联性。这个时候我们就可以使用外键)
7、使用索引
8、优化的查询语句(绝大多数情况下,使用索引可以提高查询的速度,但如果SQL语句使用不恰当的话,索引将无法发挥它应有的作用)
16. char和varchar的区别?
1、对于MyISAM表,尽量使用Char,对于那些经常需要修改而容易形成碎片的myisam和isam数据表就更是如此,它的缺点就是占用磁盘空间;
2、对于InnoDB表,因为它的数据行内部存储格式对固定长度的数据行和可变长度的数据行不加区分(所有数据行共用一个表头部分,这个标头部分存放着指向各有关数据列的指针), 所以使用char类型不见得会比使用varchar类型好。事实上,因为char类型通常要比varchar类型占用更多的空间,所以从减少空间占用量和减少磁盘i/o的角度,使用varchar类型反而更有利;
3、存储很短的信息,比如门牌号码101,201……这样很短的信息应该用char,因为varchar还要占个byte用于存储信息长度,本来打算节约存储的现在得不偿失。
4、固定长度的。比如使用uuid作为主键,那用char应该更合适。因为他固定长度,varchar动态根据长度的特性就消失了,而且还要占个长度信息。
5、十分频繁改变的column。因为varchar每次存储都要有额外的计算,得到长度等工作,如果一个非常频繁改变的,那就要有很多的精力用于计算,而这些对于char来说是不需要的。
char固定长度,存取速度快,牺牲存储空间来提高效率
varchar长度依照的字符长度而定,存取速度较varchar慢,牺牲存取效率,提高存储空间利用率
注意:取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的;CHAR(10)若输入数据的字符数小于10,则系统自动在其后添加空格来填满设定好的空间。若输入的数据过长,将会截掉其超出部分。VARCHAR(10)数据类型的存储长度为实际数值长度。
char的存储方式是:对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;
varchar的存储方式是:对每个英文字符占用2个字节,汉字也占用2个字节。
17. 简述MySQL的执行计划?
18. 在对name做了唯一索引前提下,简述以下区别:
select * from tb where name = ‘Oldboy’
select * from tb where name = ‘Oldboy’ limit 1
mysql面试题 常用函数_MySQL常见面试题相关推荐
- mysql常见面试题及答案_MySQL常见面试题与答案整理
1.MySQL 中有哪几种锁? 1.表级锁: 开销小, 加锁快: 不会出现死锁: 锁定粒度大, 发生锁冲突的概率最高, 并发度最低. 2.行级锁: 开销大, 加锁慢: 会出现死锁: 锁定粒度最小, 发 ...
- 【面试题】Redis篇-常见面试题p1
[面试题]Redis篇-常见面试题p1 备战实习,会定期的总结常考的面试题,大家一起加油!
- java 常用模块_Java 常见面试题的模块
Java 常见面试题的模块: Java 基础.容器.多线程.反射.对象拷贝.Java Web 模块.异常.网络.设计模式.Spring/Spring MVC.Spring Boot/Spring Cl ...
- 2018常见的java面试题_2018新版Java常见面试题
千锋西安Java编程培训班的老师总结了2018新版Java常见面试题,一起来看! 1.1.java基础 ●面向对象的特征:继承.封装.多态 继承[构造器.protected关键字.向上转型Java实现 ...
- mysql 分页面试题_MySQL常见面试题
1.undo log,redo log,bin log是什么?Checkpoint是什么?一条MySQL更新语句的执行过程是什么样的? 2.脏页是什么? 5.MySQL中的事务是什么? 6.MySQL ...
- 初级python爬虫工程师面试题_Python爬虫工程师常见面试题汇总
爬虫是Python的重要应用方向之一,也是学习Python的学员求职的主要方向.为了帮助学员更快更好的通过企业面试,小编悉心整理了5道Python爬虫面试题及答案,希望能够给大家提供帮助! 1.简要介 ...
- 最新Java面试题2021年,常见面试题及答案汇总
2021最新Java面试题[附答案解析]java面试题及答案2021,java2021最新面试题及答案汇总,2021最Java面试题新答案已经全部更新完了,有些答案是自己总结的,也有些答案是在网上搜集 ...
- python自动化测试面试题代码_Python自动化测试常见面试题(四)
一._ init _ _ 和 _ _ new _ _是什么? 1.1.概述 在python的面向对象中,利用new方法创建对象,然后把这个创建的对象传递到init函数中,以第一个参数进 1.2.详细描 ...
- SpringMVC常见面试题(5个最常见面试题,回答超详细)
以下题目顺序根据面试中问的概率排序的,尽量都背下来啊. 目录 面试题一:什么是Spring MVC ?简单介绍下你对springMVC的理解? 面试题二:SpringMVC的工作流程? 面试题三:Sp ...
最新文章
- MetaPhlAn2:宏基因组物种组成分析
- 利用废弃建筑建设数据中心
- tomcat架构分析(概览)【转】
- Easy Summation 预处理 快速幂
- matlab实验函数编写与程序设计,matlab实验四函数编写与程序设计.doc
- HTTP请求Content-Type你知道是做什么的吗?
- 数据结构实验之数组一:矩阵转置
- 遭遇 XSS 跨站脚本攻击?稳住,这些方法可保你渡劫 | 附代码、图解
- CentOS6的python2.6升级到python2.7以上版本(可能更详细)
- python训练营 朋友圈点赞收费吗_微信朋友圈点赞,是不是扣话费?有人给
- python编译器大全_Python编译器
- 嵌入式C语言(入门必看)
- Android之制作Nine-Patch图片
- 【Cucumber】【问题集锦】
- 【DBeaver】安装与使用教程
- [笔记]阿里云物联网之业务服务端(java、php)接入阿里云平台
- php imap 安装_php怎么安装imap扩展
- HEVC BLA、CRA、IDR
- 《三国演义》与“项目管理”——从诸葛亮舌战群儒看商务谈判
- MessageBox()用法简介
热门文章
- 用yahoo邮箱收企业邮箱的邮件
- 车载雷达(立体摄像头,毫米波雷达,激光雷达(LiDAR))比较
- RecSys Datasets 推荐系统实验常用数据集大全
- 游戏设计小议:一 游戏的娱乐性与电脑游戏的特点
- java第二章测试题_MOOC选修课答案第二章单元测试答案_Java程序设计查询答案
- linux熄屏时间设置,linux xset 关闭屏幕保护-关闭节电模式
- “放下屠刀,立地成佛”
- unity协程实现多个动画连播
- Avalonia的初步学习和使用
- python3如何安装模块_如何用pip为Python3安装模块