mysql进阶知识_Mysql面试知识点总结(进阶篇)

上一篇主要介绍一些基础的mysql知识点,这一篇我们介绍一下mysql比较重要但在开发中我们程序员很少知道的几个大点(自以为是的观点)。

数据库设计三范式:

第一范式:数据库表的每一列都是不可分割的原子数据项,即列不可拆分。

第二范式:建立在第一范式的基础上,要求数据库表中的每个实例或记录必须是可以唯一被区分的,即唯一标识。

第三范式:建立在第二范式的基础上,任何非主属性不依赖与其他非主属性,即引用主键。

视图

视图是虚拟表,并不储存数据,只包含定义时的语句的动态数据。

create view view_name as sql查询语句

存储过程

一条或多条sql语句集合,其优点为(浓缩:简单/安全/高性能):

存储过程能实现较快的执行速度

存储过程允许标准组件是编程。

存储过程可以用流程控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。

存储过程可被作为一种安全机制来充分利用。

存储过程能够减少网络流量

delimiter 分隔符

create procedure|proc proc_name()

begin

sql语句

end 分隔符

delimiter ; --还原分隔符,为了不影响后面的语句的使用

默认的分隔符是;但是为了能在整个存储过程中重用,因此一般需要自定义分隔符(除\外)

show procedure status like ""; --查询存储过程,可以不适用like进行过滤

drop procedure if exists;--删除存储过程

存储过程和函数的区别?

相同点:存储过程和函数都是为了可重复的执行操作数据库的 sql 语句的集合。

1)存储过程和函数都是一次编译,就会被缓存起来,下次使用就直接命中已经编译好的 sql 语句,不需要重复使用。减少网络交互,减少网络访问流量。

不同点:标识符不同,函数的标识符是 function,存储过程是 proceduce。

1)函数中有返回值,且必须有返回值,而过程没有返回值,但是可以通过设置参数类型(in,out)来实现多个参数或者返回值。

2)存储函数使用 select 调用,存储过程需要使用 call 调用。

3)select 语句可以在存储过程中调用,但是除了 select..into 之外的 select 语句都不能在函数中使用。

4)通过 in out 参数,过程相关函数更加灵活,可以返回多个结果。

触发器

在对表数据进行变动的时候进行具体的操作,有六种,分别为增删改的前后操作。

create trigger trigger_name

ALTER|BEFORE select|update|delete

on 表

for each row

trigger_stmt

重点:

只有表才支持触发器,视图和临时表都不支持

触发器不支持更新和覆盖,修改必须先删除然后创建

分区表

分区表是将大表的数据分成称为分区的许多小的子集,常见分区类型:Range、List、Hash、Key

查看是否支持分区表 show plugins

如果有partition就说明支持

在创建表时字符集后增加 partition by 分区类型(字段) partitions 4;

添加分区 alter table 表 add partition (partition p4 values less than(2018))

交换分区对数据进行归档

条件:mysql>=5.7 结构相同 归档到的数据表一定要是非分区表 非临时表,不能有外键约束 归档引擎要是archive,可以是innodb,但归档引擎占用空间更小,但只能是查询操作

删除分区:alter table 分区表 drop partition 分区名

归档分区:alter table 分区表 exchange partition 分区名 with table 归档表

RANGE 分区:基于属于一个给定连续区间的列值,把多行分配给分区。

partition by RANGE(字段)( partition p0 VALUES LESS THAN(10000),...PARTITION p3 VALUES

LESS THAN MAXVALUE);不包括上限

LIST 分区:类似于按 RANGE 分区,区别在于 LIST 分区是基于列值匹配一个离散值集合中的某个 值来进行选择。

partition by list(字段)(partition p0 values in (x,x,x,x)...);

HASH 分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的 这些行的列值进行计算。这个函数可以包含MySQL 中有效的、产生非负整数值的任何表达式。

partition by hash(字段) partitions 4(

PARTITION p0,

PARTITION p1,

PARTITION p2,

PARTITION p3

);

452ae663475a8fe0ca7eab449a10e1a1.png

