SQL语法快速入门

本文参考 CMU数据库神课 15-445 中的SQL语法讲解部分

SQL数据定义

create table department ( dept_name varchar(20), building varchar(20), budget numeric(12, 2), primary key (dept_name) );
可以指定not null 外码等等。

删除表

.drop department

删除表中的内容

.delete department

增加一个空列

alter table r add A D;

A attribute

D domain

从关系中删除属性

alter tabel r drop A;

SQL基本结构

select from where基本类型

distinct关键字或者函数可以去重。

all 关键字显式指明不去重

SQL查询的子句实际顺序

尽管子句必须以select from where的次序写出,但理解查询代表的运算最容易的方法是一运算次序来观察子句,首先是from,然后是where 最后是select

FROM定义了多个关系的笛卡尔积,或者可以理解为一个迭代(多重循环) ,这个过程中产生了组合的元组,并且使用where来限制创建笛卡尔积的组合,选取有意义的元组。where的条件被称为谓词。

附加的基本运算

更名运算 AS

as后会被当做一个拷贝,在同一个关系的内部操作时很有用

字符串运算

字符串使用单引号, 需要在内部使用的时候用两次

比较运算对大小写敏感(不同软件不同)

|| 拼接

substr 子串

upper

lower

trim去除后面的空格

like结合 % 任意长度子串, _下划线,任意一个字符 like语法对大小写敏感, 还可以使用not like

排列元组显示次序

order by attribute asc升序, desc降序

where 子句

可以结合between使用, between a and b 寻找ab之间的值。 还可以 not between

还可以使用(v1,v2,v3)这种行构造器来进行元组比较

集合运算

或运算 union, 可以直接使用()自动去重, 或者union all 保留重复项

与运算 intersect 会自动去重

非运算 except 会自动去重 想保留的话可以使用except all

空值

运算任一项为空,结果也为空。

为了判断空 可以使用 a is null 来判断,不要使用=

null的布尔运算会成unknow 这是使用 is unknown来判断

聚集函数

avg

min

max

sum

count

sum和avg必须对数组计算

基本聚集与分组聚集

有基本聚集,在整个表上进行聚集,还可以先分组再聚集。

任何没出现在group by的属性,只能出现在select的聚集函数中,不能直接选中

having子句

having子句对分组限制条件, where是对元组的限制条件。

from where group having 聚集函数 select的计算次序(重点)

  1. from计算关系
  2. 如果有where,where计算满足关系的元组
  3. 如果有group by 对满足2的分组
  4. 如果有having,应用到每个分组上
  5. select利用通过4的分组产生查询的元组,即这一步会在分组上调用聚集函数得到元组
posted @ 2023-03-15 16:19  Llon_Cheng  阅读(39)  评论(0编辑  收藏  举报