一、数据库的基本结构定义
- 主文件:mdf
- 次要文件或从文件:ndf
- 事务日志:ldf
创建数据库的语言:
create database <数据库名称>
修改数据库语言:
alter database <数据库名称> add file: 添加数据库的文件 modify file:修改数据库的文件
删除数据库语言:
drop database<数据库名称>
创建表的语言:
create table <表的名称>
修改表的语言
alter table <基表名>
add子句:添加新列和新的完整性约束 drop子句:删除指定的完整性约束条件
二、常用的完整性约束
- 主键约束:primary key
- 唯一性约束:union
- 非空值约束:not null
- 参照完整性约束:foreign key
三、集合运算
- union运算实现集合并运算
- expect运算实现集合差运算
- intersect运算实现集合交运算
四、连接
- 内连接 From 表1,表2 WHERE<连接条件> From 表1,[inner]表2 ON <连接条件> From 表1,[inner]JOIN 表2 USING <连接条件> (名字相同的列才能连接列名)
- 外连接 外连接分为三种: 左外连接、右外连接、全外连接 左外连接:FROM 表1 LEFT OUTER JOIN 表2 ON <连接条件> 右外连接: FROM 表1 RIGHT OUTER JOIN 表2 ON <连接条件> 全外连接:FROM 表1 FULL OUTER JOIN 表2 ON <连接条件>
- 自然连接 FROM 表1 NATURAL JOIN 表2
五、嵌套查询
- 运算符IN和NOT IN IN表示数据是属于某个集合的,NOT IN 是指数据不属于某个集合
- EXISTS 和NOT EXISTS 如果EXISTS限定的子查询有查询记录返回,那么条件为真,否则为假 如果NOT EXISTS 子查询返回值为空,则条件为真,负责为假
- ALL和ANY ALL是指所有结果集全部满足条件,运算为真 ANY 是指只要有一个满足,则为真
六、数据修改
- 数据插入(insert) 插入元组 INSERT INTO <基表名>[(<属性列表>)] VALUES (<属性值列表>) 插入子查询 INSERT INTO <基表名>[(<属性列表>)] 子查询
- 修改语法 UPDATE <基表名> SET <属性列名>=<表达式>[,<属性列名>=<表达式>,….] [WHERE <行选择条件>]
- 删除语句 delete from <基表名> [WHERE<行选择条件>]
七、视图
- 视图是一个虚表
- 数据库只存储视图的定义,对视图数据操作时,数据库根据视图定义与视图相关联的基本表
- create view <视图名> as <子查询> [with check option]
- 视图必须有一个单一的表源
- 视图 不能使用 having 、group by 、distinct上午那个语句
- 必须包含表源的所有not null列
- 使用update 更新视图 格式如下:update <表名> set
- 删除视图 drop view 要删除的视图名
- 视图在一定程度上保存了数据的逻辑独立性
八、完整性约束
- 主键约束: 一个表中只能有一个主键
- primary key 子句中每个属性取值都必须为not null
- union约束:
- 在一个关系中,primary key 只能约束一个,但是union能够约束多个
- UNION 约束和PRIMARY KEY约束不能在同一个属性上
- UNION约束允许属性取空值,允许多个空值同时存在
- check约束:通常用于保证属性满足指定的条件
- 如果违反了实体完整性和用户自定义完整性规则:sql一般拒绝操作
- 违反参照完整性:拒绝操作或者接受这个操作,同时执行一些附加的操作,以保证数据库的状态正确