数据库基础知识个人整理版.docx

上传人:b****1 文档编号:519327 上传时间:2023-04-29 格式:DOCX 页数:36 大小:54.35KB
下载 相关 举报
数据库基础知识个人整理版.docx_第1页
第1页 / 共36页
数据库基础知识个人整理版.docx_第2页
第2页 / 共36页
数据库基础知识个人整理版.docx_第3页
第3页 / 共36页
数据库基础知识个人整理版.docx_第4页
第4页 / 共36页
数据库基础知识个人整理版.docx_第5页
第5页 / 共36页
数据库基础知识个人整理版.docx_第6页
第6页 / 共36页
数据库基础知识个人整理版.docx_第7页
第7页 / 共36页
数据库基础知识个人整理版.docx_第8页
第8页 / 共36页
数据库基础知识个人整理版.docx_第9页
第9页 / 共36页
数据库基础知识个人整理版.docx_第10页
第10页 / 共36页
数据库基础知识个人整理版.docx_第11页
第11页 / 共36页
数据库基础知识个人整理版.docx_第12页
第12页 / 共36页
数据库基础知识个人整理版.docx_第13页
第13页 / 共36页
数据库基础知识个人整理版.docx_第14页
第14页 / 共36页
数据库基础知识个人整理版.docx_第15页
第15页 / 共36页
数据库基础知识个人整理版.docx_第16页
第16页 / 共36页
数据库基础知识个人整理版.docx_第17页
第17页 / 共36页
数据库基础知识个人整理版.docx_第18页
第18页 / 共36页
数据库基础知识个人整理版.docx_第19页
第19页 / 共36页
数据库基础知识个人整理版.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据库基础知识个人整理版.docx

《数据库基础知识个人整理版.docx》由会员分享,可在线阅读,更多相关《数据库基础知识个人整理版.docx(36页珍藏版)》请在冰点文库上搜索。

数据库基础知识个人整理版.docx

数据库基础知识个人整理版

第一章关系数据模型1

数据模型(静态)得三要素1

一关系数据结构1

二关系操作2

三关系完整性约束2

四关系代数2

第二章关系数据库得标准语言SQL4

一SQL动词表4

二数据定义4

三数据更新8

四数据查询8

五授权15

六完整性约束命名子句17

七触发器17

第三章关系数据库理论18

一关系模式(回顾)18

二数据依赖18

三规范化18

第一章关系数据模型

数据模型(静态)得三要素

一关系数据结构

(一)基本概念包括:

1属性(Attribute):

实体所具有得某一特征。

(如学生得特征就是学号、姓名、----)

域(Domain):

属性对应得一组具有相同数据类型得值得集合。

每个属性有一个域。

(关系模型限定域必须原子性1NF)

2键(key)

(1)候选键(candidatekey)

关系得某一属性或属性组得值唯一标识一个元组,而其任何真子集无此性质。

候选键得诸属性称为主属性,不包含在任何候选键中得属性称为非主属性。

(2)主键(primarykey)

一个关系至少有一个侯选键,可以有几个侯选键。

一般从侯选键中选择一个作为主键(primarykey),其她得称为侯补键(alternatekey)

每个主键得值就是不能相同得,

(3)外键(foreignkey)

如关系中得属性或属性组不就是本关系得主键,而引用其她关系或本关系得主键,则称为本关系得外键。

3关系(Relation):

(1)关系:

定义在事物得所有属性域上得多元关系,一个关系就就是一张二维表。

(2)关系模式:

关系得描述称为关系模式,它可以形式化得表示为

R(U,D,DOM,F)

R为关系名

U为组成该关系得属性名集合

D为属性组U中属性所来自得域

DOM为属性向域得映像集合

F为属性间数据得依赖关系集合

关系模式通常简记为:

R(U)或R(A1,A2,A3,……,An)

关系得三种基本类型

基本表:

就是实际存在得表,它就是实际存储数据得逻辑表示。

查询表:

就是查询结果对应得表。

视图表:

就是由基本表或其她视图导出得表,就是虚表,不对应实际存储内容。

二关系操作

(一)两种关系操作

1查询(Query)

