zoukankan      html  css  js  c++  java
  • 索引与完整性约束(note6)

    第七周(mysql索引与完整性)

    1. 索引

    1. 索引的分类:

      • 普通索引(index):最基本的索引类型,没有唯一性之类的限制,创建普通索引的关键字是index
      • 唯一性索引(unique):与普通索引基本相同,唯一区别就是所有值只能出现一次
      • 主键(primary key):主键是一种唯一性索引
      • 全文索引(fulltext):mysql支持全文检索和全文索引,全文索引只能在varchar或text类型的列上创建
    2. create index语句创建:可以在一个已有表上创建,一个表可以创建多个索引,如果一个索引列可包含多个列,中间用逗号隔开,但它们属于同一个表,这样的索引叫作重复索引

      #	例子一:
      #根据xs表的学号列上的前5个字符创建一个升序索引xh_xs
      USE xscj;
      CREATE INDEX xh_xs
      ON xs(学号(5) ASC);
      
      #在xs_kc表的学号列和课程号列上建立一个复合索引xskc_in
      CREATE INDEX xskc_in
      ON xs_kc(学号,课程号);
      
      
      
      
    3. 在建立表是创建索引:索引也可以在创建表时一起创建

      #	例子二:
      #在mytest数据库中创建成绩cj表,学号和课程号的联合主键,并在成绩列上创建索引
      USE mytest;
      CREATE TABLE xs_kc(
      学号 CHAR(6) NOT NULL,
      课程号 CHAR(3) NOT NULL,
      成绩 TINYINT(1),
      学分 TINYINT(1),
      PRIMARY KEY(学号,课程号),
      INDEX cj(成绩)
      );
      
      SHOW INDEX FROM xs_kc;  //查看命令执行结果
      
    4. alter table 语句创建

      #	例子三:
      #在xs表的姓名列上创建一个非唯一的索引
      USE xscj;
      ALTER TABLE xs ADD INDEX xs_xm USING BTREE(姓名);
      
      #以xs表为例(假设表中主键未定),创建这样的索引,以加速表的检索速度
      ALTER TABLE xs ADD INDEX mark(出生日期,性别);
      
    5. 删除索引

      #当一个索引不在需要的时候,可以用 drop index 语句或者 alter table 语句删除它
      (1)使用 drop index: drop index 索引名 on 表名
      (2)使用 alter table: 
      		alter [ignore] table 表名 drop primary key	//删除主键
      		alter [ignore] table 表名 索引名			//删除索引
      		alter [ignore] table 表名 drop foreign key fk symbol //删除外键
      		
      #其中,drop 子句可以删除各种类型的索引。用户使用 drop primary key 字句时不需要提供索引名称,因为一个表只有一个主键
       
       
       #	例子四:
       #删除xs表上的mark索引
       #删除xs表上的mark索引
      DROP INDEX mark ON xs;
      
      ALTER TABLE xs DROP INDEX mark;
      
      #如果从表中删除列,索引可能会受影响。如果所删除的列为索引的组成部分,则该列也会从索引中删除。如果组成索引的所有列都被删除,则整个索引将会被删除。
      

    2.Mysql 数据完整性约束

    1. 主键约束

      • 作为列的完整性约束时,只需要在列定义的时候加上关键字primary key;

      • 作为表的完整性约束时,需要在语句最后加上一条primary key(列…)子句

        #创建表xs1,将姓名定义为主键
        CREATE TABLE xs1(
        学号 VARCHAR(6) NULL,
        姓名 VARCHAR(8) NOT NULL PRIMARY KEY,
        出生日期 DATETIME
        );
        
        #当表中的主键为复合主键时,只能定义为表的完整性约束
        #创建course表来记录每门课程的学生学号、姓名、课程号、学分和毕业日期。
        #其中学号、课程号和毕业日期构成复合主键
        CREATE TABLE  course(
        学号 VARCHAR(6) NOT NULL,
        姓名 VARCHAR(8) NOT NULL,
        毕业日期 DATE NOT NULL,
        课程号 VARCHAR(3),
        学分 TINYINT,
        PRIMARY KEY(学号,姓名,毕业日期)
        );
        
    2. 替代键约束

    3. 参照完整性约束

  • 相关阅读:
    基础语法 -实验楼
    JavaSE案例-Bank
    初识Java
    Java学习大纲-0412更新
    增量法
    蛮力法
    Host‘116.77.33.xx’is not allowed to connect to this MySQL server
    Maven坐标
    HotSpot虚拟机对象创建
    程序计数器为什么是线程私有的?
  • 原文地址:https://www.cnblogs.com/Jamdu0406/p/12752810.html
Copyright © 2011-2022 走看看