zoukankan      html  css  js  c++  java
  • SQL学习(一.索引)

    数据库索引

    作用

    提高查询速度

    确保数据的唯一性

    可以加速表和表之间的连接,实现表和表之间的参照完整性

    使用分组和排序子句进行数据检索时,可以减少分组和排序的时间

    全文检索字段进行搜素优化

    分类:

    主键索引(PRIMAY KEY)(聚集索引)

    唯一索引(UNIQUE)(非聚集索引)

    常规索引(INDEX)(非聚集索引)

    全文索引(FULLTEXT)(非聚集索引)

    主键索引

    主键:

      某一个属性组能唯一标识一条记录

      如:学生表(学号,姓名,班级,性别等等),学号作为唯一标识,可以作为主键

    特点:

      最常见的索引类型

      确保数据记录的唯一性

      确定特定数据记录在数据库中的位置

    实例:

    CREATE TABLE `表名`(、
    
      `GradeID` INT(11)  AUTO_INCREMENT PRIMARY KEY,
    
      #或 PRIMARY KEY(`GradeID`)
    
    )
    

      

    唯一索引

    作用:

          避免同一个表中某数据列中的值重复

    与主键索引的区别

      主键索引只能有一个

      唯一索引可有多个

    实例:

    CREATE TABLE `Grade`(、
    
      `GradeID` INT(11)  AUTO_INCREMENT PRIMARY KEY,
    
      `GradeName` VARCHAR(32) NOT NULL UNIQUE
    
      #或 UNIQUE KEY ` GradeID`(`GradeID`)
    
     

    常规索引

    作用:

    快速定位特定数据

    注意:

    index 和 key 关键字都可以设置常规索引

    应加在查询条件的字段

    不易添加太多常规索引,影响数据的插入,删除和修改操作

    实例:

    ##创建表时添加

    CREATE TABLE `result`{
    
      //省略一些代码
    
      INDEX / KEY `ind` (`studentNo`,`subjectNo`)
    
    }

    ##创建后追加

    ALTER TABLE `result` ADD  INDEX `ind` (`studentNo`,`subjectNo`);

    全文索引

    作用:

    快速定位特定数据

    注意:

    只能用于MyISAM类型的数据表

    只能用于CHAR ,VARCHAR,TEXT数据列类型

    使用大型数据集

    实例:

    CREATE TABLE `student`(
    
      #省略一些sql语句
    
        FULLTEXT(`StudentName`)
    
    )ENDINE=MYISAM;
    
    ALTER TABLE employee ADD FULLTEXT(`first_name`)

    唯一索引补充:

    它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:

    创建索引

    CREATE UNIQUE INDEX indexName ON mytable(username(length))

    修改表结构

    ALTER table mytable ADD UNIQUE [indexName] (username(length))

    创建表的时候直接指定

    CREATE TABLE mytable(  
     
    ID INT NOT NULL,   
     
    username VARCHAR(16) NOT NULL,  
     
    UNIQUE [indexName] (username(length))  
     
    );
     

    基本索引:

    这是最基本的索引,它没有任何限制。它有以下几种创建方式:

    CREATE INDEX indexName ON mytable(username(length));

    如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。

    修改表结构(添加索引)

    ALTER table tableName ADD INDEX indexName(columnName)

    创建表的时候直接指定

    CREATE TABLE mytable(  
     
    ID INT NOT NULL,   
     
    username VARCHAR(16) NOT NULL,  
     
    INDEX [indexName] (username(length))  
     
    );

    删除索引的语法

    DROP INDEX [indexName] ON mytable;

     

  • 相关阅读:
    Ubuntu上如何安装Java,Eclipse,Pydev,Python(自带,不用装),BeautifulSoup
    sed替换字符串时,使用正则表达式的注意事项
    shell实现trim函数-去除字符串两侧的空格(包括tab,space键)
    能用Shell就别编程-海量文本型数据的处理
    grep与egrep
    海量数据导入MySQL的注意事项
    Java读取文件
    Python爬虫经验
    Java字符串split函数的注意事项
    shiro+jwt+springboot理解
  • 原文地址:https://www.cnblogs.com/mlfz/p/10432587.html
Copyright © 2011-2022 走看看