SQL语言大小写不敏感
SQL可以写在一行或者多行
关键字不能被缩写也不能分行
各子句一般要分行写
使用缩进提高语句的可读性
select count(*) cnt from score;
select max(s_score) from score;
select min(s_score) from score;
select sum(s_score) from score;
select avg(s_score) from score;
select * from score limit 5;
运算符 | 描述 |
---|---|
A+B | A和B 相加 |
A-B | A减去B |
A*B | A和B 相乘 |
A/B | A除以B |
A%B | A对B取余 |
A&B | A和B按位取与 |
A|B | A和B按位取或 |
A^B | A和B按位取异或 |
~A | A按位取反 |
操作符 | 支持的数据类型 | 描述 |
---|---|---|
A=B | 基本数据类型 | 如果A等于B则返回true,反之返回false |
A<=>B | 基本数据类型 | 如果A和B都为NULL,则返回true,其他的和等号(=)操作符的结果一致,如果任一为NULL则结果为NULL |
A<>B, A!=B | 基本数据类型 | A或者B为NULL则返回NULL;如果A不等于B,则返回true,反之返回false |
A<B | 基本数据类型 | A或者B为NULL,则返回NULL;如果A小于B,则返回true,反之返回false |
A<=B | 基本数据类型 | A或者B为NULL,则返回NULL;如果A小于等于B,则返回true,反之返回false |
A>B | 基本数据类型 | A或者B为NULL,则返回NULL;如果A大于B,则返回true,反之返回false |
A>=B | 基本数据类型 | A或者B为NULL,则返回NULL;如果A大于等于B,则返回true,反之返回false |
A [NOT] BETWEEN B AND C | 基本数据类型 | 如果A,B或者C任一为NULL,则结果为NULL。如果A的值大于等于B而且小于或等于C,则结果为true,反之为false。如果使用NOT关键字则可达到相反的效果。 |
A IS NULL | 所有数据类型 | 如果A等于NULL,则返回true,反之返回false |
A IS NOT NULL | 所有数据类型 | 如果A不等于NULL,则返回true,反之返回false |
IN(数值1, 数值2) | 所有数据类型 | 使用 IN运算显示列表中的值 |
A [NOT] LIKE B | STRING 类型 | B是一个SQL下的简单正则表达式,如果A与其匹配的话,则返回true;反之返回false。B的表达式说明如下:‘x%’表示A必须以字母‘x’开头,‘%x’表示A必须以字母’x’结尾,而‘%x%’表示A包含有字母’x’,可以位于开头,结尾或者字符串中间。如果使用NOT关键字则可达到相反的效果。like不是正则,而是通配符 |
A RLIKE B, A REGEXP B | STRING 类型 | B是一个正则表达式,如果A与其匹配,则返回true;反之返回false。匹配使用的是JDK中的正则表达式接口实现的,因为正则也依据其中的规则。例如,正则表达式必须和整个字符串A相匹配,而不是只需与其字符串匹配。 |
操作符 | 操作 | 描述 |
---|---|---|
A AND B | 逻辑并 | 如果A和B都是true则为true,否则false |
A OR B | 逻辑或 | 如果A或B或两者都是true则为true,否则false |
NOT A | 逻辑否 | 如果A为false则为true,否则false |
-- 计算每个学生的平均分数
select s_id, avg(s_score) from score group by s_id;
select s_id, avg(s_score) as avgScore from score group by s_id having avgScore > 60;
-- 等价于
select s_id, avg(s_score) as avgScore from score group by s_id having avg(s_score) > 60;
Hive支持通常的SQL JOIN语句,但是只支持等值连接,不支持非等值连接
select * from teacher t inner join course c on t.t_id = c.t_id;
select * from teacher t left outer join course c on t.t_id =c.t_id;
select * from teacher t right outer join course c on t.t_id = c.t_id;
select * from teacher t full outer join course c on t.t_id = c.t_id;
select * from score s order by s_score desc;
-- 设置reduce个数
set mapreduce.job.reduces=3;
-- 查看reduce的个数
set mapreduce.job.reduces;
-- 查询成绩按照成绩降序排列
select * from score s sort by s.s_score;
-- 将查询结果导入到文件中,按照成绩降序排列
insert overwrite local directory ‘/bigdata/logs/sort‘ select * from score s sort by s.s_score;
-- 先按照学生sid分区,在按照学生成绩进行排序
-- 设置reduce的个数
set mapreduce.job.reduces=3;
-- 通过distribute by 进行数据的分区,将不同sid划分到对应的reduce当中
insert overwrite local directory ‘/bigdata/logs/distribute‘ select * from score distribute by s_id sort by s_score;
-- 以下两种写法等价
insert overwrite local directory ‘/bigdata/logs/distribute_sort‘ select * from score distribute by s_score sort by s_score;
insert overwrite local directory ‘/bigdata/logs/cluster‘ select * from score cluster by s_score;
原文:https://www.cnblogs.com/tenic/p/14762433.html