【MYSQL】数据类型和约束

news2024/12/25 23:40:09

目录

数据类型

1.数值类型

1.1.位--类型bit(M)

1.2. 整数类型--tinyint,smallint,int,bigint

1.3.小数类型--float、decimal

2.字符类型--char、varchar

3.日期类型--datetime、timestamp

4.string类型--enum和set

 mysql的约束

1.空属性--null

2.默认值--default

3.注释--comment

4. 显示位数--zerofill

5.主键(primary key)

5.1.复合主键

5.2.自增长--auto_increment

6.唯一键--unique

7.外键--foreign key

7.1.外键约束


数据类型

1.数值类型

1.1.位--类型bit(M)

数据类型大小说明
bit(M)由M决定,0-2^M-1;M取值1-64,bit大小也就是最小0-2^1-1,最大0-2^64-1;默认为1

例子: 

1.2. 整数类型--tinyint,smallint,int,bigint

  • 就是对应C语言的char、short、int、long long
  • 都可以添加unsigned约束,就只能去正整数了,例如int范围变为0到2^32-1;
数据类型大小说明
tinyint1字节范围-2^7到2^7-1;
smallint2字节范围-2^15到2^15-1;
int4字节范围-2^31到2^31-1;
bigint8字节范围-2^63到2^63-1;
多了一行,是我写多了

1.3.小数类型--float、decimal

数据类型大小说明
float(M,D)4字节单精度,M指定长度,D指定小数位数,会发生丢失精度
double(M,D)8字节和floar相同
decimal(M,D)双精度,M指定长度,D指定小数位数,准确数组
  • float(4,2)的范围是[-99.99,99.99] ;
  • float等小数类型都遵守四舍五入的准则插入;
  • folat等也是可以使用unsigned的,不够范围会变成整数,[0,99.99];

 decimal和float的区别

  • float的精度大概有7位,decimal的精度很高;
  • 当对精度有要求的时候使用dec 

2.字符类型--char、varchar

  • 像电话号码、身份证号就是char固长;
  • 像地址、姓名就使用varchar变长;
数据类型大小说明
char最大255个字符,一个字符1-3个字节固定长度,效率更高,但是空间浪费,就像c语言char tem[12];
varcahr0-65535字节变长,效率没有固长快,但是更节省空间,就像string tem;

 

3.日期类型--datetime、timestamp

  • 时间戳会自动检测当前时间填入,在修改数据也会自动检测当前时间填入;
数据类型大小说明格式
datetime8字节范围从1000到9999年yyy-mmm-ddd hh-mm-ss
timestamp4字节范围1979到2038年,自动检索当前时 区并进行转换yyy-mmm-ddd hh-mm-ss

4.string类型--enum和set

enum和set存储的是整数,0表示为空,>0表示非空

  • enum如下面的选项’男‘ ,’女’分别代表‘1’,‘2’;依次递增,最大2^16;
  • set最多有64个选项,它是一个位图0111就代表‘写代码,唱歌,跳舞’;
数据类型说明
enum多选一,选项上限2^16个;
set多选多,选项上限64个;

 mysql的约束

  • 数据类型就是一种约束,但是比较单一需要一些其他的约束来相互配合;

1.空属性--null

  • mysql默认是null的,null表示没有填写或不存在,!=0;

 可以设置为not null表示必须填写;

2.默认值--default

  • 设置一个默认值不填就使用默认值

3.注释--comment

查看创建信息;

show create table 表名 \G

4. 显示位数--zerofill

  • 配合整形(位数),填充位数;

5.主键(primary key)

  • 主键约束不能为空且唯一,因为它是用于检索的;

5.1.复合主键

  • 多列数据做为主键;

5.2.自增长--auto_increment

  • 不插入值时,使用当前最大值+1;
  • 通常和主键连用; 

6.唯一键--unique

  • unique是可以为空的;相同不能插入

 

主键和唯一键

  • 主键和唯一键的差别就是主键不可以为null,唯一键可以;
  • 主键和唯一键是相互协作和补充的;
  • 主键是用于检索的,它不能为空所有的记录都会有唯一值;主键就像学号在学校是最主要的识别你身份的信息,但是你还有一些唯一的信息那么就是唯一键 

