SQL 知识点回顾总结(二)

本文在上篇博客 SQL 知识点回顾总结(一)的基础上,再结合《SQL 必知必会》一书对 SQL 相关知识点进行了补充整理,供大家参考,也方便自己查阅备忘。

  1. 在指定一条 order by 子句时,应该保证它是 select 语句中最后一条子句。如果它不是最后的子句,将会出现错误信息。
  2. 通常,order by 子句中使用的列将是为显示而选择的列。但是实际上并不一定要这样,用非检索的列排序数据是完全合法的。
  3. 如果想在多个列上进行降序排序,必须对每一列指定 DESC 关键字。
  4. 通配符只能用于文本字段(字符串),非文本数据类型字段不能使用通配符搜索。
    4.1 通配符 % :like ‘%’ 不会匹配为 NULL 的行
    4.2 通配符 _ :只匹配单个字符
    4.3 通配符 []:指定一个字符集,匹配指定位置(通配符的位置)的一个字符
  5. TRIM 函数
    RTRIM():去掉字符串右边的空格;
    LTRIM():去掉字符串左边的空格;
    TRIM() :去掉字符串左右两边的空格。
  6. 测试计算:省略了 from 子句的 select 语句就是简单地访问和处理表达式,例如 select 3*2 将返回6,select trim(’ abc ') 将返回 abc
  7. soundex() 函数:soundex()考虑了类似的发音字符和音节,使得能对字符串进行发音比较而不是字母比较。
    例如:select name from … where soundex(name) = soundex(‘Michael Green’)
  8. 聚集函数
    8.1 AVG() 函数忽略列值为NULL的行
    8.2 如果指定列名,则 count() 函数会忽略指定列的值为空的行,但如果 count() 函数中用的是星号(*),则不忽略。
    8.3 avg(distinct xxx) 只考虑各个不同的xxx所对应的平均值
  9. group by 子句必须出现在 where 子句之后,order by 子句之前
  10. having 与 where 区别:使用having时应该结合group by子句(having为组级过滤),而where子句用于标准的行级过滤。
  11. insert 与 insert select:insert 通常只插入一行,要插入多行,必须执行多个 insert 语句。insert select 可以用一条 insert 插入多行,不管select语句返回多少行,都将被 insert 插入。
  12. 表的复制:create table copyTable as
    select * from testTable
  13. delete、truncate table 与 drop:delete 语句可以从表中删除指定行;如果要删除所有行,可以使用 truncate table 语句,也可以使用 drop table。
    不同之处在于 drop table 不但会删除表中所有数据,还会将整个表结构从数据库中移除,如果想重新向表中存储数据的话必须重建该数据表。
  14. 使用事务处理,通过确保成批的SQL操作要么完全执行,要么完全不执行,用来维护数据库的完整性。
  15. 事务处理用来管理 insert、update和delete语句。不能回退select语句(回退select语句也没有必要),也不能回退create后drop操作。
  16. 事务处理中的几个语句:
    rollbck:回退;
    commit:提交;
    savepoint:保留点;越多越好,保留点越多,就能越灵活地进行回退。
  17. 使用游标操作数据
      下面的示例用@@FETCH_STATUS控制在一个WHILE循环中的游标活动
      DECLARE E1cursor cursor /* 声明游标,默认为FORWARD_ONLY游标 */
      FOR SELECT * FROM c_example
      OPEN E1cursor /* 打开游标 */
      FETCH NEXT from E1cursor /* 读取第1行数据 */
      WHILE @@FETCH_STATUS = 0 /* 用WHILE循环控制游标活动 */
      BEGIN
       FETCH NEXT from E1cursor /* 在循环体内将读取其余行数据 */
      END
      CLOSE E1cursor /* 关闭游标 */
      DEALLOCATE E1cursor /* 删除游标 */
  18. 主键与唯一约束:
    相同点:Unique key与primarykey 约束都强调唯一性;
    不同点:
    (1)一个表只能有一个PRIMARY KEY,但可以有多个UNIQUE KEY ;
    (2)unique key 约束只针对非主键列,允许有空值。Primary key 约束针对主键列,不允许有空值。
    UNIQUE KEY的用途:主要是用来防止数据插入的时候重复的。表的主键就是一个唯一性约束,不过主键只能有一个,所以如果其他列的数据不允许重复的话,就可以建立唯一性约束。

你可能感兴趣的:(数理统计,&,数据挖掘,sql,sqlite,数据库,DBMS,数据分析)