随笔-211  评论-26  文章-8  trackbacks-0
数据类型和表 


数据库其实不过是由不同层次的数据结构构成的。MySQL中可以存放块(或记录)信息的结构就是表(table)。而这些记录则由更小的信息格式组成,即数据类型。一个或多个的数据类型组成了记录。由记录组成的表构成了数据库的一部分。数据库的层次可以表示如下:


Database < Table < Record < Datatype 


数据类型有不同的形式和大小,这样程序员就可以根据实际应用的需要建立表。选择合适的数据类型对于数据库的运行性能影响致关重要,所以详细了解这些概念是十分重要的。 

MySQL Datatypes 数据类型

MySQL支持各种数据类型(即使是编程新手也都基本熟悉)。常用的类型包括:


CHAR (M) 固定长度字符
用来表示固定长度的字符串。字符串的长度范围是1-255。例如:


car_model CHAR(10);


VARCHAR (M) 可变长度字符

VARCHAR是一个具有灵活性的字符数据类型。字符串的长度范围是1-255。 选用VARCHAR通常是比较明智的决定。尽管处理CHAR类型的数据比VARCHAR类型的数据要快,有时会快50%。(CHAR类型存储的数据的长度是声明变量时的固定长度,而不管数据的实际长度。VARCHAR存储的是按数据的实际长度,从而减小了数据文件的大小。) 

car_model VARCHAR(10);


INT (M) [Unsigned] 整数类型

INT是整数类型,存储整数的值范围是-2147483648到2147483647。在声明类型时可选用"unsigned",这样值的范围就是0到4294967295。
light_years INT;
合法整数: '-24567', 非法整数: '3000000000'。
light_years INT unsigned;
合法整数: '3000000000', 非法整数: '-24567'。

FLOAT [(M,D)] 浮点类型

FLOAT代表浮点类型,用来表示更精确的数字类型。
rainfall FLOAT (4,2);
这个变量可以用来表示一年当中的平均降水量,并精确到小数。FLOAT (4,2)表示数值一共可以有4位数字,小数点后有2位数字。请看下面哪些数值可以用上面的变量类型表示: 

42.35是合法的
324.45是不合法的,将被修改为324.5
2.2 是合法的数值
34.542 不合法,将被修改为 34.54
注意:由于FLOAT会将数值四舍五入,所以如果不想让数值随意被更改,建议使用DECIMAL。

DATE 日期类型

用来存放日期信息,缺省的格式是'YYYY-MM-DD',日期范围可以从'0000-00-00' 到 '9999-12-31'。声明日期型变量the_date:

the_date DATE; 

TEXT / BLOB 文本和大对象

如果字符串的长度超过了255,或者要将一篇文章保存到数据库中,CHAR和VARCHAR就无法使用了,这里就要用到TEXT和BLOB类型,该类型可以保存的字符串长度在255 - 65535字节内。BLOB是一个能保存二进制数据的的大对象。BLOB和TEXT数据类型是一样的,唯一的区别就是TEXT不区分大小写,而BLOB区分大小写。

SET 固定类型

一个SET是可以有零或多个值的一个字符串对象,其每一个必须从表创建造被指定了的允许值的一张列表中被选择。由多个集合成员组成的SET列通过由由逗号分隔(“,”)的成员被指定。SET类型最多可以64个值。
transport SET ("truck", "wagon") NOT NULL; 

经过上面的声明之后,transport可以有下面几个值:

""
"truck"
"wagon"
"truck,wagon" 

ENUM 枚举类型

ENUM是与SET属性相同的数据类型,但从中取值时只能取一个值。
transport ENUM ("truck", "wagon") NOT NULL; 

经过上面的声明之后,transport可以有下面几个值:

""
"truck"
"wagon"

Records 记录

一组数据类型就构成了记录。一个记录可以只有一个数据类型,也可以根据需要设置很多个。一个或多个记录构成了一个表。


Tables 表

在我们可以对数据库进行操作之前,必须建立一个可以存放数据的表。可以通过如下方法创建:


mysql> CREATE TABLE test (
> name VARCHAR (15),
> email VARCHAR (25),
> phone_number INT,
> ID INT NOT NULL AUTO_INCREMENT,
> PRIMARY KEY (ID));


输出结果: 

Query OK, 0 rows affected (0.10 sec)
mysql> 

这样你的第一个表就建成了。

所有的数据类型都可以使用下面的选项: 

  • 主键值Primary Key。主键值是用来将记录区分开来,因为没有两个记录能使用同一个主键值。在必须要保持记录的唯一性时,使用主键值是非常有用的。 
  • Auto_Increment自动增量。使用了这个选项的列在每增加一个记录时,都会自动将记录在该列的值加1。 
  • NOT NULL非空变量。表示该列不能被分配为空值。 

例:
soc_sec_number INT PRIMARY KEY;
这样soc_sec_number字段就不能有重复的值。

ID_NUMBER INT AUTO_INCREMENT;
从1开始,自动按顺序将后面的值在前面的基础上增加1。

与表相关的命令

我们可以使用一些与表有关的命令:

显示表内容

如果想显示数据库当中存在的所有表,可以使用命令show tables,

mysql> show tables; 

显示列 

mysql> show columns from test; 

结果:
显示出与表相关的列及数据。

现在你已经对创建表有了一个基本的认识。表是由数据类型构成的,所有的数据类型形成了记录。

posted on 2006-10-08 17:39 dragon 阅读(75) 评论(0)  编辑  收藏 所属分类: 数据库知识