SQL笔记
一、概述
数据库系统:
人员>数据库应用系统>开发工具>DBMS>OS>数据库>硬件
DBMS:数据库管理系统;数据库的核心,提供数据定义(DDL)、操纵语言(DML)
二、数据库的三级模式
外模式(每个用户看到对应模式的数据)
模式(概念)
内模式(物理)
三、关系规范化
3.1 函数依赖
每个X,Y都有一个具体值,即X值绝决定Y,X->Y。
3.2 几种特定的函数依赖
a、平凡函数依赖 :X、Y
⊆
\subseteq
⊆U;若X->Y,则称为平凡函数依赖。
b、非平凡函数依赖:X、Y
⊆
\subseteq
⊆U;若X->Y,Y不是X的子集,则称为非平凡函数依赖。
c、完全函数依赖:X、Y
⊆
\subseteq
⊆U若X->Y,对任意的一个X的真子集Z,Z->X都不成立,则称为完全函数依赖。
d、部分函数依赖:X、Y
⊆
\subseteq
⊆U若X->Y,对某一真子集Z,Z->X都不成立,则称为部分函数依赖。
e、传递函数依赖:X
⊆
\subseteq
⊆U,Y
⊆
\subseteq
⊆U,Z
⊆
\subseteq
⊆U;若X->Y,Y不->X,Y->Z,则称为传递函数函数依赖。
3.3 规范化过程
a、第一范式(1NF):R的每个属性值域都是不可分的简单数据项
b、第二范式(2NF):R为第一范式,且每个非主属性都完全依赖与码
c、第三范式(3NF):R为第二范式,且没有一个非主属性传递函数依赖于码
范式程度越高,冗余程度越小,处理速度越慢
所以一般使用一二三范式
四、T-SQL语言基础
a、数据定义语言(DDL):CREATE,ALTER,DROP
b、数据操纵语言(DML):INSERT,UPDATE,DELETE
c、数据控制语言(DCL):GRANT,REMOVE,DENY
d、数据查询语言(DQL):SELECT
五、操作
5.1 库的操作
CREATE/ALTER/DROP DATABASE 库名
5.2 表的操作
1.CREATE/ALTER/DROP TABLE 表名
2.表数据的操作
a、插入数据:
INSERT INTO 表名(…,…) VALUES(数据,…)
b、修改数据:
UPDATE 表名 SET 值
c、删除:
DELETE 表名 WHERE …
六、数据库查询
from、where、group by、having、order by(asc/desc)
6.1 简单查询
SELECT …FROM…
6.2 选择查询
a、关系表达式:WHERE(>、<…)
b、逻辑表达式:WHERE(AND、OR)
c、BETWEEN
d、使用IN
e、LIKE(类似正则,%:0或多个;-:单个字符; []:[]范围内的;[^]:不在范围内的)
f、IS [NOT] NULL
6.3 聚合函数查询
a、使用sum/avg/min/max/count
b、简单分组(没用CUBE或ROLLUP)
c、使用CUBE/ROLLUP(WITH CUBE)指定包含汇总行
6.4 连接查询
a、内连接:SELECT … FROM … INNER JOIN … ON ,
b、自链接(副本链接):SELECT … FROM (stu a) INNER JOIN …(b) ON …
c、外连接:左外、右外、全外(即两个表的全部行都包括)。(left outer join /right/full)
d、交叉连接:cross join
七、索引
1.聚集、非聚集
2.CREATE INDEX … IN …
八、T-SQL编程
8.1 变量
a、局部变量定义
DECLARE{ @名 类型}
b、赋值
SET {@名 = 值}
8.2 流程控制语句
a、SET
b、BEGIN … END
c、IF … ELSE …
d、CESE …WHEN…END
e、WHILE … BEGIN … END
f、GOTO
g、return
8.3 函数
a、定义
CREATE FUNCTION … AS …
8.4 游标
a、声明 DECLARE … CURSOR … FOR …
b、打开 OPEN
c、读取 FETCH …
d、关闭 CLOSE …
e、释放 DEALLOCATE …