count(column)
或 count(1)
来替代 count(*)
,count(*)
是 SQL92 定义的 标准统计行数的语法,跟数据库无关,跟 NULL
和非 NULL
无关。注意:count(*)会统计值为 NULL 的行,而 count(列名)不会统计此列为 NULL 值的行。
NULL
时,count(column)
的返回结果为 0,但 sum(column)
的返回结果为 NULL
,因此使用 sum()
时需注意 NPE
问题
sum
的 NPE
问题:SELECT IF(ISNULL(SUM(g)), 0, SUM(g)) FROM table;
ISNULL()
来判断是否为 NULL
值。 说明:NULL
与任何值的直接比较都为 NULL。
NULL <> NULL
的返回结果是 NULL
,而不是 false
NULL = NULL
的返回结果是 NULL
,而不是 true
NULL <> 1
的返回结果是 NULL
,而不是 true
SELECT LENGTH("轻松工作");
返回为 12SELECT CHARACTER_LENGTH("轻松工作");
返回为 4TRUNCATE TABLE
比 DELETE
速度快,且使用的系统和事务日志资源少,但 TRUNCATE
无事务且不触发 trigger
,有可能造成事故,故不建议在开发代码中使用此语句。
TRUNCATE TABLE
在功能上与不带 WHERE
子句的 DELETE
语句相同B-Tree
的最左前缀匹配特性,如果左边的值未确定,那么无法使用此索引is_xxx
的方式命名,数据类型是 unsigned tinyint
( 1 表示是,0 表示否)
unsigned
。is_deleted
,1 表示删除,0 表示未删除。MySQL
在 Windows
下不区分大小写,但在 Linux
下默认是区分大小写。因此,数据库名、表名、字段名,都不允许出现任何大写字母,避免节外生枝.CSRF(Cross-site request forgery)
跨站请求伪造是一类常见编程漏洞。对于存在 CSRF
漏洞的应用/网站,攻击者可以事先构造好 URL
,只要受害者用户一访问,后台便在用户 不知情情况下对数据库中用户参数进行相应修改。 extends T>
来接收返回的数据,此写法的泛型集合不能使用 add()
方法,而 super T>
不能使用 get()
方法,做为接口调用赋值时易出错。PECS(Producer Extends Consumer Super)
原则: extends T>
。 super T>
。Arrays.asList()
把数组转换成集合时,不能使用其修改集合相关的方 法,它的 add/remove/clear
方法会抛出 UnsupportedOperationException
异常。asList
的返回对象是一个 Arrays
内部类,并没有实现集合的修改方法。Arrays.asList
体现的是适配器模式,只是转换接口,后台的数据仍是数组。