7.外键--foreign key

  • 使用外键只使用一个整数,更节省空间

7.1.外键约束

  • 从表插入主表没有的数据会插入失败
  • 主表删除,从表还有那么删除不了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/477206.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mybatis 知识总结2(基于注解的增删改查操作)

3.3 MyBatis 增删改查(注解方式) MyBatis 的增删改查是最基础最核心的功能,需要重点掌握。 需求说明 对员工信息进行增删改查操作。 查询(查询结果分页展示后续实现) 根据主键ID查询根据条件查询 新增更新删除 根据主…

海思芯片(hi3536av100)启动模式选择

1、支持多种模式可配置 (1)支持BootRom启动 (2)支持从 SPI NOR Flash 启动 (3)支持从 SPI NAND Flash 启动 (4)支持从 eMMC 启动 (5)支持 PCIe 从片启动 2、启动方式的选择 BOOT_SEL[1:0]SFC_EMMC_BOOT_MODEMODE000SPI Nor Flash 3 Byte001SPI Nor Flash 4 Byte010SPI Nand Fl…

2005-2020全国及各省家庭承包耕地流转总面积及经营耕地面积

2005-2020全国及各省家庭承包耕地流转总面积及经营耕地面积 1、时间:时间:2005-2020年 2、范围:包括全国及30个省份不包括西藏 3、指标包括:家庭承包耕地流转总面积(亩)、家庭承包经营耕地面积(亩) 4、来源:农村经…

荔枝派Zero(全志V3S) tftp下载 kernel 和 nfs 挂载文件系统

文章目录 前言一、U-Boot 适配 Ethernet1、配置 U-Boot2、修改 dts 文件3、编译4、烧写到 SD 卡5、测试<1>、查看启动打印信息<2>、ping 测试 二、Kernel 适配 Ethernet1、配置 kernel2、修改 dts 文件3、编译4、拷贝到 SD 卡5、测试<1>、启动网络接口&#…

【嵌入式环境下linux内核及驱动学习笔记-(7-内核 I/O)-多路复用】

目录 2、多路复用2.1 函数select相关2.1.1 应用层select()2.1.2 FD_ZERO2.1.3 FD_SET2.1.4 FD_ISSET 2.2 函数poll相关2.2.1 poll函数 2.3 驱动层 函数2.4 实例 接上篇&#xff0c;继续内核 I/O的五种模式的解读。 2、多路复用 select&#xff0c;poll&#xff0c;epoll都是IO…

常见的接口优化技巧思路

一、背景 针对老项目&#xff0c;去年做了许多降本增效的事情&#xff0c;其中发现最多的就是接口耗时过长的问题&#xff0c;就集中搞了一次接口性能优化。本文将给小伙伴们分享一下接口优化的通用方案。 二、接口优化方案总结 1.批处理 批量思想&#xff1a;批量操作数据…

windows如何确认服务器上程序端口是否正常

方式1&#xff1a;ping命令 ping命令说明 ping命令是个使用频率极高的网络诊断工具&#xff0c;在Windows、Unix和Linux系统下均适用。它是TCP/IP协议的一部分&#xff0c;用于确定本地主机是否能与另一台主机交换数据报。根据返回的信息&#xff0c;我们可以推断TCP/IP参数设…

类和对象 -上(C++)

目录 认识面向过程和面向对象 类的引入 类的定义 语法&#xff1a; 类的两种定义方式&#xff1a; 成员变量命名规则建议 类的访问限定符及封装 访问限定符 C 中 class 和 struct 的区别&#xff1f; 封装 类的作用域 类的实例化 类对象模型 如何计算类对象的大小 结构体的内存…

想保护你的网站?用Python来生成验证码图片

前言 随着互联网的发展&#xff0c;我们越来越多地依赖于网站和应用程序&#xff0c;而这些网站和应用程序也面临着各种各样的安全威胁&#xff0c;其中之一就是用户可能会通过脚本攻击你的网站。为了缓解这些安全风险&#xff0c;一个常见的做法是在用户进行操作时&#xff0…

关于电信设备进网许可制度若干改革举措的通告

