【数据库SQL】约束
约束(Constraint)
什么是约束?
在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。
常见的约束有哪些?
非空约束(not null):约束的字段不能为NULL唯一约束(unique):约束的字段不能重复主键约束(primary key):约束的字段既不能为NULL,也不能重复(简称PK)外键约束(foreign key):...(简称FK)检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束。
其他需要掌握的概念
列级约束
表级约束
非空约束
非空约束
not null
drop table if exists t_user;
create table t_user( id int,username varchar(255) not null,password varchar(255)
);insert into t_user(id,password) values(1,'123');
ERROR 1364 (HY000): Field 'username' doesn't have a default valueinsert into t_user(id,username,password) values(1,'lisi','123');
注意:not null约束只有列级约束。没有表级约束。
唯一约束
唯一约束
unique
唯一约束修饰的字段具有唯一性,不能重复。但可以为NULL。
案例1:
给某一列添加unique
drop table if exists t_user;
create table t_user(id int,username varchar(255) unique // 列级约束
);
验证:
insert into t_user values(1,'zhangsan');
insert into t_user values(2,'zhangsan');
ERROR 1062 (23000): Duplicate entry 'zhangsan' for key 'username'insert into t_user(id) values(2);
insert into t_user(id) values(3);
insert into t_user(id) values(4);
案例2:
给两个列或者多个列添加unique
drop table if exists t_user;
create table t_user(id int, usercode varchar(255) unique,username varchar(255) unique
);
验证:
insert into t_user values(1,'111','zs');
insert into t_user values(2,'111','ls');
ERROR 1062 (23000): Duplicate entry '111' for key 'usercode'
案例3:
两个或多个字段联合起来添加1个约束unique 【表级约束】
drop table if exists t_user;
create table t_user(id int, usercode varchar(255),username varchar(255),unique(usercode,username) // 多个字段联合起来添加1个约束unique 【表级约束】
);
这种写法表示两个或多个字段联合起来之后具有唯一性(不能重复)
验证:
insert into t_user values(1,'111','zs');
insert into t_user values(2,'111','ls');
insert into t_user values(3,'222','zs');
select * from t_user;
insert into t_user values(4,'111','zs');
ERROR 1062 (23000): Duplicate entry '111-zs' for key 'usercode'
参考上边的两种写法,可做一个定义:
直接在字段后边添加的约束,叫“列级约束”;
在所有字段声明完毕之后再单独添加的约束,叫“表级约束”;
注意:not null约束只有列级约束。没有表级约束。
主键约束(PK)
外键约束(FK)
【数据库SQL】约束相关推荐
- SQL数据库常用约束及建表、插入数据时注意事项
1.数据库常用约束 primary key --主键约束 foreign key (references) --外键约束 unique --唯一值约束 default --默认值约束 check -- ...
- 关于数据库SQL优化
1.数据库访问优化 要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件时硬 ...
- oracle数据库sql培训,Oracle数据库SQL语言实战培训教程(全面、详细、案例、精讲)套餐...
风哥oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 套餐介绍: 风哥Oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 内容: SQL语言基础入 ...
- sql replace替换多个字符_牛客网数据库SQL实战详细剖析(4150)
文章来源:大数据肌肉猿 作者:无精疯 这是一个系列文章,总共61题,分6期,有答案以及解题思路,并附上解题的一个思考过程.具体题目可参考牛客网的SQL实战模块:https://www.nowcoder ...
- mysql sql exists_数据库sql语句的exists总结
数据库sql语句的exists总结 sql exists in 学习 先来比较下语法: --deals=交易表,areas=地域表,例如香港:我们的目的:查看有交易的地域 select * from ...
- Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句
Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...
- 第三阶段:Web前端:02数据库(sql语言、JDBC数据库连接) | 03(1)SpringBoot
二.数据库--> MySQl或MariaDB 0.1.Mysql-安装步骤 进入网址 http://doc.canglaoshi.org/-->常用下载:Windows必备-->Ma ...
- 数据库SQL实战题目详解(全61题)---(41-61)部分
题目来源:牛客网–<数据库SQL实战> https://www.nowcoder.com/ta/sql?page=0 题目答案为博主自写已通过运行,题目难度近似于阶梯上升,可根据自身情况分 ...
- MySQL中操作关系型数据库 SQL
数据库(database) 常见的数据库: 关系型数据库: SQL server 微软 Oracle oracle (甲骨文) MySQL oracle DB2 IBM SQLIte 安卓 NoSQL ...
- 【MySQL】数据库的约束
哈喽,大家好!我是保护小周ღ,本期为大家带来的是 MySQL 数据库中对表的约束,主要有null (空约束),unique(唯一约束),primary key(主键约束),default(默认值约束) ...
最新文章
- ionic项目创建打包签名
- php fastcgi配置_IIS7.5配置php(FastCGI)- 自动配置
- 怎么知道python有哪些库、哪些方法-哪些 Python 库让你相见恨晚?
- 计算智能-群智能算法-蚁群算法matlab实现
- 「机械」4大传动方式优劣对比:机械、电气、气压、液压
- Struts2入门到放弃
- 【论文笔记】Beyond Low-frequency Information in Graph Convolutional Networks
- Mac系统下安装Port
- 【霜雪千年】MMD动作镜头下载
- 软件质量测试一般方法
- 彩虹域名授权平台系统正版源码 带下载更新功能
- 给初学者推荐的10个Python免费学习网站!赶紧收藏吧!
- 简析国内外电商的区别
- Nodejs Promise 读书笔记
- ubuntu如何卸载软件
- MySQL备份和还原操作
- python考试题目及答案-python考试题库
- 互联网启示:从生命起源到智慧宇宙的进化全景图
- linux环境JAVA解压zip_Linux文件解压缩详解
- BNU 看风景 27585