mysql 模型_MySQL的数据模型

MySQL的数据类型主要分为三大类:

数值型(Numeric Type)

日期与时间型(Date and Time Type)

字符串类型(String Type)

1. 数值

MySQL的数值类型按照精确程度,大致可以分为两类:

精确数值(Exact Value),包括INTEGER、DECIMAL、NUMERIC等;

近似数值(Approximate Value),包括FLOAT、REAL、DOUBLE PRECISION等。

若按类型簇划分,则可分为三簇:

Integer类型,包括INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT;

Fixed-Point类型,包括DECIMAL, NUMERIC;

Floating-Point类型,包括FLOAT, DOUBLE。

一般地,关键字INT代指INTEGER,关键字DEC(desc只降序)代指DECIMAL, DOUBLE代指DOUBLE PRECISION(a nonstandard extension)。BIT类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。数值类型的存储、范围及用途如下表:

类型

大小(字节)

范围(有符号)

范围(无符号)

用途

TINYINT

1

(-128,127)

(0,255)

小整数值

SMALLINT

2

(-32 768,32 767)

(0,65 535)

大整数值

MEDIUMINT

3

(-8 388 608,8 388 607)

(0,16 777 215)

大整数值

INT

4

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

大整数值

BIGINT

8

(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)

极大整数值

FLOAT

4

(-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)

0,(1.175 494 351 E-38,3.402 823 466 E+38)

单精度浮点数值

DOUBLE

8

