一:整型

为什么需要 数据分类?

1、为了描述事物更加准确

2、描述起来更方便

3、节省内存空间

例:1 a 你     utf8 下 5个字节

1 a b c   unicode 6个字节

mysql支持的数据类型

整型:从小到大有tinyint(***)    smallint(***)    mediumint(***)    int(*****)    bigint(***)

字节数:     分别占了    1                   2                    3                      4              8   个字节

默认情况下整型是有符号的,需要用一个二进制位存储符号

给整型加上约束 unsigned 来表示无符号

如果数据超出范围就尽可能保存最大的,例如 在无符号保存256,其实存的255

如果有符号 例如tinyint 保存-1280 其实存的是-128 是最小值

修改严格模式:

以上特性的出现是因为mysql处于非严格模式:出现错误不会保存,会尝试自己去修改错误

查看当前模式 show variables like "sql_mode";

修改为严格模式 set variables sql_mode="STICT_TRANS_TABLBS";

默认是严格模式,在严格模式下,如果超出范围就直接报错,在一些版本中默认就是严格模式!

在我们的正常开发中,我们应该先判断数据的正确性,没有问题在发给数据库

怎么选择:得根据实际情况来判断,能够保存你的数据的最小类型

长度限制对于整型的意义:

create table t10 value(id int(1));

insert into t10 value(4545555);

select *from t10;

发现这个数也存储成功,说明这里长度指的不是存储容量限制,而是显示的宽度,如果你的数据超过了显示宽度有几个显示几个,如果不足 则补全到指定长度 得告诉它用什么来补全

create table t13(id int(10) zerofill);

总结:不是容量限制 而是 显示宽度 要限制显示宽度

1、创建表时 给整型加上宽度

2、加上zerofill约束

二:浮点型

浮点型 即 小数型

分类(float):float(*****)   double(****)   decimal(*****)

字节数:          4                  8                不确定(手动指定)

给浮点设置宽度限制

float(m,d)

double(m,d)

decimal(m,d)

长度说明(*****)

m表示 这个浮点数整体的长度

d表示 小数部分的长度

例如:float(5,3) 最大值:99.999

区别(*****)

相同点:小数部分最大长度都是30  float 和 double 的最大长度为255

不同点:decimal 的整体最大长度为65  精度不同  double 比 float 精度高  decimal 是准确的 不会丢失精度

如何选择:你对精确度要求高你就使用 decimal

三:字符型

分类

char 定长字符

varchar 变长字符

char 类型的长度是固定 无论你存储的数据有多长 占用的容量都一样

char(3) 存储的数据为"a"  在硬盘保存的数据还是占3字符长度 实际保存的是"a"

varchar 长度是可变的 存储的数据有多长就占用多长

varchar(3)存储的数据为"a"  在硬盘保存的数据还是占1字符长度 实际保存的是"a"

zxc asd qwe char(3)

(lbytes+zxc)(lbytes+asd)(lbytes+qwe)varchar(3)

如果是可变长度 则有问题 不知道数据从哪里结束 所以需要有一个位置保存数据的长度

vharchar 能支持的最大长度是65535 用于保存数据长度的数据最长两个bytes

如果是char类型 如果你的数据不足指定长度 就在后面用空格补全

验证:

使用一个 char_length 的函数 可以查看字符的长度

create table t18(a char(4),b varchar(4));

insert into t18  value("x","x");

select char_length(a),char_length(b) from t18;

两个字段的长度都为1

结论:

这是因为 mysql 在存储时 自动加上的空格 对使用者而言是没有意义的 所以mysql自动帮你处理掉空格了

我们可以设置sql模式 来让它现出原形

set global sql_mode="PAD_CHAR_TO_FULL_LENGTH,STRICT_TRANS_TABLES"

设置完成后重启mysql 再次查询长度

注意:

当你在执行这样的查询语句时  mysql会自动将参数末尾的空格去除

select *from t19 where name="cs"

当你在使用模糊搜索时,要注意 定长字符 后面可能会有空格 所以最好在后面加上百分号%

select *from t19 where name like "cs";

% 任意个数的任意字符

_1个任务字符

如何选择

char :存取效率高,浪费存储空间

varchar:存取效率低于char,使用起来感受不到区别 通常用的是char

char和varchar 长度都比较小 最大就是65535

大文本类型:

TEXT 系列:TINYTEXT TEXT MEDIUMTEXT LONGTEXT 文本是带有编码

