数据库学习笔记author - WANG

2020-05-08 08:50

一、基本概念 ................................................................................................................................... 2 二、数据库基本操作 ....................................................................................................................... 2

① 常用的查询条件运算符: ................................................................................................. 2 ② 创建表: ............................................................................................................................. 2 ③ 修改基本表: ..................................................................................................................... 3 ④ 删除基本表或视图 ............................................................................................................. 3 ⑤ 创建索引 ............................................................................................................................. 3 三、表内数据的操作 ....................................................................................................................... 3

① select语句 ..................................................................................................................... 3 ② 聚集函数 ............................................................................................................................. 3 ③ group by 子句 ............................................................................................................... 4 ④ where 与 having的区别: ......................................................................................... 4 ⑤ 连接查询 ............................................................................................................................. 4 ⑥ 嵌套查询: ......................................................................................................................... 5 四、数据更新操作 ........................................................................................................................... 7

① 插入数据 ............................................................................................................................. 7 ② 修改数据(更新数据) ..................................................................................................... 7 ③ 删除数据 ............................................................................................................................. 8 五、视图........................................................................................................................................... 8

① 建立视图 ............................................................................................................................. 8 ② 删除视图 ............................................................................................................................. 8 ③ 视图的作用 ......................................................................................................................... 8 六、授权........................................................................................................................................... 9 七、触发器....................................................................................................................................... 9 八、范式......................................................................................................................................... 10

一、基本概念 ① 数据:是数据库中存储的基本对象、

数据库:(DataBase简称DB)是长期存储在计算机内、有组织的、可共享的大量数据的集合

数据库管理系统:(DBMS)位于用户与操作系统之间的一层数据管理软件 数据库系统:(DBS)在计算机中引入数据库后的系统构成 数据模型:在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据信息。通俗的讲,数据模型就是现实世界的模拟

数据模型的组成要素:数据结构、数据操作、完整性约束条件 ② 实体:客观存在并可相互区别的事物称为实体

属性:实体所具有的某一特性 码:唯一标识实体的属性

域:属性取值范围称为该属性的域

实体型:用实体名及其属性名集合来抽象和刻画同类实体 实体集:同一类型实体的集合 实体内部的联系(1对多) 联系: 实体间的联系(1对1)

E-R图:实体型用矩形表示、属性用椭圆表示、联系用菱形表示 ③ 关系的完整性:实体完整性(主码不能为空)、参照完整性、用户定义完整性

一、数据库基本操作 ① 常用的查询条件运算符:

比较:=、>、<、>=、<=、!=、<>、!>、!<、NOT加上比较运算符 确定范围:between and,not between and 确定集合:in<值表>、not in<值表>

字符匹配:[not]like ‘匹配串’[escape ‘<转码字符>’] 。通配符:%、_。(%可心代表0个或0个以上的所有字符,它代的是一个字符串;_只能代表一个字符。一个汉字占两个字符,故匹配一个汉字需使用两个_,即_ _) 空值:is null、is not null(不能用=null代替is null) 多重条件:and、or、not

例:查询以“DB_开头,且倒数第三个字符为i的课程”

Select * from Course where Cname like ‘DB\\_%i_ _’ escape ‘\\’

② 创建表:

Create table Course

(Cno char(4) primary key,

Cname varchar(40) unique,/*Cname取值唯一*/

Ssex char(2) check(Ssex in(‘男’,’女’)),/*性别属性只能取’男’或’女’*/ Cpno char(4),

Ccridit smallint,

Foreign key(Cpno) references Course(Cno) ); ③ 修改基本表:

Alert table <表名>

[add <新列名><数据类型>[完整性约束]] [drop <完整性约束名>]

[alert column <列名><数据类型>]; ④ 删除基本表或视图

Drop Schema <模式名> Drop table <表名> ⑤ 创建索引

Create [unique][cluster] index <索引名>

On <表名>(<列名>[<次序>] [,<列名>[<次序>]]??);

例:create unique index SCno on SC(Sno asc,Cno desc);

二、 表内数据的操作 ① select语句

Select [all|distinct]<目标列表达式>[,<目标列表达式>]?? From <表名或视图>[,<表名或视图>]?? [where <条件表达式>]

[group by <列名>[having <条件表达式>]] [order by <列名> [asc|desc]] 注:distinct表示数据去重,默认的为all

例:

Select Sname,”year of birth:”,2004-Sage BIRTHDAY,islower(Sdept) DEPARTMENT from student

解析:这个查询语句查了student表中的3个字段,Sname、Sage、Sdept,而”year of birth:”是在查询的结果列中加入一列字符串。2004-age是一个表达式,它后面的BIRTHDAY是指将查询的结果列的列名用BIRTHDAY代替(如果不代替,则显示的列名将会是2004-age)。Islower(Sdept)是指将查询到的Sdept数据以小写的形式呈现

② 聚集函数

