为什么在表创建时推荐mysql数据的默认值和长度很重要?

时间:2011-04-15 22:11:54

标签: php mysql

如果我使用php代替它,那么如何确保我在创建mysql表时定义它们对我有什么好处呢?

3 个答案:

答案 0 :(得分:3)

默认值很有用

因此,如果您执行insert,则无需明确说明每个字段。

CREATE TABLE test(
  id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  type CHAR(1) NOT NULL DEFAULT 'F',
  invoicenumber VARCHAR(45) NOT NULL,
  count INT(11) NOT NULL DEFAULT 1);

现在,如果我进行插入,我只需要这样做

INSERT INTO test (invoicenumber) values ('20110125');

or this, the two are the same

INSERT INTO test VALUES (null,default,'20110125',default);

如果我选择了我

SELECT * FROM test;

+----+------+---------------+-------+
| id | type | invoicenumber | count | 
+----+------+---------------+-------+
|  1 | 'F'  | '20110125'    | 1     |
+----+------+---------------+-------+

为id分配auto_increment个id(从1,2,3,4开始,......)
type ='F'default
count = 1 default
只有我必须提供的发票,我不能忘记,因为我说它必须填补。 not null

说明字段长度很有用
因为字段越短,查询运行得越快,所需的网络流量和硬盘空间就越少。 (过度简化,但很好的经验法则)

答案 1 :(得分:1)

  

如果我使用php代替它,那怎么办   它有利于我确保我拥有   在创建中定义它们   mysql表?

您可以独立于应用程序使用的内容定义表结构。

  

我可以确保在表单上输入   是15的字符串长度   人物,为什么它对我有益   将max-length设置为15 in   的phpmyadmin。

  1. 您没有在phpmyadmin中定义最大长度。您可以在DDL 中通过 phpmyadmin定义它。如果您真的想了解自己在做什么,那么这是的一个重要区别。

  2. 是什么阻止您(或代码处理的人)输入错误,更改表单中的字符串长度限制(或意外删除它)?那会发生什么?

  3. 无论如何,无论如何,您仍然需要定义数据库表字段的大小。您的数据库是您的模型,数据模型,而不是您的Web表单。您的Web表单可以解决它。

    采用数据库默认设置只是懒惰和可怕的设计,(更不用说效率低下了。)假设您使用的是像phpmyadmin这样的管理工具,默认情况下,您将数据库字段设置为长度为255.然而您的实际数据字段不会超过15,您是否愿意因为表单定义限制而浪费所有这些?

    您的表单定义了用户可以输入的内容(并发送到后端)的限制。但是如果你没有定义它们的大小,它将存储在远大于数据库字段的数据库字段中。值得深思。

答案 2 :(得分:-1)

没有。把事情简单化;设置默认值为一个地方或另一个。并且只有在逻辑上合法的默认值。不要仅仅为了拥有一件东西而构成一件事。

应用程序需要驱动工具,反之亦然。

数据库管理员和应用程序开发人员之间的大量应用程序控制战斗都是这样进行的。尽量早点清除这个,以避免代码和人员冲突。

值得花一些时间思考,并且很容易反思性地安装一些有趣的东西。我正在使用的一个应用程序将大多数字符串字段设置为NOT NULL,默认值为“”(空字符串),然后添加大量代码来检测并标记空字符串上的错误。