约束:
not null:非空约束,指定某列不为空
unique: 唯一约束,指定某列和几列组合的数据不能重复
primary key:主键约束,指定某列的数据不能重复、唯一
foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据
check:检查,指定一个表达式,用于检验指定数据
Not null
create table temp( id int not null, name varchar(255) not null default ‘abc’, sex char null ) |
Unique
create table temp ( id int not null, name varchar(25), password varchar(16), constraint uk_name_pwd unique(name) ); |
Primary key
create table temp ( id int primary key, name varchar(25), password varchar(16) );
设置主键自增:auto_increment create table temp ( id int auto_increment primary key, name varchar(25), password varchar(16) );
|
foreign key:
建立在两表或多张表中的关联关系,以保证数据完整性
注意:1.子表参照的值必须在主表被参照字段的值的范围内
2.如果主表中有值被参照,那么主表中的相应记录不能被删除
3.子表的外键参照的列只能是主表的主键列或唯一约束的列
CREATE TABLE student( sid INT PRIMARY KEY auto_increment, sname VARCHAR(20), scid INT,
-- FOREIGN KEY (scid) REFERENCES class(cid)
CONSTRAINT fk_scid FOREIGN key(scid) REFERENCES class(cid)
)ENGINE=INNODB;
DROP TABLE student; DROP TABLE class;
语法1: FOREIGN KEY (外键字段) REFERENCES 主表(主键字段); 语法2: CONSTRAINT 外键名 FOREIGN KEY (外键字段) REFERENCES 主表(主键字段); (外键名:fk_字段名) --------------------------- ENGINE : 引擎
mysql所特有一种数据存储机制 |
Check(MySQL数据库中,没有作用)
CREATE TABLE STUDENT( SID INT PRIMARY KEY, SNAME VARCHAR(20) NOT NULL, SSEX CHAR(1), SAGE INT check( sage<19) ) |
建表后操作表表结构:
查看表结构:
DESC 表名; mysql> desc student; |
修改列类型:
alter TABLE 表名 MODIFY 列名 目标类型; mysql> ALTER TABLE student MODIFY sid VARCHAR(10); |
增加列:
alter TABLE 表名 ADD 列名 类型; mysql>alter TABLE student ADD sage int; |
删除列:
alter TABLE 表名 DROP 列名; mysql> alter table student drop sname; |
修改列名:
alter TABLE 表名 CHANGE 旧列名 新列名 类型; mysql> ALTER TABLE student CHANGE aaa bbb INT; |
修改表名:
语法1: ALTER TABLE 表名 RENAME 新表名; 语法2: RENAME TABLE 旧表名 TO 新表名; mysql> alter table student rename stu; mysql> rename table student to stu; |