Mysql常用数据类型详细说明及实例说明(学习笔记一)


1.Mysql在windows

Netstartmysql[启动]

Netstopmysql[停止]

Quit[退出mysql命令行]

\c[取消输入的命令]

Selectversion(),current_date()

Mysql版本号,现在的日期(年月日如2013-7-15)

Now()现在时间(年月日时分秒如2013-07-1508:29:56)

User() 用户

2.当简单的计算器

selectsin(pi()/6),100/3;

3.不必全在一个行内给出一个命令,较长的命令可以输入到多个行中。Mysql通过寻找终止分号而不是输入行的结束来决定语句在哪结束。

Mysql状态

提示符

含义

Mysql>

准备好接受新命令

->

等待多行命令的下一行

>

等待下一行,等待以单引号(“’”)开始的字符串的结束

等待下一行,等待以双引号(“’”)开始的字符串的结束

`

等待下一行,等待以反斜点(`)开始的字符串的结束

/*

等待下一行,等待以/*开始的注释的结束

注意:当输入’,“,`时若不输入与之对应的结束符则无法输入新的命令

4.Mysql常用列类型

①串数据数据类型

数据类型

说明

char

1-255个字符的定长串。他的长度必须在创建时指定否则Mysql假定为char(1)

varchar

长度可变,整体体最大长度是65,532字节如果创建时指定为varchar(n),则可存储0-n个字符的变长串(n<=65535)字符集而定

tinytext

与text相同,最大长度为255字节

mediumtext

与text相同,但最大16k

text

最大长度为64k的变长文本

longtext

与text相同,但最大长度为4GB

enum

接受最多64k个串组成的一个预定义集合的某个串

set

接受最多64k个串组成的一个预定义集合的0个或多个串

数值数据类型

数据类型

说明

tinyint

整数值,支持-128-127(如果unsigned,为0-255)的数1字节

smallint

整数值,支持-32768-32767(unsigned,0-65535)2字节

mediumint

-8388608-8388607(undesigned0-)3字节223

-223-223-1

int

2314字节

bigint

8字节

float

单精度浮点值

double

双精度浮点值

boolean

布尔

decimal

精度可变的浮点值

peal

4字节的浮点值

bit

为字段,1-64位.(mysql5之前功能上等于tinyint)

日期和时间数据类型

数据类型

说明

DATE

表示1000-01-01至9999-12-31的日期,格式(YYYY-MM-DD)

DATETIME

DATE和TIME的组合

TIMESTAMP

功能上同DATETIME(但范围较小)

TIME

格式HH:MM:SS

YEAR

用2位数字表示,范围是70(1970)-69(2069),4位表示,1901-2155

二进制数据

数据类型

说明

TINYBLOB

Blob最大长度为255字节

BLOB

64kb

MEDIUMBLOB

16MB

LONGBLOB

4GB

5.相关数据类型说明补充

列声明中可选属性unsigned,zerofill

Tinyint时默认tinyint(4)

只有当给zerofill时括号里给定长度才有意义

比如定义了zerofilltinyint(5)插入1时则插入的是00001

小数型:

浮点型(不太标准),定点型(48个字节较复杂)

Float(M,D)M不算.的总位数,D小数点后的位数

比如float(6,4)范围是

-9999.99-9999.99

688.896插入进去是688.90

1,3,7,9舍去

2,4,6,8,5进位

定点型:

Decimal(M,D)

插入时数据与存入的数据差异小

字符型:

Char(M)M均代表可容纳的字符长度而非字节大小一个汉字z3字节而它仍是一个字符(据编码而定)插入的数据小于规定长度时用空格补齐取出时去掉尾部空格,如果插入的数据尾部就是带有空格的,则一存一取后尾部空格会丢失,小于M时也占M个字符,利用率<=100%;

Varchar(M)小于M个,最大有65535字节(ascii时),如果实存n个字符,n<=M,它必须还得用1-2个字节来记录实际存多少,取时取多少,尾部有空格也不会丢失,利用率=n/(n+1~2字节)<100%,小于255记录时用一个字节,大于时用2个字节

证明以上差异实例:

创建表t2

CREATETABLE`t2`(

`id`int(10)unsignedNOTNULLauto_increment,

`name`char(7)NOTNULL,

`pass`varchar(8)NOTNULL,

PRIMARYKEY(`id`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8

插入尾部带空格的数据

insertintot2(name,pass)

value('hk','hk');

取出数据

selectconcat(name,'!'),concat(pass,'!')fromt2;

会发现

Charvarchar区别

1.Char:1-255定长串Varchar:0-65535

2.实占空间与利用效率不一样

3.对尾部空格的处理

Char(可以不给长度默认1),varchar在表创建时都必须给定长度,tinytext类型的不能给定长度,text可以不给可以给定长度,text类型的数据不能设置默认值

对于日期型的数据,默认为 CURRENT_TIMESTAMP等自动填充的值时,为保证修改某条相关的信息时这条里的时间也随着修改,长加on update 改变的因素

比如创建一个时间型字段

列声明为:

·stamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP

修改列数据属性

法一:

ALTERTABLE`t1`CHANGE`id``id`INT(10)UNSIGNEDNOTNULLAUTO_INCREMENT

altertable表名change字段名字段列声明(包括字段名)

其中unsigned必须放在类型之后

法二:

alter table 表名 modify column 字段名 属性声明 ...

where与having

数据在表中,表在硬盘或内存中以文件形式存在

where针对表文件发挥作用

查询出的结果也可以看做一张表,其文件一般临时存在缓冲区,

having就是针对查询结果(也可以是原表)发挥作用

优质内容筛选与推荐>>
1、BIO与NIO、AIO的区别(这个容易理解)
2、临时表
3、Go语言第一课:Helloworld
4、kettle 导入xml 资源文件
5、程序集和全局程序集缓存


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号