mysql约束

来源:互联网 发布:4glte网络优化前景如何 编辑:程序博客网 时间:2024/05/18 01:07

约束

保持数据一致性,完整性。

约束分为表级约束和列(字段)级约束;

约束类型包括:

NOT NULL(非空约束);

PRIMARY KEY(主键约束);

UNIQUE KEY(唯一约束);

DEFAULT(默认约束);

FOREIGN KEY(外键约束);作用实现一对一或者一对多关系;

添加约束

ALTER table_name ADD

外键约束

-保持数据一致性,完整性。实现一对一或一对多关系。

创建外键约束要求

1)父表跟子表必须使用相同的存储引擎,且必须为INNODB

2)外间列跟参照列必须具有相同的数据类型,且数字的长度跟是否有符号位必须相同;

3)外间列跟参照列必须创建索引(id在设置为primary key的时候就创建了索引),如果外键列不存在索引的话,mysql将自动创建索引;

 

创建外键约束

创建父表:provinces

mysql>CREATE TABLE provinces(

>id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

>pname VARCHAR(20) NOT NULL

>);

创建子表:users;

>CREATE TABLE users(

>id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

>username VARCHAR(10) NOT NULL,

>pid(外键) SMALLINT(与参照键类型相同) UNSIGNED

>FOREIGN KEY (pid) PREFERENCES provinces (id)

>);

展示数据表的索引:SHOW INDEX FROM tb_name\G;

SHOW CREATE TABLE table_name

外键约束的参照操作(作用)

FOREIGN KEY (child_id) REFERENCES dad_tbname(dad_id) ON DELETE CASCADE
//ON DELETE 在删除时,父表与子表关系为:CASCADE 一起删除或更新,该行。

//ON DELETE SET NULL: 父表被操作,子表外键列自行设空,不能存在NOT NULL属性

//ON DELETE RESTRICT: 父表被操作,子表不跟着操作,独立性。NO ACTION与RESTRICT,类似。

//外键约束后,子表要增加记录需要父表先存在参照。

少用物理外键,逻辑外键常用


  • 查看表的字段信息:desc 表名;
  • 查看表的所有信息:show create table 表名;
  • 添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);
  • 添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
  • (alter table 主表名 add foreign key (字段 ) references 从表名(字段) on delete cascade)
  • 添加唯一约束:ALTER table 表名 add unique key 约束名 (字段);
  • 删除主键约束:alter table 表名 drop primary key;
  • 删除外键约束:alter table 表名 drop foreign key 外键(区分大小写);
  • 修改表名:alter table t_book rename to bbb;
  • 添加列:alter table 表名 add column 列名 varchar(30);
  • 删除列:alter table 表名 drop column 列名;
  • 修改列名MySQL: alter table bbb change nnnnn hh int;
  • 修改列名SQLServer:exec sp_rename't_student.name','nn','column';
  • 修改列名Oracle:alter table bbb rename column nnnnn to hh int;
  • 修改列属性:alter table t_book modify name varchar(22);

sp_rename:SQLServer 内置的存储过程,用与修改表的定义。


0 0
原创粉丝点击