标的约束和索引

表的约束(非空且唯一)

为了防止数据表中插入错误的数据,在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;

原文地址:https://www.cnblogs.com/Wsy5-5/p/12048661.html