SQL:结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统.
create database [if not exists] 数据库名;
drop database [if exists] 数据库名;
(1) 查看所有数据库
show databases;
(2) 查看当前数据库下的所有表
show tables;
create table [if not exists] db_name.table_name (
column_name data_type(size) comment '注释'
,...
) comment '表名';
-- 只复制表结构
create table 新表名 as
select * from 旧表名;
-- 只复制表结构
create table 新表名 like 旧表名;
-- 复制表结构及其数据
create table 新表名 as
select * from 旧表名;
表名 as (查询语句)
create or replace view view_name as select statement
drop table [if exists] 表名;
drop view view_name;
-- rename:重命名,包括索引、表名
alter table 旧表名 rename to 新表名;
desc 表名;
show create table 表名;
alter table 表名 add [column] 字段名 数据类型;
--hive:在表的末尾增加新的列,但是在分区列之前
alter table table_name add columns (col_name data_type);
alter table 表名 drop column 字段名;
(1) 修改表字段类型
alter table 表名 modify [column] 字段名 新数据类型;
(2) 修改表字段名及字段类型
alter table 表名 change column 旧字段名 新字段名 新数据类型;
(1) insert into ... values
-- 1 按指定列插入数据
insert into table_name
(field1,field2...fieldn )
values (value1,value2,...valueN)
,(...)
;
-- 2 所有列插入数据
insert into table_name
values (value1,value2,...valueN)
;
(2) insert into ... select
-- 1 从一个表中复制所有的列插入到另一个表中
insert into table2
select * from table1;
-- 2 从一个表中复制指定列插入到另一个表的指定列中
insert into table2 (column_name(s))
select column_name(s) from table1;
delete from 表名 where 条件;
truncate table table_name;
UPDATE table_name
SET column1 = 'new_value'
-- 强制带上条件
WHERE some_condition
;
select
-- as:为表名称或列名称指定别名,提高可读性
列名1 as 列别名
,列名2 as 列别名
from 表名 as 表别名
where 列名 运算符 列名/常量
[limit number]
select distinct 字段名1,... from table1;
①group by
-- group by:根据一个或多个列对结果集进行分组,在分组的列上可以使用 count、sum、 avg等函数
select
列名
,分组函数(列名)
from 表名
group by 列名
-- 分组后过滤
having 表达式
;
②group by ... grouping sets
-- grouping sets允许采用多种方式对结果分组,而不必使用多个select语句,从而提高执行性能.
-- grouping sets语法和普通group by类似,但需要额外执行所需的多个group by组合.例如以下sql的(列名1,列名2), ()),每个内层括号执行一个group by组合,空括号表示group by列表为空,即所有列
select
列名1,列名2
,分组函数(列名)
from 表名
group by 列名1,列名2
grouping sets((列名1,列名2),())
;
-- 将查询数据排序后再返回数据,按字段值升序/降序,控制NULL值在排序后的结果中的位置.默认升序
select 列名 from 表名 order by 列名 [asc|desc] [nulls first|nulls last]
①一对一:将其中一方假设成多的一方,在多的一方添加外键指向一的一方的主键,并且给外键字段添加unique约束;
②一对多:在多的一方添加外键指向一的一方的主键;
③多对多:借助一张中间表,在中间表中至少有两个字段分别指向多对多双方的主键.
(1) 内连接:获取两个表中字段匹配关系的记录
select
表1.列名11
,表1.列名12
,...
,表2.列名21
,表2.列名22
from 表1
[inner] join 表2
on 表1.列名11 = 表2.列名21
and 表1条件
and 表2条件
;
(2) 左连接:获取左表所有记录,即使右表没有对应匹配的记录
select
表1.列名11
,表1.列名12
,...
,表2.列名21
,表2.列名22
from 表1
left join 表2
on 表1.列名11 = 表2.列名21
and 表2条件
where 表1条件
;
(3) 右连接:获取右表所有记录,即使左表没有对应匹配的记录
select
表1.列名11
,表1.列名12
,...
,表2.列名21
,表2.列名22
from 表1
right join 表2
on 表1.列名11 = 表2.列名21
and 表1条件
where 表2条件
;
(1) where型子查询
-- 单值子查询:把内层查询结果当作外层查询的比较条件
select 列名,列名... from 表1 where 列名1 = (select 列名1 from 表2);
-- in子查询:把内层查询结果当作外层查询的比较条件
-- 适用于子查询得出的结果集记录较少,主查询中的表较大且又有索引的情况
select 列名,列名... from 表1 where 列名 in (select 列名 from 表2);
-- exists子查询:把外层sql的结果,拿到内层sql去查询,如果内层的sql成立,则该行取出
-- 适用于外层的主查询记录较少,子查询中的表大又有索引的情况
select 列名,列名... from 表1 where exists (select 列名 from 表2 where 表1.列名1 运算符 表2.列名1);
(2) from型子查询
-- 内层的查询结果当成临时表,供外层sql查询
select 列名1,列名2... from (select 列名1,列名2... from 表名) as 表别名;
-- union:将不同表中相同列中查询的数据展示出来,不包括重复数据
select 列名称 from 表1名称 union select 列名称 from 表2名称;
-- union all:将不同表中相同列中查询的数据展示出来,不包括重复数据
select 列名称 from 表1名称 union all select 列名称 from 表2名称;
MySQL_语法文章浏览阅读925次。(5) 主键约束:约束该单字段(或字段组)的值具有唯一性,不为null且不为空,且只有一个主键约束.如主键是整数型,可配合auto_increment实现主键自增长.(6) 外键约束:限制两个表的关系,保证该字段的值必须来自于主表的关联列的值.使用时在从表添加外键约束,用于引用主表中某列的值.要求主键和外键的数据类型必须一致.(2) 默认值约束(default):约束该字段有默认值,即该字段不输入值时,会给一个默认值.一般结合非空约束使用.(1) 非空约束:约束该字段的值不能为null._create table `notification` if not exishttps://blog.csdn.net/weixin_43875878/article/details/108302141Hive_语法文章浏览阅读911次。【代码】Hive_语法。_hive as 别名https://blog.csdn.net/weixin_43875878/article/details/115050269