Q&#xff1a;3月1日后&#xff0c;不再实行进网许可管理的11种电信设备是否还需要继续申请和使用标志&#xff1f; A&#xff1a;3月1日起&#xff0c;对不再实行进网许可管理的11种电信设备停止核发进网许可标志&#xff0c;已申请的标志可在证书有效期内继续使用。 Q&#…

应用启动时aerospike客户端查询rt高原因

在应用刚起步时&#xff0c;发到预发测试或者生产小部分流量进来时&#xff0c;发现aerospike的rt特别高&#xff0c;在流量稍微大点时&#xff0c;rt恢复正常。基本可以断定客户端存在预热问题。 应用没有设置连接池配置&#xff0c;因此check下默认配置 可以看到&#xff0…

c++类 笔记(陆续更新该文档)

派生类 #include <iostream> using namespace std; class Box{private://类私有&#xff0c;只有成员可以调用 也就是说你不可以通过box1.a来调用 ,这些变量其实你默认不用写private 这个变量&#xff0c;只要放在最上面他默认就是 私有int a1;protected://protected&am…

AlgoC++:课程总结

目录 课程总结前言1. 未讲解内容2. 复习2.1 矩阵求导2.2 优化方法2.3 具体的算法 3. 未来怎么学C(必看&#xff01;&#xff01;&#xff01;) 课程总结 前言 手写AI推出的全新面向AI算法的C课程 Algo C&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考。 本次课…

【嵌入式环境下linux内核及驱动学习笔记-(8-内核 I/O)-信号驱动】

目录 3 信号驱动的异步通知3.1 linux异步通知编程3.1.1 什么是信号3.1.2 信号的工作流程: 3.2. 应用层3.2.1 信号接收 signal函数3.2.2 应用层 fcntl 函数3.2.3 应用层信号驱动机制步骤 3.3 驱动层3.3.1 驱动层模板3.3.2 驱动层 实现fasync函数3.3.3 fasync_helper3.3.4 struct…

Golang-常见数据结构Slice

Slice slice 翻译成中文就是切片&#xff0c;它和数组&#xff08;array&#xff09;很类似&#xff0c;可以用下标的方式进行访问&#xff0c;如果越界&#xff0c;就会产生 panic。但是它比数组更灵活&#xff0c;可以自动地进行扩容。 了解 slice 的本质, 最简单的方法就是…

MySQL 一条SQL语句是如何执行的?

总览 ​ 所以今天我们把MySQL拆解一下&#xff0c;看看里边有哪些零件。下边是MySQL的基本架构示意图。 大体来说&#xff0c;MySQL分为Server层和存储引擎两部分。 Server 层包括连接器、查询缓存、分析器、优化器、执行器等&#xff0c;涵盖 MySQL 的大多数核心服务功能&am…

小白也能懂的可转债配债价格计算

可转债配债如何计算 先给理论公式&#xff1a; 配债10张/1手所需的钱数 配债所需股数 * 当前的股价 这个公式应该很好理解&#xff0c;不需要做过多的解释。 那&#xff0c; 为什么如此简单的公式&#xff0c;还是很多人不会算&#xff0c;是因为&#xff1a; 配债所需的股数跟…

类与对象之构造函数

文章目录 导读类的6个默认构造函数构造函数概念特性 析构函数概念特性 拷贝构造函数概念特性 赋值运算符重载运算符重载赋值运算符重载前置和后置重载 导读 本文是md导入的可能格式有点乱&#xff0c;希望各位理解一下 类的6个默认构造函数 默认成员函数&#xff1a;用户没有…

五一堵车 | AI“高速”车辆检测轻而易举监测大家安全

点击蓝字关注我们 关注并星标 从此不迷路 计算机视觉研究院 学习群&#xff5c;扫码在主页获取加入方式 计算机视觉研究院专栏 作者&#xff1a;Edison_G 五一节不管是离开小城镇还是进入大城市&#xff0c;每个高速路口都是堵车&#xff0c;现在人工智能愈来愈发达&#xff0c…

git fetch时,FETCH_HEAD和.git\refs\remotes\origin会有哪些变化

目录 github远程仓库状态clone 到本地对新clone的仓库直接 fetchgit fetchgit fetch origingit fetch origin test1git fetch origin test2:test22 结论 github远程仓库状态 clone 到本地 git fetchgit fetch origingit fetch origin test3git fetch origin test2:test22 git f…