首页 > 代码库 > 数据库原理概论

数据库原理概论

 

第一章

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 SyearFROM 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 StudentWHERE 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 SnoFROM SCGROUP BY Sno HAVING COUNT(*) >= 3 
View Code

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

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

 

数据库原理概论