Langzzx / dand-advanced-2018

personal repo for Udacity dand course
0 stars 0 forks source link

SQL notes #6

Open Langzzx opened 6 years ago

Langzzx commented 6 years ago

ref to :https://classroom.udacity.com/courses/ud197/lessons/3423258756/concepts/33885287120923

Langzzx commented 6 years ago

where where 子句表示限制条件 — 从表格中过滤出符合特定规则的行。where 支持等于、不等于和布尔运算符等: where species = 'gorilla' — 仅返回物种列的值为“gorilla”的行。 where name >= 'George' — 仅返回名称列在“George”之后(按字母顺序)的行。 where species != 'gorilla' and name != 'George' — 仅返回物种不是“gorilla”并且名称不是“George”的行。 limit / offset limit 子句对结果表格可以返回的行数做出限制。可选 offset 子句表示要在结果中跳过多少行。所以 limit 10 offset 100 将返回 10 条结果,从第 101 行开始。 order by order by 子句告诉数据库如何对结果排序 — 通常根据一个或多个列。所以 order by species, name 表示首先按照物种列排序,然后在每个物种里按照名称排序。 排序发生在 limit/offset 之前,所以你可以使用它们来提取出按字母顺序排列的页面结果(想想字典的页面)。

可选 desc 修饰符告诉数据库按照降序对结果排序,例如从大到小或从 Z 到 A。

group by group by 子句只能用于汇总,例如 max 或 sum。没有 group by 子句的话,对集合执行选择语句将对整个选定表格进行汇总,只返回一行。对于 group by 子句,它将对 group by 子句中的列或表达式的每个唯一值返回一行。

Langzzx commented 6 years ago

insert 语句的基本语法:

insert into table ( column1, column2, ... ) values ( val1, val2, ... );

如果值和表格的列顺序一样(从第一列开始),则不需要在 insert 语句中指定列:

insert into table values ( val1, val2, ... );

例如,如果表格有三列 (a, b, c),你想要向 a 和 b 中插入值,你可以在 insert 语句中省略列名称。但是如果你想向 b 和 c 或 a 和 c 中插入值,则需要指定列。

单个 insert 语句只能插入一个表格中(而 select 语句可以使用 join 从多个表格中获取数据)。

Langzzx commented 6 years ago

(join)两个表格,首先选择连接条件,即数据库将表格一中的行与表格二中的行相匹配时采用的规则。然后编写连接语句,包含每个表格中的列。

例如,如果你想连接表格 T 和 S,其中 T.color 和 S.paint 要相同,则需要使用 T join S on T.color = S.paint 编写一个 select 语句。