数据库原理概论

Posted 王家小西

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库原理概论相关的知识,希望对你有一定的参考价值。

 

第一章

1.数据库的四个基本概念

(1)数据(Data): 数据是信息的符号化表示 

(2)数据库(Database/DB) ?长期存储在计算机内的有组织的、可共享大量 数据的集合。 

(3)数据库管理系统(Database Management System/DBMS):组织、存储、维护和获取数      据库中数据的软件系统,是介于数据库用户和操作系统之间的数据管理软件。(sql            sever,mysql,Oracle;MongoDB)

(4)数据库系统(Database System/DBS): 在计算机系统中引入数据库后的系统,

包括: 1. 数据库、数据库管理系统、各种开发工具 2.数据库应用系统、计算机硬件及其他软件 3. 数据库管理员DBA (Database Administrator)、用户

2.数据管理技术的三个阶段 ?人工管理阶段 (数据不保存,不共享)文件系统阶段 (长期保存共享性差,不安全)?数据库系统阶段。

3.数据结构化:不仅能反映数据本身,而且还能反映数据之间的联系

数据独立性(数据与应用程序之间相互依赖程度) :包括逻辑独立性(它改变了也不改变用户程序)和物理独立性(它改变了也不改变应用程序);

4.三级模式:内模式(物理模式)、模式(逻辑模式)、外模式(用户模式);

二级映像:模式/内模式映像(物理独立性);外模式/模式(逻辑模式)

5.模型: 对客观事物进行模拟和抽象的工具 

数据模型:对客观世界中的数据特征进行抽象的工具,包括:

概念模型:按用户的观点来对数据和信息建模,用于数据库设计,包括层次模型、网状模型、关系模型、面向对象模型等。 

逻辑模型:按计算机系统的观点对数据建模,用于DBMS 实现。

 物理模型:在磁盘或磁带上的存储方式和存取方法

6.数据模型三要素:数据结构,数据操作,数据完整性约束(? 实体完整性 ? 参照完整性 ? 用户定义的完整性 )。

7. 码(Key):唯一标识实体的属性集

域(Domain):属性的取值范围

实体型(Entity Type):用实体名和属性名来抽象和描述实体的框架

实体集(Entity Set):同一类型实体的集合

联系(Relationship):一对一,一对多,多对多

 

 

第二章

关系代数:并(∪) ? 交(∩) ? 差(-) ? 笛卡尔积(×) 专门的关系运算 ? 选择(σ) ? 投影(Π) ? 连接( ?) ? 除(÷)

(并(∪) ? 交(∩)笛卡尔积(×) 选择(σ) ? 投影(Π)不能被推导出)

例1:查询所有学生的学号、姓名及其选修的课程的课号、 课名与成绩。 

??????????????.??????,??????????,????????????.??????,??????????,?????????? ((?????????????? ? ????)                       ? ????????????))
                                                            ??????????????.?????? = ????.??????      ????.?????? = ????????????.??????

