创建约束的目的:
约束条件都是针对表中字段进行限制,从而保证数据表中的数据正确性和唯一性
约束的条件:
PIMARY KEY(主键)、FOREIGN KEY(外键)、NOT NULL(非空)、UNIQUE(唯一)、DEFAULT(默认)
主键约束:它可以唯一标识表中的记录。
1、单字段主键
格式:字段名 数据类型 PRIMARY KEY
2、多字段主键
**格式:**PRIMARY KEY(字段名1,字段名2,….字段名n)
需要注意的是:每个数据表中最多只能有一个主键约束,定义为PRIMARY KEY的字段不能有重复值且不能为NULL值。
非空约束:指的是字段不能为NULL。 格式:字段名 数据类型 NOT NULL
需要注意的是:在同一个数据表中可以定义多个非空约束。
用于保证数据表中字段的唯一性,即不字段不能重复出现。
格式:字段名 数据类型 UNIQUE;
默认约束:给数据表中的字段指定默认值。
格式:字段名 数据类型 DEFAULT 默认值;
设置表的字段值(整数类型的字段)自动增加:使用AUTO_INCREMENT约束来实现。-AUTO_INCREMENT可以是任何整数类型。-默认从1开始自增事例:
mysql> create table studentInfo( -> id int PRIMARY KEY , -> name varchar(20) NOT NULL, -> age int(11)); //创建学生信息表 设置id的约束为主键PIMARY KEY,name的约束为非空NOT NULL。数据库的索引好比新华字典的音序表,它是对数据库表中一列或多列的值进行排序后的 一种结构,其作用就是提高表中数据的查询速度。 MySQL中的索引分为很多种,具体如下:
1、普通索引2、唯一性索引3、全文索引4、单列索引5、多列索引6、空间索引创建索引的方式有三种,具体如下:
1、创建表的时候创建索引语法格式:
CREATE TABLE 表名 ( 字段名 数据类型[完整性约束条件], 字段名 数据类型[完整性约束条件], ...... 字段名 数据类型 [[UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY [别名] (字段名1 [(长度)]) [ASC|DESC])] ); 关于上述语法的相关解释具体如下:UNIQUE:可选参数,表示唯一性约束FULLTEXT:可选参数,表示全文约束SPATIAL:可选参数,表示空间约束INDEX和KEY:用来表示字段的索引,二者选一即可别名:可选参数,表示创建的索引的名称字段名1:指定索引对应字段的名称长度:可选参数,用于表示索引的长度ASC和DESC:可选参数,其中,ASC表示升序排列,DESC表示降序排列2、使用CREATE INDEX 语句在已经存在的表上创建索引语法格式:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 ON 表名 (字段名 [(长度)] [ASC|DESC]); create unique index un_id on g1 (id asc);3、使用ALTER TABLE语句在已经存在表上创建索引 (必须是空表)
ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 (字段名 [(长度)] [ASC|DESC])4、删除索引 (必须是空表)
ALTER TABLE 表名 DROP INDEX 索引名 DROP INDEX 索引名 ON 表名;事例:
mysql> create unique index stu_id on studentInfo(id asc); mysql> create fulltext index stu_name on studentInfo(name asc); //给学生信息表中的id 和 name添加索引。格式1:
insert into 表名 [(字段名1,字段名2,....)]values(值1,值2,...); 例如:insert into tb_name values(1001,'张三',16,95);格式2:
insert into 表名 set 字段名1=值1,[字段名2=值2,字段名n=值n]; insert into tb_name set id=1001,name='张三';事例:
mysql> insert into studentInfo values(1019,'小李',22); mysql> insert into studentInfo values(1020,'小张',23); //给学生信息表添加一条数据 mysql> select * from studentInfo; //查询学生信息表中的记录 mysql> delete from studentInfo where id=1019; //删除id为1019的记录。