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

Php 为什么在创建表时推荐mysql数据的默认值和长度很重要?,php,mysql,Php,Mysql,如果改用php,确保在创建mysql表时定义了它们,对我有什么好处?没有。保持简单;在一个位置或另一个位置设置默认值。并且只有当存在逻辑上合法的默认值时。不要为了拥有一个而编造一些东西 应用程序需要驱动工具,而不是相反 数据库管理员和应用程序开发人员之间的许多应用程序控制之战都是以这种方式进行的。尽量尽早解决这个问题,以避免代码和人员冲突 它值得花些时间考虑,而且很容易本能地安装一些有趣的东西。我正在使用的一个应用程序将大多数字符串字段设置为NOTNULL,默认值为“”(空字符串),然后添加大量

如果改用php,确保在创建mysql表时定义了它们,对我有什么好处?

没有。保持简单;在一个位置或另一个位置设置默认值。并且只有当存在逻辑上合法的默认值时。不要为了拥有一个而编造一些东西

应用程序需要驱动工具,而不是相反

数据库管理员和应用程序开发人员之间的许多应用程序控制之战都是以这种方式进行的。尽量尽早解决这个问题,以避免代码和人员冲突


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

默认值非常有用。

因此,如果执行
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分配了一个
自动增量
ing id(从1,2,3,4开始)
类型='F'
默认值

计数=1
默认值

只有发票号码我必须提供,我不能忘记,因为我说它必须填写<代码>非空

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

如果我用php来代替它,我会怎么做 确保我有 在创建 mysql表

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


我可以确保表单上的输入 小于字符串长度(例如15) 角色,为什么对我有好处 将最大长度设置为15英寸 phpmyadmin

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

  • 是什么阻止您(或处理代码的人)输入错误、更改表单中的字符串长度限制(或意外地完全删除它)?然后呢

  • 不管怎样,您仍然必须定义数据库表字段的大小。数据库是您的模型、数据模型,而不是web表单。您的web表单可以使用它

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


    表单定义了用户可以输入(和发送到后端)的限制。但如果不定义它们的大小,它们将被存储在比这个大得多的数据库字段中。值得深思

    我可以确保表单上的输入长度小于字符串长度,比如说15个字符,为什么在phpmyadmin中将最大长度设置为15对我有好处。@Basic:嗯,它必须设置为某个值!不是在我的phpmyadmin上!我正在wamp服务器上使用mysql版本5.8.8,也许我应该重新下载。你是迷路的人。phpmyadmin正在为您设置默认值。但这并不意味着你不必这么做。我是说,来吧。如果你不告诉phpmyadmin,你认为你的字段长度到底是多少?虚数?能够神奇地根据web表单发送的内容调整大小的东西?这与我的问题无关。前端的限制只是为了限制输入。后端限制用于存储。它们不一样,因此,你需要两者。PHP不仅仅是用于输入。它也适用于业务规则和类。而且,您的规则可以/通常比数据库默认值更细粒度。在两个位置放置相似的规则会增加耦合/降低内聚。比起DDL,更多的人对PHP感到满意。你是不是在指责我做了什么-|别生气,我给你的帖子投了高票。与其指出你的感受,不如讨论优点,尽管如此。我只是觉得有趣的是,一个有很多潜在讨论机会的好问题在被问到11分钟后得到了一个被接受的答案——也许他相信在你之前给出的答案的基础上不会进一步思考。+1答案是有帮助的,但毫无疑问是正确的。字段长度不影响字段比较。网络开销和存储是spacd实际使用的函数,而不是max定义。默认值不会影响它们中的任何一个。尝试加入具有不同字符集的字段给了我很大的痛苦。我正试图保持它的简单性,所以是的,技术细节会受到一些影响。我同意。谢谢。请注意,他询问的是默认值和长度,而不是字段类型,这些字段类型肯定属于DDL,无法在PHP中定义。感谢您的输入,编辑了答案以反映您的评论。