一敲OneKnock
总有你不知道的

《数据库系统概论》总结

第一章 数据库系统概论

  • 描述事物符号的记录称为数据(DB)。
  • 数据库(DBS)是长期存储在计算机内的、有组织、可共享的数据集合。
  • 数据库管理系统(DBMS)和操作系统一样是计算机的基础软件。
  • 数据库系统是由数据库数据库管理系统应用程序数据库管理员组成的存储、管理、处理和维护数据的系统。

数据管理三个阶段:1.人工管理阶段 2.文件系统阶段 3.据库系统阶段

数据库系统特点:1.数据结构化  2.数据共享性高、冗余度低切易扩充  3.数据独立性高  4.数据由数据库管理系统统一管理和控制

  • 数据模型是数据库系统的核心和基础

两类数据模型:1.概念模型  2.逻辑模型和概念模型

实体:客观存在并可相互区别的事物称为实体。

属性:实体所具有的某一特性称为属性。

码:唯一表示实体的属性集称为码。

联系:实体间的联系有一对一、一对多多对多等多种类型。

常用的数据模型:层次模型  网状模型  关系模型

层次模型定义:

(1)有且只有一个节点没有双亲节点,这个节点称为根节点;

(2)根以外的其他节点有且只有一个双亲。

网状模型定义:

(1)允许一个以上的节点无双亲;

(2)一个节点可以有多于一个的双亲。

关系模型:

  • 元组:表中一行即为一个元组。
  • 属性:表中一列即为一个属性。

数据库系统的三级模式结构:1、模式  2、内模式 3、外模式

数据库的二级映像功能与数据独立性:

1、外模式/模式:保证了数据与程序的逻辑独立性

2、模式/内模式:保证了数据与程序物理独立性

数据库管理员的职责:①决定数据库中的信息内容和结构②决定数据库的存储结构和存取策略③定义数据的安全性要求和完整性约束条件④监控数据库的使用和运行⑤数据库的改进和重组、重构

第二章 关系数据库

传统的集合运算:并、差、交、笛卡尔积

两个关系R和S,这两个关系R∩S交、R∪S 并、R-S差运算的结果如图3-18

(R-S:取集合R中有的S中没有的集合元素)

 

 

 

 

笛卡尔积

计算两个关系R和S的笛卡尔积,R的元数为r,S的元数为s,则R×S是一个(r+s)元的元组集合,如下例所示:

选择

选择是根据某些条件对关系做水平切割,例如δ2 > ‘4’(R),表示从R中挑选第二个分量值(也就是R中B列的值)大于4的元组所构成关系。结果如下:

投影π

投影与选择正好相反,是对关系的一种垂直切割,消去某列,并重新安排列的顺序。投影用(π)表示。例如:π3,1(R)表示的结果如下:

连接

 

第三章 关系数据库标准语言SQL

主扩展名.mdf    日志扩展名.ldf

数据类型:字符型日期型逻辑型数值型

SQL基本语句

创建数据库:
create database database-name;

创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..);

例:创建学生选课表SC

create table SC

(sno char(9),

cno char(4),

grade smallint,

primary key (sno,cno),/*主码由两个属性构成,必须作为标记完整性进行定义*/

);

删除表:
drop table tabname;

增加一个列:
alter table tabname add column col type;

创建索

create [unique] index idxname on tabname(col….);

例:create unique index Stusno on student (sno desc);/*unique表明此索引的每一个索引值只对应唯一数据记录,desc降序,asc升序,默认asc*/

创建视图:create view viewname as select statement;

例:建立信息系学生视图

create view IS_Student

as

select sno,sname,sage

from Student

where sdept=’IS’

with check option;

/*加上with check option子句,以后对该视图进行插入、修改和删除操作时,关系数据库管理系统会自动加上sdept=’IS’*/

选择元组:select * from table1 where 范围
插入元组:insert into table1(field1,field2) values(value1,value2)
删除元组:delete from table1 where 范围
更新元组:update table1 set field1=value1 where 范围
查找元组:select * from table1 where field1 like ’%value1%’
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1

第五章 数据库完整性

实体完整性:

插入和修改可能会影响实体完整性。

在SQL中,只要声明了主码,会自动保证实体完整性。

primary key:(1)检查主码是否唯一,如果不唯一则拒绝插入或修改。

(2)检查主码的各个属性是否为空,只要有一个不为空就拒绝插入或修改。

参照完整性:

外删内插不会影响参照完整性。

保证参照完整性的措施:拒绝,级联,置空值,置缺省值。

在外码上插入和修改一般只能拒绝,但是在主码上删除和修改四种都可以。

foreign key:

create table sc

