SQL基础

image.png

3.1 Overview of SQL

Structured Query Language

image.png

data query Select
data manipulation Insert,  Delete,  Update
data definition Create,  Drop, Alter   (on schema)
data control Grant,  Revoke
transaction processing begin transaction, commit, rollback
指针/游标控制语言(CCL) DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT

3.2 SQL Data Definition

Domain Types 定义域类型

  • char(n).固定长度字符串,用户定义

  • varchar(n).可变长度字符串,用户定义

  • int.整数

  • smallint.小整数

  • numeric(p, d):固定小数,用户定义

  • float(n).浮点数,用户定义

  • date:日期包含年月日

  • time:时分秒

  • timestamp:日期加上时间

  • Interval:一段时间

  • Null:空集

  • create domain:自定义类型,不允许是Null

关系表属性名最好取英文名,便于应用程序的可移植性

Create Table

image.png

  • r是关系表的名称
  • A_i是变量名称
  • D_i是数据类型(定义域)

约束:指定主键,外键,非空等。
image.png

例:
image.png

Updates to Schemas

删除表:
drop table r # 删除表r
Alter:
alter table r add A D # 在表r中添加A属性,D是A的定义域
alter table r drop A # 把表r中的A属性删去

tuples逐行存储,添加或删除表产生的数据移动花费很大,大数据表通常逐列存储

3.3 Basic Structure of SQL Queries

SQL query
image.png

  • A_i为属性
  • r_i为关系表
  • P为predicate(谓词)
    等效于:
    image.png

The select Clause

image.png

SQL允许冗余,加入关键字Distinct消除冗余
image.png
关键字all可以使冗余不被移除

属性可以是没有from的文本
image.png
结果为一行一列的表, 内容为437,可以为它加上名字
image.png

select可以包含数学表达式
image.png

The where Clause

where为查询添加条件,对应于关系代数的选择代数

可以包含 and,or,not,比较运算符:<,>,<=,>=,=,<>(不等于)
image.png

between运算符
image.png

元组比较
image.png

natural join

natural join in from subclause
image.png
等于
image.png
自然连接默认把主键相同作为条件

3.4 Additional Basic Operation

The Rename Opration

image.png
image.png
利用T和S区分不同的instructor, 实现对同一属性的不同值比较

字符要加单引号

String Operations

运算符like :

  • percent(%):与任何子字符串匹配
  • underscore(_):匹配任意字符

注意转义字符的使用:匹配”100%”
image.png

Ordering the Display of Tuples

order by对指定属性进行排序,降序desc,升序asc(默认值)
image.png

3.5 Set Operations

union(并),intersect(交),except(差)
image.png
自动消除重复项,union all可以保留重复项

3.6 Null Values

Null表示:

  • 一个未知的值
  • 一个不存在的值
    任何涉及Null的算术表达式的结果都是Null

检查空值
image.png

SQL将涉及Null的比较结果视为unknown
where中的谓词可以涉及布尔运算(and,or,not),因此需要扩展布尔运算来处理unknown
image.png
如果只有unknown,则视为false

3.7 Aggregate Functions

聚合函数:输入一列,输出一个值

  • avg:平均值
  • min:最小值
  • max:最大值
  • sum:求和
  • count:数量

分组后聚合:
group by:
image.png
先按dept_name分组,然后对每个组内的salary求平均

  • 聚合函数之外的 select 中的属性必须出现在group by中
  • 除count之外的所有聚合操作都忽略有Null的tuples

Having Clause

image.png

对分组后的数据进行条件筛选
having用于group形成以后,where用于group形成之前

3.8 Nested Subqueries嵌套子查询

子查询是嵌套在另一个查询中的“select-from-where”表达式
image.png

  • r_i可以替换为任意有效的子查询
  • P可以替换为B<operation>(subquery)
  • A_i可以替换为生成单个值的子查询

some Clause

image.png
some中只要有一个满足条件即为true

all Clause

image.png
需要some中所有都满足条件才为true

Empty Relations空关系(exist,except)

image.png
image.png

Duplicate Tuples重复元组(unique)

unique检查子查询中是否有重复元组,如果没有重复项返回true

With Clause

with子句提供了一种定义临时关系的方法,将一个复杂查询分解为若干步,每个视图定义一个各部的中间计算结果,逻辑清晰。
image.png

3.9 Modification of Database

Deletion删除

image.png

Insertion插入

image.png

Update更新

image.png


SQL基础
http://example.com/2024/11/27/Notes/课程/大三(上)/数据库/SQL基础/
许可协议