MySQL中各种约束添加删除

本文深入探讨了SQL中的六种主要约束类型:主键约束、外键约束、非空约束、唯一约束、默认约束和自增约束。通过具体示例,详细解释了如何创建和修改这些约束,以及它们在数据库设计中的作用。
CREATE  DATABASE  IF NOT EXISTS 2019dbtest DEFAULT  character SET  utf8 COLLATE  utf8_general_ci;
ALTER  DATABASE  2019dbtest DEFAULT  character SET  utf8 COLLATE  utf8_general_ci;
rename  TABLE pktest1 TO pktest11;   -- 重命名表

-- 1、主键约束
CREATE TABLE pktest1(
	pktestid1 CHAR(4) NOT NULL PRIMARY KEY
);
CREATE TABLE pktest2(
	pktestid2 CHAR(4) NOT NULL,
	PRIMARY KEY(pktestid2)
);
CREATE TABLE pktest3(
	pktestid3 CHAR(4) NOT NULL
);

ALTER TABLE pktest3 ADD PRIMARY KEY(pktestid3);

-- 2、外键约束
CREATE TABLE fktest1(
	pkid1 CHAR(4) NOT NULL PRIMARY key,
	fktestid1 CHAR(4),
	CONSTRAINT pktest1_fktest1 FOREIGN KEY (fktestid1)
	REFERENCES pktest1(pktestid1)
);

CREATE TABLE fktest2(
	pkid2 CHAR(4) NOT NULL PRIMARY key,
	fktestid2 CHAR(4)
);
ALTER TABLE fktest2
ADD CONSTRAINT fktest2_pktest2 
FOREIGN  KEY(fktestid2)
REFERENCES pktest2(pktestid2);

alter table fktest2 add constraint fktest2_pktest2
foreign key(fktestid2) references pktest2(pktestid2)\G --\G 显示更多信息

-- 删除外键
ALTER  TABLE  fktest2 drop foreign key fktest2_pktest2;

-- 3、非空约束
CREATE TABLE nntest1(
	nntestid1 CHAR(4) NOT NULL
);
CREATE TABLE nntest2(
	nntestid2 CHAR(4) NULL
);

ALTER TABLE nntest2 modify nntestid2 CHAR(4) NOT null;

-- 4、唯一约束
create TABLE unqtest(
	unqtestid1 CHAR(4) UNIQUE
);

create TABLE unqtest1(
	unqtestid1 CHAR(4)
);
ALTER TABLE unqtest1 ADD UNIQUE KEY IF NOT EXISTS (unqtestid1);
ALTER TABLE unqtest1 drop KEY IF EXISTS unqtestid1;

-- 5、默认约束
CREATE TABLE dftest1(
	dftestid1 CHAR(4) DEFAULT 'wei'
);

CREATE TABLE dftest2(
	dftestid2 CHAR(4)
);
ALTER TABLE dftest2 change dftestid2 dftestid2 CHAR(4)
NOT NULL DEFAULT 'wei';

-- 6、自增约束
CREATE TABLE autointest1(
	autointestid1 INT PRIMARY KEY auto_increment,
	dataval1 CHAR(8)
);
INSERT INTO autointest1(dataval1) VALUES('wl plus1');
INSERT INTO autointest1(dataval1) VALUES('dxf plus1');

CREATE TABLE autointest2(
	autointestid2 INT PRIMARY KEY,
	dataval2 CHAR(8)
);
ALTER TABLE autointest2 change autointestid2
autointestid2 INT auto_increment;
INSERT INTO autointest2(dataval2) VALUES
('wl plus1'),
('xf plus1'),
('xx plus1'),
('mm plus1'),
('yq plus1')
;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值