查询可以分为选择(SELECT),投影(Project),连接(Join),交(Intersection),并(Union),差(Except),除(Divide),笛卡尔乘积。

其中选择,投影,并,差,笛卡尔乘积就是5种基本操作,其她得操作可用这些基本操作定义与导出

2插入(Insert),删除(Delete),修改(Update)

(二)关系操作得特点

集合式得操作方式,即操作得对象与结果都就是集合。

(三)关系数据语言可以分为三类

1关系代数语言

2关系演算语言(元组关系演算与域关系演算)

3具有关系代数与关系演算双重特点得语言(SQL语言)

三关系完整性约束

关系数据库得数据必须遵循得约束

实体完整性(EntityIntegrity)

参照完整性(ReferentialIntegrity)

用户自定义完整性(User-DefinedIntegrity)

实体完整性与参照完整性就是关系模型必须满足得完整性约束条件,被称为关系得两个不变性。

(一)实体完整性

实体完整性规则:

关系模式R得主属性值不可为空

指所有主属性均不可取空值,不仅仅就是主键不可为空

(二)参照完整性

1外键(ForeignKey)

定义:

设F就是基本关系R得一个或一组属性,但不就是关系R得码,KS就是基本关系S得主码。

如果F与KS相对应,则称F就是R得外码(ForeignKey)

R称为参照关系(ReferentialRelation),S称为被参照关系(ReferencedRelation)

2参照完整性规则

若属性(或属性组)F就是基本关系R得外码,它与基本关系S得主码KS相对应(基本关系到R与S不一定就是不同关系),则对于R中每个元组在F上得值必须为:

(1)等于被参照关系S中所参照得候选键得某个值

(2)空值

(三)用户自定义完整性

针对某一具体数据得约束条件,反映某一具体应用所涉及得数据必须满足得特殊语义

由应用环境决定

四关系代数

关系代数按运算符得不同可分为传统关系运算与专门关系运算

(一)传统关系运算(交,并,差,笛卡尔乘积)

1∪(并)R1∪R2=b2d

b3b

c2d

d3b

a3c

e5f

g66

2∩(交AND)R1∩R2=b2d

c2d

3━(差)R1━R2=b3b

d3b

4╳(笛卡尔乘积)R1╳S=b2d2d

b2d3b

b3b2d

b3b3b

c2d2d

c2d3b

d3b2d

d3b3b

(二)专门关系运算

1选择(SELECT)(选择符合条件得元组)

δ<选择条件>(<关系名>)如:

δ性别=男(STUDENT)

表得水平划分

2投影(Project)(选择符合条件得属性)

Π<属性表>(<关系名>)如:

Π学号,姓名(STUDENT)

表得垂直划分

3连接操作(Join)

笛卡尔乘积R╳S={|t∈RANDg∈S}

(1)连接分为等值连接与自然连接

AфB

连接操作:

R|╳|S其中A与B分别为R与S上度数相等且具有可比性得属性组

1)等值连接(ф为=)

R1、A1R1、A2R1、A3S、A2S、A3

如上例R1|╳|S=b2d2d

R1、A2=S、A2b3b3b

c2d2d

d3b3b

2)自然连接(只有|╳|)

一般连接就是从行得角度出发得,但自然连接还要取消重复得列,就是从行与列得角度进行运算

S、A2S、A3

R1、A1R1、A2R1、A3

如R1|╳|S=b2d

B3b

4除运算(÷)

R1、A1

如R1÷S=b

在R1上b印象集合就是{(2,d),(3,d)}

S在(A1,A2)上得投影为{(2,d),(3,d)}

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

一SQL动词表

SQL功能

动词

数据查询

SELECT

数据定义

CREATE,DROP,ALTER

数据操纵

INSERT,UPDATE,DELETE

数据控制

GRANT,REVOKE

二数据定义

操作对象

操作方式

创建

删除

修改

模式

CREATESCHEMA

DROPSCHEMA

CREATETABLE

DROPTABLE

ALTERTABLE

视图

CREATEVIEW

DROPVIEW

索引

CREATEINDEX

DROPINDEX

注意

SQL通常不提供修改模式定义,修改视图定义,修改索引定义得操作

(一)模式得定义与删除

1模式得定义

