- DISTINCT必须直接放在列名前面,不能部分使用DISTINCT,一使用后面的全部奏效。
- 我们写的 limit 3,4 换个方式是反着来的 limit 4 offset 3。
- 指定一条ORDER BY子句时,应该保证它是SELECT语句中最后一条子句,如果不是则会出错,按多个列排序可以用逗号隔开,比如说 order by name,age 当name相同后,会根据age进行排序。
- 排序 也存在按照列位置排序 就比如说 order by 1,2 就是根据1,2列的列名来排,不建议用这个方法进行排序,有可能出现问题。
- 排序升序降序的关键字 ASC DESC 只应用到直接位于其前面的列名。
- 如果将值与字符串类型的列进行比较,就需要限定引号。用来与数值列进行比较的值不用引号。
- BETWEEN AND。
- 通过过滤选择不包含指定值的所有行的时候,如果你希望返回含NULL值的行,但是这样做不到,NULL比较特殊所以在匹配过滤或非匹配过滤时不会返回这些结果。
- 在Where后面的处理顺序 and会优先于or 所以像sql b=2 or a=1 and c<10 最好携程(b=2 or a=1)and c<10 圆括号具有更高的优先级。
- NOT关键字从不单独使用,总是和其他操作符一起使用 在WHERE 子句中用来否定其后条件的关键字。
- %可以匹配多个字符包括,0个字符。匹配不了NULL 。_可以匹配单个字符,[]集合通配符 sql yog不支持。 通配符搜索一般比其他搜索要耗费更多时间。
- 将列拼接 mysql采用的是 concat(列名1,列名2)。
- 虽然Select通常用于从表中检索数据,但是省略了from后面的子句就是简单地访问和处理表达式。比如说就是select 3*2 返回6 select curdate() 返回当前的日期等。
- 有很多函数 典型的upper()转换成大写等。
- 聚集函数的主要目标就是为了汇总出表的数据,而不查出数据本身。
- COUNT(*)和COUNT(column)的区别,前者是对表中的行数目进行计数,不管表列中包含的是空值还是非空值,后者是对特定的列中具有值的行进行计数忽略空值。
- WHERE在数据分组前过滤,HAVING在数组分组后进行过滤。