数据库常见数据类型和约束
常用数据类型
MYSQL数据库支持多种类型,大致可以分为三个类型:数值型、时间/日期型和字符型
在这里就列举一些我们常用的数据类型
1、数值型
表示整数型数据类型(tinyint、smallint、mediumint、int) 浮点型数据类型(float、double)
用法:
1)、整形 ( 学号)
区别为存储大小不同,取值范围不同
tinyint(m) 取值 【-128,127】
tinyint(m) unsigned(可省略) zerofill 取值 【0,255】
m 定义为字段长度,与zerofill搭配时,数据精度不足时,自动用0补齐 例如:(001)
2)、浮点型 (身高)
float (m , z) m : 字段总长度 z : 小数点后的位数
取值【-3.4*10-38,3.4*1038】
缺点 : 丢失精度,相较于double精度更低
2、字符型
表示字符型数据类型(char、varchar)
char (m) m 影响存储长度 (姓名)
3、时间日期型
表示时间值的日期和时间类型(datetime、date、time和year)
Mysql中的约束
1、not null
not null 即为非空约束,指定某一行的值不能为null。
建立一个s表,将id设置为int型,not null约束
插入数据id为null就会报错
备注:所有的类型的值都可以是null,包括int、float、dateTime等数据类型 空字符串(”)是不等于null,0也不等于null 。
2、unique
unique代表唯一约束。唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。但是可以为多个null,同一个表可以有多个唯一约束,多个列组合的约束。
在创建唯一约束的时候,如果不给唯一约束名称,就默认和列名相同。MySQL会给唯一约束的列上默认创建一个唯一索引;
唯一约束是通过唯一索引实现的,换句话说,唯一索引是实现唯一约束的基础。所以,建唯一约束,会自动建唯一索引,但建唯一索引,不会自动创建唯一约束。
建表给doc加上一个唯一约束
插入数据示例
插入成功。说明对于,当为null的时候,唯一索引是不进行判断唯一性的
3、primary key
作用:用来保证数据完整性
特点:
1)、主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值;
2)、每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别上创建;
3)、MySQL的主键名总是PRIMARY, 当创建主键约束时,系统默认会在所在的列和列组合上建立对应的唯一索引;
4、foreign key
作用:保证一个或两个表之间的参照完整性,构建一个表的两个字段或是两个表的两个字段之间的参照关系。
特点:
1)、从表的外键值必须在主表中能找到或者为空。
2)、当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该记录的数据, 然后才可以删除主表的数据
原文地址:https://www.cnblogs.com/li8537/p/11403898.html
- 《Redis设计与实现》读书笔记(十) ——Redis对象相关其他设计与实现
- CI一些优秀实践
- 《Redis设计与实现》读书笔记(十一) ——Redis数据库与键空间
- assert断言
- 什么是堆和栈,它们在哪儿?
- contain_of宏定义
- 《Redis设计与实现》读书笔记(十三) ——Redis数据库其他内容与总结
- 《Redis设计与实现》读书笔记(十四) ——Redis RDB文件创建、载入与自动保存原理
- 框架 | Spark中的combineByKey
- 《Redis设计与实现》读书笔记(十五) ——Redis AOF持久化原理与实现
- PHP CodeBase: 生成N个不重复的随机数
- PHP转义Json里的特殊字符的函数
- PHP使用SOAP调用.net的WebService问题
- 框架 | spray-routing的核心流程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 从 1 到 0 构建博客项目(2) -- 操作系统篇(2)--定制Centos
- 使用Angular依赖注入自定义SAP Spartacus的ProductAdapter
- 获取SAP Spartacus当前显示产品json数据的又一办法
- SAP Spartacus注入自定义的CurrentProductService
- Redis系列(十三)应用之分布式锁
- Oracle数据库 sql条件查询语句与练习
- (六)Hive优化
- mapreduce -- wordcount执行流程
- (三)Hive基本操作命令
- 链表神操作 --- 快慢指针
- appium教程_2.概念加深
- [javascript] cdn模式下vue和vue-router实现路由
- (干货)前端实现导出excel的功能
- 完美解决JavaScript的深浅拷贝
- 来,我们在重新说下,线程状态?