【理论】Hive SQL和SQL的常用语法及区别

        Hive SQL和SQL存在若干关键区别。首先,Hive采用了类SQL的查询语言HQL (hive query language),但其与标准SQL在许多方面并不完全相同。例如,Hive是为数据仓库而设计的,并在Hadoop上进行数据存储,这与MySQL等关系型数据库将数据存储在设备或本地系统中的方式有明显区别。

具体来说,以下是Hive SQL和SQL之间的几个主要区别:

1. 存储位置:Hive的数据存储在Hadoop上,而像MySQL这样的关系型数据库将数据存储在设备或本地系统中。
2. Hive不支持等值连接,通常使用left join、right join 或者inner join替代。例如,在SQL中内关联可以这样写:`select * from a, b where a.key = b.key`,而在Hive中则不能这样做。
3. Hive不支持“Insert into 表 Values ()”、UPDATA、DELETE操作,而标准的SQL是支持这些操作的。
4. Hive不支持事务,这与许多关系型数据库的支持事务的特性不同。

总体来说,尽管Hive SQL与SQL在某些方面有所相似,但由于其设计目的和底层实现的不同,两者之间存在显著差异。最初的设计目的就是为了让熟悉SQL但不熟悉编程MapReduce的人也能使用Hadoop进行数据处理。

一、Hive SQL的常用语法

Hive SQL是一种基于Hadoop的数据仓库工具,它允许用户使用类似于SQL的语法来查询和分析存储在Hadoop集群中的数据。以下是一些常用的Hive SQL语法:

1. 数据定义语言(DDL):
   - 创建数据库:`CREATE DATABASE database_name;`
   - 删除数据库:`DROP DATABASE database_name;`
   - 显示所有数据库:`SHOW DATABASES;`
   - 使用数据库:`USE database_name;`
   - 创建表:`CREATE TABLE table_name (column1 data_type, column2 data_type, ...);`
   - 删除表:`DROP TABLE table_name;`
   - 显示所有表:`SHOW TABLES;`
   - 修改表结构:`ALTER TABLE table_name ADD/ALTER/DROP COLUMN column_name data_type;`

2. 数据操作语言(DML):
   - 插入数据:`INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);`
   - 查询数据:`SELECT column1, column2, ... FROM table_name WHERE condition;`
   - 更新数据:`UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;`
   - 删除数据:`DELETE FROM table_name WHERE condition;`

3. 数据查询语言(DQL):
   - 聚合函数:`COUNT(), SUM(), AVG(), MIN(), MAX()`
   - 分组:`GROUP BY column1, column2, ... HAVING condition;`
   - 排序:`ORDER BY column1 ASC/DESC, column2 ASC/DESC, ...;`
   - 分页:`LIMIT start, count;`
   - 连接查询:`JOIN table1 ON table1.column = table2.column;`
   - 子查询:`SELECT * FROM table_name WHERE column IN (SELECT column FROM another_table);`

4. 数据控制语言(DCL):
   - 授权:`GRANT permissions ON database_name.table_name TO user_name;`
   - 撤销权限:`REVOKE permissions ON database_name.table_name FROM user_name;`
   - 创建用户:`CREATE USER user_name IDENTIFIED BY password;`
   - 删除用户:`DROP USER user_name;`

5. 其他常用语句:
   - 查看表结构:`DESCRIBE table_name;`
   - 查看表详情:`DESCRIBE FORMATTED table_name;`
   - 查看表分区:`SHOW PARTITIONS table_name;`
   - 查看表统计信息:`ANALYZE table_name;`
   - 查看表数据文件位置:`MSCK REPAIR table_name;`

二、SQL常用语法

SQL是一种结构化查询语言,用于管理和操作关系数据库系统。它包含三个主要部分:数据定义语言(DDL),数据操作语言(DML)和数据查询语言(DQL)。

1. 数据定义语言(DDL):这是用来定义或更改数据库结构的语句集合。主要包括关键字如CREATE(创建新表或数据库)、ALTER(修改现有数据库或表)以及DROP(删除数据库或表)等。例如,创建一个名为Websites的表,可以执行如下命令:`CREATE TABLE Websites(id INT, name VARCHAR(255), url VARCHAR(255));`。

2. 数据操作语言(DML):这个部分包括INSERT、UPDATE 和 DELETE等语句,这些语句用于添加新数据、更新现有数据和删除数据。比如,向Websites表中插入一条新的记录,可以使用以下语句:`INSERT INTO Websites(id, name, url) VALUES(1, 'Google', 'www.google.com');`。

3. 数据查询语言(DQL):这是用来从数据库中获取数据的语句。SELECT是最常用的一个语句,用于检索表中的数据。例如,如果你想查询Websites表中的所有记录,你可以使用以下语句:`SELECT * FROM Websites;`。

需要注意的是,对于大多数数据库系统来说,每条SQL命令的末端都需要使用分号作为分隔符。此外,SQL对大小写不敏感。

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值