MySQL系列(三)之约束条件
约束 : 对编辑的数据进行类型的限制, 不满足约束条件的报错
unsigned : 无符号
not null : 不为空
zerofill : 零填充
default : 默认值
unique : 唯一值,加入唯一索引 (索引相当于字典目录,索引的提出是为了加快速度,一味地乱加索引不会提高查询效率)
primary key: 主键
auto_increment: 自增加一
foreign key: 外键
unsigned 无符号
create table t1(id int unsigned);
insert into t1 values(-1); # error
insert into t1 values(4000000000); # success
not null : 不为空
create table t2(id int not null,name varchar(11)
);
insert into t2 values(1,"steven");
insert into t2 values(null,"steven"); # error
insert into t2(name) values("steven"); # error
zerofill : 零填充 (配合int使用,不够5位拿0来填充)
create table t3(id int(5) zerofill);
insert into t3 values(1234567);
insert into t3 values(12);
default : 默认值
create table t4(id int,name char(16),gender enum('male','female','others') default 'male'
);
insert into t4(id,name) values(1,'steven');
insert into t4 values(2,'kevin','female');
unique : 唯一值
# 单列唯一
create table t5(id int unique,name char(16)
);
insert into t5 values(1,'steven'),(1,'kevin'); 报错
insert into t5 values(1,'steven'),(2,'kevin'); # 联合唯一
"""
ip和port
单个都可以重复 但是加载一起必须是唯一的
"""
create table t6(id int,ip char(16),port int,unique(ip,port)
);
insert into t6 values(1,'127.0.0.1',8080);
insert into t6 values(2,'127.0.0.1',8081);
insert into t6 values(3,'127.0.0.2',8080);
insert into t6 values(4,'127.0.0.1',8080); 报错
primary key : 主键
1.单单从约束效果上来看primary key等价于not null + unique, 非空且唯一!!!create table t7(id int primary key);
insert into t7 values(null); 报错
insert into t7 values(1),(1); 报错
insert into t7 values(1),(2); 2.它除了有约束效果之外 它还是Innodb存储引擎组织数据的依据
Innodb存储引擎在创建表的时候必须要有primary key
因为它类似于书的目录 能够帮助提示查询效率并且也是建表的依据# 1 一张表中有且只有一个主键 如果你没有设置主键 那么会从上往下搜索直到遇到一个非空且唯一的字段将它自动升级为主键
create table t8(id int,name char(16),age int not null unique,addr char(32) not null unique
);# 2 如果表中没有主键也没有其他任何的非空且唯一字段 那么Innodb会采用自己内部提供的一个隐藏字段作为主键,
# 隐藏意味着你无法使用到它 就无法提示查询速度# 3 一张表中通常都应该有一个主键字段 并且通常将id/uid/sid字段作为主键
# 单个字段主键
create table t9(id int primary keyname char(16)
);# 联合主键(多个字段联合起来作为表的主键 本质还是一个主键)
create table t10(ip char(16),port int,primary key(ip,port)
);注: 也意味着 以后我们在创建表的时候id字段一定要加primary key
auto_increment : 自增
# 当编号特别多的时候 人为的去维护太麻烦
create table t11(id int primary key auto_increment,name char(16)
);
insert into t11(name) values('steven'),('kevin'),('jack');# 注意auto_increment通常都是加在主键上的 不能给普通字段加
create table t12(id int primary key auto_increment,name char(16),cid int auto_increment
);
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key注:
以后在创建表的id(数据的唯一标识id、uid、sid)字段的时候
id int primary key auto_incrementdelete from t1 # 删除表中数据后 主键的自增不会停止
truncate t1 # 清空表数据并且重置主键
MySQL系列(三)之约束条件相关推荐
- MySql 系列三:事务
文章目录 事务 目的 组成 特征 事务控制语句 ACID特性 原子性(A) 隔离性(I) 持久性(D) 一致性(C) 事务并发异常 脏读(READ UNCOMMITTED) 不可重复读 (READ C ...
- Mysql系列三:Centos6下安装Mysql和Mysql主从复制的搭建
一.Centos6下安装Mysql 检测下系统有没有自带的mysql:yum list installed | grep mysql, 如果已经有的话执行命令yum -y remove mysql- ...
- S 锁与 X 锁的爱恨情仇《死磕MySQL系列 四》
一网打尽MySQL的各种锁 系列文章 `获取MySQL各种学习资料可以联系咔咔` 前言 一.行锁 二.两阶段锁 三.理解死锁 四.优化你的代码尽量防止死锁 五.解释死锁的两种方案 六.如何解决热点数据 ...
- 重重封锁,让你一条数据都拿不到《死磕MySQL系列 十三》
在开发中有遇到很简单的SQL却执行的非常慢,甚至只查询一行数据. 咔咔遇到的只有两种情况,一种是MySQL服务器CPU占用率很高,所有的SQL都执行的很慢直到超时,程序也直接502,另一种情况是行锁造 ...
- 数据库MYSQL学习系列三
数据库MYSQL学习系列三 三.MYSQL事务与存储引擎 3.1-数据库事务 什么是事务 一系列有序的数据库操作: o要么全部成功 o要么全部回退到操作前的状态 o中间状态对其他连接不可见 事务的 ...
- [CentOS Python系列] 三.阿里云MySQL数据库开启配置及SQL语句基础知识
从2014年开始,作者主要写了三个Python系列文章,分别是基础知识.网络爬虫和数据分析. Python基础知识系列:Pythonj基础知识学习与提升 Python网络爬虫系列:Python爬虫之S ...
- Mysql系列课程--第三章 建表 插数据
数据库模型图 /班级表/ CREATE TABLE `class` (`c_no` int(11) NOT NULL AUTO_INCREMENT,`c_name` varchar(45) NOT N ...
- mysql超售_MySQL OOM 系列三 摆脱MySQL被Kill的厄运
前面两章,我们分析了Linux内存分配的策略以及Linux通过使用 OOM_Killer的机制解决了"超售"引起的风险,MySQL同其他的应用程序一样,在操作系统允许的范围内也是可 ...
- access 导入 txt sql语句_从零开始学习 MySQL 系列索引、视图、导入和导出
阅读本文大概需要 8 分钟 前言上篇文章我们学习了数据库和数据表操作语句,今天我们学习下数据库索引,视图,导入和导出的知识.作为基础篇,不会涉及到关于索引和视图的高级应用和核心概念,但是基本操作大家会 ...
最新文章
- Vue PDF文件预览vue-pdf
- 【Java】IO Stream详细解读
- leetcode 旋转数组
- 工作篇-佛山三水恒大-2020.11.13
- CSS3 动画 animation属性
- [mysql] C++操作mysql方法
- 多链NFT市场Polkarare获加密投资机构DFG战略投资
- 矩池云上CUDA、nvcc、cuDNN相关操作汇总
- 写好代码,拒绝一传到底的参数类
- 前端那些事之日历多选插件篇
- vst和vst3插件_用于家庭录音的经典VST插件
- oc语言的优缺点有哪些
- 中南大学工商管理考研考情与难度、参考书及上岸前辈备考经验
- PHP打印九九乘法表
- 服务器发送 微信通知,方糖,使用微信通知的小接口
- 用XOM编写GraphML?
- 云主机和物理机的区别
- 改进版 | 浅析几种HID硬件攻击
- websocket协议详解
- C sharp (#) 数据类型获取