SQL入门之从A到Z

2019-09-27 16:50:49 浏览数 (1)

Alias

Alias就是表别名的意思。在join语句中,如果不指定某一列属于哪一张表,那么数据库会因为不知道某一列到底是属于哪一张表,从而报错。

代码语言:javascript复制
select
orders.order_item,
inventory.inventory_item
from orders
inner join inventory
on orders.order_item = inventory.inventory_item

而表别名(Alias)让人们不至于在join语句中写那么冗长的全表表名,代以简单的别名。

代码语言:javascript复制
select
o.order_item,
i.inventory_item
from orders o
inner join inventory i
on o.order_item = i.inventory_item
Begin Transaction

事务是包裹着一系列SQL的语句,通过事务可以使得事务里面的SQL可以一次性commit,或者是回滚。

代码语言:javascript复制
begin transaction

update orders
set status = 'sent'
where order_id = '12345'

update orders
set status = 'sent'
where order_id = '54321'

commit transaction
CTEs v Subqueries

SQL CTE,即Common Table Expressions,常常用于过滤数据集赋以别名,并且在稍后的查询中使用到它。

代码语言:javascript复制
with orderset as
(select
order_id,
order_item
from orders
where order_id between '12345' and '54321'
),

with inventoryset as
(select
inventory_item
inventory_balance
from inventory
)

select
orderset.order_id,
inventoryset.inventory_balance
from inventoryset
join orderset 
on orderset.order_item = inventoryset.inventory_item
Design

数据集市一般有两种设计模型:星型模型和雪花型模型。这两种模型由两种表组成:

  • 维度表:描述客观属性的表
  • 事实表:描述发生了什么的表
ETL

ETL,即 Extract, Transform, Load。ETL表示着将数据从一个数据库迁移到另一个数据库的过程。

ETL的过程主要是由数据工程或数据开发团队负责。

Function

在 SQL Server 中,一组为了完成特定功能的SQL语句集被称为存储过程,而在Postgre SQL中被称为函数(Function)。

它可以在数据库中被当作一个表达式正常使用,也可以传入参数返回一个动态的值。

Group By

SQL 的聚合函数允许我们针对特定的列执行诸如SUM, COUNT, MIN, MAX, AVERAGE等操作。

而Group By操作类似于Excel里面的透视表,表示根据某个字段进行分组聚合。

代码语言:javascript复制
select
order_item,
sum(amount_due)
from orders
group by order_item;
Heaped Storage

Heaped Storage,用来描述没有带索引的数据库表。数据没有按特定的顺序组织起来,且新数据只是简单的添加到最后一行。因此如果要查询比较大的表,就必须使用索引。

索引分为两大类:

  • 聚集索引
  • 非聚集索引
Integrity

即数据库完整性,用来确保数据在逻辑上的一致性、正确性、有效性和相容性。 包括:

  • 实体完整性:每张表都有一个唯一的主键
  • 引用完整性:每张表的外键都可以引用到另一张表的主键
  • 域完整性:表中的列都有字段类型和长度
Join

当一张表无法获得所有信息时,就需要关联另一张表以获得完整的信息。

Key

主键自身是唯一的,且确保每一列的数据都是唯一的。

  • 它可以确保表中没有重复数据
  • 它不可为空
  • 每张表仅有一个主键
Lock

当两个用户同时更新或查询同一张表时,有可能会锁住(Lock),直到第一个事务完成。

Massive Parallel Processing

例如Redshift这种数据库,可以在分布式系统里的各个节点同时进行查询和处理。

Normalisation

即数据库三范式。

  • 1NF:字段不可分;
  • 2NF:有主键,非主键字段依赖主键;
  • 3NF:非主键字段不能相互依赖;
OLTP v OLAP
  • OLTP:Online Transaction Processing,常用于数据的快速处理反应
  • OLAP:Online Analytics Processing,常用于存储历史数据和数据挖掘。
Privileges

用于确保某些人只能查询和处理特定的数据,即用户权限。

代码语言:javascript复制
GRANT ALL ON [table] TO [group] ;
-- if you would like them to SELECT, UPDATE and DELETE

GRANT SELECT ON [table] TO [group]  ;
-- if you would like them to be able to only SELECT
Query Plan

执行计划,用于查看所执行的SQL的执行过程,以便于更好的优化SQL。

代码语言:javascript复制
explain

select
orders.order_item,
inventory.inventory_item
from orders
inner join inventory
on orders.order_item = inventory.inventory_item
Recovery

灾备恢复,一般与log、日志备份和复制有关,用以确保发生自然灾难、硬件故障或者是人为错误时,数据库依然正常。

  • Failover
  • Mirroring
  • Replication
System Tables

系统表用于存储数据内部对象的相关信息。

Truncate v Drop

删除表里的所有数据

Union

join是水平扩展数据,而union则是纵向扩展数据。

View

视图不是物理意义上的表,而是一系列的查询的抽象。

Window Function

窗口函数不像是聚合函数,而是跨行计算,并且把结果填到到每一行中。

代码语言:javascript复制
select
order_id,
order_name
order_date,
rank() over(order amount_due desc) [rank]
from dbo.orders
XML

这个有凑数嫌疑

Year

Pass

Zero

Null表示这一行不存在,而不是0或者空。

0 人点赞