【MySQL数据库基础入门】0610

4 约束

  • 说明:通过对表的行或列的数据做出限制,确保数据的完整性、唯一性。

类型:

约束类型非空约束主键约束唯一约束默认约束外界约束
关键字NOT NULLPRIMARY KEYUNIQUEDEFAULTFOREIGN KEY

4.1 非空约束

  • NOT NULL 字段值禁止为空,为添加数值会报错

  • NULL 字段值可以为空

  • /*创建表时进行添加约束
    格式:列名+数据类型+约束*/
    CREATE TABLE bookinfo(
    	book_id INT,
        book_name VARCHAR(20) NOT NULL
    );
    /*修改表添加约束*/
    ALTER TABLE bookinfo 
    MODIFY book_name VARCHAR(20) NOT NULL;
    /*通过修改表,删除约束*/
    ALTER TABLE bookinfo 
    MODIFY book_name VARCHAR(20);
    
  • /*实例练习使用*/
     show databases;
     use book;	/*查看数据库,并进入book数据库*/
    show tables;
    drop tables bookinfo;	/*因为前面创建过bookinfo*/
    show columns from reader; /*查看reader数据表的类型*/
    show columns from bookinfo;
    
    create table bookinfo(
    	book_id int,
        book_name varchar(20) not null
        );
    
    insert into `bookinfo`(book_id) values(20110202); /*book_name无数值会报错*/
    alter table bookinfo 
    modify book_name varchar(20) not null; /*book_namex修改为空约束*/
    show columns from bookinfo;	/*查看是否已经更改成功*/
    

4.2主键约束

/*主键唯一性,并不能为空,能唯一标识一条记录
可加快查询速度,与外键形成关系
类型:
	单字段,1,定义列的同时指定主键
				列名+数据类型+primary key
		   2,列定义的后面指定
		   		[constraint+约束名] primary key(列名)
	*/
use book;
show tables;
drop table bookinfo;
create table bookinfo(					/*创建数据表时指定主键*/
	book_id int primary key,
    book_name varchar(20) not null
);
desc bookinfo;	/*查看表结构*/

drop table bookinfo;
create table bookinfo(					/*创建数据表,列后面指定主键*/
	book_id int,
    book_name varchar(20) not null,
    constraint vs_id primary key(book_id)	/*constraint+约束名+primary key(列名) */
);
desc bookinfo;
-- ------------------------------------------------------
/*多字段联合主键,复合主键
primary key(字段1,字段2,----);
*/
create table borrowinfo(		/*创建数据表时,添加主键*/
	book_id int,
	card_id char(18),
	primary key(book_id,card_id)
);

/*通过修改表添加主键*/
create table bookifno(
book_id int,
book_name varchar(20) not null
);								/*创建无主键的bookinfo数据表*/

alter table bookinfo 
modify book_id int primary key;	/*第1种,modify方式*/
alter table bookinfo
add primary key(book_id);	/*第2种,add方式*/
alter table bookinfo 
add constraint vs_id primary key(book_id);	/*第3种,通过constraint+约束名+primary key(列名)*/
-- ---------------------------------------
/* 删除主键
alter table bookinfo drop primary key;
通过修改表删除
*/
alter tabel bookinfo drop primary key;
desc bookinfo;	/*查看表结构,已经无主键*/

4.3唯一约束

/*要求列唯一,允许为空,唯一约束确保不重复
1,定义完列之后直接指定唯一约束:
	列名+数据类型+unique
2,定义完所有列之后指定唯一约束:
	constraint+约束名+unique(列名)*/
create table bookinfo(
	book_id int primary key,
	book_name varchar(20) unique not null	/*创建表时添加约束*/
);
create table bookinfo(		/*第二种,通过constraint+约束*/
	book_id int primary key,
	book_name varchar(20) not null,
	constraint uk_bname unique(book_name)
);
-- 通过修改表来添加约束
alter table bookinfo 
modify book_name varchar(20) unique;	/*第一种,modify*/
alter table bookinfo
add unique(book_name);	/*第二种,add*/
alter table bookinfo
add constraint uk_bname unique(book_name);	/*add constraint+约束名+列名*/
-- 删除唯一约束
alter table book_info 
drop index uk_bname;	/*drop index+约束名称*/
alter table book_info 
drop key uk_name;		/*dorp key+约束名称*/
-- --------------------------------------------------
/*唯一约束和主键约束的区别
一个数据表可以有多个unique,但只能一个primary key
primary key不允许有空值
unique 允许有空值
*/

4.4默认约束

-- 默认约束 指定某列的默认值
/*
列名+数据类型+default+默认值
*/
-- 创建表时添加默认约束
create table bookinfo(			
	book_id int primary key,
	press varchar(20) default '人民出版社'
);

-- 修改表时添加约束
alter table bookinfo	/*modify+列名+default+默认值*/
modify press varchar(20) default '人民出版社';
alter table bookinfo	/*alter column+列名+set default+默认值*/
alter column press set default '人民出版社';

-- 删除约束
alter table bookinfo 
modify press varchar(20);	/*第一种,modify方式*/
alter table bookinfo
alter column press drop default;	/*第二种,alter column+列名+drop defarult*/

4.5外键约束

-- 外键用来链接两个表数据,可以有多个外键
/*语法格式:
	[CONSTRAINT 外键约束名] FOREIGN KEY(列名)
	references 主表(主键);
*/
-- 创建表时添加外键
create table bookcategory(
	category_id int primary key,
	bategory varchar(20),
	parent_id int);
create table bookinfo(
	book_id int primary key,
	book_category_id int,
	constraint fk_cid foreign key(book_category_id)
	references bookcategory(category_id)
);

-- 修改表时添加外键约束
alter table bookinfo	/*add+foreign key+列名+references+表名(列名)*/
add foreign key(book_catagory_id)	
references bookcatagory(category_id);

-- 删除外键
alter table bookinfo drop foreign key fk_cid;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值