mysql面试题 常用函数_数据库常见笔试面试题 - memristor的个人空间 - OSCHINA - 中文开源技术交流社区...

本文详细介绍了SQL查询语句的执行顺序,从FROM到SELECT,再到ORDER BY,以及LIMIT的用法。同时,对比了MySQL中的MyISAM和InnoDB两种数据库引擎,包括它们在事务处理、性能、数据恢复和索引方面的差异。此外,讨论了LIKE操作符在索引使用上的影响,以及数据库设计的三范式。最后,提到了存储过程和函数在数据库操作中的应用及其区别。
摘要由CSDN通过智能技术生成

1、sql语句执行顺序

SQL Select 语句完整的执行顺序:

1)from 子句组装来自不同数据源的数据;

2)where 子句基于指定的条件对记录行进行筛选;

3)group by 子句将数据划分为多个分组;

4)使用聚集函数进行计算;

5)使用 having 子句筛选分组;

6)计算所有的表达式

from --where-- group by-- having --select-- order by

2、having与where的区别

having 和where 都是用来筛选用的,having 是筛选组  而where是筛选记录

select 部门编号,count(*) from 员工信息表 where 工资>=2000 group by 部门编号 having count(*)>1

3、mysql的数据库引擎以及他们的区别

mysql常见的数据库引擎有MYISAM、INNODB

在数据库中查看引擎使用sql命令

show engines;

3df47505ee0652bf6d7c8f5715ec0fe9.gif

MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。

MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。

MyISAM格式的一个重要缺陷就是不能在表损坏后恢复数据

InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含where条件时,两种表的操作是一样的

MyISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率就对应提高了不少。能加载更多索引,而Innodb是索引和数据是紧密捆绑的,没有使用压缩从而会造成Innodb比MyISAM体积庞大

MyISAM适合:

(1)做很多count 的计算;

(2)插入不频繁,查询非常频繁;

(3)没有事务。

InnoDB适合:

(1)可靠性要求比较高,或者要求事务;

(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况指定数据引擎的创建

4、LIMIT

select * from table limit m,n

其中m是指记录开始的index,从0开始,表示第一条记录

n是指从第m+1条开始,取n条。

select * from tablename limit 2,4

即取出第3条至第6条,4条记录

mysql> select id,account from lc_user limit 2,2;

+----+------------+

| id | account    |

+----+------------+

|  3 | hongchen   |

|  4 | wangweiwei |

+----+------------+

2 rows in set

5、索引与模糊查询

like keyword% 索引有效

like %keyword% 索引失效,也无法使用

解决方案

使用翻转函数+like前模糊查询+建立翻转函数索引=走翻转函数索引,不走全扫描。有效降低消耗值,io值,cpu值这三个指标,尤其是io值的降低

6、 数据库三范式

第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。

第三范式(3NF)必须先满足第二范式(2NF)。第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

7、存储过程与函数

存储过程和函数目的是为了 可重复地 执行操作数据库的sql语句的集合。区别是写法和调用上。

写法上:存储过程的参数列表可以有输入参数、输出参数、可输入输出的参数;

函数的参数列表只有输入参数,并且有return 。

返回值上:

存储过程的返回值,可以有多个值,

函数的返回值,只有一个值。

存储进程                              自定义函数

功能强大,限制少                 诸多限制,有许多语句不能使用,许多功能不能实现

不能直接引用返回值              可以直接引用返回值

用select语句返回记录集        用表变量返回记录集

create procedure 存储过程名字()

(

[in|out|inout] 参数 datatype

)

begin

MySQL 语句;

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值