zoukankan      html  css  js  c++  java
  • hive数据库基本查询

    基本查询(Select…From)

    全表和特定列查询

    全表查询

    select * from emp;

    选择特定列查询

    select empno, ename from emp;

    注意
    (1)SQL 语言大小写不敏感。
    (2)SQL 可以写在一行或者多行
    (3)关键字不能被缩写也不能分行
    (4)各子句一般要分行写。
    (5)使用缩进提高语句的可读性。

    列别名

    1. 重命名一个列

    2. 便于计算

    3. 紧跟列名,也可以在列名和别名之间加入关键字‘AS’

    4. 案例实操 查询名称和部门

    select ename AS name, deptno dn from emp;

    算术运算符

    运算符|描述 |:--:|:--:| 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按位取反

    案例实操

    查询出所有员工的薪水后加1显示。

    select sal +1 from emp;

    常用函数

    • 求总行数(count)

    select count(*) cnt from emp;

    • 求工资的最大值(max)

    select max(sal) max_sal from emp;

    • 求工资的最小值(min)

    select min(sal) min_sal from emp;

    • 求工资的总和(sum)

    select sum(sal) sum_sal from emp;

    • 求工资的平均值(avg)

    select avg(sal) avg_sal from emp;

    Limit语句

    典型的查询会返回多行数据。LIMIT子句用于限制返回的行数。
    select * from emp limit 5;

    Where语句

    • 使用WHERE子句,将不满足条件的行过滤掉

    • WHERE子句紧随FROM子句 案例实操 查询出薪水大于1000的所有员工

    select * from emp where sal >1000;

    比较运算符(Between/In/ Is Null)

    下面表中描述了谓词操作符,这些操作符同样可以用于JOIN…ON和HAVING语句中。

    操作符|支持的数据类型|描述 |:--:|:--:|:--:| 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关键字则可达到相反的效果。 A RLIKE B, A REGEXP B| STRING 类型| B是一个正则表达式,如果A与其匹配,则返回TRUE;反之返回FALSE。匹配使用的是JDK中的正则表达式接口实现的,因为正则也依据其中的规则。例如,正则表达式必须和整个字符串A相匹配,而不是只需与其字符串匹配。

    案例实操

    1. 查询出薪水等于5000的所有员工

    select * from emp where sal =5000;

    1. 查询工资在500到1000的员工信息

    select * from emp where sal between 500 and 1000;

    1. 查询comm为空的所有员工信息

    select * from emp where comm is null;

    1. 查询工资是1500或5000的员工信息

    select * from emp where sal IN (1500, 5000);

    Like和RLike

    • 使用LIKE运算选择类似的值

    • 选择条件可以包含字符或数字: % 代表零个或多个字符(任意个字符)。 _ 代表一个字符。

    • RLIKE子句是Hive中这个功能的一个扩展,其可以通过Java的正则表达式这个更强大的语言来指定匹配条件。 案例实操 (1)查找以2开头薪水的员工信息

      select * from emp where sal LIKE '2%';

    (2)查找第二个数值为2的薪水的员工信息

    select * from emp where sal LIKE '_2%';

    (3)查找薪水中含有2的员工信息

    select * from emp where sal RLIKE '[2]';

    逻辑运算符(And/Or/Not)

    操作符|含义 |:--:|:--:| AND |逻辑并 OR |逻辑或 NOT| 逻辑否

    案例实操 (1)查询薪水大于1000,部门是30

    `select * from emp where sal>1000 and deptno=30;`

    (2)查询薪水大于1000,或者部门是30

    `select * from emp where sal>1000 or deptno=30;`

    (3)查询除了20部门和30部门以外的员工信息

    ` select * from emp where deptno not IN(30, 20);`

    分组

    Group By语句

    GROUP BY语句通常会和聚合函数一起使用,按照一个或者多个列队结果进行分组,然后对每个组执行聚合操作。

    案例实操 (1)计算emp表每个部门的平均工资

    `select t.deptno, avg(t.sal) avg_sal from emp t group by t.deptno;`

    (2)计算emp每个部门中每个岗位的最高薪水

    `select t.deptno, t.job, max(t.sal) max_sal from emp t group by t.deptno, t.job;`

    Having语句

    having与where不同点

    • where针对表中的列发挥作用,查询数据;having针对查询结果中的列发挥作用,筛选数据。

    • where后面不能写分组函数,而having后面可以使用分组函数。

    • having只用于group by分组统计语句。 ** 案例实操**

    1. 求每个部门的平均薪水大于2000的部门求每个部门的平均工资

      select deptno, avg(sal) from emp group by deptno;

    2. 求每个部门的平均薪水大于2000的部门

      select deptno, avg(sal) avg_sal from emp group by deptno having avg_sal > 2000;

  • 相关阅读:
    oracle的网络服务名和监听程序
    ArcGIS 产品许可模型
    老鸟对菜鸟的一些建议(转)
    ajax简介(转载)
    dim redim
    投影选择的一般原则
    *.prj文件
    cup性能对比感受
    treeview 数据库 递归
    简论两句话
  • 原文地址:https://www.cnblogs.com/1605-3QYL/p/12689284.html
Copyright © 2011-2022 走看看