前往顾页
以后地位: 主页 > 收集编程 > Php实例教程 >

MySQL数据库根本:数据范例及列范例

时候:2012-01-31 21:38来源:知行网www.zhixing123.cn 编辑:麦田守望者

我们要把实际世界中的各种信息转换成计较机能了解的东西,这些转换后的信息就构成了数据。比方,或人的出世日期是“1987年5月23日”,他的身高是170厘米,等等。数据不但包含数字、字母、笔墨和其他特别字符构成的文本情势的数据,并且还包含图形、图象、动画、影象、声响等多媒体数据。但利用最多、最根基的仍然是文本数据。

1. MySQL的数据范例

在MySQL中有以下几种数据范例:

(1)数值型

数值是诸如32 或153.4 如许的值。MySQL 支撑迷信表示法,迷信表示法由整数或浮点数后跟“e”或“E”、一个标记(“+”或“-”)和一个整数指数来表示。1.24E+12 和23.47e-1 都是合法的迷信表示法表示的数。而1.24E12 不是合法的,因为指数前的标记未给出。

浮点数由整数部分、一个小数点和小数部分构成。整数部分和小数部分可以别离为空,但不克不及同时为空。

数值前可放一个负号“-”以表示负值。

(2)字符(串)型

字符型(也叫字符串型,简称串)是诸如“Hello, world!”或“一个馒头引发的血案”如许的值,或是德律风号码87398413如许的值。既可用单引号也可用双引号将串值括起来。

初学者常常分不清数值87398143和字符串87398143的辨别。都是数字啊,怎样一个要用数值型,一个要用字符型呢?关头就在于:数值型的87398143是要参与计较的,比如它是金融中的一个货款总额;而字符型的87398143是不参与计较的,只是表示德律风号码,如许的另有街道号码、门商标码等等,它们都不参与计较。

(3)日期和时候型

日期和时候是一些诸如“2006-07-12”或“12:30:43”如许的值。MySQL还支撑日期/时候的组合,如“2006-07-12 12:30:43”。

(4)NULL值

NULL表示未知值。比如填写表格中通信地点不清楚留空不填写,这就是NULL值。

我们用Create Table语句建立一个表(参看前面的章节),这个表中包含列的定义。比方我们在前面建立了一个joke表,这个表中有content和writer两个列:


 

CREATE TABLE ( content varchar(20) NOT NULL, writer varchar(10) NULL )
 

定义一个列的语法以下:


 

col_name col_typy [col_attributes] [general_attributes]
 

此中列名由col_name 给出。列名可最多包含64个字符,字符包含字母、数字、下划线及美圆标记。列名可以名字中合法的任何标记(包含数字)开首。但列名不克不及完整由数字构成,因为那样可能使其与数据分不开。MySQL保存诸如SELECT、DELETE和CREATE如许的词,这些词不克不及用做列名,但是函数名(如POS 和MIN)是可利用的。

列范例col_type表示列可存储的特定值。列范例申明符还能表示存放在列中的值的最年夜长度。对某些范例,可用一个数值明白地申明其长度。而别的一些值,其长度由范例名包含。比方,CHAR(10) 明白指定了10个字符的长度,而TINYBLOB值隐含最年夜长度为255个字符。有的范例申明符许可指定最年夜的显现宽度(即显现值时利用多少个字符)。浮点范例许可指定小数位数,所以能节制浮点数的精度值为多少。

可以在列范例以后指定可选的范例申明属性,和指定更多的常见属性。属性起润色范例的感化,并变动其措置列值的体例,属性有以下范例:

(1)公用属性用于指定列。比方,UNSIGNED 属性只针对整型,而BINARY属性只用于CHAR 和VARCHAR。

(2)通用属性除多数列以外可用于肆意列。可以指定NULL 或NOT NULL 以表示某个列是不是可以或许存放NULL。还可以用DEFAULT,def_value 来表示在建立一个新行但未明白给出该列的值时,该列可付与值def_value。def_value 必须为一个常量;它不克不及是表达式,也不克不及援引其他列。不克不及对BLOB 或TEXT 列指定缺省值。

如果想给出多个列的公用属性,可按肆意依次指定它们,只需它们跟在列范例以后、通用属性之前便可。近似地,如果需求给出多个通用属性,也可按肆意依次给出它们,只需将它们放在列范例和可能给出的列公用属性以后便可。

[NextPage] 2. MySQL的列(字段)范例

数据库中的每个表都是由一个或多个列(字段)构成的。在用CREATE TABLE语句建立一个表时,要为每列(字段)指定一个范例。列(字段)的范例比数据范例更加细化,它切确地描述了给定表列(字段)可能包含的值的种类,如是不是带小数、是不是笔墨很多。

2.1数值列范例

MySQL有整数和浮点数值的列范例,如表1所示。整数列范例可以有标记也可无标记。有一种特别的属性许可整数列值主动天生,这对需求独一序列或标识号的利用体系来讲是非常有效的。

 

范例

申明

TINYINT 非常小的整数 SMALLINT 较小整数 MEDIUMINT 中等年夜小整数 INT 标准整数 BIGINT 较年夜整数 FLOAT 单精度浮点数 DOUBLE 双精度浮点数 DECIMAL 一个串的浮点数
 

表1:数值列范例

每种数值范例的称呼和取值范围如表2所示。


 

范例申明

取值范围