例2:查询与刘晨在同一个系的学生的学号与姓名。 

 Π??2.??????,??2.??????????(????1.??????????=′刘晨′???2.??????????≠′刘晨′(?????????????? ?Student)

                        ??1.?????????? = ??2.??????????

例3:查询同时选修了1号课程和3号课程的学生的学号。 

Π??????, ??????(????) ÷ Π??????(????????=1???????=3(????????????) )

例4:查询同时选修了所有课程的学生的姓名。 

Π??????????(Π??????, ??????(????) ÷ Π??????(????????????) ? ??????????????)

例5:至少选修了刘晨所选全部课程的学生信息。 

(Π??????, ?????? ???? ÷ Π?????? ????????????=′刘晨′ ?????????????? ? ???? ) ? ??????????????

例6:查询没有被所有学生选修的课程的课名。 

Π??????????((Π?????? ???????????? -Π??????, ?????? ???? ÷ Π?????? ?????????????? ) ? ????????????)

 

第三章SQL

建立Student表

技术分享
CREATE TABLE Student(
Sno char(9) PRIMARY KEY,

Sname varchar(20) UNIQUE,

Ssex char(2) NOT NULL,

Sage smallint  CHECK(Sage>15 and Sage<30),

Sdept char(20)

);
View Code

 

建立课程表Course

技术分享
CREATE TABLE Course(

Cno char(10) PRIMARY KEY,

Cname varchar(40),

Cpno char(10),

Ccredit smallint,

FOREIGN KEY(Cpno) REFERENCES Course(Cno)//Cpno为外码,被参照表为Course,被参照列是Cno

);
View Code

 

向Student 表中增加“民族(Snation)”列,6位字符。

技术分享
ALTER TABLE Student ADD Snation varchar(6);
View Code

 

 

将 Snation 列的数据类型改为 varchar,8位字符。

技术分享
ALTER TABLE Student ALTER COLUMN Snation varchar(8);
View Code

 

删除 Snation 列。

技术分享
ALTER TABLE Student DROP COLUMN Snation 
View Code

 

删除Student 表

技术分享
DROP TABLE Student; 
View Code

 

注意:若基本表被其他基本表中的外键约束所引用,则在此外键约束被删 除之前,基本表无法被删除。

 查询全体学生的学号、姓名和出生年份并使用别名。 

技术分享
SELECT Sno, Sname, 2016-Sage AS Syear
FROM Student
View Code

 

查询所有系名

技术分享
SELECT DISTINCT Sdept FROM Student
View Code

 

 字符串匹配通配符

? %(百分号):表示零个、一个或多个任意字符。

? _(下划线):表示任意单个字符。

? [](方括号):表示指定范围([a-f])或集合([abcdef])中的 任意单个字符。 ?

[^]:表示不属于集合([abcdef])中的任意 单个字符。

? [\]:转义字符,用于去掉一些特殊字符的特定含义,使其被作为普通字符看待,如用“\%”表示字符%,用“\_”表示字符_。 

 查询所有姓名最后一个字为“晨”字的学生的信息。

技术分享
SELECT * FROM Student WHERE Sname LIKE%晨’;
View Code

 

查询所有姓名最后一个字为“晨”字,且姓名为两个字的学生的信息。

技术分享
SELECT * FROM Student WHERE Sname LIKE ‘_晨’; 
View Code

 

 

查询所有叫“张小民”或“张大民”的学生的信息。

技术分享
SELECT * FROM Student WHERE Sname LIKE ‘张[小大]民’;
View Code

 

 查询学号从95001 至95005 及95007 与95009的学生的信息

技术分享
SELECT * 
FROM Student
WHERE Sno LIKE9500[1-579]’;
View Code

 

注意 <> 为不等于,升序:ASC;降序:DESC

查询全体学生信息,查询结果按所在系的系升序排列,同 一系中的学生按年龄降序排列。 

技术分享
SELECT * FROM Student ORDER BY Sdept ASC, Sage DESC
View Code

聚集函数 计数 ?COUNT()  求和 ? SUM()  求平均值 ? AVG()  求最大最小值 ? MAX() ? MIN() 

查询选修了课程的学生的人数

技术分享
SELECT COUNT(DISTINCT Sno) 
FROM SC
View Code

查询选修了3 门以上课程的学生的学号。 

技术分享
SELECT Sno
FROM SC
GROUP BY Sno 
HAVING COUNT(*) >= 3 
View Code

 WHERE: ?用于在基本表或视图中选择满足条件的元组。

HAVING: ?用于在 GROUP BY 子句分的组中选择满足条件的 组。 

 

以上是关于数据库原理概论的主要内容,如果未能解决你的问题,请参考以下文章

编译原理概论 01 190904

Atitit 编程语言原理与概论attilax总结

数据库原理概论

Atitit.数据检索与网络爬虫与数据采集的原理概论

Atitit 编程语言原理与概论attilax总结 三大书籍总结

Atitit.可视化与报表原理与概论