查询sql要点记录

sql(算法)工程师必知必会

Posted by BY on December 12, 2018

查询基础

  • 查询sql使用AS重命名列名时,别名可以使用中文,使用中文时需要用双引号(“)括起来。请注意 不是单引号(‘)。
  • 查询时候可以使用常数,类似 ‘SELECT ‘商品’ AS string, 38 AS number, ‘2009-02-24’ AS date, product_id, product_name FROM Product;’
  • 在SELECT 语句中使用 DISTINCT 可以删除重复行。类似’SELECT DISTINCT product_type, regist_date FROM Product;’
  • 单行注释用’–注释’,多行注释用’/注释/’

运算基础

  • 所有包含 NULL 的计算,结果肯定是 NULL
  • 比较运算符中,不等于用’<>’表示
  • 希望选取 NULL 记录时,需要在条件表达式中使用 IS NULL 运算符。希望选取不 是 NULL 的记录时,需要在条件表达式中使用 IS NOT NULL 运算符。
  • NOT 运算符用来否定某一条件,但是不能滥用
  • AND 运算符的优先级高于 OR 运算符。想要优先执行 OR 运算符时可以使用括号。例如’SELECT product_name, product_type, regist_date FROM Product WHERE product_type = ‘办公用品’ AND ( regist_date = ‘2009-09-11’ OR regist_date = ‘2009-09-20’);’

聚合和排序

  • COUNT:计算表中的记录数(行数) SUM : 计算表中数值列中数据的合计值 AVG : 计算表中数值列中数据的平均值 MAX: 求出表中任意列中数据的最大值 MIN : 求出表中任意列中数据的最小值
  • COUNT 函数的结果根据参数的不同而不同。COUNT(*) 会得到包含 NULL 的数据 行数,而 COUNT(< 列名 >) 会得到 NULL 之外的数据行数。
  • 聚合函数会将 NULL 排除在外。但 COUNT(*) 例外,并不会排除 NULL。
  • 想要计算值的种类时,可以在 COUNT 函数的参数中使用 DISTINCT。 例如’SELECT COUNT(DISTINCT product_type) FROM Product;’
  • 使用 GROUP BY 子句时,SELECT 子句中不能出现聚合键之外的列名。例如’SELECT product_type AS pt, COUNT(*) FROM Product GROUP BY pt;’
  • 使用 HAVING 子句时 SELECT 语句的顺序,FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY,写sql的时候一定记得思考执行顺序。
  • 对于有些既可以用WHERE又可以用HAVING的条件,记住WHERE 子句 = 指定行所对应的条件 HAVING 子句 = 指定组所对应的条件。另外一点是用WHERE性能更好。
  • 在GROUP BY子句中不能使用 SELECT子句中定义的别名,但是在ORDER BY子句中却是允许使用别名的。原因执行循序一条
  • 在 ORDER BY 子句中可以使用 SELECT 子句中未使用的列和聚合函数。例如’SELECT product_type, COUNT() FROM Product GROUP BY product_type ORDER BY COUNT();’