(sno char(9) not nul,

cno char(4)not null,

grade smallint,

primary key (sno,cno),/*在表级定义实体完整性*/

foreign key(sno)references student(sno),/*在表级定义参照完整性*/

foreign key(cno)references student(cno),/*在表级定义参照完整性*/

);

用户定义完整性:

元组上的约束条件:

例:Student表的Ssex只允许取“男”或“女”。
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(8) NOT NULL,
Ssex CHAR(2) CHECK (Ssex IN (‘男’,‘女’) ) ,
/*性别属性Ssex只允许取’男’或’女’ */
Sage SMALLINT,
Sdept CHAR(20)
);

Student表的Ssex只允许取“男”或“女”。
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(8) NOT NULL,
Ssex CHAR(2) CHECK (Ssex IN (‘男’,‘女’) ) ,
/*性别属性Ssex只允许取’男’或’女’ */
Sage SMALLINT,
Sdept CHAR(20)
);

CREATE TABLE Student
(Sno CHAR(9),
Sname CHAR(8) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20),
PRIMARY KEY (Sno),
CHECK (Ssex=’女’ OR Sname NOT LIKE ‘Ms.%’)
/*定义了元组中Sname和 Ssex两个属性值之间的约束条件*/
)

第六章 关系数据理论

第一范式(1NF):字段值具有原子性,不能再分(所有关系型数据库系统都满足第一范式); 例如:姓名字段,其中姓和名是一个整体,如果区分姓和名那么必须设立两个独立字段;

第二范式(2NF):一个表必须有主键,即每行数据都能被唯一的区分; 备注:必须先满足第一范式;

第三范式(3NF):一个表中不能包涵其他相关表中非关键字段的信息,即数据表不能有沉余字段; 备注:必须先满足第二范式;

第八章 数据库编程

计算s=1+2+3+…+100

declare @i int,@sum int
set @i=1
set @sum=0
while @i<=100
begin
set @sum=@sum+@i
set @i=@i+1
end
select @sum

计算s=1!+2!+3!+…+10!

declare @a int,@b int,@sum int
set @a=1
set @b=1
set @sum=0
while @b<=10
begin
set @sum=@sum+@a
set @b=@b+1
set @a=@a*@b
end
select @sum

部门编号转换部门名

select Employee_ID,Employee_Name,case
when Department_ID=’D001′ then ‘销售部’
when Department_ID=’D002′ then ‘市场部’
when Department_ID=’D003′ then ‘经理办’
when Department_ID=’D004′ then ‘仓储部’
else ‘其他’ end as 部门
from 员工关系

SQL Server字符串函数

计算字符串长度
len()用来计算字符串的长度:select sname ,len(sname) from student;

字符串转换为大、小写
lower() 用来将一个字符串转换为小写,upper() 用来将一个字符串转换为大写:

select lower(‘I AM A STUDENT !’);
select upper(‘i am a student !’);

截去字符串左、右侧空格
ltrim() 用来将一个字符串左侧的空格去掉 ,rtrim()用来将一个字符串右侧的空格去掉

declare @str varchar(100)
set @str=’ 我的左侧有空格!’
select @str as 初始字符, len(@str) as 初始长度,ltrim(@str) as 现有字符,len(ltrim(@str)) as 现有长度;

取子字符串
substring(string,start_position,length) 可以从任意位置取任意长度的子字符串,
left(string,length)  从左侧开始取子字符串
right(string,length)从右侧开始取子字符串

select substring(‘HelloWorld!’,6,6);
select left(‘HelloWorld!’ ,5);
select right(‘HelloWorld!’ ,6);

字符串替换
replace(string,要被替换的字符串,替换的字符串)

select replace(‘HelloWorld!’,’o’,’e’) ;结果为:HelleWerld!

返回字符串值的逆向值
reverse(string_expression)

select reverse(‘abc’); 结果为:cba

删除指定长度的字符,并在指定的起点处插入另一组字符
stuff(character_expression , start , length ,character_expression)
start 一个整数值,指定删除和插入的开始位置。
length 一个整数,指定要删除的字符数。

select stuff(‘abcdefg’,1,6,’Hello ‘); 结果为:Hello g

以指定的次数重复字符串值
replicate(string_expression ,integer_expression)

select replicate(‘abc’,4); 结果为:abcabcabcabc

得到字符的ASCII码
ascii()用来得到一个字符的ASCII码,它有且只有一个参数,如果参数为字符串,那么取第一个字符的ASCII码

select ascii(‘H’);
select ascii(‘HelloWorld!’);
Like
Like Love Haha Wow Sad Angry
1
转载请署名作者:一敲 » 《数据库系统概论》总结
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

一只鸽子 已经飞到了前头

Github微博