数据库期末复习

基本概念

1.DBMS概念

  • 数据库(DB)
    数据库是长期存储在计算机内、有组织的、统一管理的、可以共享的相关数据的集合
    (其实就是存数据的)
  • 数据库管理系统(DBMS)
    管理数据库的软件,为用户提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。位于用户和OS之间。
    (其实就是操作数据库的)
  • 数据库系统(DBS)
    DBS是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机硬件、软件和数据资源组成的系统。
    (最宽泛的概念,一般包括DB,DBMS, DBA等)

2.表和视图区别联系

表: 就是数据表,是数据库中真实存在的关系。
视图: 就是view,是一个或几个基本表导出的一种表,虽然也是关系形式,但是本身不存在数据库中,只有定义无数据,是一种虚关系。
共同点: 都是一种关系形式

不同点: 数据表实际存储在DB中,是一种实关系。
视图只是一种虚关系,无存储数据。

3.E-R图

E-R图就是用于描述事物之间的关系的。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4.数据库的三级结构模式

  • 外部模式(子模式, 用户模式)
    用户观念下的数据库,是用户和数据库之间的接口。
    一个数据库系统可以有多个外部模式

  • 概念模式(模式,逻辑模式)
    对DB全局的描述,所有用户公有的数据视图。
    一个数据库系统只能有一个概念模式。

  • 内部模式(存储模式)
    对DB中数据物理结构和存储方式的描述,是数据在DB内部的表示形式。
    一个数据库系统只能有一个内部模式。

5.关系模型数据约束

  • 实体完整性约束
    实体完整性是用于保证关系数据库中每个元组都是可区分的,唯一的。
    (其实就是主键)
  • 参照完整性约束
    参照完整性要求关系中不允许引用不存在的实体。
    (其实就是外键)
  • 用户定义的完整性规则
    用户自定义完整性是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
    (其实就是设置取值范围,not null等规定)

6.关系代数的几个基本操作

选择,投影,并,差,笛卡尔积

  • 选择
    选择合法的行
  • 投影
    选择合法的列

  • 属性相同的两表合并所有行,并去除重复的行

  • 属性相同的两个表R,S
    R-S计算属于R但是不属于S的行组成的表
  • 笛卡尔积
    若R有m个元组,S有n个元组,则R×S有m×n个元组
    在这里插入图片描述
    在这里插入图片描述

7.数据库的生存周期

  • 规划阶段
  • 需求分析阶段
  • 概念设计阶段
  • 逻辑设计阶段
  • 物理设计阶段
  • 实现阶段
  • 运行和维护阶段

8.保护数据库的安全措施的五个级别

  • 环境级
  • 职员级
  • OS级
  • 网络级
  • DBS级

9.实体间的几种对应方式

1 : 1
1 : n
n : m

10.超键,主键,候选键的概念

超键: 关系中能唯一表示元组的属性集
(超键是一个属性的集合,只要集合中含有可以唯一标识元组的属性即可)
候选键: 不含有多余属性的超键

主键: 从候选键中选出作为元组标识的键

命令设计

1.创建数据库

create database datebaseName;

2.创建表

举个例子

create table SC(
Sno char(10) not null,
Cno char(5) not null,
Degree decimal(5,1),
foreign key (Sno) 
references Student (Sno),
foreign key (Cno)
references Course (Cno) on delete restrict,
check (Degree >= 0 and Degree <= 100 ));

3.修改表结构

#添加属性
alter table <表名> add <属性名><类型>;
#删除已有属性
alter table <表名> drop<属性名>;
#属性重命名
alter table <表名> change <原属性名> <新属性名> <新的类型>;
#修改属性的数据类型
alter table <表名> modify <属性名> <新的类型>;
#删除表
drop table <表名>;
#补充主键定义
alter table <表名> add primary key(<属性名表>);
#撤销主键定义
alter table <表名> drop primary key;
#补充定义外键
alter table <表名> 
add foreign key <属性> references <表名>(<属性>);
#撤消外键定义
alter table <表名> drop foreign key <外键名>;

4.表记录更新

# 插入元组
insert into <表名> [(<属性列1>[, <属性列2 >)]
values (<常量1> [, <常量>]  ......   );
# 插入子查询的结果
insert into <表名>  [(<属性列1> [, <属性列2>......])]
子查询;
# 删除数据
delete from <表名>
[where <条件>];
#修改数据
update <表名>
set <列名>=<表达式>[,<列名>=<表达式>]......
    [where <条件>];

5.查询的创建

#查找格式
select [distinct] <属性列表>
from <表名/视图名>
[where <条件>]
[group by <分组列表名> [having <组合条件>]]
[order by <排序列名> [asc | desc]]

#集函数
count([distinct|all] *) #计算元组个数
count([distinct|all] <列名>) #计算某一列值个数,空值也计算
sum([distinct|all] <列名>) #计算某一列总和
avg([distinct|all] <列名>) #计算某一列平均值
max([distinct|all] <列名>) #计算某一列最大值
min([distinct|all] <列名>) #计算某一列最小值
#having中可以使用集函数作为条件,having不能单独出现,只能和group by一起出现

更多查询例子 详见上机练习3,4

## 下面是几个例子

# 查询指定列
select Sname, Ssex, Sbirthday from student
where Speciality='电子商务';
# 查询全部列
select * from student
where(Ssex = '女' and 2020 - year(Sbirthday)>20 );
# 使用别名改变列标题
select sdept as '系', count(Sno) as '人数'
from student
group by sdept;

6.视图的创建

# 视图创建语句
create view <视图名>  [(<列名>  [,<列名>]......)]
as <子查询>
[with check option];
# 删除视图
drop view if exists <视图名>;

7.简单触发器的创建

#只有表才有触发器,视图不支持触发器
create
    [definer = { user | current_user }]
    trigger trigger_name
    trigger_time trigger_event
    on tbl_name for each row
    trigger_body
    #举个例子
create trigger trigger_student_count_insert
after insert on student_info for each row
update student_count #表名
set student_count=student_count+1;

猜你喜欢

转载自blog.csdn.net/mwl000000/article/details/108541502