1、表的约束:下列约束条件均是针对表中字段进行的限制,从而保证表中数据的正确性和唯一性。
① PRIMARY KEY 为主键约束,用于唯一标识对应的记录(每个数据表中最多只能有一个主键约束,定义为PRIMARY KEY的字段不能有重复值且不能为NULL值);
② FOREIGN KEY 为外键约束;
③ NOT NULL为非空约束(字段的值不能为NULL);
④ UNIQUE为唯一性约束(表中字段的值不能重复出现) ;
⑤ DEFAULT为默认值约束,用于设置字段的默认值(给表中字段指定默认值);
2、设置表的字段值自动增加
若想为表中插入的新记录自动生成唯一的ID,可以使用AUTO_INCREMENT约束来实现,AUTO_INCREMENT约束的字段可以是任何整数类型(字段名 数据类型 AUTO_INCREMENT;)
3、索引(分为普通索引、唯一性索引、全文索引、单列索引、多列索引、空间索引)
1)在已经存在的表上创建索引:CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名
ON 表名 (字段名 [(长度)] [ASC|DESC]);
2)为了避免影响数据库性能,应该及时删除不再使用的索引。语法为:
ALTER TABLE 表名 DROP INDEX 字段名(或DROP INDEX 索引名 ON 表名;)
1) 创建一个名称为itcast的数据库。
CREATE DATABASE itcast;
2) 设计数据表tb_student的字段结构,字段有id(学号)、name(姓名)、age(年龄)、enrolmentdate(入学时间),并选择适合的数据类型。
tb_student数据表的字段结构如下表所示:
字段名 类型 是否允许为null 备注
id int(5) No 学号
name varchar(30) No 姓名
age int(2) No 年龄
enrolmentdate datetime No 入学时间
3) 依照表结构创建数据表,要求字段id为主键,可自动增加。
创建数据表的SQL语句如下:
CREATE TABLE tb_student(id INT(5) NOT NULL AUTO_INCREMENT ,
Name VARCHAR(30),
Age INT(2),
Enrolmentdate DATETIME,
PRIMARY KEY (id
))
1) 查看itcast数据库中的数据表tb_student。
desc tb_student;
2) 向表中增加字段classId(班级编号)。
ALTER TABLE tb_student ADD COLUMN classId
INT(8)
AFTER enrolmentdate
;
3) 为name字段添加非空约束。
ALTER TABLE tb_student CHANGE name
name
VARCHAR(30) NOT NULL;
4) 在id字段上建立索引。
CREATE INDEX index_id ON tb_student(id);
5) 给enrolmentdate字段添加默认约束,默认值为当前系统时间。
ALTER TABLE tb_student CHANGE enrolmentdate
enrolmentdate
TIMESTAMP DEFAULT NOW() NOT NULL;
二、主键
主键是通过PRIMARY KEY定义的,它可以唯一标识表中的记录。它的主要特征如下:
- 唯一性:不能有重复值
- 非空性:不能为空值
SQL语句:(联合主键)
student( stu_id INT,course_id INT, PRIMARY KEY( stu_id, course_id));