mysql取得列类型_Mysql列类型
数值型
整型:
tinyint:微小的列类型,1个字节,默认有符号,存储范围:-128--127
可选属性:tingyint(M) unsigned zerofill
M:宽度(在0填充(zerofill)时才有效),只是显示效果,不影响实际数据的存储范围;unsigned:无符号类型
注意:如果某列是zerofill,那么则是unsigned。
smallint:2个字节
mediumint:3个字节
int:4个字节
bigint:8个字节
举例:
创建一个表:
1 create tableclass(2 id int primary key auto_increment,--id 自增长
3 name varchar(20),4 age tinyint
5 );
插入数据:
1 insert into class(name,age) values ('张三',25),('李四',26),('王五',27);
然后更改列的定义实验zerofill:可以看到age1前面填充了4个0
alter table class add age1 tinyint(5) zerofill;insert into table class(age1) values (3);--插入一条数据--查询结果:
select * fromclass;--结果显示如下:
id | name | age |age1----+------+------+-------
1 | 张三 | 25 | NULL
2 | 李四 | 26 | NULL
3 | 王五 | 27 | NULL
4 | NULL | NULL | 00003
设置列的默认值,一般这样结合设置:可以省去not null,但是一般推荐这样使用。
1 not null default '默认的值'
2 --添加一列设置默认值
3 alter table class add age2 tinyint not null default 10;4 --查询结果
5 select * fromclass;6 +----+------+------+-------+------+
7 | id | name | age | age1 | age2 |
8 +----+------+------+-------+------+
9 | 1 | 张三 | 25 | NULL | 10 |
10 | 2 | 李四 | 26 | NULL | 10 |
11 | 3 | 王五 | 27 | NULL | 10 |
12 | 4 | NULL | NULL | 00003 | 10 |
13 +----+------+------+-------+------+
小数型:浮点型,定点型
float(M,D) M:精度(总位数,不包含小数点),D:标度(小数点后面的位数) 比如:float(6,2)表示的范围是:-9999.99-->9999.99
1 --创建一个表
2 create tablegoods(3 name varchar(20) not null default ' ',4 price float(6,2) not null default 0.00
5);6 --增加一列
7 alter table goods add price1 float(6,3) not null default 100.000
8 --插入数据
9 insert into goods (name,price) values ('跑步机',99,300),('饮水机',199,700);10 --查询数据:
11 select * fromgoods;12 +--------+--------+---------+
13 | name | price | price1 |
14 +--------+--------+---------+
15 | 跑步机 | 99.00 | 300.000 |
16 | 饮水机 | 199.00 | 700.000 |
17 +--------+--------+---------+
再插入一条数据:
insert into goods (name,price,price1) values ('跑步机1',99.685,300),('饮水机1',99.675,700)--查询出来的数据:
select * fromgoods;+---------+--------+---------+
| name | price | price1 |
+---------+--------+---------+
| 跑步机 | 99.00 | 300.000 |
| 饮水机 | 199.00 | 700.000 |
| 跑步机1 | 99.69 | 300.000 |
| 饮水机1 | 99.67 | 700.000 |
+---------+--------+---------+
注意:这里的price按照四舍五入应该是99.69和99.68的,但是查询出来的数据却是99.69和99.67;这是因为Mysql采取的不是数学上的四舍五入,而是采用银行的四舍五入:即1,2,3,4舍,6,7,8,9入;而5就是根据5前面的一位数来确定是舍还是入:1,3,5,7就舍掉,0,2,4,6就加上.
定点型 decimal 比float精度要高些。
alter table goods add bigprice float(9,2) not null default 0.00
alter table goods add decimalprice decimal(9,2) not null default 0.00插入数据:insert into goods (name,bigprice,decimalprice) values ('自行车',123456.23,123456.23)
查询数据;select * fromgoods;+---------+--------+---------+-----------+--------------+
| name | price | price1 | bigprice | decimalprice |
+---------+--------+---------+-----------+--------------+
| 跑步机 | 99.00 | 300.000 | 0.00 | 0.00 |
| 饮水机 | 199.00 | 700.000 | 0.00 | 0.00 |
| 跑步机1 | 99.69 | 300.000 | 0.00 | 0.00 |
| 饮水机1 | 99.67 | 700.000 | 0.00 | 0.00 |
| 自行车 | 0.00 | 100.000 | 123456.23 | 123456.23 |
+---------+--------+---------+-----------+--------------+--这里没有明显的区别,修改一下数据:
update goods set bigprice=1234567.23 and decimalprice=1234567.23 where name='自行车'
select * fromgoods;+---------+--------+---------+------------+--------------+
| name | price | price1 | bigprice | decimalprice |
+---------+--------+---------+------------+--------------+
| 跑步机 | 99.00 | 300.000 | 0.00 | 0.00 |
| 饮水机 | 199.00 | 700.000 | 0.00 | 0.00 |
| 跑步机1 | 99.69 | 300.000 | 0.00 | 0.00 |
| 饮水机1 | 99.67 | 700.000 | 0.00 | 0.00 |
| 自行车 | 0.00 | 100.000 | 1234567.25 | 123456.23 |
+---------+--------+---------+------------+--------------+
这里小数位最后一个是25,一个是23了,所以decimal比float精确,因此银行业务一般是采取的decimal类型。
字符型
char(M):M个字符,如果小于M个字符,实占M个字符,利用率:<=100%,不够M个字符的,最后用空格补起。
varchar(M):M个字符,存储的数据小于M个字符,设为N,N<=M,利用率小于100%,因为有一两个字节要用来记录占用的空间。
create tablestu(
namechar(8) not null default '',
waihaovarchar(10) not null default '')insert into stu values ('一二三四五六七','一二三四五六七')insert into stu values ('一二三','一二三')select * fromstu;+------------------+--------------------+
| name | waihao |
+------------------+--------------------+
| 张三 | 三儿 |
| 啊啊是个大傻逼啊 | 大傻逼啊打打的的的 |
| 一二三四五六七 | 一二三四五六七 |
| 一二三 | 一二三 |
+------------------+--------------------+--在字符串后面加连接符来看是否丢失空格:
select concat(name,'!'),CONCAT(waihao,'!') fromstu;+-------------------+---------------------+
| concat(name,'!') | CONCAT(waihao,'!') |
+-------------------+---------------------+
| 张三! | 三儿! |
| 啊啊是个大傻逼啊! | 大傻逼啊打打的的的! |
| 一二三四五六七! | 一二三四五六七! |
| 一二三! | 一二三 ! |
+-------------------+---------------------+
通过select查询到的结果发现,char型的丢了空格,varchar由于有1-2字节记录占用的情况,不会丢失空格。
速度上char快,varchar稍慢,要去字节里面取存储了多少值。
因此char和varchar的区别:
char是的范围0-255,varchar 0-65535左右,char是创建就全部分配空间,varchar是用多少分配多少,同时char由于最后不足的数据会用空格代替,因此如果存储的数据末尾有空格,取值出来会把空格丢掉,会照成空格丢失,而varchar不会。同时char速度较快,varchar速度稍慢。
选取原则:
1.空间利用效率 四字成语表,char(4);微博140字,varchar(140)
2.速度 用户名:char,
text 文本串,可以存较大的文本段,搜索速度比较慢,如果不是特别大,推荐用varchar,text不能设置默认值。
mysql取得列类型_Mysql列类型相关推荐
- mysql单列索引和多列索引_mysql索引类型 normal, unique, full text
问题1:mysql索引类型normal,unique,full text的区别是什么? normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用 ...
- mysql age字段类型_mysql 列类型
列类型 整型 tinyint,smallint,mediumint,int,bigint (可选参数unsigned ,(M,zerofill,结合使用才有意义)) 浮点型 float(可选参数D, ...
- mysql完整字段包括_MySQL字段类型最全解析
前言: 要了解一个数据库,我们必须了解其支持的数据类型.MySQL 支持大量的字段类型,其中常用的也有很多.前面文章我们也讲过 int 及 varchar 类型的用法,但一直没有全面讲过字段类型,本篇 ...
- mysql 空间 类型_MySQL空间类型测试
Mysql空间类型介绍: MySQL支持空间扩展,允许生成.保存和分析地理特征.这些特征可用于MyISAM.InnoDB.NDB.BDB和ARCHIVE表(但是,ARCHIVE引擎不支持索引功能,因此 ...
- Mysql数据库---约束类型_MySQL约束类型及举例介绍
约束 约束保证数据的完整性和一致性 约束分为表级约束和列级约束 约束类型包括:NOT NULL (非空约束),PRIMARY KEY(主键约束),UNIQUE KEY(唯一约束),DEFAULT(默认 ...
- mysql密码字段类型_MySQL 字段类型
数值 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数. 许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指定 ...
- mysql密码字段类型_MySQL字段类型最全解析
**前言:** 要了解一个数据库,我们必须了解其支持的数据类型.MySQL 支持大量的字段类型,其中常用的也有很多.前面文章我们也讲过 int 及 varchar 类型的用法,但一直没有全面讲过字段类 ...
- mysql做生日日期字段的用到的类型_MySQL 日期类型函数及使用
1 MySQL 数据库中有五种与日期时间有关的数据类型,各种日期数据类型所占空间如下图所示: 2 datetime 与 date datetime 占用8字节,是占用空间最多的一种日期格式.它显示日期 ...
- mysql 的int类型_MySQL int类型
在本教程中,您将了解MySQL INT或整数数据类型以及如何在数据库表设计中使用它. 另外,我们将向您展示如何使用表中整数列的显示宽度和ZEROFILL属性. MySQL INT类型简介 在MySQL ...
- mysql 字段内部转行_mysql 列转行、列转行的有关问题_mysql
mysql 列转行.列转行的问题 今天在逛大java吧的时候看到一个行转列.列转行的问题,看了之后还真的不知道怎么下手,可能平时用hibernate作为持久层用多了,sql语句也不会写了,赶紧去找度娘 ...
最新文章
- Case When 解决简单的是与否
- mysql中有主键和外键吗_谈谈mysql的主键和外键
- 【Java学习笔记之十五】Java中的static关键字解析
- Win2008R2创建虚拟路由
- CentOS+Nginx一步一步开始配置负载均衡
- #分布式系统架构之# 事件驱动模式以及与之匹配的长时间处理过程讨论
- SAP License:账号锁定的处理
- 深度学习图像算法在内容安全领域的应用实践和优化
- java swing取消按钮_在Java Swing中取消选择单选按钮
- 水体专题图和土地利用专题图制作
- 面试题之Servlet工作原理
- pdf格式压缩大小,pdf如何压缩大小?
- WordPress插件/WP资源下载管理插件 1.3.4
- 实战Java企业商品进销存管理系统
- 什么是Instagram直播购物?如何设置Instagram 直播购物?
- jquery左侧图片与右侧图片以及放大镜和图片的放大的图片和产品的隐藏的效果
- Opencv -- 13像素值统计及平均值和方差的意义
- 场外模拟 省选联考(B卷) 2020 游记
- 仿哔哩哔哩视频app小程序模板源码
- 优秀课件笔记之计算机软件立法保护