数据库sql语句学习

嵌套子查询:
(1)select … from … where
子查询可以在where里面,也可以在from里面;因为他们后面跟的就是一组特定的关系,而我们子查询即sql语句就表达了一种关系;

(2)with的用法
with table1(column1,column2) as select … from…where select … from table1
with是创建一个临时的关系,相比用常规的sql语句而言,更简洁易懂;

(3)同时,在with当中定义的表也可以在后面子查询中用,注意如果名称不一样,则以子查询中的表为准,类似于编程语言中的局部变量。
(4)视图定义
视图关系在概念上包含查询结果中的元组,但并不
进行预计算和存储。相反,数据库系统存储与视图关系相关联的查询表达式。当视图关系被访问时,其中的元组是通过计算查询结果而被创建出来的。
create view departments_total_salary(dept_name,total_salary) as select dept_name,sum(salary) from instructor group by dept_name
一旦视图关系出现在查询中,它就被已存储的查询表达式代替。因此,无论我们何时执行这个查询,视图关系都被重新计算。

通过视图更新原关系表必须满足以下4个条件:
1)from子句中只有一个数据库关系;
2)select子句中只包含关系的属性名,不包含任何表达式、聚集或distinct声明;
3)任何没有出现在select子句中的属性可以取空值;即这些属性上没有not null约束,也不构成主码的一部分。
4)查询中不含有group by或having子句。
尽管满足上述条件后可以通过视图更新原表,但是有些时候更新原表后不满足视图中的条件也不会被显示出来。
最近疑惑:
spark的hdfs上面保存的csv经过-getmerge合并传到本地,含有多个标题,背后的原因?解决方案——手动过滤;

猜你喜欢

转载自blog.csdn.net/sinat_26566137/article/details/80550139