表的约束(非空且唯一)
为了防止数据表中插入错误的数据,在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;