计数:count ([distinct|all]*) 统计元组个数

Count ([distinct|all]<列名>) 统计一列中值的个数

计算总和:sum ([distinct|all]<列名>) 计算一列值的总和(此列必需是数值型) 计算平均:avg([distinct|all]<列名>)

最大:max([distinct|all]<列名>) 求一列值中的最大值 最小:min([distinct|all]<列名>) 求一列值中的最小值

注:在聚集函数遇到空值时,除count(*)外,都能跳过空值而处理非空值。 Count <列名>也会跳过空值而处理非空值

例:select count(distinct Sno) from SC; Select avg(Grade) from SC where Cno=’1’; Select max(Grade) from SC where Cno=’1’;

Select sum(Ccredit) from SC,Course where Sno=’200215012’ and SC.no=Course.Cno; /*查询学生200215012选修课程的总学分数*/

③ group by 子句

将查询结果按某一列或多列的值进行分组,值相等的为一组。

结查询结果分组的目的是为了细化聚集函数的作用对象,如果未对查询结果分组,聚集函数将作用于整个查询结果,分组后聚集函数将作用于每个分组,即每一组都有一个函数值。 Select后为聚集函数时,它一般只能带分组字段(带其它字段似乎意义不大,当然,带的话在语法上是没有错的)

例:

Select Sno from SC group by Sno having count(*)

④ where 与 having的区别:

Where子句作用于基本表或视图。Having作用于组。 ⑤ 连接查询

若一个查询同时涉及两个两个以上的表,则称之为连接查询。

连接查询包括:等值连接、自然连接、非等值连接、自身连接、外连接和复合条件连接查询。

1、等值连接与非等值连接:

例:select Student.*,SC.* from Student,SC where Student.Sno=SC.Sno 解析:sql的意思为将Student与SC中同一学生的信息的元组连接起来,并返回查询结果,返回的即为学生的信息。此查询涉及了两个表,且带有比较运算符。使用的比较运算符为=时,就叫等值连接,使用的是其他比较运算符时就叫非等值连接。 RDBMS执行该连接操作的一种可能过程是:

首先在表Student中找到第一个元组,然后从头开始扫描SC表,逐一查找与Student第一个元组的Sno相等的SC无组,找到后将Student中的第一个元组与该元组拼接起来,形成结果表中的一个元组。SC表全部查找一遍后,再开始Student表中的第二个元组,依此反复执行,直到找完Student表为止。 2、自然连接

若在等值连接中把目标列中的重复的属性列去掉则为自然连接 例:对上面的sql使用自然连接查询来完成的话即为:

Select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade From Stuent,SC

Where Student.Sno=SC.Sno 3、自身连接:

一个表与其自己进行连接,称为表的自身接连。

例:查询每门课程的间接先修课

Select first.Cno,second.Cpno from Course first,Course second Where first.Cpno=second.Cno

注:在做自身连接时需要将表取别名以示区别。

4、外连接:

如果在关系R和关系S作自然连接时,把该舍弃的元组也保留在新关系中,在新增加的属性上填空值(null),那么这种操作叫外连接操作。

如果只把R中舍弃的元组放到新关系中,则称为“左外连接”,相应的如果只把S中舍弃的元组放到新关系中,则称为“右外连接”。 三种外连接:left、right、full

例:select Student.Sno,Sname,Ssex,Sage,Ssdept,Cno,Grade From Student left out join SC on (Student.Sno=SC.Sno); /*也可使用using来去掉结果中的重复值:from Student left out join using(Sno);*/ 5、复合条件连接:

Where子句中如果有多个连接条件,则称为复合条件连接。 例1:查询选修2号课程且成绩在90分以上的所有学生 Select Student.Sno,Sname From Student,SC

Where Student.Sno=SC.Sno and SC.Cno=’2’ and SC.Grade>90;

解析:该查询的一种优化的执行过程是先从SC中挑选出Cno=’2’并且Grade>90的元组形成一个中间关系,再和Student中满足连接条件的元组进行连接得到最终的结果关系。 例2:查询每个学生的学号、姓名、选修课的课程名及成绩 Select Student.Sno,Sname,Cname,Grade From Student,SC,Course

Where Student.Sno=SC.Sno and SC.Cno=Course.Cno;

⑥ 嵌套查询:

在sql语言中,一个select-from-where语句称为一个查询块。将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询称为嵌套查询。 例:

select Sname

from Student where Sno in

注:子查询的select语句中不能使用order by子句,order by 子句只能对最终查询结果排序。

1、 带有in谓词的子查询:

例:查询与“刘晨”在同一个系学习的学生 Select Sno,Sname,Sdept Form Student Where Sdept in

(select Sdept From Student

Where Sname=’刘晨’);

(select Sno /*内层查询或子查询*/ From SC

Where Cno=’2’);

/*外层查询或父查询*/


数据库学习笔记author - WANG.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:圆曲线半径与超高值

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: