Python 39 数据库的数据类型
一:整型
为什么需要 数据分类?
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 数据库的数据类型的更多相关文章
- Python 39 数据库
一:数据存储引擎 1. 什么是引擎? 一个功能的核心部分 引擎可以被分类 例如: 自然 增压 汽油 柴油 混合动力 天然气 核动力 汽油:动力弱,噪音小,震动小 柴油:动力强,污染大,噪音大,震动大 ...
- Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束
Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束 一丶MySQL的存储引擎 什么是存储引擎: MySQL中的数据用各种不同的技术存储在文件( ...
- Python学习笔记 - day11 - Python操作数据库
MySQL的事务 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关,MySQL的两种引擎如下: 1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID ...
- Python学习笔记 - day3 - 数据类型及运算符
Python的数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同 ...
- 10分钟教你Python+MySQL数据库操作
欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 本文介绍如何利用python来对MySQL数据库进行操作,本文将主要从以下几个方面展开介绍: 1.数据库介绍 2.MySQL数据库安装和设置 ...
- python 操作数据库的常用SQL命令
这俩天在学习PYTHON操作数据库的知识.其实基本SQL命令是与以前学习的MYSQL命令一致,只是增加了一些PYTHON语句. 1,安装pymysql,并导入. import pymysql 2,因为 ...
- Python基础语法和数据类型最全总结
摘要:总结了Python最全基础语法和数据类型总结,一文带你学会Python. 本文分享自华为云社区<Python最全基础语法和数据类型总结>,原文作者:北山啦 . 人生苦短,我用Pyth ...
- Python 30分钟入门——数据类型 and 控制结构
Python是一门脚本语言,我也久闻大名,但正真系统的接触学习是在去年(2013)年底到今年(2014)年初的时候.不得不说的是Python的官方文档相当齐全,如果你是在Windows上学习Pytho ...
- python操作数据库
一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...
随机推荐
- spark的体系结构
spark的体系结构 1.客户端(Driver Program) 需要构建一个对象,核心是sc(SparkContext) 以应用程序为例:链接本地 //new conf val conf=new S ...
- js 随机数范围
Math.floor(Math.random()*(high-low+1) +low)
- HDU1465 不容易系列之一&&HDU4535吉哥系列故事——礼尚往来
HDU1465不容易系列之一 Problem Description 大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了!做好“一件”事情尚且不易,若想永远成功而总从不失败,那更是难上加 ...
- POJ3984——迷宫问题
迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 31616 Accepted: 18100 Descriptio ...
- opencv图像阈值设置的三种方法
1.简单阈值设置 像素值高于阈值时,给这个像素赋予一个新值(可能是白色),否则我们给它赋予另外一种颜色(也许是黑色).这个函数就是 cv2.threshhold().这个函数的第一个参数就是原图像 ...
- 从NLP任务中文本向量的降维问题,引出LSH(Locality Sensitive Hash 局部敏感哈希)算法及其思想的讨论
1. 引言 - 近似近邻搜索被提出所在的时代背景和挑战 0x1:从NN(Neighbor Search)说起 ANN的前身技术是NN(Neighbor Search),简单地说,最近邻检索就是根据数据 ...
- Java和JS MD5加密-附盐值加密demo
JAVA和JS的MD5加密 经过测试:字母和数据好使,中文不好使. 源码如下: ** * 类MD5Util.java的实现描述: * */public class MD5Util { // 获得MD5 ...
- Python基础操作-集合
在Python set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法 ...
- org.hibernate.PropertyValueException: not-null property references a null or transient value: model.
今天在写一个SSH整合的项目时,首先将数据库操作部分单独分离出来,写完后使用Junit进行測试,经过測试.发现没有不论什么问题,对数据库中的内容进行增删改查没有问题,可是将他整合到SSH的项目中时,报 ...
- iOS中UITextView的操作技巧
刚才看了一篇textView实现placeholder的文章,有兴趣的同学们能够看下:__biz=MzA3NzM0NzkxMQ==&mid=211846438&idx=1&sn ...