(1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

双精度浮点数值

DECIMAL

对于DECIMAL(M,D),为M+2

依赖于M和D的值

依赖于M和D的值

小数值

DECIMAL类型常被声明为DECIMAL(M,D),其中M为precision,指允许的最多数字位数(the maximum number of digits);D为scale,指小数点后的小数位数(the number of digits to the right of the decimal point);一般D不大于M。对于Floating-Point类型,MySQL允许类似的声明语法:FLOAT(M,D)、REAL(M,D)、DOUBLE PRECISION(M,D)。

常见的类型转换:

-- string to decimal

cast(cover_ratio as decimal(4,2))

2. 日期与时间

日期和时间类型(Date and Time Type)包括了如下5种类型:

DATE,指日期,遵从'YYYY-MM-DD'(或'YY-MM-DD')格式,支持区间段['1000-01-01', '9999-12-31'];

TIME,指时间,遵从'HH:MM:SS'(或'HHH:MM:SS')格式,支持区间段['-838:59:59', '838:59:59'];

DATETIME,包含了日期与时间,一般精确到秒(精确度最高到微妙),遵从 'YYYY-MM-DD HH:MM:SS'(或'YY-MM-DD HH:MM:SS')格式,支持区间段['1000-01-01 00:00:00', '9999-12-31 23:59:59'];

TIMESTAMP,包含了日期与时间,一般精确到秒(精确度最高到微妙),无格式遵从,支持区间段['1970-01-01 00:00:01' UTC, '2038-01-19 03:14:07' UTC];

YEAR,指年份,常被声明为YEAR或YEAR(4) (1-byte type);

至于应选择什么数据类型表示时间戳,这篇文章给出了答案。MySQL同时支持ODBC语法来表示日期和时间类型:

{ d '2016-10-21' } -- date

{ t '2016-10-21' } -- time

{ dt '2016-10-21' } -- datetime

{ ts '2016-10-21' } -- timestamp

官方提供了Date and Time函数,下面给出一些常见的类型转换:

-- string to date

STR_TO_DATE('01,5,2016','%d,%m,%Y')

-- date to string

DATE_FORMAT(NOW(), '%d %m %Y')

-- timestamp to date_string

DATE_FORMAT(registration_time, '%Y-%m-%d')

-- int to date

FROM_UNIXTIME(measured_on) > '2016-01-01'

3. 字符串

MySQL中有两个重要的概念:character set、collation,分别表示字符编码集、字符校对规则,显示所有可用的命令:

show character set;

show collation;

String类型大致可以分为如下三类:

char类型,包括CHAR、VARCHAR、TEXT,分别表示定长字符串、变长字符串、长文本;

binary类型,包括BINARY、VARBINARY、BLOB,为定长、变长的二进制数据及较长的二进制数据;

enum类型与set类型。

其中,根据字符串(文本)长度,TEXT可细分为TINYTEXT、TEXT、MEDIUMTEXT;根据二进制数据长度,BLOB可细分为TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB。binary类型最大的特点是没有编码集和校对规则,存储形式为byte。

MySQL内置的string函数,下面给出一些我遇到过的用法:

-- replace occurrences of a specified string

replace('苹果 iPad Air', '苹果 ', '')

-- concat strings

concat_ws(',', 'hello', 'world')

-- string to int

CAST('10' AS UNSIGNED)

CAST('-10' AS SIGNED)

MySQL Workbench的使用教程 (初级入门版)

MySQL Workbench 是 MySQL AB 最近释放的可视数据库设计工具.这个工具是设计 MySQL 数据库的专用工具. MySQL Workbench 拥有很多的功能和特性:这篇由Djon ...

(转)MySQL Workbench的使用教程 (初级入门版)

转自:http://www.cnblogs.com/yqskj/archive/2013/03/01/2938027.html MySQL Workbench 是 MySQL AB 最近释放的可视数据 ...

Sakila——MySQL样例数据库解析(已经迁移)

一.Introduction Sakila可以作为数据库设计的参考,也可作为实验数据.我是用作数据仓库和ODI学习的实验数据. The Sakila sample database was devel ...

golang web框架 beego 学习 (四) 连接mysql

1 DB参数配置在app.conf appname = gowebProject httpport = runmode = dev [db] host= localhost port= databas ...

初学者使用MySQL_Workbench 6.0CE创建数据库和表,以及在表中插入数据。

标签: mysqlworkbench数据库 2013-10-09 20:17 19225人阅读 评论(14) 收藏 举报  分类: mysql(1)  版权声明:本文为博主原创文章,未经博主允许不得转 ...

Photon Server 服务端编程

Photon Server 和 Unity3D 数据交互: Photon Server 服务端编程 Unity3D 客户端编程 VS2017 之 MYSQL实体数据模 一:Photon Server的 ...

Unity3D 客户端编程

Photon Server 和 Unity3D 数据交互: Photon Server 服务端编程 Unity3D 客户端编程. VS2017 之 MYSQL实体数据模 1:打开unity新建新项目, ...

vs2012新建实体数据模型(EF)时无Mysql数据源

sql转mysql数据库,用到EF,遇到vs2012新建实体数据模型时无Mysql数据源的问题. 问题截图如下: 解决方法1:(简单的的解决方法,有可能解决问题,如不能解决问题,请看解决方法2): ( ...

Visual Studio2017中如何让Entity Framework工具【ADO.NET实体数据模型】支持MYSQL数据源

熟悉Entity Framework应该对以下图片不陌生,他就是ADO.NET实体数据模型向导:可以将数据库的表自动生成模型类,或者创建Code First的模型文件. 但是这个模型向导默认只显示微软 ...

随机推荐

使用SuperSlide 实现标签切换

小颖之前还写过一篇jquery实现标签切换的文章  jquery实现Tab选项卡菜单 今天小颖逛博客园时看到了用SuperSlide 实现标签切换的文章,所以小颖就自己试了下,试了后发现SuperSl ...

python 数据类型---列表使用 之二 (增删改查)

列表的操作 1.列表的修改 >>> name ['Frank', 'Lee', 2, ['Andy', 'Troy']] >>> name[0] = "F ...

web编程 java.io.EOFException错误

java.io.EOFException 严重: IOException while loading persisted sessions: java.io.EOFException 严重: Exce ...

iOS中AOP与Method Swizzling 项目中的应用

引子:项目中需要对按钮点击事件进行统计分析,现在项目中就是在按钮的响应代码中添加点击事件,非常繁琐.所以使用了AOP(面向切面编程),将统计的业务逻辑统一抽离出来. 项目中添加的开源库:https:/ ...

GMF Q&A(1): 如何让palette支持拖拽(DnD)等10则

1,如何让palette支持拖拽(DnD) 在*PaletteFactory类中,把私有类NodeToolEntry 和LinkToolEntry的基类修改为PaletteToolEntry.并在构造 ...

ubuntu下nagios配置

参考文献: http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html http://my.oschina.net/duangr/blo ...

main方法执行之前,做什么事

1.我们知道程序的入口是main方法,那么在执行main方法之前,需要做些什么准备工作呢? 2.main方法执行之前,必须要把non-local static对象构造完成.static对象有:全局对象 ...

url解析

window.οnlοad=function(){ var url="http://www.qq.com/index.html?key1=1&key2=2&key3=3&qu ...

SKLabelNode类

继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/L ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值