数据库简单笔记 -- 全

数据库简单笔记–大二上学期期末复习总结

  • 第一章 模式 数据库 数据

1.外模式:保证了数据的逻辑独立性
内模式:保证了数据的物理独立性
例子:要保证数据库的逻辑独立性,需要修改的是模式与外模式。
数据的逻辑独立性是指模式改变,外模式和应用程序不变。
3.设有关系模式 EMP(职工号,姓名,年龄,技能)。假设职工号唯一,每个职工有多项技能,则EMP 表的主码是(职工号,技能)。
4.在数据库三级模式中,模式的个数只有1个。
5.三级模式是对数据库中数据的三个抽象级别,两级映象是在DBMS内部实现这三个抽象层次的联系和转换。
6.数据定义语言–DDL;
数据操作语言–DML。
例子:数据库管理系统能实现对数据库中数据的查询、插入、修改和删除等操作的数据库语言称为数据操纵语言( DML )。
7.数据库的特点是:
A、数据结构化 ,数据之间具有联系,面向整个系统。
B、数据的共享性高,冗余度低,易扩充 。
C、数据独立性高 。
D、数据由DBMS统一管理和控制。

  • 第二章 键 关系代数

1.数据库中的键
A、超键:由超键的定义可知,在学生表中含有学号或者身份证号的任意组合都可以唯一标识一个学生,那么它们就是此表的超键。
如:(学号)、(身份证号)、(学号,姓名)、(身份证号,性别)等。
B、候选键:候选键属于超键,它是最小的超键,就是说如果再去掉候选键中的任何一个属性它就不再是超键了。
如:对于(学号、姓名)来说,去掉姓名后仍是一个超键,那么它就不是候选键。其中,学生表中的候选键为:(学号)、(身份证号),主属性就是学号、身份证号。
C、主键:主键就是候选键里面的一个,用户可以选择。
如:那么在这里我们选择(学号)作为学生表的主键。
D、超关键字:二维表中,能够惟一确定记录的一个字段或几个字段的组合被称为“超关键字”。“超关键字”虽然能唯一确定记录,但是它所包含的字段可能是有多余的。

2.数据库完整性:是指保护数据库中数据的正确性、有效性和相容性,防止错误数据进入数据库造成无效操作。
3.关系数据模型的完整性约束分为四类:
A、域完整性约束
B、实体完整性约束:主码不能取空值
C、参照完整性约束(或引用完整性约束):外码存在、取空值
D、用户自定义的完整性约束:制定取值范围
4.并、差、笛卡尔积、选择、投影为5中基本运算。
5.逻辑独立性:在关系数据库系统中,当关系的类型改变时,用户程序也可以不变。
6.四种连接:
A、θ连接:在关系代数中,从两个关系的笛卡尔积中选取它们属性间满足一定条件的元组的操作。
例子:记作S⋈R(AθB)
其中:A为包含R中的属性的表达式,B为包含S中的属性的表达式,θ通常为关系比较符。
B、自然连接:从两个关系的广义笛卡尔积中选取在相同属性列B上取值相等的元组,并去掉一个重复的属性列B 。
C、广义笛卡尔积:属性A+B,元组A*B。
D、等值连接:两个值相等,但是不一定是同一属性。
7.θ在“=”时的连接为等值连接。

  • 第三章 SQL语句

1.SQL语句

GROUP BY group_by_expression  --分组统计
HAVING search_condition       --满足条件的组才输出
ORDER BY order_expression [ASC | DESC]  --对查询结果排序

2.ESCAPE ‘\’ 表示“ \” 为换码字符
例子:
查询DB_Design课程的课程号和学分。

  SELECT Cno,Ccredit
  FROM    Course
  WHERE Cname LIKE 'DB\_Design' ESCAPE ' \ ' 

3.外连接:
左外连接 ※=
右外连接 =※
4.并操作:
UNION:将多个查询结果合并起来时,系统自动去掉重复元组。
UNION ALL:将多个查询结果合并起来时,保留重复元组。
5.SQL关于基本表的操作
A、定义基本表:

CREATE TABLE <表名><列名> <数据类型>[ <列级完整性约束条件> ]
  [<列名> <数据类型>[ <列级完整性约束条件>] ][<表级完整性约束条件> ] );