TINYINT[(M)] 有标记值:-128 到127(- 27 到27 - 1)
无标记值:0到255(0 到28 - 1)
SMALLINT[(M)] 有标记值:-32768 到32767(- 215 到215 - 1)
无标记值:0到65535(0 到21 6 - 1)
MEDIUMINT[(M)] 有标记值:-8388608 到8388607(- 22 3 到22 3 - 1 )
无标记值:0到16777215(0 到22 4 - 1)
INT[(M)] 有标记值:-2147683648 到2147683647(- 231 到231- 1)
无标记值:0到4294967295(0 到232 - 1)
BIGINT[(M)] 有标记值:-9223372036854775808 到9223373036854775807(- 263到263-1)

无标记值:0到18446744073709551615(0到264 – 1)
FLOAT[(M, D)] 最小非零值:±1.175494351E - 38 DOUBLE[(M,D)] 最小非零值:±2.2250738585072014E - 308 DECIMAL (M, D) 可变;其值的范围依靠于M 和D
 


表2:数值列范例的取值范围

各种范例值所需的存储量如表3所示。


 

范例申明

存储需求

TINYINT[(M)] 1字节 SMALLINT[(M)] 2字节 MEDIUMINT[(M)] 3字节 INT[(M)] 4字节 BIGINT[(M)] 8字节 FLOAT[(M, D)] 4字节 DOUBLE[(M, D)] 8字节 DECIMAL (M, D) M字节(MySQL < 3.23),M+2字节(MySQL > 3.23 )
 

表3:数值列范例的存储需求

[NextPage]
MySQL供应了五种整型: TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。INT为INTEGER的缩写。这些范例在可表示的取值范围上是不合的。整数列可定义为UNSIGNED从而禁用负值;这使列的取值范围为0以上。各种范例的存储量需求也是不合的。取值范围较年夜的范例所需的存储量较年夜。

MySQL 供应三种浮点范例: FLOAT、DOUBLE和DECIMAL。与整型不合,浮点范例不克不及是UNSIGNED的,其取值范围也与整型不合,这类不合不但在于这些范例有最年夜值,并且另有最小非零值。最小值供应了呼应范例精度的一种度量,这对记录迷信数据来讲是非常首要的(当然,也有负的最年夜和最小值)。

在挑选了某种数值范例时,应当考虑所要表示的值的范围,只需挑选能覆盖要取值的范围的最小范例便可。挑选较年夜范例会对空间造成浪费,使表不需求地增年夜,措置起来没有挑选较小范例那样有效。对整型值,如果数据取值范围较小,如职员春秋或兄弟姐妹数,则TINYINT最适合。MEDIUMINT可以或许表示数百万的值并且可用于更多范例的值,但存储代价较年夜。BIGINT在全数整型中取值范围最年夜,并且需求的存储空间是表树模围次年夜的整型INT范例的两倍,是以只在确切需求时才用。对浮点值,DOUBLE占用FLOAT的两倍空间。除非特别需求高精度或范围极年夜的值,一般应利用只用一半存储代价的FLOAT型来表示数据。

在定义整型列时,可以指定可选的显现尺寸M。如果如许,M应当是一个1 到255的整数。它表示用来显现列中值的字符数。比方,MEDIUMINT(4)指定了一个具有4个字符显现宽度的MEDIUMINT列。如果定义了一个没有明白宽度的整数列,将会主动分派给它一个缺省的宽度。缺省值为每种范例的“最长”值的长度。如果某个特定值的可打印表示需求不止M个字符,则显现完整的值;不会将值截断以适合M个字符。

对每种浮点范例,可指定一个最年夜的显现尺寸M 和小数位数D。M 的值应当取1 到255。D的值可为0 到3 0,但是不该年夜于M - 2(如果熟谙ODBC 术语,就会晓得M 和D 对应于ODBC 观点的“精度”和“小数点位数”)。M和D对FLOAT和DOUBLE 都是可选的,但对DECIMAL是必须的。在选项M 和D时,如果省略了它们,则利用缺省值。


2.2字符串列范例

MySQL供应了几种存放字符数据的串范例,其范例以下:


 

范例名

申明

CHAR 定长字符串 VARCHAR 可变长字符串 TINYBLOB 非常小的BLOB(二进制年夜工具) BLOB 小BLOB MEDIUMBLOB 中等的BLOB LONGBLOB 年夜BLOB TINYTEXT 非常小的文本串 TEXT 小文本串 MEDIUMTEXT 中等文本串 LONGTEXT 年夜文本串 ENUM 枚举;列可付与某个枚举成员 SET 调集;列可付与多个调集成员
 

表4:字符串列范例

下表给出了MySQL 定义串值列的范例,和每种范例的最年夜尺寸和存储需求。对可变长的列范例,各行的值所占的存储量是不合的,这取决于实际存放在列中的值的长度。这个长度在表顶用L 表示。


 

范例申明

最年夜尺寸

存储需求

CHAR( M) M 字节 M 字节 VARCHAR(M) M 字节 L + 1字节 TINYBLOB, TINYTEXT 28- 1字节 L + 1字节 BLOB, TEXT 216 - 1 字节 L + 2字节 MEDIUMBLOB, MEDIUMTEXT 224- 1字节 L + 3字节 LONGBLOB, LONGTEXT 232- 1字节 L + 4字节 ENUM(“value1”, “value2”, ...) 65535 个成员 1 或2字节 SET (“value1”, “value2”, ...) 64个成员 1、2、3、4 或8字节

------分开线----------------------------
标签(Tag):MYSQL 数据库 mysql数据库
------分开线----------------------------
保举内容
猜你感兴趣