约束:

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;