mysql高级知识(linux安装mysql+索引+视图+存储过程和函数+触发器)

本文详细介绍了如何在Linux环境下安装MySQL,包括查找和卸载旧版本、上传安装包、解压安装、启动与停止服务、用户登录与远程连接。接着,文章深入讲解了数据库索引的概念、优缺点、结构(重点讨论了B+树)、分类、创建与管理,以及索引设计原则。此外,还阐述了视图的概述和基本操作,如创建、修改和删除。存储过程和函数的部分,包括它们的创建、调用、查看和删除,以及涉及的循环结构、条件判断、游标操作等。最后,简要介绍了触发器的基本概念和创建方法,以及日志记录的示例。
摘要由CSDN通过智能技术生成

一、linux系统安装Mysql

1、mysql安装包:

MySQL :: Download MySQL Community Server

2、mysql安装

linux安装在vmware(虚拟机)上,先打开虚拟机

获取ip地址,ifconfig

通过远程连接工具secureCRT连接

1)查找当前mysql安装包版本 rpm -qa | grep -i mysql

2)版本过低卸载

Rpm -e mysql安装包版本 --nodeps

3)mysql安装包上传

将mysql安装包放在D盘setup目录下

Alt+P进入到上传界面,使用put指令上传安装包

put D:/setup/mysql安装包名

上传成功后,就可以在Linux系统中看到此安装包

4)解压mysql压缩包,tar

创建目录名为mysql的文件夹:mkdir mysql

  ll

将mysql压缩包解压到mysql文件中

 tar -xvf mysql压缩包 -C mysql/

解压完成

5)安装依赖包(第三方的依赖库)

在线安装:

 yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6 libncurses.so.5 --setoopt=protected_multilib=false

 yum update libstdc++-4.4.7-4.el6.x86_64

6)安装mysql客户端和服务端,client.rpm,server.rpm

 rpm -ivh MySQL-client-***.rpm

 rpm -ivh MySQL-server-***.rpm

3、mysql启动和停止

mysql状态 service mysql status

mysql启动 service mysql start

mysql停止 service mysql stop

4、mysql登录

 mysql -u root -p

密码:查看安装mysql服务端的日志,随机生成了一个密码  cat /root/.mysql-secret

修改密码:set password=password('root');

重新登陆: mysql -u root -p

 root

5、windows使用工具连接linux上mysql,sqlyog

连接不了,原因是:未授权远程访问

授权远程访问:grant all privileges on *.* to 'root' @'%' identified by 'root';

刷新权限列表使授权生效:flush privileges;

6、再次连接,连接不了

是linux的防火墙导致的

查看防火墙的状态:service iptables status

关闭防火墙:service iptables stop

7、windows远程连接linux成功

二、索引

1、索引概述

索引(index)是帮助mysql高效获取数据的数据结构

索引的作用:高效查询

               根节点

比根节点小     比根节点大

以二叉树为例,数据:34   77   5   91   22   59   3

               34

        5               77

3          22      59     91

在数据之外,数据系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引向(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

2、索引优缺

优势:

1)类似于书籍的目录索引,提高数据检索的效率,降低数据库的io成本即快速查询数据

2)通过索引列对数据进行排序,降低数据排序的成本,降低cpu的消耗

劣势:

1)实际上索引也是一张表,该表中保存了主键与索引字段,并指向实体类的积累,所以索引列也是要占用空间的即索引需要占用磁盘空间

2)虽然索引大大提高了查询效率,同时却也降低更新表的速度,如对表进行insert、update、delete.因为更新表时,mysql不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段,都会调整因为更新所带来的键值变化后的索引信息即索引字段并不是越多越好,索引字段越多会降低查询数据的效率

3、索引结构

索引是在mysql的存储引擎层中实现的,而不是在服务器层实现。所以每种索引引擎的索引都不一定完全相同,也不是所有的存储引擎都支持所有的索引类型。

主流的四种索引结构:

*btree索引:innoDB引擎支持btree索引

hash索引

R-tree索引

Full-text(全文索引)

我们平常所说的索引,如果没有特别指明,都是指B+树(多路搜索树,并不一定是二叉树)结构组织的索引。其中聚集索引、复合索引、前缀索引、唯一索引默认都是使用B+tree索引,统称为索引。

1)btree结构

btree又叫多路平衡搜索树,一棵m叉的btree特性如下:

  • 树中每个节点最多包含m个孩子
  • 除根节点与叶子节点外,每个节点至少有[cell(m/2)]个孩子 注:向上取整
  • 若根节点不是叶子接待你,则至少有两个孩子
  • 所有的叶子节点都在同一层
  • 每个非叶子节点由n个key与n+1个指针组成,其中[cell(m/2)-1]<=n<=m-1

以5叉为例,公式推导[cell(m/2)-1]<=n<=m-1所有2<=n<4,当n>4时,中间节点分裂到父节点,两边节点分裂

插入C N G A H E K Q M F W L T Z D P R X Y S 数据为例

演变过程:

1.1)插入前4个字母 C N G A

A

C

G

N

1.2插入Hn>4,中间元素G字母向上分裂到新的节点

             G

A    C           H   N

1.3)插入E K Q 不需要分裂

                G

A  C E        H  K N Q

标黄代表n的个数,大于4就要向上分裂

1.4)插入Mn>4,中间元素M向上分裂到父节点G

                  G         M

A   C  E        H  K       N Q

1.5)插入F W L T 不需要分裂

                  G         M

A C E F       H  K L      N QTW

1.6)插入Z,中间元素T向上分裂到父节点中

                  G         M       T

A C E F       H  K L      N Q     WZ

1.7)插入D,中间元素向上分裂到父结点中,然后插入PRXY不需要分裂

        D      G         M       T

A C      E F       H  K L      NP QR     WXYZ

1.8)最后插入SNPQRn>4,中间节点Q向上分裂,但分裂后父节点DGMTn>4,中间节点M向上分裂

                               M

             DG                              Q T

A C      E F       H  K L      NP      RS     WXYZ

到此,该tree树就已经构建完成,btree树和二叉树相比,查询数据的效率更高,因为对于相同的数据量来说,btree的层级结构比二叉树小,因此搜索速度快

2)B+tree结构

B+tree为btree的变种,B+tree与btree的区别为:

优点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值