【MYSQL】数据类型和约束

news/2025/2/11 18:16:39/

目录

数据类型

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.ppmy.cn/news/57373.html

相关文章

第一章 Java基础 50 道面试题

文章目录 前言匿名内部类访问的局部变量为什么必须要用final修饰? Java基础1、jdk和jre有什么区别?2、final在Java中有什么作用?3、有常量类了为什么还要使用枚举类?4、为什么使用包装类?5、和equals的区别是什么?6、…

Transformers 发展一览

动动发财的小手,点个赞吧! Transformers 研究概览 1. 介绍 近年来,深度学习的研究步伐显着加快,因此越来越难以跟上所有最新发展。尽管如此,有一个特定的研究方向因其在自然语言处理、计算机视觉和音频处理等多个领域取…

递归与分治 题目集

分治法求解全排列问题 对每个输入的整数n&#xff0c;用分治法计算并输出1…n的全排列。 void perm(int a[],int x,int y){if(xy){fer(i,0,y)cout<<a[i]<<" ";cout<<endl;}else{fer(i,x,y){swap(a[i],a[x]);perm(a,x1,y);swap(a[i],a[x]);}} } s…

【排序】归并排序(递归+非递归图示详解哦)

全文目录 引言归并排序思路递归实现 归排非递归思路实现 总结 引言 在本篇文章中&#xff0c;将继续介绍一种排序算法&#xff1a;归并排序。 归并排序运用了归并的思想&#xff0c;即将两个有序数列归并为一个有序数列。在前面的合并两个有序链表时&#xff0c;运用了这种思想…

【华为OD机试真题】超级玛丽通过吊桥的走法(C++Javapython)100%通过率 超详细代码注释 代码解读

超级玛丽通过吊桥的走法 题目描述 超级玛丽好不容易来到新的一关,有一个长长的吊桥,吊桥的尽头是下水管道,其中随机的木板存在缺失,旦踩到就会死亡,死亡后如果还有剩余的生命将在原地复活且不受木板缺失影响,会消耗一次生命,如果跨过了管道,将跌入悬崖,通关失败。 …

Javaweb介绍

Javaweb JavaWeb是一种通过使用Java技术进行Web应用程序开发的方式。Java Web应用程序通常由动态生成的网页组成&#xff0c;与静态的HTML页面不同。 JavaWeb应用程序可以用于各种类型的应用程序&#xff0c;包括电子商务、博客、内容管理系统等。 什么是web容器 Web容器是在…

Python基础合集 练习22 (错误与异常处理语句2)

‘’’ try: 语句块 except: 语句块2 else ‘’’ class Mobe1(): def init(self) -> None: pass def mob1(self):while True:try:num int(input(请输入一个数: ))result 50 / numprint(result)print(50/{0}{1}.format(num, result))except (ZeroDivisionError, ValueEr…

【VQ-VAE-2论文精读】Generating Diverse High-Fidelity Images with VQ-VAE-2

【VQ-VAE-2论文精读】Generating Diverse High-Fidelity Images with VQ-VAE-2 0、前言Abstract1 Introduction2 Background2.1 Vector Quantized Variational AutoEncoder3 Method3.1 Stage 1: Learning Hierarchical Latent Codes3.2 Stage 2: Learning Priors over Latent C…