【数据库】

文章目录

  • SQL语句
    • 一、SELECT statement
      • 1.SELECT and FROM
      • 2.WHERE condition的基本条件运算
        • 比较
        • 范围
        • 成员关系
        • 模式匹配
      • 3.排序
      • 4.聚集函数 Aggregates function
      • 5 GROUP BY and HAVING
    • 二、子查询 subqueries
    • 三、连接
      • 1.相等连接 =
      • 2.左外部连接
      • 3.右外部连接
      • 4.全外部连接
    • 四、并、交、差
  • 规范化
      • 不规范数据库带来的问题:
      • 分解应具有的特性:
    • 函数依赖
      • 规范化关注的函数依赖类型:
      • Armstrong公理
    • 规范化的过程

SQL语句

一、SELECT statement

SELECT DISTINCT|ALL
*|columnExpression AS newName
FROM tablename
WHERE condition
GROUP BY columnList HAVING condition
ORDER BY columnList

1.SELECT and FROM

2.WHERE condition的基本条件运算

比较

简单比较

=	<	>	!=	<>	<=	>=

复杂比较

逻辑运算符

范围

BETWEEN
NOT BETWEEN

成员关系

IN
NOT IN

模式匹配

%:sequence of 0 or more characters
_:any single character

LIKE
NOT LIKE

IS NULL
IS NOT NULL

3.排序

升序:ASC
降序:DESC

ORDER BY

4.聚集函数 Aggregates function

Aggregates function can be used only in SELECT list and in HAVING clause

COUNT
SUM
AVG
MIN
MAX

5 GROUP BY and HAVING

GROUP BY...HAVING...

SELECT TOP ...

二、子查询 subqueries

subsequery子查询:将一个SELECT子句嵌套用于外部SELECT语句中;
规则:
可以放入WHERE, HAVING, FROM, INSERT, UPDATE, DELETE子句中;
可以与比较运算符、列表运算符、存在运算符等一起构成查询条件;
放在运算符的右边;
用括号括起来;
引出子查询的运算符:
比较运算符
IN
ANY/SOME/ALL
EXISTS
分类方式:
1、单值子查询和列表子查询
单值子查询:只返回一行,返回结果是一个值。
比较运算符
列表子查询:返回多于一行记录,返回结果是一列值
IN
ANY/SOME/ALL
2、不相关子查询和相关子查询
不管是 嵌套子查询还是相关子查询,外部查询用于显示查询结果集,内部查询的结果作为外部查询的查询条件
不相关子查询:执行不依赖于外部的查询
相关子查询:执行依赖于外部查询

举例用到的Staff表
【数据库】_第1张图片

e.g. 查询所有工资高于平均工资的员工

SELECT * 
FROM Staff
WHERE salary>(SELECT AVG(salary) FROM Staff)

【数据库】_第2张图片

SELECT * 
FROM Staff
WHERE salary>AVG(salary)

在这里插入图片描述
e.g.查询工资比本公司平均工资高的员工

SELECT * 
FROM Staff S1
WHERE salary>(SELECT AVG(salary) FROM Staff S2 WHERE S1.branchNo=S2.branchNo)

在这里插入图片描述

三、连接

1.相等连接 =

2.左外部连接

... LEFT JOIN ... 
ON ...

3.右外部连接

... RIGHT JOIN ... 
ON ...

4.全外部连接

... FULL JOIN ... 
ON ...

四、并、交、差

UNION

INTERSECT

EXCEPT

规范化

不规范数据库带来的问题:

数据冗余;
插入异常;
删除异常;
修改异常;

分解应具有的特性:

无损链接:确保初始关系的任意实例可通过分结构关系中的相应实例获得;
保持函数依赖:分解后关系上的强制约束可维持初始关系上的约束;

函数依赖

规范化关注的函数依赖类型:

一对一联系;
永久函数依赖(恒成立函数依赖);
完全函数依赖;
非平凡函数依赖;
传递函数依赖;

Armstrong公理

自反性;
增加性;
传递性;
自确定性;
可分解性;
组合性;
伪传递性;

规范化的过程

数据源 =》 非规则表 =》第一范式(修平表)=》第二范式(消除部份依赖) =》 第三范式(消除传递依赖) =》 BCNF范式(消除决定放不是候选关键字的依赖)

你可能感兴趣的:(数据库,sql)