sql-约束constraint(非空,唯一,主键,外键,检查)自学笔记
来源:互联网 发布:java源代码文件调试 编辑:程序博客网 时间:2024/06/07 10:00
约束(constraint)即完整性约束
在表上强制执行的数据校验规则,
对表执行DML(insert,update,delete)操作时,如果不符合规则则无法执行。
种类:
非空约束 NOT NULL -> NN
唯一性约束 UNIQUE KEY -> UK
主键约束 PRIMARY KEY -> PK
外键约束 FOREIGN KEY -> FK
检查约束 CHECK KEY -> CK
■ 非空 NOT NULL
要求此项目数据内容不能为空
用法:
1.建表时直接追加
create table user{
'user_id' varchar(8)not null COMMENT '用户id',
'user_name' varchar(32)not null COMMENT '用户名',
'password' varchar(128) COMMENT '密码',
primary key ('user_id') ,
unique key ('user_name')
} ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.对已存在的表增加非空约束
ALTER table user MODIFY(‘password’ varchar(128) not Null);
3.对已存在的表删除非空约束
ALTER table user MODIFY(‘password’ varchar(128) Null);
■ 唯一性约束 unique key
字段或字段的组合不能有重复值(不包括null)
用法
1.建表时直接追加
create table user{
'user_id' varchar(8) not null COMMENT '用户id',
'user_name' varchar(32) not null COMMENT '用户名',
'password' varchar(128) COMMENT '密码',
primary key ('user_id') ,
unique key ('user_name')
} ENGINE=InnoDB DEFAULT CHARSET=utf8;
或
create table user{
'user_id' varchar(8) not null COMMENT '用户id',
'user_name' varchar(32) not null uniqueCOMMENT '用户名',
'password' varchar(128) COMMENT '密码',
primary key ('user_id')
} ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.对已存在的表增加唯一性约束
ALTER table user ADD unique('user_name');
3.同时对多个字段增加唯一性约束
ALTER table user ADD constraint user_namepwd
unique('user_name','password');
■ 主键约束 PRIMARY KEY
一个表中只能有一个主键(可以是单列,也可以是多个字段的组合)
主键:对应的字段既要是not null也要是unique key;尽量是单列;对系统无意义的数据;不要更新主键;不要是动态数据(如时间戳);尽量是自动生成数据,
用途:仅是唯一标识行
1.建表时直接追加
create table user{
'user_id' varchar(8) not nullprimary key COMMENT '用户id',
'user_name' varchar(32) not null COMMENT '用户名',
'password' varchar(128) COMMENT '密码',
unique key ('user_name')
} ENGINE=InnoDB DEFAULT CHARSET=utf8;
或
create table user{
'user_id' varchar(8) not null COMMENT '用户id',
'user_name' varchar(32) not null COMMENT '用户名',
'password' varchar(128) COMMENT '密码',
primary key ('user_id') ,
unique key ('user_name')
} ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.对已存在的表增加主键约束
create table user{
'user_id' varchar(8) not null COMMENT '用户id',
'user_name' varchar(32) not null COMMENT '用户名',
'password' varchar(128) COMMENT '密码',
unique key ('user_name')
} ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE user ADD constraint pkid primary key ('user_id') ;
3.删除主键
Alter table user Drop Constraint PrimaryKey(默认名);
Alter table user Drop Constraint pkid (主键约束的别名);
■ 外键约束 FOREIGN KEY
两个表的字段,或一个表的2个字段保持相关的关系
主表/父表 PK
从表/子表 FK (子表参照父表数据)
注意事项:子表列的值必须从主表得到,不能为null;主表字段的数据被子表参照使用后,数据不能删除。
1.建表时直接追加
create table note{
'note_id' varchar(8) COMMENT '笔记id',
'notebook_id' varchar(8) COMMENT '笔记本id',
'user_id' varchar(8) COMMENT '用户id',
'note_name' varchar(128) COMMENT '笔记名称',
'note_title' varchar(256) not nullCOMMENT '笔记标题',
'note_text' text not null COMMENT '笔记内容',
'note_status' varchar(8) not null COMMENT '笔记状态',
'creat_time' date default sysdate COMMENT '创建时间',
'current_fixtime' date default sysdate COMMENT '最后修改时间',
primary key ('note_id'),
CONSTRAINT `FK_note_notebookid` FOREIGN KEY (`notebook_id`) REFERENCES `notebook` (`notebook_id`),
} ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.对已存在的表增加外键约束
ALTER TABLE note ADD constraint `FK_note_userid` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`);
■ 检查约束 check
自定义硬性的检查条件,不满足时DML语句不执行。
ALTER TABLE note ADD CONSTRAINT 'check_notebook_id' CHECK('notebook_id' >100);
- sql-约束constraint(非空,唯一,主键,外键,检查)自学笔记
- sql-约束constraint(非空,唯一,主键,外键,检查)自学笔记
- sql-约束constraint(非空,唯一,主键,外键,检查)自学笔记
- Day54、约束(主键约束、唯一约束、检查约束、非空约束)、数据库对象(序列、索引、视图、分页)
- 约束:确保数据的完整性(主键,唯一,检查,默认,非空,外键)
- ORACLE约束:主键,外键,非空,唯一,条件
- 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)
- MySQL约束:非空约束、主键约束、唯一约束、默认约束、外键约束
- SQL 主键,外键,唯一约束,check约束
- 【SQL Server学习笔记】14:查漏补缺1(三值谓词,范式,主键/唯一/外键/检查/默认约束)
- 主键约束、唯一性约束、检查约束
- MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束
- sql server 增加非空约束 唯一约束
- sql 约束(constraint)
- oracle数据库主键约束删除之后依然报错ORA-00001: unique constraint(违反唯一约束)
- 主键、外键、唯一、约束区别
- SQL - 创建一个学生表,要求有主键约束和非空约束
- mysql非空与唯一性约束
- CSS仿真扑克牌
- 关于apache不能启动的问题
- volatile的非原子性说明
- SQL优化大全
- java一些细节j
- sql-约束constraint(非空,唯一,主键,外键,检查)自学笔记
- 版本控制工具--Git
- 基本数据类型
- Android基础之startActivityForResult详解
- 总结-树链剖分
- 窗口与winmain-win32与C++入门笔记(2)
- java集合类详解
- canvas中save和restore
- duilib bkimage属性说明