CREATESCHEMA<模式名>AUTORIZATION<用户>

例如:

CREATESCHEMA“s-t”AUTORIZATIONwang;

(1)要创建模式,调用该命令得用户必须具有DBA权限,或者获得了DBA授予得CREATESCHEMA权限

(2)如果没指定<模式名>那么<模式名>隐含为<用户名>

(3)定义模式,实际上就是定义了一个命名空间,在这个空间中可以进一步定义该模式包含得数据库对象,例如基本表,视图,索引。

2模式得删除

DROPSCHEMA<模式名>(两者必选其一)

例如:

DROPSCHEMA“s-t”CASCADE;

(1)CASCADE(级联)表示在删除模式得同时把该模式中所有得数据库对象全部一起删除。

(2)RESTRICT(限制)表示在删除该模式中已经定义了下属数据库对象(表,视图索引),则拒绝该删除语句。

(二)表得定义,删除与修改

1表得定义

CREATETEBLA<表名>(<列名><数据类型>[列级完整性约束]

[,<列名><数据类型>[列级完整性约束]]

[,<表级完整性约束>])

列定义得完整格式:

<列名><列类型>[DEFAULT<默认值>][[NOT]NULL][<列约束>]

CREATETEBLA<表名>AS

若要定义模式式下得表:

CREATETABLE<模式名>、<表名>

(1)数据类型

 

ANSI/ISO

Oracle

字符型

Char(n)

Char(n)

Character(n)

CharacterVarying(n)

Varchar2(n)

CharVarying(n)

数值型

Numeric

Number

Decimal

Integer

Int

Float

Double

Real

日期型

Date

Date

Time

(2)完整性约束

主键约束(PrimaryKey)实体完整性

外键约束(ForeignKey)参照完整性

检查约束(Check)用户自定义完整性

唯一键约束(Unique)

非空约束(Null|NotNull)

默认值(Defautl)

(3)例子

CREATETABLEstudent

