sql基础知识查漏补缺

hive优化相关

追加汇总

WITH ROLLUP

SELECT IFNULL(driver_id, "总体") as driver_id,
    ROUND(AVG(grade), 1) as avg_grade
FROM tb_get_car_order
WHERE driver_id in (
    SELECT driver_id
    FROM tb_get_car_order
    WHERE DATE_FORMAT(order_time, "%Y-%m")='2021-10' AND ISNULL(fare)
) AND NOT ISNULL(grade)
GROUP BY driver_id
WITH ROLLUP;

随机抽样

#随机抽取10个数据
select * from table1 order by rand() limit 10

日期函数

日期差
  1. DATEDIFF() 函数返回两个日期之间的天数
    时间大的放前面,时间小的放后面
	DATEDIFF(enddate,startdate)
  1. TIMESTAMPDIFF
    时间小的放前面,时间大的放后面
    TIMESTAMPDIFF相比DATEDIFF增加了一个参数,可以控制时间差的单位(second、minute、hour、day等)
--相差40秒
select TIMESTAMPDIFF(SECOND, '2018-03-20 09:00:00', '2018-03-20 09:00:40');
日期加减
  1. DATE_ADD() 函数
DATE_ADD(date,INTERVAL expr type)

向日期添加指定的时间间隔

Type
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR

增删改

增加数据
  1. INSERT INTO 语句用于向表格中插入新的行。
INSERT INTO table_name VALUES (1,2,....)
指定所要插入数据的列:
INSERT INTO table_name (1,2,...) VALUES (1,2,....)

SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。常用于创建表的备份复件或者用于对记录进行存档。

#把所有的列插入新表 
SELECT *
INTO new_table_name [IN externaldatabase] 
FROM old_tablename
#只把希望的列插入新表 
SELECT column_name(s)
INTO new_table_name [IN externaldatabase] 
FROM old_tablename
#select语句是将选择的数据转移到新表中,而insert语句是在已存在的表中插入某行或者某列
  1. 增加列
ALTER TABLE 表名 ADD COLUMN 列名 属性 【约束】
  1. 添加主键/索引
#添加主键
ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (添加列)
#添加索引
ALTER TABLE 表名 ADD index 索引名 (列名)
删除
  1. 删除表与删除数据
函数效果
Truncate和Delete删除数据
Drop删除整个表(结构和数据)
  1. 删除列
ALTER TABLE 表名 DROP COLUMN 列名
  1. 删除表中主键
Alter TABLE 表名 DROP primary key
修改数据
  1. 修改列的类型信息
ALTER TABLE 表名 CHANGE COLUMN 列名 【新】列名 新属性
  1. 重命名列
ALTER TABLE 表名字 CHANGE COLUMN 列名 新列名 属性
  1. 重命名表
ALTER TABLE 表名 RENAME TO 表新名
  1. 修改列的属性
ALTER TABLE 表名 MODIFY COLUMN 要修改属性的列名 新属性;

视图

建立视图的sql:
(视图里不可以order by)

CREATE VIEW 视图名[(字段1),字段2),(字段3)...] 
AS select 语句

#另一种创建视图方法
CREATE ALGORITHM={TEMPTABLE} VIEW 
视图名[(字段1),字段2),(字段3)...] 
AS select 语句
#其中:[(字段1),字段2),(字段3)...] 可省
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值