版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://cloud.tencent.com/developer/article/1347577
SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。
集中所有的行在一起,它包含了指定列的数据及允许聚合函数来计算一个列或者多个列。
SELECT MAX(salary), dept FROM employee GROUP BY dept
允许你为每一组指定条件,换句话说,可以根据你指定的条件来选择行。如果使用它,应该处在GROUP BY子句之后。
SELECT dept, avg(salary) FROM emplyee GROUP BY dept HAVING avg(salary) > 20000
ASC = Ascending order —-这个是缺省的
DESC =Descending order
多列进行排序,列于列之间加上逗号。
join允许你从两个表或者更多的表连接进行数据检索,而只需要用一个SELECT语句
SELECT customer_info.firstname, customer_info.lastname,purchase.itme FROM customer_info INNER JOIN purchase ON
customer_info.customer_number = purchase.customer_number
生成同时匹配表A和表B的record
生成表A和表B里的记录全集,包括两边都匹配的记录。如果有一边没有匹配的,缺失的这一边为null
生成表A的所有记录,包括在表B里匹配的记录。如果没有匹配的,右边将是null
有篇很好的文章用韦恩图讲解join语句http://blog.jobbole.com/40443/,如图
索引允许DBMS更快地访问数据,当查询以列为索引的时候搜索行,这样查询会快很多。
对于一个人买多件物品的只显示一行即可
SELECT DISTINCT SELLERID,OWNERLASTNAME, OWNERFIRSTNAME FORM ANTIQUES,ANTIQUEOWNERS WHERE SELLERID = OWNERID
ORDERBY OWNERLASTNAME,OWNERID
显示多个查询的结果,组合他们的输出,使用UNION关键字。
SELECT buyerid FROM antiqueowners UNION SELECT ownerid FROM orders
使用UNION会进行自动复制排除,并且列数据类型匹配才能查询
FROM - WHERE - GROUP BY - HAVING - SELECT - DISTINCT - UNION - ORDER BY
SELECT A.x + A.y AS z
FROM A
WHERE z = 10 -- z 在此处不可用,因为SELECT是最后执行的语句!
SELECT语句规则: