约束
- 非空约束(not null)
- 唯一性约束(unique)
- 主键约束(primary key) PK
- 外键约束(foreign key) FK
- 检查约束(目前MySQL不支持、Oracle支持)
非空约束
name varchar(32) not null
唯一约束 (表之间插入相同值会报错)
email varchar(128) unique
email varchar(128), unique(name,email)
constraint t_user_email_unique unique(email)
给约束表起名,方便以后删除
主键约束
id int(10) primary key
单一列级constraint t_user_id_pk primary key(id)
单一表级primary key(id,name)
符合表级- 主键自增 1234567reate table t_user(id int(10) primary key auto_increment,name varchar(32) not null);insert into t_user(name) values('jay');select * from t_user
外键约束
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
索引
字段建立索引可以大大提升查询速度
普通索引
CREATE INDEX indexName ON mytable(username(length))
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) )
唯一索引
它必须唯一,但允许有空值CREATE UNIQUE INDEX indexName ON mytable(username(length))
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) )
主键索引
唯一且不允许空CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID) );
组合索引
ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);
字符串
varchar最好在1024以内,虽然它能支持到6553;其它用blob和text来代替