(SnoCHAR(8)PRIMARYKEY,

SnameCHAR(20)UNIQUE,

SsexCHAR

(2)DEFALULT‘男’,

SageSMALLINTCHECK(Sage>0)

SdeptCHAR(20)

CREATETABLECourse

(CnoCHAR(4)PRIMARYKEY,

CnameCHAR(40),

CpnoCHAR(4)REFERENCESCourse(Cno),

CcreditSMALLINT,

CHECK(Ccredit>0)

CREATETABLEsc

(SnoCHAR(9),

CnoCHAR(4),

GradeSMALLINT,

PRIMARYKEY(Sno,Cno),//注意一定要有括号

FOREIGNKEY(Sno)REFERENCESCourse(Cno),//sno一定要有括号)

(4)说明

1)列约束:

在每个列后定义,可以有多个约束子句,不能定义多个列上得约束

2)表约束:

在全部列定义完成后定义,可以有多个约束子句,多个列上得约束必须使用表约束,单列上得约束可以用列约束,也可用表约束

2表得删除

DROPTABLE<表名>[CASCADE|RESTRICT]

(1)CASCADE(级联)删除该表没有任何限制,删除表得同时,相关得依赖对象(如视图)也一起删除。

(2)RESTRICT(限制)删除该表就是有限制条件得。

欲删除得表不能被其她表得约束所引用(如CHECK,FOREIGNKEY等约束),不能有视图,不能有触发器(trigger),不能存储过程或函数。

(3)缺省情况下就是RESTRICT

3表得修改

ALTERTABLE<表名>

[ADD<列名><数据类型>[完整性约束]]|

[MODIFY<列名><数据类型>[完整性约束]]|

[DROPCOLUMN<列名>]|

[ADD<表约束>]|

[DROPCONSTRAINT<约束名>]

例如

(1)ALTERTABLEStudent

ADDDeptVarchar2(10)UNIQUE

(2)AlterTableStudent

DROPCOLUMNage

`(3)AlLTERTABLEStudent

MODIFYagenumber(3)NOTNULL

(4)ALTERTABLEStudent

ADDCONSTRAINTPK_StudentPRIMARYKEY(S#)

(5)ALTERTABLESC

DROPCONSTRAINTFK_SC

(三)视图得定义与删除

1视图得定义

CREATEVIEW<视图名>(列名1,列名2,…)//列名一定要放在括号里

AS<查询>

[WITHCHECKOPTION|WITHREADONLY]

例如:

CREATEVIEWcs_view(sno,name,age)

ASSELECTs#,sname,age

FROMstudent

WHEREDept=‘计算机系‘

WITHREADONLY;

(1)WITHCHECKOPTION表示对视图进行UPTATE,INSERT,DELETE操作时要保证更新,插入,删除得行满足视图定义中得谓词条件(即子查询中得条件表达式)

WITHREADONLY表示视图就是只读得

(2)视图得属性列名只能就是全部缺省或全部指定,没有别得选择。

但在下列两种情况下必须明确指定组成视图得列名。

1)某个目标列不就是单纯得属性名,而就是聚集函数或列表达式。

2)多表连接时选出几个同名列作为视图得字段。

(3)子查询可以就是任意得SELECT子句,但通常不允许含有OREERBY子句各DISDINCT短语。

(4)不就是所有视图都就是可更新得

1)基于联接查询得视图不可更新

2)使用了函数得视图不可更新

3)使用了分组操作得视图不可更新

4)只有建立在单个表上而且没有使用函数得视图才就是可更新得

2视图得删除

DROPVIEW<视图名>[CASCADE]

(四)索引得定义与删除

1索引得定义

CREATE[UNIQUE|CLUSTER]INDEX<索引名>

ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…)

例如:

CREATEUNIQUEINDEXSCnoonSC(SnoASC,CnoDESC);

(1)UNIQUE表明此索引得每一个索引值只对应唯一得数据记录

(2)CLUSTER表示要建立得索引就是聚簇索引。

聚簇索引就是指索引项得顺序与表中得物理顺序一致得索引组织,在一个表上只能建立一个聚簇索引。

(3)次序可选ASC(升序)或DESC(降序)缺省值为ASC

2索引得删除

DROPINDEX<索引名>

DROPINDEXSCno;

三数据更新

(一)插入数据

INSERT插入数据通常有两种形式,一种就是插入一个元组,另一种就是插入子查询结果。

后者可以一次插入多个元组。

1插入一个元组

INSERT

INTO<表名>[(<属性列1>[,<属性列2>])]

VALUES(<常量1>[,<常量2>])

例如INSERT

INTOStudent(Sno,Sname,Ssex,Sdept,Sage)

VALUES(‘’,‘陈冬’,‘男’,‘IS’,18);

INTO语句中没有出现得属性列,新元组在这些列上将取空值或默认值。

在INTO子句中只指出了表名,没有指出属性名,新元组要在所有属性列上都指定值,属性列得次序与CREATETABLE中得次序相同。

2插入子查询结果

INSERT

INTO<表名>[(<属性列1>[,<属性列2>])]

子查询;

例如INSERT

INTODept_age(Sdept,Avg_age)

SELECTSdept,AVG(Sage)

FROMStudent

GROUPBYSdept;

(二)修改数据

UPDATE<表名>

SET<列名>=<表达式>[,<列名>=<表达式>]…

[WHERE<条件>];

例如:

UPDATEStudent

SETSage=22

WHERESno=’21’;

(三)删除数据

DELETE

FROM<表名>

[WHERE<条件>];

例如:

DELETE

FROMStudent

WHERESno=’’;

DELETE语句删除得就是表中得数据,而不就是关于表得定义。

四数据查询

基本数据查询得格式:

SELECT[ALL|DISTINCT]<目标列表达式>AS<别名>[,<标列表达式>AS<别名>]…

FROM<名或视图名>[,<表名或视图名>]…

[WHERE<查询表达式>]

[GROUPBY<列名1>][HAVING<条件表达式>]]

[ORDERBY<列名2>][ASC|DESC];

(一)单表查询

在一个表中查询数据

1*查询

查询全部记录:

查询全部得学生信息

SELECT*FROMStudent;

*表示所有列

等同于

SELECTs#,sname,age,sexFROMStudent

2使用别名(AS或空格)

使用别名:

查询所有学生得学号与姓名

SELECTs#AS学号,snameAS姓名FROMStudent

如果别名包含空格,须使用双引号

SELECTs#AS“StudentNumber”FROMStudent

3表达式查询(三种表达式,字符串表达式,算术表达式,函数表达式)

(1)字符串表达式

查询所有学生得学号、姓名与出生年份,返回两列信息,其中一列就是“学号:

姓名”,另一列就是出生年份

SELECTs#||“:

”||snameAS学生,2003-ageAS出生年份FROMStudent

说明

连接字符串||表示则多个查询列连接为一个列输出。

(2)算术表达式

查询学生得出生年份

SELECT2003-ageAS出生年份FROMStudent;

(3)函数表达式

SELECTsno,to_char(birth,‘mm-dd-yyyy’)ASbirthdayFROMStudent

SELECTCount(sno)As学生人数FROMStudent

4条件查询

(1)WHERE条件

注:

1)在where子句中使用列名与表达式,但不能使用别名。

2)在where子句中使用数值时,既可以用单引号也可以不用单引号,使用日期值

字符值时,都必须使用单引号,并且日期值得格式必须要符合数据库中支持得日

期格式,否则必须事先使用to_date函数将其转换成为数据库中支持得日期格式。

oracle中日期得默认格式为:

01-1月-82

在输入查询条件时,可以用to_date(‘1998’-01-01,’yyyy-mm-dd’)

3)在SQL语句中,命令不区分大小写,但字符串区分大小写

WHERE子句中得关系运算符:

比较操作符:

>,<,>=,<=,=,<>

逻辑操作符:

ANDORNO

其她操作符:

IN

BETWEENAND

ISNULL与ISNOTNULL

LIKE

EXISTS

例如:

1)IN:

查询‘s001’,’s003’,’s006’与’s008’四学生得信息

SELECT*FROMStudent

WHEREs#IN(‘s001’,’s003’,’s006’,’s008’)

2)IS[NOT]NULL:

查询缺少年龄数据得学生

SELECT*FROMStudentWHEREageISNULL

LIKE:

查询姓名得第一个字母为‘R’得学生

SELECT*FROMStudentWHEREsnameLIKE‘R%’

%:

任意长度得字符串

_:

单个字符(一个汉字占两个字节)

注意:

LIKE只能用于字符串得匹配,不能用于其她类型。

查询姓名得第一个字母为‘R’并且倒数第二个字母为‘S’得学生

SELECT*FROMStudentWHEREsnameLIKE‘R%S_’

多个比较式可用NOT、AND与OR连接

SELECT*FROMStudent

WHEREageISNULLandsnameLIKE‘R%’

3)若要查询通配符可以用转义字符escapecharacter通常character用\

(2)去除重复记录(DISTINCT)

查询学生得姓名

SELECTDistinctsnameFROMStudent

DISTINCTt只对记录有效,不针对某个特定列

SELECTDistinctsname,ageFROMStudent

(3)排序查询(ORDERBY)

注:

1)orderby只能对最终查询结果进行排序,也就就是说其只能放在查询语句得最后一条。

2)可以使用列得别名,列得位置进行排序。

3)在大多数情况下,指定得排序列(orderby列名)都就是选择列(select列名),但排序

列也可以不就是选择列。

但如果在select语句中使用了distinct关键字,则排序列必须

就是选择列了。

查询所有学生信息并将结果按年龄升序排列

SELECT*FROMStudentORDERByage

将结果按年龄升序排列,按姓名降序排列

SELECT*FROMStudent

ORDERByageASC,snameDESC

ASC表示升序,DESC表示降序

(4)聚集函数

注:

1)聚集函数与groupby子句联合使用,表示对每个组进行统计,否则将所有数据行当

成一个组进行统计。

2)聚集函数只能出现在选择列表、orderby子句、having子句中,而不能出现在where

与groupby子句中。

3)除了count(*)外,其她聚集函数都会忽略null行。

4)聚集函数中可以指定all与distinct选项。

其中all就是默认选项,表示统计所有得行(包

括重复行),而distinct只统计不同得行。

count(distinctsal)

([DISTINCT|ALL]<列名>)

COUNT(列名):

对一列中得值计数

COUNT(*)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2