B、修改基本表:

ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ]
[ DROP <完整性约束名> ]
[ ALTER COLUMN<列名> <数据类型> ]

C、删除基本表:

DROP TABLE <表名> [RESTRICT | CASCADE];
RESTRICT:删除表是有限制的。

欲删除的基本表不能被其他表的约束所引用
如果存在依赖该表的对象,则此表不能被删除
CASCADE:删除该表没有限制。
在删除基本表的同时,相关的依赖对象一起删除
D、在xscj库的xsqk表中增加一个“email”列,类型为varchar(30);

Alter table xsqk 
  Add email vachar(30)

6.关于单个元组的操作
A、插入单个元组:

INSERT INTO <表名>[(<列名1>[,<列名2>])] VALUES(<>)

B、修改数据:

UPDATE <表名>
SET <列名>=<表达式> [,<列名>=<表达式>][WHERE <条件>]

C、删除数据:

DELETE  FROM <表名>
[WHERE <条件>]

7.创建索引:

CREATE [UNIQUE] [CLUSTERED] INDEX <索引名> ON <表名> (<列名> [次序] [{,<列名>}] [次序])

8.显然在一个基本表上最多只能建立一个聚簇索引。
9.创建视图:

 CREATE VIEW view_name [(column_name [,...n])]
AS 
    select_statement 
[WITH CHECK OPTION]

10.视图作用:
A、数据库视图隐藏了数据的复杂性。
B、数据库视图有利于控制用户对表中某些列的访问。
C、数据库视图使用户查询变得简单。
11.在视图上不能完成的操作是在视图上定义新表。

  • 第四章 安全性

1.自主存取控制
通过 SQL 的 GRANT 语句和 REVOKE 语句实现

GRANT <权限>[,<权限>]... 
    [ON <对象类型> <对象名>]
    TO <用户>[,<用户>]...
    [WITH GRANT OPTION];   --可传播该权限

2.回收授权

REVOKE <权限>[,<权限>]... 
    [ON <对象类型> <对象名>]
    FROM <用户>[,<用户>]...
    [CASCADE];             --级联操作

3.角色创建

CREATE  ROLE  <角色名>
  • 第五章 触发器

1.建立触发器:

CREATE TRIGGER 触发器名称
ON 表名
{ FOR | AFTER | INSTEAD OF } 
{ [ INSERT ] [ , ] [ DELETE ] [ , ] [UPDATE ] }
AS 
    SQL 语句 [ ... n ] 
  • 第六章 数据库完整性

1.数据库完整性
完整性约束的例子:
例:建立学生登记表Student,要求学号在900~999之间,姓名不能取空值,年龄小于30,性别只能是“男”或“女”。

CREATE TABLE Student
    (Sno  NUMERIC(6)
       CONSTRAINT StudentKey PRIMARY KEY
       CONSTRAINT C1 CHECK (Sno BETWEEN 900 AND 999),
     Sname  CHAR(20)  
       CONSTRAINT C2 NOT NULL,
     Sage  NUMERIC(3)
       CONSTRAINT C3 CHECK (Sage < 30),
     Ssex  CHAR(2)
       CONSTRAINT C4 CHECK (Ssex IN ( '男''女'))
  )  

2.修改表中的完整性限制
先删除原来的约束条件,再增加新的约束条件。
例:修改表Student中的约束条件,要求学号改为在0000~9999之间,年龄由小于30改为小于40。

ALTER TABLE Student  DROP CONSTRAINT C1;
ALTER TABLE Student  ADD CONSTRAINT C1 CHECK (Sno BETWEEN 0000 AND 9999);
ALTER TABLE Student  DROP CONSTRAINT C3;
ALTER TABLE Student  ADD CONSTRAINT C3 CHECK (Sage < 40);

3.关于<规则>的SQL语句
A、创建语法格式:

create rule 规则名
      as 条件表达式

例1:在student数据库中定义1个规则,限制联系电话的格式为“(区号)电话号码”,其中区号为4位,电话号码至少为6位 。

 use  student
   go
  create     rule     电话号码格式
   as    @电话号码    like     ' (_ _ _ _)_ _ _ _ _ _ % ' 

B、绑定语法规格式:

exec sp_bindrule 规则名,‘表名.列名’

例2:将名为“ro_电话格式”的规则绑定到student表的“联系电话”列上。

exec sp_bindrule ro_电话格式,‘student.联系电话’

