数据库管理系统是由一个互相关联的数据的集合和一组用以访问这些数据的程序组成。这个数据集合通常称为数据库
特定时刻存储在数据库中的信息的集合称为数据库的一个实例,而数据库的总体设计称为数据库模式
数据库结构的基础是数据模型,数据模型是一个描述数据,数据联系,数据语义以及一致性约束概念工具的集合。数据模型提供了一种物理层,逻辑层以及视图层数据库设计的方式
存储在数据库中的数据值必须满足某些一致性约束
数据库中实体通过属性集合来描述,例如name,salary可以描述instructor实体
联系是几个实体之间的关联,例如,member联系将一位教师和她所在的系关联在一起。同一类型的所有实体的集合称为实体集,同一类型的所有联系的集合称为联系集
元组只是一组值的序列(或列表),在n个值之间的一种联系可以在数学上用关于这些值的一个n元组来表示,换言之,n元组就是一个有n个值的元组,它对应于表中的一行
在关系模型的术语中,关系用来指代表,元组用来代指行,属性指代表中的列
对于关系的每个属性,都存在一个允许取值的集合,称为该属性的域
域是原子的,不可再分的
空值是一个特殊的值,表示值未知或不存在
数据库模式是数据库的逻辑设计,数据库实例是给定时刻数据库中数据的一个快照
一个元组的属性值必须是能够唯一区分元组的,换句话说,一个关系中没有两个元组在所有属性上的取值都相同
超码是一个或多个属性的集合,这些属性的组合可以是我们在一个关系中唯一的标识一个元组
主码主要用来在一个关系中区分不同元组的候选码
外码:
一个含有主码和外码依赖的数据库模式可以用模式图
查询语言是用户用来从数据库中请求获取信息的语言
在过程化语言中,用户执导系统对数据库执行一系列操作以计算出所需结果
在非过程化语言中,用户只需要描述所需信息,而不用给出获取该信息的具体过程
create table r
( A1,D1,
A2,D2,
....,
An,Dn,
<完整性约束1>,
...,
<完整性约束k> );
完整性约束:
not null:一个属性上的not null 约束表明在该属性上不允许空值,此约束把空值排除在该属性域之外
SQl 禁止破坏完整性约束的任何数据库更新
insert into instructor
values (10211,'Smith' , 'Biology' , 66000);
delete from student;
drop 去掉关系
drop table r;
此命令从数据库中删除关于被去掉关系的所有信息,delete 保留关系r,但删除r中所有的元组。drop 不仅删除 r 的所有元组,还删除 r 的模式,一旦 r 被去掉,除非用 create table 命令重建 r ,否则没有元组可以插入 r 中
alter table 增加属性
alter table r add A,D;
关系中的所有元组在新属性上的取值被设为 null,r 为现有关系的名字,A是待添加属性的名字,D 是待添加属性的域
alter table r drop A;
从关系中去掉属性,其中 r 是现有关系的名字,A 是关系的一个属性的名字
SQL 查询的基本结构由三个子句构成:select,from,where
强行删除重复 可以在 select 后加上关键字 distinct
select distinct dept_name
from instructor;
SQL 允许我们使用关键字 all 来显式指明不去除重复
select 子句还可带含有 +,-,*,/ 运算符的算术表达式,运算对象可以是常数或元组的属性
where:
通过 from 子句定义了一个在该子句中所列出关系的笛卡尔积,它可以用集合理论来形式化地定义,但最好通过下面的迭代过程来理解:
此结果关系具有来自 form 子句中所有关系的所有属性
自然选择运算作用于两个关系,并产生一个关系作为结果,自然连接只考虑那些在两个关系模式中都出现的属性上取值相同的元组对。
as 子句
old-name as new-name
as 子句既可以出现在 select 子句中,也可以出现在 from 子句中