KEY 分区:类似于按 HASH 分区,区别在于 KEY 分区只支持计算一列或多列,且 MySQL 服务器提供其自身的哈希函数。必须有一列或多列包含整数值。

partition by hash(字段) partitions 4(

PARTITION p0,

PARTITION p1,

PARTITION p2,

PARTITION p3

);

日志

Mysql主要有四种日志文件:

错误日志:记录启动,运行或者停止 mysql 时出现的问题;

查询日志:记录所有msyql的活动

二进制日志:记录更新过数据的所有语句

缓慢查询日志:记录查询缓慢的任何查询

Archive引擎

这是一个只用于数据插入和查询的引擎,其特点为:

只能对数据进行插入和查询

不支持索引

不支持事务

存储数据占用空间更小

STRAIGHT_JOIN

在对多表连接的查询中, MySQL优化器要确定以谁为驱动表,也就是说以哪个表为基准,在处理此类问题时,MySQL优化器采用了简单粗暴的解决方法:哪个表的结果集小,就以哪个表为驱动表, 使用STRAIGHT_JOIN可以指定以左表为驱动表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java实现报表_修改带 JAVA 自定义类的报表还要重启应用,咋解决?

这是 JAVA 编译型语言特性决定的,修改 JAVA 程序重启应用也正常。只不过改报表就要重启整个应用就有点夸张了,报表变动比较频繁,每次都重启应用会影响业务的。这个问题的根本原因是耦合性问题,报表里一旦涉及到 JAVA 代码就要跟主…

idea 用iterm 终端_iTerm2 都不会用,还敢自称老司机?(上)

对于需要长期与终端打交道的工程师来说,拥有一款称手的终端管理器是很有必要的,对于 Windows 用户来说,最好的选择是 Xshell,这个大家都没有异议。但对于 MacOS 用户来说,仍然毋庸置疑,iTerm2 就是你要的利…

bootstrap 日历中文_bootstrap日期选择器本地化-中文

最近用bootstrap做项目,所以就顺便搜了下用bootstrap写的日期选择器。搜到的第一和第二条结果虽然是官网,但上面挂的还是基于bootstrap2的日期选择器(此时为北京时间2017-12-26 17:18),不能与bootstrap3兼容使用。所以又去找bootstrap3的日期…

td之间的间距怎么改_论文的一级标题、二级标题格式怎么弄?

其实论文写好了以后,论文格式的调整也是非常重要的,具体的格式一般有以下几点:标题格式,一级标题、二级标题、三级标题页码格式,一般是正文之前为罗马数字,正文以后为阿拉伯数字,一般是页脚中间…

winform教_电脑绝技教你22天学精Csharp之第十五天winform应用程序补充5

