问题描述
|
如果我使用PHP代替,确保在创建MysqL表时已定义它们对我有什么好处?
解决方法
默认值很有用
这样一来,如果您执行ѭ0explicitly,就不必明确说明每个字段。
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被分配了“ 4” ID(从1,2,3,4,...开始)
类型= \'F \'default
计数= 1default
我不会忘记,只有我必须提供的发票号,因为我说必须填写。 not null
说明字段的长度很有用
因为字段越短,查询运行越快,所需的网络流量和硬盘空间就越少。 (过分简单,但有很好的经验法则)
, 如果我使用php代替,怎么办
确保我有好处
在创建时定义了它们
mysql表?
您可以独立于应用程序使用的表结构来定义表结构。
我可以确保在表单上输入
小于15
人物,为什么对我有好处
将最大长度设置为15 in
phpmyadmin。
您没有在phpmyadmin中定义最大长度。您可以通过phpmyadmin在DDL中进行定义。如果您真的想了解自己在做什么,这是一个重要的区别。
是什么阻止您(或从事代码工作的人)输入错误,更改表单中的字符串长度限制(或完全将其意外删除)?那会发生什么呢?
无论如何,无论如何,您仍然必须定义数据库表字段的大小。数据库是您的模型,数据是模型,而不是Web表单。您的网络表单可以正常工作。
采用数据库默认设置只是懒惰和可怕的设计(更不用说效率低下了)。假设您使用的是phpmyadmin之类的管理工具,并且默认情况下,该设置会将您的数据库字段设置为长度255。但是实际的数据字段将不大于15,您是否愿意仅因为表单定义了限制就浪费了所有这些?
您的表单定义了用户可以输入(并发送到后端)的限制。但这将存储在比不定义它们的大小还大得多的数据库字段中。值得深思。
,没有。把事情简单化;设置默认一个地方或另一个地方。并且仅当存在逻辑上合法的默认值时。不要仅仅为了拥有一个就组成东西。
应用程序需要驱动工具,反之亦然。
这样,数据库管理员和应用程序开发人员之间就发生了许多应用程序控制之争。尽早解决此问题,以避免代码和人员冲突。
花一些时间思考是值得的,而且很容易反省地安装一些有趣的东西。我正在使用的一个应用程序将大多数字符串字段设置为NOT NULL,默认值为\“ \”(空字符串),然后添加了大量代码来检测并标记空字符串上的错误。