C、用系统存储过程解除绑定格式:

exec sp_unbindrule‘表名.列名’

D、删除规则语法格式:

drop rule 规则名[,…n] 

例3:删除xscj库中的规则。

drop rule ro_电话格式

总体示例:

CREATE RULE age_rule as @Sage>=15 and @Sage<=50
EXEC sp_bindrule 'age_rule', 'Student.Sage'
EXEC sp_unbindrule 'Student.Sage'
DROP RULE age_rule

规范小结:
规则对象
创建规则:create rule 规则名 as 条件表达式
绑定规则:[exec] sp_bindrule 规则名, ‘表名.列名’
解除规则:[exec] sp_unbindrule ‘表名.列名’
删除规则:drop rule 规则名[,…n]

  • 第七章 范式

1.关系的属性是原子的(不可分的),这样的关系模式就属于1NF。
若R属于1NF,且每个非主属性完全函数依赖于关键字,则R属于2NF。
若R属于2NF,且R的每个非主属性都不传递依赖于关键字,则R属于3NF。

  • 第八章 设计数据库

1.需求分析
2.概念结构设计:绘制E-R图
3.逻辑结构设计:将E-R图转换为关系表、设计关系模式。
4.数据库的物理设计:存取方法设计
5.数据库的实施和维护

  • 第九章 存储过程

1.创建存储过程

CREATE PROC | PROCEDURE  procedure_name
[ @parameter ] data_type 
[ = default ] [ OUT | OUTPUT ] ] [ ,...]
[ WITH ENCRYPTION ]
AS
BEGIN
<sql_statement> [ ,... ] 
END
--执行存储过程
[EXECUTE | EXEC] proc_name

例子:通过某一位用户的姓名的一部分查知该用户的信息

CREATE PROC pr_queryphone  @name  char(10)
AS  SELECT * FROM user
where username like%+@name+%’
    Eexe pr_queryname ‘张’
  • 第十章 数据库恢复

1.事务的定义方式
显式定义方式:

 BEGIN TRANSACTION
      SQL 语句1                             
       。。。。。                                     
 COMMIT ( 或 ROLLBACK)

2.事务的四个特性
原子性:原子性是指事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
隔离性:一个事务的执行不能被其他事务干扰。
持久性:一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
3.介质故障:若系统在运行过程中,由于某种硬件故障,使存储在外存上的数据部分损失 或全部损失,这种情况称为介质故障。

  • A、 登记的次序严格按并发事务执行的时间次序。 B、 必须先写日志文件,后写数据库。
    5.数据库恢复的基础是利用转储的冗余数据。这些转储的冗余数据是指日志文件、数据库后备副本。
  • 第十一章 并发控制

1.问题的产生
A、丢失修改:
两事务读出同一数据并修改,先写回的数据修改丢失。
B、读出脏数据:
事务T1修改某一数据,事务T2读取同一数据;
事务T1由于某种原因被撤消,则T2读到的就是“脏”数据。
C、不可重复读:
事务T1读取某一数据,事务T2读取并修改了同一数据;
事务T1为了对读取值进行校对再读此数据,得到了不同的结果。

2.封锁
A、排它锁(简记为X锁,又称写锁):若事务T对数据对象R加上X锁,则只允许T读/写R,禁止其它事务对R加任何锁,相应地其它事务就无法读/写对象R。
B、共享锁(简记为S锁,又称读锁):若事务T对数据对象R加上S锁,则T可以读R,但不可以写R,且其它事务可以对R加S锁、但禁止加X锁。这保证了事务T在释放R的S锁之前,其它事务只可以读R,不可以修改R。

3.两段锁的含义:
1)第一阶段(扩展阶段):所有事务对数据加锁,但不能解锁;
2)第二阶段(收缩阶段):所有事务对数据解锁,但不能加锁。

补充

1.最小关系系统:

在这里插入图片描述
最完备的关系系统:

在这里插入图片描述

2.数据库的网状模型应满足的条件是( ) A.允许一个以上结点无双亲,也允许一个结点有多个双亲

3.如何构造出一个合适的数据逻辑结构是( )主要解决的问题。关系数据库规范化理论.

发布了6 篇原创文章 · 获赞 5 · 访问量 638

猜你喜欢

转载自blog.csdn.net/ZUO_HE1/article/details/103852439