MySql的主键和外键、索引、约束、非空的使用方法

1. 约束,非空

唯一性约束语法:

单一属性约束

drop table if exists t_user;
create table t_user(
    id int(4),
    name varchar(20) not null,    
    email varchar(20) unique
);

同时约束name,和email 不能为空

drop table if exists t_user;
create table t_user(
    id int(4),
    name varchar(20) not null UNIQUE,    
    email varchar(20) unique
);

此方法无法同时约束两个条件

drop table if exists t_user;
create table t_user(
    id int(4),
    name varchar(20) not null,    
    email varchar(20) ,
	unique(name,email)
);

例如:
INSERT INTO t_user(id,name,email) values (1,'lis','wsi@123.com');
INSERT INTO t_user(id,name,email) values (2,'lis','wsi@123.com');
同时执行上面两条语句不会成功,但是
INSERT INTO t_user(id,name,email) values (1,'li','wsi@123.com');
INSERT INTO t_user(id,name,email) values (2,'lis','wsi@123.com');
或
INSERT INTO t_user(id,name,email) values (1,'lis','wsi@123.com');
INSERT INTO t_user(id,name,email) values (2,'lis','si@123.com');
会执行成功

给唯一约束条件起别名,方便删除等一些其他操作


drop table if exists t_user;
create table t_user(
    id int(4),
    name varchar(20) not null,    
    email varchar(20) ,
	 CONSTRAINT t_user_name_email_unique unique(name,email)
);

2. 主键,外键

添加主键primary key的字段既不能重复也不能为空,效果和 not null unique 相同,但本质不同,主键不仅有not null unique作用,而且主键字段还会自动添加索引“索引—index”。

同时使用主键和外键

drop table if exists t_student;
create table t_student(
    sno int(4) PRIMARY KEY ,
    sname varchar(20),    
    classno int(5) ,
	  CONSTRAINT t_student_classno_fk foreign key(classno) references t_class(cno)
);

drop table if exists t_class;
create table t_class(
	cno int(5) primary key ,
	cname varchar(25)
);

insert into t_class(cno,cname) values (100,'高三一班');
insert into t_class(cno,cname) values (200,'高三二班');
insert into t_class(cno,cname) values (300,'高三三班');

//可以运行
insert into t_student(sname,classno) values ('张三',100);
insert into t_student(sname,classno) values ('李四',200);
insert into t_student(sname,classno) values ('王五',300);

//不可以运行,因为外键约束条件,在t_class表中没有400所以无法进行插入数据
insert into t_student(sname,classno) values ('xiaoer',400);

3. 级联更新,级联删除

添加外键


alter table t_student add constraint t_student_classno_fk  foreign key(classno)  references t_class(cno) on delete cascade;

删除外键


alter table t_student drop foreign key t_student_classno_fk;

更新


alter table t_student add constraint t_student_classno_fk  foreign key(classno)  references t_class(cno) on update cascade;

4. 添加删除索引

添加索引


create index t_student_sanme_index on t_student(sname);

删除索引


drop index t_student_sanme_index on t_student;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值