MysQL自学笔记8--索引、存储过程

来源:互联网 发布:青岛知豆 6000一年 编辑:程序博客网 时间:2024/05/22 06:50

mySQL自学笔记

使用MySQL 5.5以及MySQL自带命令客户端

索引

索引是对数据库表中一列或者多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息,其作用是可以加快查询速度,缺点是会降低增、删、改的速度

  • 举一个例子:有一张表,上面有20列,13列上存在索引,要导入1000W行数据,该如何快速导入?

    1. 将空表的索引全部删除
    2. 导入数据
    3. 导入数据结束后,集中建立索引
  • 创建索引的原则:

    1. 不要过度索引
    2. 在where条件最为频繁的列上面添加索引
    3. 尽量索引散列值,过于集中的值添加索引意义不大
  • 索引类型:

    1. 普通索引:index,作用是加快查询速度
    2. 唯一索引:unique,要求行上的值是不能重复的
    3. 主键索引:primary key,主键是不能重复的
      • 主键一定是唯一的,但是唯一索引不一定是主键索引
      • 一张表上面可以有一个或多个唯一索引,但是只能有一个主键
    4. 全文索引:fulltext
  • 索引的一些基本操作:

    • 查看一张表上面的全部索引:

      show index from tableName;# 如果想要竖着显示,可以在语句最后加一个`\G`show index from tableName \G;
    • 建立索引:可以分为两种

      • 建立普通、唯一、全文索引:

        alter table tableName add index/unique/fulltext [indexName] (columnName);
      • 建立主键索引
        “` MySQL
        alter table tableName add primary key (columnName); // 这里不加索引名词是因为主键只有一个

    • 删除索引:

      • 删除非主键索引:alter table tableName drop index indexName;
      • 删除主键索引:alter table tableName drop primary key;
    • 全文索引中有一个固定的句式用法:

      • “` MySQL
        match (全文索引名) against (‘key_word’);

        * ``` MySQLselect * from table1 where match (index1) against ('key_word');
      • 全文索引的停止词:
        全文索引不针对非常频繁的词作索引,比如:thisisyoumy 等词汇

      • 全文索引对中文的使用情况:
        在MySQL默认情况下,全文索引对中文的意义不是很大,因为中文无法像英文一样使用空格以及标点符号拆分单词,进而对单词进行索引!

存储过程

存储过程的概念类似于函数,就是将一段代码封装起来,当要执行该段代码时,可以通过调用(call)该存储过程来实现。在存储过程中,可以使用if/elsecasewhile等控制结构

存储过程和函数区别

  1. 名称不一样
  2. 存储过程没有函数值,但是函数有返回值

存储过程一些基本操作

  • 查看存储过程:show procedure status;show procedure status \G; //横着显示
  • 删除存储过程:drop procedure pro_Name;
  • 调用存储过程:call pro_Name([parameters...]);
  • 创建存储过程:
    • MySQL
      create procedure pro_Name([paremeters...])
      begin
      SQL语句
      end;
    • 可以使用delimeter来声明新的结束符
    • 示例:
      MySQL
      create procedure pro1()
      begin
      select * from g;
      end$

      MySQL
      Create procedure pro2(n int)
      Begin
      Select * from g where num > n;
      End$
      //调用时可用代码`call pro2(3);`

      MySQL
      Create procedure pro3(n int,j char(1))
      Begin
      If j = ’zqh’then
      Select * from g where num > n;
      Else
      Select * from g where num < n;
      End if;
      End$
      //调用时可以使用代码`call pro3(13, 'zqh');`

      MySQL
      Create procedure p3(n int,j char(1))
      Begin
      If j = ’h’then
      Select * from g where num > n;
      Else
      Select * from g where num < n;
      End if;
      End$
      //调用时可以使用代码`call pro(100);`
0 0
原创粉丝点击