• 标的约束和索引


    表的约束(非空且唯一)

    为了防止数据表中插入错误的数据,在MySQL中,定义了一些维护数据库完整性的规则。即表的约束。

    1、主键约束(PRIMARY KEY):它可以唯一标识表中的记录,这就好比身份证可以用来标识人的身份一样。速查找表中的某条信息,可以通过设置主键来实现。 

    主键分为:1、单字段主键

                      2、多字段主键

    单字段主键:有一个字段构成的主键

    基本语法:字段名 数据类型  PRIMARY KEY

    SQL语句如下:

    执行结果如下:

     多字段主键:多个字段组合而成的主键

    基本语法:PRIMARY KEY (字段名1,字段名2,……字段名n)

    SQL语句如下:

    执行结果如下:

    注意:每个数据表中最多只能有一个主键约束,定义为PRIMARY KEY的字段不能有重复值且不能为NULL值。

     2、非空约束(NOT NULL):字段的值不能为NULL

    基本语法:字段名 数据类型 NOT NULL;

    SQL语句如下:

     执行结果如下:

    注意:在同一个数据表中可以定义多个非空字段。

    3、唯一约束(UNIQUE):用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。

    基本语法:字段名 数据类型 UNIQUE;

    SQL语句如下:

     执行结果如下:

     

    4、默认约束(DEFAULT):用于给数据表中的字段指定默认值,即当在表中插入一条新记录时,如果没有给这个字段赋值,那么,数据库系统会自动为这个字段插入默认值。

    基本语法:字段名 数据类型  DEFAULT 默认值;

    SQL语句如下:

     执行结果如下:

    5、自增约束(AUTO_INCREMENT):在数据表中,为表中插入的新记录自动生成唯一的ID,AUTO_INCREMENT约束的字段可以是任何整数类型。默认情况下,该字段的值是从1开始自增的。

    基本语法:字段名 数据类型 AUTO_INCREMENT;

    SQL语句如下:

     

     执行结果如下:

    索引

     数据库的索引好比新华字典的音序表,它是对数据库表中一列或多列的值进行排序后的一种结构,其作用就是提高表中数据的查询速度。
    MySQL中的索引分为很多种,具体如下:
    1、普通索引
    2、唯一性索引
    3、全文索引
    4、单列索引
    5、多列索引
    6、空间索引

    一、创建表的时候创建索引

    1、创建普通索引

    SQL语句如下:

    2、创建唯一性索引

    SQL语句如下:

     3、创建全文索引

    SQL语句如下:

     创建单列索引

    SQL语句如下:

     5、创建多列索引

    SQL语句如下:

     注意:在多列索引中,只有查询条件中使用了这些字段中的第一个字段时,多列索引才会被使用。

    6、创建空间索引

    SQL语句如下:

    注意:创建空间索引时,所在字段的值不能为空值,并且表的存储引擎为MyISAM。

    二、使用CREATE INDEX 语句在已经存在的表上创建索引

    基本格式:CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名ON 表名 (字段名 [(长度)] [ASC|DESC]);

    (UNIQUE、FULLTEXT和SPATIAL都是可选参数,分别用于表示唯一性索引、全文索引和空间索引。INDEX用于指明字段为索引。)

    创建一个book表,使用CREATE INDEX创建索引

    1、创建普通索引

    SQL语句如下:
    CREATE INDEX index_id ON book(bookid);

    2、创建唯一性索引

    SQL语句如下:

    CREATE UNIQUE INDEX uniqueidx ON book(bookid);

    3、创建单列索引

    SQL语句如下:

    CREATE INDEX singleidx ON book(comment);

    4、创建全文索引

    删除表book,重新创建表book,

    首先删除表:DROP TABLE book;

    然后创建表book:

    创建全文索引SQL语句如下:
    CREATE FULLTEXT INDEX fulltextidx ON book(info);

    6、创建控件索引

    SQL语句如下:

    CREATE TABLE t7(g GEOMETRY NOT NULL)ENGINE=MyISAM;

    三、使用ALTER TABLE语句在已经存在表上创建索引

    1、创建普通索引

    SQL语句如下:

    ALTER TABLE book ADD INDEX index_id(bookid);

    2、创建唯一性索引

    SQL语句如下:

    ALTER TABLE book ADD UNIQUE uniqueidx(bookid);

    3、创建单列索引

    SQL语句如下:

    ALTER TABLE book ADD INDEX singleidx (comment(50));

    4、创建多列索引

    SQL语句如下:

    ALTER TABLE book ADD INDEX multidx(authors(20),info(50));

    5、创建全文索引

    需重新建表后创建全文索引

    SQL语句如下:

    ALTER TABLE book ADD FULLTEXT INDEX fulltextidx(info);

    6、创建空间索引

    SQL语句如下:

    CREATE TABLE t8( space GEOMETRY NOT NULL)ENGINE=MyISAM;

    删除索引

    1、使用ALTER TABLE删除索引

    基本语法:ALTER TABLE 表名 DROP INDEX 字段名

    SQL语句如下:

    ALTER TABLE book DROP INDEX fulltextidx;

    2、使用DROP INDEX删除索引

    基本语法:DROP INDEX 索引名 ON 表名;

    SQL语句如下:
    DROP INDEX spatidx ON t8;

  • 相关阅读:
    【POJ1958】汉诺塔+
    hdu 5067(暴力搜索)
    hdu 5063(思路题-反向操作数组)
    hdu 5062(水题)
    hdu 2227(树状数组+dp)
    hdu 5480(维护前缀和+思路题)
    hdu 2492(树状数组)
    hdu 1394(树状数组)
    poj 2299(离散化+树状数组)
    poj 3321(树状数组)
  • 原文地址:https://www.cnblogs.com/Wsy5-5/p/12048661.html
Copyright © 2020-2023  润新知