{{1}}$using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.IO;namespace _10打开对话框{publi…

plupload怎么设置属性_腾达无线路由器怎么设置,这些是你要知道的

腾达无线路由器怎么设置1、联好线路:到你家的外网网线接路由器的WAN口,你的电脑连到路由器的LAN口(有四个,任意一个均可),给路由器接通电源。设置的时候,给路由器通电,一根网线直接连电脑和路由器的这个口就…

mysql centos 安装目录在哪_centos中如何查看mysql安装目录在哪

centos中查看mysql安装目录的方法:推荐教程:centos使用教程1、使用ps -ef|grep mysql命令查看:结果:root 17659 1 0 2011 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir/var/lib/mysql --socket/var/lib/mysql/mysql.sock …

dynamic 365 js 失去焦点_基于Auto.js的QQ好友动态秒赞系统

0.脑筋急转弯请问在什么情况下log(10) 10log(20) 20左滑查看答案 console.log(10) 是 10 console.log(20) 是 201.工具选…

scrapy框架_Python:Scrapy框架

“ Scrapy是一个适用爬取网站数据、提取结构性数据的应用程序框架,它可以应用在广泛领域:Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。通常我们可以很简单的通过 Scrapy 框架实现一个爬虫,抓取指定网站…

python求两数之和的命令_数学建模:科学计算Python2小时-Python基础

这一部分主要面向数模活动中的python基础知识进行讨论作者系列文章(科学计算Python2小时)目录:李似:科学计算Python2小时-前言与目录​zhuanlan.zhihu.com首先要说明的是,目前常用的Python版本包括Python2和Python3,二者有一些语法…

空白世界地图打印版_洪恩识字卡1300字十字帖+绘本,可打印成册

洪恩识字卡电子版资源,共1300字,无拼音和升级版带拼音都有,可直接打印,可分享免费送我在app中无意洪恩识字这个宝藏app,识字是想着孩子能早日实现自由阅读,可是一直对着电子设备伤眼晴,于是找了…

操作系统实验读者写者程序源码_SAST Weekly | STM32F103系列开发板移植华为LiteOS操作系统...

SAST weekly 是由电子工程系学生科协推出的科技系列推送,内容涵盖信息领域技术科普、研究前沿热点介绍、科技新闻跟进探索等多个方面,帮助同学们增长姿势,开拓眼界,每周更新,欢迎关注!欢迎愿意分享知识的同…

java 远程调试spark_spark开启远程调试

一.集群环境配置#调试Master,在master节点的spark-env.sh中添加SPARK_MASTER_OPTS变量export SPARK_MASTER_OPTS"-Xdebug -Xrunjdwp:transportdt_socket,servery,suspendy,address10000"#调试Worker,在worker节点的spark-env.sh中添加SPARK_WO…

web中间件_常见web中间件拿shell

1.weblogic后台页面:(http为7001,https为7002)Google关键字:WebLogic Server AdministrationConsole inurl:console默认的用户名密码1、用户名密码均为:weblogic2、用户名密码均为:system3、用户名密码均为&#xff1a…

java定义抽象类abarea_详解 抽象类

本人在这篇博文中要讲解的知识点,和本人之前的一篇博文有所关联。因为,“抽象类” 是按照 “自下而上” 的顺序来编写所需的类,而在本人之前的博文《详解 继承(上)—— 工具的抽象与分层》中讲到的 继承 则与之相反,按照 “自上而…

word表格图片自动适应表格大小_Excel应用实践20:使用Excel中的数据自动填写Word表格...

学习Excel技术,关注微信公众号:excelperfect我在Excel工作表中存放着数据,如下图1所示。图1我想将这些数据逐行自动输入到Word文档的表格中并分别自动保存,Word文档表格如下图2所示,文档名为“datafromexcel.docx”。图…

dnspod java_使用dnspod遭遇的奇特问题以及背后的原因与临时解决方法

由于园子里有不少用户在使用dnspod,我们觉得有必要将这两天blogjava.net域名在dsnpod遇到的奇特问题分享一下,以免再有人踩着这个坑。12月11日,我们登录到dnspod的后台时,大吃一惊,blogjava.net这个域名竟然消失了。联…

cad转dxf格式文件太大_想知道DWG、DWT、DWS和DXF是什么吗?从了解4种CAD图形格式开始吧...

原创:就说我在开发区常用图形文件格式盘点CAD中的图形文件格式共9种,其扩展名分别为:❶DWG – 图形或块文件❷DWT – 图形样板文件❸DWS – 图形标准文件❹DXF – 图形交换文件(ASCII 或二进制)❺DST – 图形集或图纸集文件(SHEETSET 命令)❻…

vue登录如何存储cookie_vue项目实现表单登录页保存账号和密码到cookie功能

实现功能:1.一周内自动登录勾选时,将账号和密码保存到cookie,下次登陆自动显示到表单内2.点击忘记密码则清空之前保存到cookie的值,下次登陆需要手动输入次要的就不说了直接上主要的代码html部分登陆帮助一周内自动登录忘记密码&a…

usb协议规范_USB连接标准接口简述发布

制程工艺材料类USB为Universal Series Bus (通用序列总线)的缩写,是一种串行通讯协议(sereal protocol),它负责实体层和链接层的建立。它可以支持慢速的数据传输(如鼠标、键盘、游戏摇杆等)也支持快速的数字压缩影音信息。普通的USB2.0版本以下有两对线,分别用来传输…