Mysql数据库---约束类型_MYSQL数据库MySQL所支持的数据类型与表字段约束类型的学习教程...

《MYSQL数据库MySQL所支持的数据类型与表字段约束类型的学习教程》要点:

本文介绍了MYSQL数据库MySQL所支持的数据类型与表字段约束类型的学习教程,希望对您有用。如果有疑问,可以联系我们。

MySQL 数据(字段)类型在创建表的时候,要明确定义字段对应的数据类型.MySQL 主要的数据类型分为数值类型、字符串(文本)类型、时间日期类型和其他类型几类.

数值类型

数值类型说明:

MYSQL入门

e247b162a7142aef8923eb8ec7cc9c0c.pngMYSQL入门

补充说明

在 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入门

78b1c53121669417160c2ed63b755c5e.pngMYSQL入门

补充说明

char 和 varcha 需要指定长度,不同的是,char 存储时总是依照指定的长度储存,而 varchar 则根据实际字符串长度再加上一个字节分配空间.

时间日期类型

时间日期类型说明:

MYSQL入门

40061136189c30ec93c33dffde06ce43.pngMYSQL入门

提示

在 PHP 中,一般情况下对于时间都是依照 UNIX 时间戳以 int 类型存储于表中,再根据实际需要用 PHP 的时间函数进行处理,但不完全都是这样.MYSQL入门

MySQL 表字段属性主键

表的主键(primary key,主关键字)是表中的一个或多个字段,它的值用于惟一地标识表中的某一条记录.一个表不能有多个主关键字,并且主关键字的列不能包括空值和重复值.主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义.

语法:

PRIMARY KEY (column_name)

MYSQL入门

34366d00c3a076f10ed18bdd5ce1343c.pngMYSQL入门

在这个表中,uid 这个字段就是该表的主键.

建立主键应该遵循的一般原则

主键应当是对用户没有意义的

永远也不要更新主键,如果主键需要更新,则说明主键应对用户无意义的原则被违反了

主键不应包括动态变化的数据,如时间戳、创建时间等

主键应当由系统自动生成

外键

在两个表的关系中,当一张表(如表A )的主关键字被包括在另一张表(如表B)中时,A 表中的主关键字便成为 B 表的外键(外关键字).B 表称为主表,A 表称为从表.

外键主要用于保持数据一致性,完整性,避免冗余数据,使两张或多张表形成关联.

MYSQL入门

f77cdd92e792e941f6946dce522e74c8.pngMYSQL入门

在这个文章评论表 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全面培养人才。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值