BLOB 系列:TINYBLOB BLOB MEDIUMBLOB LONGBLB 也是字符数据 但是不带编码

二进制类型:     用于存储多媒体数据 比如视频,但是我们一般不会将多媒体数据存到数据 而是存储文件路径地址

BINARY 系列:BINARY VARBINARY 存储二进制数据

Python 39 数据库的数据类型的更多相关文章

  1. Python 39 数据库

    一:数据存储引擎 1. 什么是引擎? 一个功能的核心部分 引擎可以被分类 例如: 自然 增压 汽油 柴油 混合动力 天然气 核动力 汽油:动力弱,噪音小,震动小 柴油:动力强,污染大,噪音大,震动大 ...

  2. Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束

    Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束 一丶MySQL的存储引擎 什么是存储引擎:    MySQL中的数据用各种不同的技术存储在文件( ...

  3. Python学习笔记 - day11 - Python操作数据库

    MySQL的事务 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关,MySQL的两种引擎如下: 1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID ...

  4. Python学习笔记 - day3 - 数据类型及运算符

    Python的数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同 ...

  5. 10分钟教你Python+MySQL数据库操作

    欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 本文介绍如何利用python来对MySQL数据库进行操作,本文将主要从以下几个方面展开介绍: 1.数据库介绍 2.MySQL数据库安装和设置 ...

  6. python 操作数据库的常用SQL命令

    这俩天在学习PYTHON操作数据库的知识.其实基本SQL命令是与以前学习的MYSQL命令一致,只是增加了一些PYTHON语句. 1,安装pymysql,并导入. import pymysql 2,因为 ...

  7. Python基础语法和数据类型最全总结

    摘要:总结了Python最全基础语法和数据类型总结,一文带你学会Python. 本文分享自华为云社区<Python最全基础语法和数据类型总结>,原文作者:北山啦 . 人生苦短,我用Pyth ...

  8. Python 30分钟入门——数据类型 and 控制结构

    Python是一门脚本语言,我也久闻大名,但正真系统的接触学习是在去年(2013)年底到今年(2014)年初的时候.不得不说的是Python的官方文档相当齐全,如果你是在Windows上学习Pytho ...

  9. python操作数据库

    一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...

随机推荐

  1. day10-函数基础知识

    函数 什么是函数 把工具事先准备好,然后下次使用的时候,直接使用就行了.我们的函数就是工具 为何用函数 1.遇到重复的功能只能重复编写实现代码,代码冗余 2.功能需要扩展时,需要找出所有实现该功能的地 ...

  2. pop的运用

    pop():弹出列表最后一个元素 练习题: num_list = [12, 45, 34,13, 100, 24, 56, 74, 109] one_list = [] two_list = [] t ...

  3. 棋盘DP三连——洛谷 P1004 方格取数 &&洛谷 P1006 传纸条 &&Codevs 2853 方格游戏

    P1004 方格取数 题目描述 设有N $\times N$N×N的方格图(N $\le 9$)(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字00.如下图所示(见样例): A ...

  4. 洛谷——P2504 [HAOI2006]聪明的猴子

    P2504 [HAOI2006]聪明的猴子 题目描述 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水面上. ...

  5. LNOI2019 退役记

    Day -4 最近这两天智商有点不在线啊..得好好调整作息了,滚粗感++ 复习模板好啊 下午睡了一觉,智商似乎回来了一丢丢,滚粗感-- Day -3 智商略有回暖,滚粗感-- 明天有模拟赛,要加油啊 ...

  6. 几个有用的shell命令

    1.!$ 是一个特殊的环境变量,它代表了上一个命令的最后一个字符串.如:你可能会这样: $mkdir mydir$mv mydir yourdir$cd yourdir 可以改成: $mkdir my ...

  7. oracle 增量导出/导入

    一.   导出/导入(Export/Import) ----   利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle数据库中去. ----   1.   ...

  8. 调度器Quartz的配置文件中的线程池设置

    在使用调度器Quartz来进行数据归档的时候,当我们开的定时任务很多的时候,就会出现一些定时任务不会被触发的现象,这就是线程阻塞.那到底什么叫线程阻塞呢? 线程阻塞,顾名思义就是说线程被阻塞了,没有按 ...

  9. strtod-strtod, 字符串 转 数字 函数

    strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回.若endptr不为 NULL,则会将遇 ...

  10. nyoj_264_国王的魔镜_201311271800

    国王的魔镜 时间限制:3000 ms  |           内存限制:65535 KB 难度:1   描述 国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部 ...