赞
踩
描述事物的符号记录,数据与其语义是不可分的。
数据库是长期存储在计算机内、有组织的、可共享的长期存储大量数据的集合。
数据库中数据基本特点:永久存储、有组织和可共享三个基本特点。数据库中数据都是按照某一种数据模型来组织、描述和存储的。数据独立性高。
科学地组织和存储数据,高效的获取和维护数据。
是位于用户和操作系统之间的一层数据管理软件
主要功能:
数据库系统是由数据库DB、数据库管理系统DBMS(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统
对数据进行分类、组织、编码、存储、检索和维护,它是数据处理的中心问题。数据处理是指对各种数据进行收集、存储、加工和传播的一系列活动的总和。
人工管理阶段、文件系统阶段、数据库系统阶段
特点 | 人工管理阶段 | 文件系统阶段 | 数据库系统阶段 |
---|---|---|---|
管理者 | 程序员 | 文件系统 | 数据库管理系统 |
数据面向对象 | 某一应用程序 | 某一应用 | 部门企业 |
数据的共享程度 | 无共享,冗余度极大 | 共享性差,冗余度答 | 共享性高,冗余度低 |
数据独立性 | 不独立 | 独立性差 | 具有高度的物理独立性和一定的逻辑独立性 |
数据结构化 | 无结构 | 记录内有结构、整体无结构 | 整体结构化,用数据模型描述 |
数据控制能力 | 应用程序自己控制 | 应用程序自己控制 | DBMS提供数据安全性、完整性、并发控制和恢复能力 |
数据结构化(与文件系统的本质区别)
共享性高,冗余度低且易扩展
数据独立性高(独立性指应用程序与逻辑结构、物理存储相互独立)
不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序
数据统一管理和控制
数据的安全性保护,数据的完整性检查,并发控制和数据库的恢复
数据模型是数据库用来对现实世界进行抽象的的工具,是数据库中用于提供信息表示和操作手段的形式框架
数据模型的数据库系统的核心和基础
表示方法,实体-联系方法,该方法用E-R 图来描述现实世界的概念模型,E-R方法也称为E-R 模型
实体
客观存在并可相互区别的事务称为实体(人、物)
属性
实体所具有的某一特性称为属性
码
唯一标识实体的属性集称为码
实体型
用实体名及其属性集合来抽象和刻画同类实体,称为实体性
实体集
同一类型实体的集合称为实体集
联系
实体之间的联系通常是指不同实体集之间的联系
数据结构
描述数据库的组成对象以及对象之间的联系
数据操作(增删改查)
数据操作是指对数据库中各种对象型的实例值允许执行的操作的几个,包括操作及有关的操作规则
数据的完整性约束条件
数据的完整性约束是一族完整性的规则
像一颗倒立的树,结点的双亲是唯一的
有且只有一个结点没有双亲结点,这个结点称为根结点
根以外的其他结点有且只有一个双亲结点两个条件的记录以及它们之间联系的集合为层次模型
优点:
缺点:
典型的代表是DBTG 系统
特点
优点:
缺点:
特点
优点:
缺点:
存取路径隐蔽,导致查询效率不高,为了提升性能,DMBS必须对用户查询请求进行优化
模式是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及型(type)的描述,不涉及具体的值。模式的一个具体值称为模式的一个实例。
模式、外模式、内模式
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图
外模式也称用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述。是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
一个数据库可以有多个外模式。即使对模式中的同一种数据,在外模式的结构中,类型,长度,保密级别都可以不同
也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
索引的组织方式
B+树,Bitmap,Hash
记录的存储方式
顺序存储,堆存储,按hash 方法存储
数据是否压缩、数据是否加密
数据存储记录的规定——数据的长度
在数据库系统中,通常用三级模式来描述数据库,其中外模式是用户与数据库的接口,是应用程序可见到的数据描述,概念模式是对数据整体的逻辑结构的描述,而内模式描述了数据的物理结构
外模式/模式映像
模式改变,对映象做修改,可以保证外模式不变,保证了逻辑独立性。
保证数据的逻辑独立性
当模式改变时,数据库管理员对外模式/模式映像作相应改变,使外模式保持不变
应用程序是依据数据的外模式编写的,应用程序不必修改与程序的逻辑独立性,简称数据的逻辑独立性
有一个外模式/模式映像定义外模式与模式之间的对应关系,映像定义通常包含在个外模式的描述中
模式/内模式映象
内模式改变(数据库的存储结构改变),对映象做修改,可以保持模式不变,保证了物理独立性。
按照数据模型三要素,关系模型由数据结构、关系操作集合和关系完整性约束三部分组成
acid 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability).
关系模型的数据结构非常简单,只包含单一的数据结构——关系
关系是关系模式某一时刻的内容或状态
关系在域上D笛卡尔积的子集
关系可以有三种类型:基本关系(基本表)、查询表、试图表。
域
域是一组具有相同数据类型的值的集合
笛卡尔积
给定一组域 D 1 , D 2 , D 3 , D n 的笛卡尔积为 D 1 ∗ D 2 ∗ D 3 = { d 1 , d 2 , d n } 给定一组域D_1,D_2,D_3,D_n的笛卡尔积为D_1*D_2*D_3=\{d_1,d_2,d_n\} 给定一组域D1,D2,D3,Dn的笛卡尔积为D1∗D2∗D3={ d1,d2,dn}
每一个元素 ( d 1 , d 2 , d 3 ) 叫做一个元组,每一个元素中的每一个值 d i 叫做一个分量 (d_1,d_2,d_3)叫做一个元组,每一个元素中的每一个值d_i叫做一个分量 (d1,d2,d3)叫做一个元组,每一个元素中的每一个值di叫做一个分量
一个域允许的不同取值个数称为这个域的基数
有6 条性质
关系的描述称为关系模式 ,可形式化的表示为R(U,D,DOM,F)
其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映象集合,F为属性间数据的依赖关系集合。
组成部分
关系数据库:关系数据库也有型和值之分,型是关系模式,是对关系数据库的描述。值是关系模式在某一时刻对应的关系集合。
区别
关系模式是型;关系是值,是关系模式的实例。
例如S(num,name,age)是关系模式,组成的表是关系,即某一时刻关系模式的值
在数据库学科中可以把关系模式理解为表的结构、属性之间的关系、约束条件,把关系理解为二维表
查询操作: 选择、投影、连接、除、并、差、交、笛卡尔积
选择、投影、并、差、笛卡尔积是五种基本操作
数据更新:插入、删除、修改
关系代数是用关系的运算来表达查询要求,代表:ISBL;
关系演算语言用谓词来表达查询要求;关系演算又可按照谓词变元的基本对象是元组变量还是域系变量分为元组关系演算和域关系演算
具有关系代数和关系演算双重特点的语言;
代表:SQL(Structured Query Language) ;
若属性A是基本关系R的主属性,则属性A不能取空值
外码
,即该码是另一个表的主码。参照关系
(Referencing Relation),即本表。被参照关系
(Referenced Relation) 或目标关系
(Target Relation),即外码对应的主码所在的表。若属性F是基本关系R的外码,它与基本关系S的主码K相对应,则对R中的每个元组在F上的值,必须为空值或者S中某个元组的主码值
若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
或者取空值(F的每个属性值均为空值)
或者等于S中某个元组的主码值
外码的值要么为空,要么为S中某个元组的主码值
例2
例3
关系代数运算是以集合运算为基础的运算
举例
举例
R和S 具有相同的元数,且对应的属性的类型也相同
下面是RxS的结果,R和S使用上图中的R,S
即属于R又属于S的元组(行)组成
举例
选择出满足条件的元组的操作叫做选择
选择A2值为a或b的元祖
关系R上的投影是从R上选择出若干属性列出组成新的关系
连接也被 θ 连接,它是从两个关系的笛卡尔积中选取属性满足一定条件的元组 连接也被\theta 连接,它是从两个关系的笛卡尔积中选取属性满足一定条件的元组 连接也被θ连接,它是从两个关系的笛卡尔积中选取属性满足一定条件的元组
连接运算中有两种最重要也是最为常用的连接,一种是等值连接,一种是自然连接
θ 为 " = " 的连接运算称为等值连接 \theta 为"=" 的连接运算称为等值连接 θ为"="的连接运算称为等值连接
从广义笛卡尔积中选取A,B 属性值相等的那些元组
自然连接是一种特殊的等值连接
要求两个关系中进行比较的分量必须是同名的属性,且在结果中把重复的属性列去掉
设关系R除以关系S的结果为关系T,则T包含所有在R但不在S上的属性及其值,且T的元组与S的元组的所有组合都在R中
① 综合统一
② 高度非过程化
③ 面向集合的操作方式
④ 以同一种语法结构提供多种使用方式
⑤ 语言简洁,易学易用
SQL功能 | 动词 |
---|---|
数据查询 | SELECT |
数据定义 | CREATE、DROP、ALTER |
数据操纵 | INSERT、UPDATE、DELETE |
数据控制 | GRANT、REVOKE |
基本表
存储文件
视图
数据字典
是关系数据库管理系统内部
的一组系统表
,它记录了数据库中所有的定义信息,包括关系模式定义、视图定义、索引定义、完整性约束定义、各类用户对数据库的操作权限、统计信息等
。
没有那种数据库支持所有的sql和特性
SQL的数据定义功能: 模式定义
、表定义
、视图
和索引
的定义
定义模式实际上定义了一个命名空间
空间
中可以定义
该模式
包含的数据库对象
,例如基本表
、视图
、索引
等。CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]
dbo database owner 数据库的创建者,创建该对象的用户. guest 顾客 能够访问数据库中对象的数据, 要求dbo分配权限给guest, 一般给他查看的权限select
[例1]定义一个学生-课程模式S-T
CREATE SCHEMA "S-T" AUTHORIZATION BitHachi; -- 为用户BitHachi定义了一个模式S-T
CREATE SCHEMA AUTHORIZATION BitHachi;-- <模式名>隐含为用户名BitHachi 这个不知道咋回事,没出结果,默认模式BitHachi没创建出来,没显示
[例2]为用户BitHachi创建了一个模式S-T,并在其中定义了一个表TAB1。
CREATE SCHEMA "S-T" AUTHORIZATION BitHachi
CREATE TABLE TAB1(
COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2)
);
DROP SCHEMA <模式名> <CASCADE|RESTRICT>
CASCADE(级联)
RESTRICT(限制)
DROP SCHEMA "S-T" CASCADE;
DROP SCHEMA "S-T" RESTRICT;
CREATE TABLE <表名>(
<列名> <数据类型>[ <列级完整性约束条件> ]
[,<列名> <数据类型>[ <列级完整性约束条件>] ]
………
[,<表级完整性约束条件> ]
);
如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。
域
的概念用数据类型
来实现属性
时 需要指明其数据类型及长度
ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ]
[ DROP <完整性约束名> ]
[ ALTER COLUMN<列名> <数据类型> ];
[例8]向Student表增加“入学时间”列,其数据类型为日期型。
ALTER TABLE Student ADD S_entrance DATE;
[例9]将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
ALTER TABLE Student ALTER COLUMN Sage INT;
[例10]增加课程名称必须取唯一值的约束条件。
ALTER TABLE Course ADD UNIQUE(Cname);
标准格式:
DROP TABLE <表名>[RESTRICT| CASCADE];
RESTRICT
:删除表是有限制的。
CASCADE
:删除该表没有限制。
[例11] 删除Student表
基本表定义被删除,数据被删除
表上建立的索引、视图、触发器等一般也将被删除
还是和上述删除模式情况一样,加了CASCADE和RESTRUCT删除不了
DROP TABLE Student CASCADE ;
[例12]若表上建有视图,选择RESTRICT时表不能删除
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept='IS';
DROP TABLE Student RESTRICT;
456
--ERROR: cannot drop table Student because other objects depend on it
[例12]如果选择CASCADE时可以删除表,视图也自动被删除
DROP TABLE Student CASCADE;
--NOTICE: drop cascades to view IS_Student
SELECT * FROM IS_Student;
--ERROR: relation " IS_Student " does not exist
建立索引的目的:·加快查询速度·
CREATE INDEX
语句定义索引时,可以定义索引是唯一索引、非唯一索引或聚簇索引
语句格式
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
[例13]
CREATE CLUSTERE INDEX Stusname ON Student(Sname);
聚簇索引
[例14]为学生-课程数据库中的Student,Course,SC三个表建 立索引。
CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
DROP INDEX <索引名> ON <表名>;
DROP INDEX <表名>.<索引名>;
[例15] 删除Student表的Stusname索引
DROP INDEX Stusno ON Student;
//等价
DROP INDEX Student.Stusno;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7DTPCznk-1648358301002)(https://gitee.com/fakerlove/picture_1/raw/master/20200329000307604.png)]
先从整体上了解一下SELECT的格式,关键字的位置。
SELECT [ALL|DISTINCT]
<目标列表达式> [别名] [ ,<目标列表达式> [别名]] …
FROM <表名或视图名> [别名] [ ,<表名或视图名> [别名]] …
[WHERE <条件表达式>]
[GROUP BY<列名1>
[HAVING <条件表达式>]]
[ORDER BY <列名2> [ASC|DESC]
4567
查询指定列
[例1] 查询全体学生的学号与姓名。
SELECT Sno,Sname
FROM Student;
[例2] 查询全体学生的姓名、学号、所在系。
SELECT Sname,Sno,Sdept
FROM Student;
12
[例3] 查询全体学生的详细记录。
SELECT Sno,Sname,Ssex,Sage,Sdept
FROM Student;
//两种方式
SELECT *FROM Student;
4
SELECT子句的<目标列表达式>可以为:
[例4] 查全体学生的姓名及其出生年份。这里假定目前年份是2004年。
SELECT Sname,2004-Sage
FROM Student;
[例5] 查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名,这里假定目前年份是2004年。
SELECT Sname,'Year of Birth: ', 2004-Sage, LOWER(Sdept)
FROM Student;
SELECT Sname NAME,'Year of Birth: ' BIRTH,
2000-Sage BIRTHDAY,
LOWER(Sdept) DEPARTMENT
FROM Student;
SELECT Sno FROM SC;
/*等价于:*/
SELECT ALL Sno FROM SC;
[例6] 查询选修了课程的学生学号。指定DISTINCT
关键词,去掉表中重复的行
SELECT DISTINCT Sno
FROM SC;
查询条件 | 谓词 |
---|---|
比较 | =,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比较运算符 |
确定范围 | BETWEEN AND,NOT BETWEEN AND |
确定集合 | IN,NOT IN |
字符匹配 | LIKE,NOT LIKE |
空值 | IS NULL,IS NOT NULL |
多重条件(逻辑运算) | AND,OR,NOT |
[例7]查询计算机科学系全体学生的名单。
SELECT Sname
FROM Student
WHERE Sdept='CS';
[例8] 查询所有年龄在20岁以下的学生姓名及其年龄。
SELECT Sname,Sage
FROM Student
WHERE Sage < 20;
[例9]查询考试成绩有不及格的学生的学号。
SELECT DISTINCT Sno
FROM SC
WHERE Grade<60;
谓词:
BETWEEN … AND …
NOT BETWEEN … AND …
[例10] 查询年龄在20~23岁(包括20岁和23岁)之间的学生的
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage
BETWEEN 20 AND 23;
[例11] 查询年龄不在20~23岁之间的学生姓名、系别和年龄
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 23;
谓词:
IN <值表>,
NOT IN <值表>
[例12]查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
SELECT Sname,Ssex
FROM Student
WHERE Sdept IN ( 'IS','MA',
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。