《MYSQL数据库MySQL所支持的数据类型与表字段约束类型的学习教程》要点: 本文介绍了MYSQL数据库MySQL所支持的数据类型与表字段约束类型的学习教程,希望对您有用。如果有疑问,可以联系我们。
MySQL 数据(字段)类型 在创建表的时候,要明确定义字段对应的数据类型.MySQL 主要的数据类型分为数值类型、字符串(文本)类型、时间日期类型和其他类型几类.
数值类型
数值类型说明: MYSQL入门
 MYSQL入门
补充说明
在 int(integer) 系列中,只能存储整型值,且可以在后面用括号指定显示的尺寸(M),如果不指定则会默认分配.如果实际值的显示宽度大于设定值,将会显示实际值而不会截断以适应显示尺寸.如 smallint(3) 中的 3 即为显示尺寸,即显示三位的数值(不包括 - 号)
int 类型可以指定 UNSIGNED 属性,即无符号(非负),所以存储范围有两种
在 float、double 及 decimal 类型中,不能指定 UNSIGNED 属性,其显示尺寸包括了小数点精度(D),即 float(3,1) 保存范围为 -99.9 至 99.9
decimal 必须指定显示尺寸(M)和小数点精度(D),float 和 double 都是可选的
在可能涵盖取值范围的基础上,尽可能选择较小的类型以提高效率和节约存储空间,如年龄,就选择 tinyint(3) .该原则对于字符类型同样适用
字符串(文本)类型
字符串(文本)类型说明: MYSQL入门
 MYSQL入门
补充说明
char 和 varcha 需要指定长度,不同的是,char 存储时总是依照指定的长度储存,而 varchar 则根据实际字符串长度再加上一个字节分配空间.
时间日期类型
时间日期类型说明: MYSQL入门
 MYSQL入门
提示
在 PHP 中,一般情况下对于时间都是依照 UNIX 时间戳以 int 类型存储于表中,再根据实际需要用 PHP 的时间函数进行处理,但不完全都是这样.MYSQL入门
MySQL 表字段属性 主键
表的主键(primary key,主关键字)是表中的一个或多个字段,它的值用于惟一地标识表中的某一条记录.一个表不能有多个主关键字,并且主关键字的列不能包括空值和重复值.主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义.
语法:
PRIMARY KEY (column_name) MYSQL入门
 MYSQL入门
在这个表中,uid 这个字段就是该表的主键.
建立主键应该遵循的一般原则
主键应当是对用户没有意义的
永远也不要更新主键,如果主键需要更新,则说明主键应对用户无意义的原则被违反了
主键不应包括动态变化的数据,如时间戳、创建时间等
主键应当由系统自动生成
外键
在两个表的关系中,当一张表(如表A )的主关键字被包括在另一张表(如表B)中时,A 表中的主关键字便成为 B 表的外键(外关键字).B 表称为主表,A 表称为从表.
外键主要用于保持数据一致性,完整性,避免冗余数据,使两张或多张表形成关联. MYSQL入门
 MYSQL入门
在这个文章评论表 comment 样例中,uid 便是外键,它是 user 表的主键.在该表中记录了用户对文章的评论,关于用户信息,只需对应 user 表的主键 uid 即可.在数据一致性方面,好比当 comment 表没有 uid 为 3 的评论后,才可以删除 user 表中 uid = 3 的记录.
自动递增
在 MySQL 数据库中,提供了字段的自动递增(AUTO_INCREMENT)属性,即将该字段设置为 int 类的数据类型,每向数据表添加一条记录,该字段的值会自动加1 .设置了自动递增后,该列不用再设置默认值和唯一性约束.
例子: MYSQL入门
uid mediumint(8) NOT NULL auto_increment
非空
因为逻辑上的一些要求,有时候需要把字段属性设置为非空(NOT NULL),如记录用户名、暗码等非空值的字段.
设置为非空的列,虽然不是必须,但最好设定一个默认值,以防止意外的错误和减少增加数据时的 SQL 语句复杂度.当向数据表增加数据记录时,如果设置为非空的字段不写入数据,系统将会以默认值写入.
例子: MYSQL入门
username char(20) NOT NULL default ''
//将NOT NULL 改为 NULL
ALTER TABLE user CHANGE username username char(20) NULL
提示
在上面的例子中 CHANGE 后面 username username,前者表示更改的字段名,后者表示新字段名.在本例中,只更改了字段属性为 NULL,不涉及到字段名称的更改,因此二者一致.
空
与非空相反,可以将字段属性设置为空,如果字段属性没有设置为非空(NOT NULL)属性,那么系统默认便是可以为空(NULL)值的.
将NULL 改为 NOT NULL: MYSQL入门
ALTER TABLE user CHANGE username username char(20) NOT NULL DEFAULT ''
唯一性约束
有时候某些字段数据不允许重复,如用户名,这时候就必要增加唯一性约束(UNIQUE).
语法: MYSQL入门
UNIQUE (column_name)
//给表字段增加 UNIQUE
ALTER TABLE tb_name ADD UNIQUE (column_name)
//去掉 UNIQUE
ALTER TABLE tb_name DROP INDEX column_name
主键(PRIMARY KEY)会强制性的拥有自动定义的唯一性约束,不用额外定义 UNIQUE .
索引
数据库索引(index)是为了增加查询速度而对字段附加的一种标识.我们对表的某些可能必要经常查询的字段建立适当的索引,那么在查询该字段数据时,便会显著的加快查询速度.
语法:
KEY key_name (column_name)
KEY 后面的字符为索引名称,括号内为建立索引的字段名.
改进后的建表 SQL MYSQL入门
CREATE TABLE user (
uid mediumint(8) unsigned NOT NULL auto_increment,username char(15) NOT NULL default '',password char(32) NOT NULL default '',email varchar(40) NOT NULL default '',regdate int(10) unsigned NOT NULL default '0',PRIMARY KEY (uid),UNIQUE KEY username (username),KEY email (email)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
补充说明
在建表语句正文后面还附加了建表的其它几个属性:
ENGINE:表现存储引擎类型,分为 MyISAM 和 InnoDB 两种类型.MyISAM 不支持事务处理等高级处理,强调表的性能,执行也比 InnoDB 快.而 InnoDB 提供事务支持已经外部键等高级数据库功能,性能上比 MyISAM 差.默认为 MyISAM 类型
CHARSET:表现数据表表字符集,一般为 gbk 或 utf8 以及 big5 等,为了兼容性考虑,我们设置为 utf8 字符集
AUTO_INCREMENT:设置主键默认增长的开始数MYSQL入门 编程之家培训学院每天发布《MYSQL数据库MySQL所支持的数据类型与表字段约束类型的学习教程》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|