赶紧考完,去年我就得了腱鞘炎了,今年变得更加严重,一敲键盘就手腕疼——手臂、手腕、手掌、手指、关节,这些地方都因为敲键盘而患了伤痛,早起都撑不住自己下床! 2、了解数据管理技术的发展经历了2个阶段。 (人工管理阶段)、文件管理系统阶段、数据库管理阶段、(数据库高级管理阶段) 3、理解文件管理方式的缺点。 1)松散包装。关系映射中没有ACID(原子性,一致性,隔离性,持久性)操作,这意味着无法保证。考虑一种情况,您手动或通过一些黑客家伙从手中删除您的文件。您可能不知道该文件是否存在。 4、理解数据库管理方式的特点(优点)。 ACID一致性,包括在文件存储在数据库外部时更新的回滚。文件将与数据库同步,不能孤立,这在跟踪事务时占上风。备份自动包含文件二进制文件。它比保存在文件系统中更安全。 5、掌握数据独立性的概念。 应用程序和数据结构之间相互独立, 互不影响 6、了解数据库系统的组成。 数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员、用户 2、掌握数据模型三要素是什么。 数据结构、数据操作、完整性约束 3、理解数据模型的两个层次:概念层数据模型、组织层数据模型。 概念层数据模型: 从用户观点对数据和信息建模,是数据库设计者与用户之间的交流工具,是数据库逻辑模型的继承。E-R模型是最常用的概念模型。 组织(逻辑层)层数据模型: 用来描述数据的整体逻辑结构,逻辑模型主要是描述数据的逻辑存储结构、数据操作和完整性约束。 物理层数据模型: 确定数据的物理存储结构、数据存取路径以及调整、优化数据库的性能。 4、掌握E-R模型的相关概念、以及E-R图的画法。 ER模型由实体Entity,属性Attribute和联系Relationship组成。 Entity用方框 关系模型是指用二维表的形式表示实体和实体间联系的数据模型 实体完整性: 每个表都有主键 参照完整性: 如果表中有外键,那么外键要么是空,要么是另一个表的主键 用户定义的完整性: 数据不要超过自定义的范围 外模式、概念模式、内模式 1、了解四大类SQL语言的功能。 数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL 2、掌握常见的SQL数据类型。 字符型(nchar,varchar,char,nvarchar),文本型(text,ntext),数值型(tinyint,smallint,float,double,int,bigint,decimal,numeric),逻辑型(bit)、日期型(datetime) 4、掌握DROP TABLE和ALTER TABLE语句。 5、掌握数据完整性的实现方法。(5种约束) 1、熟练掌握SELECT语句的基本用法。包括各种子句、查询条件的写法、聚合函数。 2、掌握多表连接查询方法。 1、掌握视图的概念,理解其特点(优点)。 视图是基于 SQL 语句的结果集的可视化的表。 2、掌握视图的定义(CREATE VIEW)、修改(ALTER VIEW)和删除(DROP VIEW)。 3、掌握视图的作用。 大大减少多表查询的次数 1、掌握关系模式中的码的概念:候选码、主码、主属性、非主属性。 候选码:能唯一确定一条记录的属性,或者一组属性 1NF:列名不能有包含关系,每个字段都不能分割——也就是表中的列明只能是并列的!!! 1、理解事务的概念。 用户定义的工作序列 2、了解事务的4个特征。(ACID) Atomicity——原子性,事务不可被打断,要执行就完整执行! 3、理解SQL事务处理模型。 ISO事务处理模型 每次写完一个事务后,写一个COMMIT,不同的事务通过COMMIT分隔 T-SQL事务处理模型 每个事务前面写一个BEGIN TRANSACTION,后面写一个COMMIT 共享锁: Shared Lock,简称S锁(可读),没有事务加X锁时,大家都能给数据加S锁。当有事务加上X锁,其他事务就什么锁都不能加了!!! 排他锁: Exclusive Lock,简称X锁(可读可写),只要第一次加上S锁的事务可以再加上X锁,等到第一次加上S锁的事务释放S锁后,其他事务才能加S锁。 1、了解数据库设计的各个环节。 需求分析——》概念结构设计——》逻辑结构设计——》物理结构设计 下面是简单化的步骤 2、掌握概念结构设计方法,能画出各局部E-R图,并合并为全局图。 3、掌握逻辑结构设计方法,能根据E-R图转换成符合3NF范式的关系表。 1、了解存储过程的概念。 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象 2、掌握存储过程的实现与管理:CREATE PROC、EXEC、 ALTER PROC、DROP PROC等语句,系统存储过程sp_help、sp_helptext等。 3、了解触发器的概念与分类。 instead触发器,在发生动作前触发! 参考:
前言
考试要点
第1章 数据库概述
2)安全性低。由于您的文件可以保存在您应该提供写入权限的文件夹中,因此很容易出现安全问题并引发麻烦,例如黑客攻击。如果您无法在安全性方面做出妥协,最好避免保存在文件系统中。
第2章 数据库系统结构
Attribute用椭圆,多个Attribute连接到一个Entity上,或者连在Relationship上
Relationship用菱形,连接多个Entity
5、掌握关系模型的基本概念(术语)。
6、掌握关系模型的3类数据完整性约束:实体完整性、参照完整性、用户定义的完整性。掌握其概念,知道其作用和区别。
7、理解数据库系统的三级模式结构。
_
外模式是用户模式
概念模式是逻辑模式
内模式是物理模式
第3章 SQL语言基础及数据定义功能
3、掌握CREATE TABLE语句的格式、写法。包括定义表的约束CREATE TABLE Student( sno char(4) not null, sname char(8), sage int, ssex char(2), sdept char(20), primary key(sno) )
--删除表Student DROP TABLE Student --为表Student添加一个字段 ALTER TABLE Student ADD XKLX char(4)
not null 非空约束 unique 唯一约束(distinct也是唯一约束,但是distinct用在执行中,unique用在创建中) primary key 主键约束 foreign key 外键约束,保证该外键是别的表的主键 check 布尔约束,比如:CHECK (P_Id>0),保证P_Id大于零
6、备份数据库BACKUP DATABASE mydb TO DISK='E:SQLBACKUP3demllie_2020_4_13.bak'
第4章 数据操作语句
显示整张表 SELECT * FROM Student 查询课程C001的最高分 SELECT MAX(grade) AS 'C001课程最高分' FROM sc WHERE cno = 'C001'
查询所有科目成绩在70~80分之间的学生的学号、课程号、成绩 SELECT s.sno,cno,grade FROM student s JOIN sc ON sc.sno = s.sno WHERE grade BETWEEN 70 AND 80 (包含70和80) 统计每门课的选课人数和考试最高分 SELECT c.cno,cname,COUNT(*) '选课人数' , MAX(grade) '最高分' FROM course c FULL JOIN sc ON sc.cno = c.cno GROUP BY c.cno,cname ( WHERE中不能用聚合函数,但是如果先用GROUP BY,再 用HAVING,就可以在HAVING后使用聚合函数 ) (多表连接种类 (inner) join,left join,right join,full join)
3、掌握子查询的用法。查询没有选课的学生姓名、学号、所在系 SELECT sname,sno,sdept FROM student WHERE sno NOT IN( SELECT sno FROM sc) (子表查询中只能有一个字段) 查询与李华年龄相同的学生的姓名、所在系、年龄 SELECT sname,sdept,sage FROM student WHERE sage = ( SELECT sage FROM student WHERE sname = '李华' ) ( 中文匹配可以用中文正则,即 sname like '%李华%' 表示一个字符串中出现了“李华” ) 查询大于全体学生平均年龄的女生的学号、姓名、所在系 SELECT sno,sname,sdept FROM student WHERE sage > ( SELECT AVG(sage) FROM student ) AND ssexm = '女' 查询选修了数据结构的学生的姓名、学号、所在系 SELECT sname,s.sno,sdept FROM student s JOIN sc ON sc.sno = s.sno JOIN course c ON sc.cno = c.cno WHERE cname='数据结构'
4、掌握INSERT语句、DELETE语句、UPDATE语句的用法。将所有课程学分都增加一份 UPDATE course SET ccredit= ccredit + 1 将VB课程学分改为3 UPDATE course SET ccredit=3 WHERE cname='VB基础' 删除没有人选的记录 DELETE course WHERE cno NOT IN( SELECT DISTINCT cno FROM sc ) (delete table student只能删除表中所有数据,不能删除表本身) (distinct也是唯一约束) 新建一个pass表,含学号、姓名、所在系、课程号、课程名、成绩, 将所有及格的数据存入pass CREATE TABLE pass( psno char(10) not null, psname char(10), pdept char(20), pcno char(4), pcname char(8), pgrade int ) INSERT INTO pass(psno,psname,pdept,pcno,pcname,pgrade) SELECT sc.sno,sname,sdept,sc.cno,cname,grade FROM student LEFT JOIN sc on student.sno = sc.sno JOIN course on course.cno = sc.cno WHERE grade >= 60
5、理解CASE表达式的用法。查询统计系的学生的人数和男女生人数 SELECT SUM( CASE WHEN sdept='统计系' THEN 1 ELSE 0 END ) 统计总人数 AS '统计系学生人数' SUM( CASE WHEN ssex='男' THEN 1 ELSE 0 END ) 统计男生人数 AS '统计系男生人数' SUM( CASE WHEN ssex='女' THEN 1 ELSE 0 END ) 统计女生人数 AS '统计系女生人数' FROM student
6、了解查询的交、并、差运算。差————查询在北京的仓库中,职员工资小于等于2900的仓库号 SELECT 仓库号 FROM 仓库 WHERE 城市='北京' EXCEPT SELECT 仓库号 FROM 职工 WHERE 工资>2900 和————查询在北京的仓库的仓库号或职员工资大2900的仓库号 SELECT 仓库号 FROM 仓库 WHERE 城市='北京' UNION ALL SELECT 仓库号 FROM 职工 WHERE 工资>2000 交—————查询在北京的仓库中,职员工资大于2900的仓库号 SELECT 仓库号 FROM 仓库 WHERE 城市='北京' INTERSECT SELECT 仓库号 FROM 职工 WHERE 工资>2000
7、查询一个范围内的记录显示VB课程的第2名到第4名的学生的学号、姓名、成绩。 SELECT top 3 sc.sno,sname,grade FROM student JOIN sc on student.sno = sc.sno JOIN course on course.cno = sc.cno WHERE cname = 'VB基础' and grade not in ( SELECT top 1 -- sc.sno,sname,grade FROM student --incorrect grade FROM student --correct JOIN sc on student.sno = sc.sno JOIN course on course.cno = sc.cno WHERE cname = 'VB基础' ORDER BY grade DESC ) ORDER BY grade DESC
第5章 视图
视图是逻辑上的表,是虚拟的表!!!可以当成普通表进行查询
优点是不用多次查询所有表查询学生的学号、姓名、所在系、课程号、课程名、课程学分 CREATE VIEW V31 AS SELECT sc.sno,sname,sdept,sc.cno,cname,grade FROM student FULL JOIN sc on sc.sno = student.sno FULL JOIN course on sc.cno = course.cno 查询学生的学号、姓名、选修的课程名和考试成绩 CREATE VIEW V32 AS SELECT sc.sno,sname,cno,grade FROM student LEFT JOIN sc on sc.sno = student.sno 统计每个学生的选课门数,要求列出学生学号和选课门数 CREATE VIEW V33 AS SELECT sno,count(cno) AS CourseNum FROM sc GROUP BY sno 统计每个学生的修课总学分,要求列出学生学号和总学分 (考试成绩大于等于60才可以获得此门课程的学分) CREATE VIEW V34 AS SELECT sno,sum(ccredit) as WholeGrade FROM sc JOIN course ON course.cno = sc.cno GROUP BY sno 查询计算机系Java考试成绩最高的学生的学号、姓名、Java考试成绩 CREATE VIEW V35 AS SELECT top 1 sc.sno,sname,grade as JavaGrade FROM student JOIN sc ON sc.sno = student.sno JOIN course ON sc.cno = course.cno WHERE cname='Java基础' ORDER BY grade 查询计算机系选课门数超过3门的学生的姓名和选课门数 SELECT DISTINCT sname,CourseNum FROM V31 JOIN V33 ON V33.sno = V31.sno WHERE CourseNum>3 AND sdept='计算机系' 列出平均成绩在80分以上的课程名及平均分。 SELECT cname,AVG(grade) avGrade FROM TEST4 GROUP BY cname HAVING AVG(grade) > 80 (用来替代where中使用不了聚合函数的限制) (视图中无法进行INSERT插入数据)
第6章 关系数据库规范化理论
主码:主键(键就是码),主键属于候选码
主属性:候选码
非主属性:非候选码
2、掌握1NF、2NF、3NF的概念,掌握对关系模式进行规范化分解的方法。
_
2NF:表中没有有可以分割到其他表的数据——表中其他的码能找到这个属性,那么这个属性就应该被分割到另一张表上去!!!
_
3NF:所有依赖都靠主码!!!
_
第7章 数据库保护
Consistency——一致性,数据库的状态必须只有一种,一个操作只能是失败或者成功,不能是失败和成功!!!
Isolation——隔离性,一个事务的执行不能被其他事务干扰
Durability———持久性(Permanence永久性),事务执行后,对数据的改变是永久的
4、理解4种数据不一致情况。
5、了解锁的类型。
6、理解各级封锁协议的动作与防止数据不一致性的不同效果。
7、掌握并发调度的可串行性。能分析并发调度的具体实例。
第8章 数据库设计
——
了解功能需求
定义实体
绘制E-R图
把E-R图转换成模型
检查模型
根据模型定义数据库
第9章 综合章节
建立一个临时表t_pass,并建立一个存储过程P_pass, 输入专业名称后,输出该专业所有课程 都及格的学生的学号、名字到临时表t_pass, 如果没有输入参数,则输出所有课程都及格的学生 --删除之前已有的表 IF OBJECT_ID('mydb.dbo.P_disp') IS NOT NULL DROP PROCEDURE P_pass GO IF OBJECT_ID('mydb.dbo.#t_pass') IS NOT NULL DROP TABLE #t_pass --删除临时表 GO --------------------------------------------------------------------------------- --返回两行数据 CREATE PROCEDURE P_pass @NAME char(8)=NULL AS IF(@NAME IS NOT NULL) SELECT sc.sno AS OUT_NO,sname AS OUT_NAME FROM student JOIN sc ON sc.sno = student.sno GROUP BY sc.sno,sname,sdept HAVING count(grade)=sum( CASE WHEN grade>=60 THEN 1 ELSE 0 END ) AND sdept=@NAME --------------------------------------------------------- IF(@NAME IS NULL) SELECT sc.sno AS OUT_NO,sname AS OUT_NAME FROM student JOIN sc ON sc.sno = student.sno GROUP BY sc.sno,sname HAVING count(grade)=sum( CASE WHEN grade>=60 THEN 1 ELSE 0 END ) GO --------------------------------------------------------------------------------- DECLARE @t_pass TABLE( OUT_NO int, OUT_NAME char(10) ) INSERT INTO @t_pass EXEC P_pass '信息系' --将过程结果存入临时表中 SELECT * FROM @t_pass GO
for(after)触发器,在发生动作后触发!
_
触发器按动作分类有insert触发器、delete触发器、update触发器
4、掌握触发器的实现与管理:CREATE TRIGGER、ALTER TRIGGER、DROP TRIGGER等语句,系统存储过程sp_help、sp_helptext,系统表inserted、deleted和sysobjects等。建立一个触发器T_delsc,当删除STUDENT表中的某条记录时, 也删除SC表中与其相关联的记录。 ----删除已有的触发器 IF EXISTS( SELECT name FROM SYSOBJECTS WHERE name='T_delsc') DROP TRIGGER T_delsc GO --创建新的触发器 CREATE TRIGGER T_delsc ON student FOR DELETE AS BEGIN DECLARE @NO char(8) --定义中间变量 SELECT @NO=sno FROM DELETED --在DELETED中查询要删除的学号 DELETE sc WHERE sno = @NO --删除该学号的所有记录 END GO --直接在student删除一条记录时,因为会删除sc中的多条记录,这多条记录的学号一样,SQL Server不知道要删除哪条,所以删除操作被SQL Server阻止!!! --解决方式是设置sno为student的主键!!!
文件系统与数据库的优缺点
数据模型和数据库系统的模型结构
五种完整性约束分别是什么——基于MySQL数据库的数据约束实例
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算