数据库的约束(对表中的数据进行限定,保证数据的正确性、有效性和完整性)


/*约束:对表中的数据进行限定,保证数据的正确性、有效性和完整性
 分类:1、主键约束:primary key  2、非空约束:not null  3、唯一约束:unique  4、外键约束:foreign key  */
 
 /*非空约束:not null*/
 /*创建表添加非空约束*/
CREATE TABLE stu ( 
id INT, 
NAME VARCHAR ( 20 ) NOT NULL /*name非空*/
);
/*删除name的非空约束*/
ALTER TABLE stu modify NAME VARCHAR(20);
/*创建表完成后,添加非空约束*/
ALTER TABLE stu modify NAME VARCHAR(20) NOT NULL;

desc stu;/*查询表的结构*/
drop table stu;/*删除表*/


/*唯一约束:unique*/
/*在创建表时,条件唯一约束*/
CREATE TABLE stu ( 
id INT, 
NAME VARCHAR ( 20 ) NOT NULL, /*name非空*/
phone_number VARCHAR(20) UNIQUE/*手机号*/
);
/*删除唯一约束*/
ALTER TABLE stu DROP INDEX phone_number;
/*在表创建完后,添加唯一约束*/
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;


/*主键约束:primary key  非空且唯一*/
/*在创建表时,添加主键约束*/
CREATE TABLE stu(
   id INT PRIMARY KEY,/*给id添加主键约束*/
	 NAME VARCHAR(20)
);
/*删除主键*/
ALTER TABLE stu DROP PRIMARY KEY;
/*创建完表后,添加主键*/
ALTER TABLE stu MODIFY id INT PRIMARY KEY;
/*主键约束 自动增长:如果某一列是数值类型的,使用auto_increment来完成值的自动增长*/
CREATE TABLE stu(
   id INT PRIMARY KEY auto_increment,/*给id添加主键约束*/
	 NAME VARCHAR(20)
);
INSERT INTO stu VALUES(null,'aaa');/*如果null为10,则下一条数据的id为11*/
DELETE from stu where id=1;
select id,name FROM stu;
/*PRIMARY key(一个表的主键,另一个表的主键) :联合主键*/


/*外键约束:foreign key  数据有冗余:拆分为2个表*/
/*语法:create table 表名(  
               ...
              外键列
							constraint 外键名称 foreign key (外键列名称) references 主表名称(主列表名称)
          );
 /*在创建表时,可以添加外键*/
CREATE TABLE stu(
   id INT PRIMARY KEY auto_increment,/*给id添加主键约束*/
	 NAME VARCHAR(20),
	 dep_id INT,/*外键对应主表的主键*/
	 CONSTRAINT stu_dept FOREIGN KEY (dep_id) references dept(id)
);
/*删除外键  语法:ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;*/
ALTER TABLE stu DROP FOREIGN KEY stu_dept;
/*添加外键  语法:ALTER TABLE 表名 ADD  CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) references dept(主表名称);*/
ALTER TABLE stu ADD  CONSTRAINT stu_dept FOREIGN KEY (dep_id) references dept(id);

/*级联操作:ON UPDATE CASCADE(更新)  ON DELETE CASCADE(删除)*/
ALTER TABLE stu ADD  CONSTRAINT stu_dept FOREIGN KEY (dep_id) references dept(id) ON UPDATE CASCADE;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值