SQL细节

SQL:Structure Quary Language


1.聚集函数注意:
为什么使用聚集函数?答:他的效率很高:这些函数返回结果比在客户端应用程序中计算要快的多。

AVG()使用:如果想获得多个列的平均值,必须使用多个AVG()函数。
COUNT()使用:
1)COUNT(*)对表中所有行进行计数,所以不能用DISTINCT关键字来过滤重复的行。如果有GROUP BY 子句就计算每个分组内部的数目。
2)COUNT(COLUMN_NAME)对表中COLUMN_NAME字段记录中非null的行进行计数,可以使用DISTINCT.
MAX():返回任意列的最大值,如果是文本类型就返回该列排序后的最后一行
MIN():同MAX(),相对于文本类型,返回该列排序后的第一行
SUM():可以用来合计计算值,例:SUM(COLUMN_NAME_1*COLUMN_NAME_2)
DISTINCT关键字使用:用于AVG(),COUNT(COLUMN_NAME),MAX(),MIN(),SUM();但是对于MAX()和MIN()函数没有意义;如果没有使用DISTINCT关键字就会默认是ALL。


2.GROUP BY;
使用规定:
1)GROUP BY多个列,嵌套分组,数据将在最后指定的列上进行汇总。
2)大多数SQL实现不允许GROUP BY 列带有长度可变的数据类型,如:文本或备注型字段。
3)SELECT语句中每一列必须要么是聚集计算语句,要么是在GROUP BY子句中给出的字段。
4)如果分组列中包含具有NULL值的行,则将NULL作为一个分组返回,如果多个NULL,将他们分为一组。
5)子句顺序:where子句   GROUP BY子句   HAVING子句   ORDER BY子句;


3.联接:
1)在联接中,如果列可能出现歧义必须使用完全限定列名
2)完全限定列名:将列名表示为用句点连接表名和列名的形式:table_name.column_name。
3)笛卡尔积:没有联接条件的表关系返回的结果为笛卡尔积。检索出的行的数目将是第一个表中的行数乘以第二个表中的行数。
例:SELECT COLUMN_NAME_1,COLUMN_NAME_2 FROM TABLE_NAME_1,TABLE_NAME_2;
4)许多DBMS中处理相同查询使用联接远比使用子查询要快。


4.组合查询:
1)UNION, UNION ALL
2)UNION中的每个查询必须包含相同的  列,表达式,聚集函数(各个列次序可以不同);列数据类型必须兼容(类型不必完全相同,但必须是DBMS可以隐含转换的类型)
3)使用UNION时,只能有一条ORDER BY 语句并且必须置于语句末尾,用来对组合查询结果集进行整体排序。


5.SELECT * INTO custcopy FROM customers;表示创建一个名为custcopy的表并将从customers表中查询的数据插入到新建的表中;*可以换成列名


6.
DELETE针对行,删除几行或者删除所有行,但是不会删除表本身:DELETE FROM TABLE_NAME (WHERE COLUMN_NAME = name)
UPDATE针对列,更新列,或者删除列中内容(SET COLUMN_NAME = NULL):UPDATE TABLE_NAME SET COLUMN_NAME = NULL (WHERE COLUMN_NAME = NAME)
TRUNCATE:如果想删除表内所有内容但不删除表本身,使用TRUNCATE会比DELETE效率高很多


7.Hive:
hive>SELECT current_date;获取当前日期
hive>SELECT current_timestamp;获取当前日期及时间


8.视图;
1)视图只包含使用时动态检索数据的查询
2)作用:重用SQL;简化复杂SQL;使用表的一部分而不是整个表;保护数据;更改数据格式和表示
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值