mysql数据库--mysql的数据类型(数值型)
对第一天所学知识点进行回顾总结:
数据库的基础知识:关系型数据库(保存在磁盘)和非关系型数据库(内存)
关系型数据库:建立在关系模型上的数据库。三大组件包括:数据结构:二维表(比较浪费空间)操作数据的指令集合:SQL(DDL:数据定义,DML(DQL):数据操作查询,DCL:(数据控制))完整性约束:表内与表之间(实体)mysql关系型数据库:c/s结构软件(连接认证,发送SQL指令,服务器处理指令返回结果,客户端接受并解析结果)
mysql服务器对象:DBMS---->Database------>Table------>fields(字段)
SQL的基本操作:库操作,表操作(字段)和数据操作。字符集问题:中文数据问题。
改变服务器接受数据的字符集:character_set_client;
改变服务器返回数据的字符集:character_set_resuts;
快捷方式:set names 字符集校对集问题:比较规则,_bin,_cs,_ci,利用了排序来实现(order by)web乱码问题
浏览器解析,PHP处理(本地文件),数据库处理。
mysql的数据类型(列类型):
所谓的数据类型,对数据进行统一的分类,从系统的角度出发为了能够使用统一的方式来进行管理,更好的利用有效的空间。
SQL中将数据类型分成了三大类:数值类型,字符串类型和时间日期类型。
数值型:
数值型:都是数值,系统将数值分为整数型和小数型。
整数型:
整数型:用int存放整形数据,占四个字节,在SQL中因为更多要考虑如何节省磁盘空间,所以系统将整数又细分了5类:
Tinyint:迷你整型使用一个字节存储,表示的状态最多为256字节(常用)。
smallint:小整型,使用两个字节存储,表示的状态最多为65536种。
mediumint:中整型,使用三个字节存储。
int:标准整型,使用四个字节存储。(常用)
bigint:大整型,使用八个字节存储。(很少需要大整型来处理数据)
创建一张整形表并插入字段信息:
1.创建整型表:
create table my_int(
int_1 tinyint,
int_2 smallint,
int_3 int,
int_4 bigint
)charset utf8;
2.插入数据:只能插入整型,只能插入范围内的整型。
---插入有效数据:
insert into my_int values(100,100,100,100);
---插入无效数据,数据类型不正确:
insert into my_int values('a','b','199','f');
---插入数据超出范围报错:
insert into my_int values('255',10000,10000,10000);
无符号类型数据的处理:
SQL中的数值类型全部默认有符号,分正负;有时候需要使用无符号数据,需要给数据限定类型:int unsigned;--无符号从零开始
---给表增加一个无符号类型
alter table my_int add int_5 tinyint unsigned;
查看表结构: desc my_int;
重新进行数据的插入可以看到设置无符号类型之后可以正确插入数据:
insert into my_int values('127',10000,10000,10000,255);
显示宽度:
查看表结构的时候,会发现每个字段的数据类型之后都会自带一个括号,里面有指定的数字。
desc my_int;
数字叫做显示宽度,是指数据最终显示的位数。例如:-123表示的是4位显示宽度(包括括号),255是3位宽度。
显示宽度的真正含义:
显示宽度的意思只是默认的告诉用户显示形式而已,这个是用户可以控制的,这种控制不会改变数据大小。
举例:alter table my_int add int_6 tinyint(1) unsigned; ---指定显示宽度为1
desc my_int; 查看字段信息
insert into my_int values(127,0,0,0,255,255); 插入数据信息
select * from my_int; 查看表内数据
零填充的意义(显示宽度):保证数据格式
从上图来看,尽管我们设置了显示宽度为1,但是255这个数据还是依旧正常的显示,这就说明数据的大小是由数据的类型
决定,显示宽度的意义在于当数据不够显示宽度的时候,会自动让数据变成对应的显示宽度。通常需要
搭配一个前导0来增加宽度,不改变值的大小;zerofill(零填充)会导致数值自动变成无符号。
例如:
alter table my_int add int_7 tinyint(2) zerofill; --显示宽度为2,零填充
desc my_int;
insert into my_int values(1,1,1,1,1,1,1);
insert into my_int values(100,100,100,100,100,100,100);
select * from my_int; 可以看到唯一的一个1变成了01,这个就是零填充的含义
小数型:
小数型:带有小数点或者范围超出整型的数值类型。
SQL中:将小数型细分成两种:浮点型和定点型。
浮点型:小数点浮动,精度有限,而且会丢失精度。对数据精确不要求,数量级别比较大的时候使用浮点型
定点型:小数点固定,精度固定,不会丢失精度。数据想要精确使用定点型
浮点型:
浮点型数据是一种精度型数据,因为超出指定范围之后,会丢失精度(自动四舍五入)
浮点型:理论分为两种精度float:单精度,占用四个字节存储数据,精度范围大概为7位左右。double:双精度,占用八个字节存储数据,精度范围大概为15位左右。
浮点数表:
创建浮点数表:浮点的使用方式:直接float表示没有小数部分;float(M,D):M表示总长度,D代表小数部分长度,
整数部分长度为M-D。
--浮点数表
create table my_float(
f1 float,
f2 float(10,2), ---10位在精度范围之外,这个指的是插入数据依据2位小数和8位整数
f3 float(6,2) ---6位在精度范围之内,这个指的是插入数据依据2位小数和4位整数
)charset utf8;
desc my_float;
插入数据:可以直接是小数,也可以是科学计数
insert into my_float values(1000.10,1000.10,1000.10); ---符合条件
insert into my_float values(1234567890,12345678.90,1234.56); ---符合条件
insert into my_float values(3e38,3.01e7,1234.56); --符合条件
insert into my_float values( 9999999999,99999999.99,9999.99); --最大值
浮点型数据的插入:整数部分是不能超出长度的,但是小数部分可以超出长度(因为系统会四舍五入)
---超出长度来插入数据
insert into my_float values(123456,1234.123456768,123.9876543); 小数部分超过设定的两位但是可以插入成功。
insert into my_float values(123456,1234.12,12345.12); 整数部分找出设定无法插入数据
数据结果:浮点数一定会进行四舍五入(超出精度范围),浮点数如果是因为系统进位导致整数部分超过指定长度,那么
系统也允许成立。
select * from my_float;
定点型
定点型:绝对的保证整数部分不会被四舍五入(不会丢失精度),小数部分有可能(理论小数部分也不会丢失精度 )
创建定点数表:以浮点数作为对比
创建定点数表:
create table my_decimal(
f1 float(10,2)
d1 decimal(10,2)
)charset utf8;
desc my_decimal;
插入数据:定点数的整数部分一定不能超出长度(进位不可以),小数部分的长度可以随意超出,因为系统自动四舍五入。
insert into my_decimal values(12345678.90,12345678.90); --有效数据
insert into my_decimal values(1234.123456,1234.1234356); --小数部分超出
查看警告:
show warnings;
浮点数如果进位导致长度溢出没有问题,但是定点数不可以。
insert into my_decimal values(99999999.99,99999999.99); --没有问题
insert into my_decimal values(99999999.99,99999999.999); --定点数进位导致整数部分超出范围查看数据效果:
select * from my_decimal;
mysql数据库--mysql的数据类型(数值型)相关推荐
- mysql数据库,当数据类型是float时,查询居然查询不出数据来
mysql数据库,当数据类型是float时,查询居然查询不出数据来,类似如下: 以后mysql数据库不用float类型,而double类型可以查得出来. 转载于:https://www.cnblogs ...
- 视频教程-必会神器之MySQL数据库-MySQL
必会神器之MySQL数据库 精通Python.PHP.MySQL.MongoDB.Redis.HTML.CSS.JavaScript和jQuery等 因为心中一直怀揣教育梦 所以毅然决然从开发一线转到 ...
- 【MySQL】黑马教程MySQL数据库 MySQL基础(一)
文章目录 [MySQL]黑马教程MySQL数据库 | MySQL基础(一) MySQL启动 MySQL客户端连接 MySQL数据模型 SQL SQL分类 DDL 表操作-查询 表操作-创建 表操作-数 ...
- ML之FE:数据处理—特征工程之特征三化(标准化【四大数据类型(数值型/类别型/字符串型/时间型)】、归一化、向量化)简介、代码实现、案例应用之详细攻略
ML之FE:数据处理-特征工程之特征三化(标准化[四大数据类型(数值型/类别型/字符串型/时间型)].归一化.向量化)简介.代码实现.案例应用之详细攻略 目录 真正意义的标准化与归一化 1.标准化/Z ...
- MYSQL数据库——mysql的数据类型和运算符
一.数据类型和运算符 数据库表是由多列字段构成,每一个字段都是表的一个属性,每一列都指定了不用的数据类型.指定了数据类型之后,也就决定了向字段内插入的数据的内容.例如,插入的是数字的时候,既可以将它们 ...
- mysql数据库电话号码类型,mySQL数据库一:数据类型
Mysql数据库的数据类型.索引.锁.事务和视图 Mysql数据库的数据类型.索引.锁.事务和视图 数据的类型 1)数据类型: 数据长什么样? 数据需要多少空间来存放? 系统内置数据类型和用户定义数据 ...
- MySQL数据库基础:数据类型详解-文本字符串类型
前言 正好趁着这次一起学习复习一下MySQL数据库的基本知识.也是一直在用这个数据库,有些基础的知识点长久不用就会遗忘,就比如数据类型溢出的问题,很多时候建表的时候随便给定个类似,结果导入数据的时候报 ...
- SIKI学院:MySQL数据库从零到精通:十五:课时 19 : 18-关于MySQL数据库中的数据类型和帮助文档
目录 一.目的 1.想:提高学习效率,所以将老师的内容记录下来 二.参考 1.SIKI学院 三.注意 1.课程资源下载 1.MySQL下载地址 四.操作:成功 1.内容 1.添加表头:给账号添加创建时 ...
- MySQL日期、字符串、数值型转换
日期字符串提取月份,例如两个日期字符串间隔几个月,可以用 month('2019-05-01')-month('2019-12-02') 字符串转日期,使用类型转换函数: cast('2019-12- ...
最新文章
- LeetCode-Unique Binary Search Trees
- Android 4.4 中 WebView 使用注意事项
- ABAP动态生成内表的三种方法
- window命令查看cpu核数_win7如何查内存条型号机CPU 信息【通过命令来查看】
- linux 查看本机网关地址,linux查看服务器网关地址
- CentOS7安装Hadoop2.7完整步骤
- linux的vi把文件合并一行,学习Vim合并行的方法和技巧
- QQ聊天记录不会被盗取的绝招
- Linux —— shell认识与基础命令
- 去掉chorme浏览器自动补全时input框的背景样式
- Django模板自定义标签和过滤器,模板继承(extend),Django的模型层
- c语言随机函数生成字符,c语言随机数生成加减乘除 用C语言编程随机产生一道......
- windows 10 应用商店无法下载安装应用的解决
- Boobooke (播布客) 是个好网站
- 高德地图开发踩坑记录
- 德国海曼HTPA 32x32d热成像传感器代替MLX90640之传感器数据读取和计算
- java中的枚举与注解
- Vue路由懒加载报错问题解决
- Sql Server 里的向上取整、向下取整、四舍五入取整的实例
- 笔试编程题——数组中出现次数超过一半的数字
热门文章
- 浅谈USB设备的VID和PID
- 【软件质量保证与测试】2.4软件测试与软件开发的关系
- 如何使用计算机对文件修改密码,怎么给文件夹设密码-加密文档及给它们修改删除密码的具体操作方法...
- 苹果前CEO约翰·斯卡利联合创办的公司Misfit获760万美元融资
- eclipse安装与配置maven插件
- Yolov5训练模型没有框
- 全球最专业心理测试软件,据说是全球最准的心理测试
- 我们进入微服务世界的旅程-以及我们从中学到的东西。
- OpenCV手掌识别
- QT QDateTime获取当前时间且分出年月日时分秒