![数据库原理及应用(MySQL版)PPT全套完整教学课件_第1页](http://file4.renrendoc.com/view/5e60c2fc1a7b3fc785f83d313b163f39/5e60c2fc1a7b3fc785f83d313b163f391.gif)
![数据库原理及应用(MySQL版)PPT全套完整教学课件_第2页](http://file4.renrendoc.com/view/5e60c2fc1a7b3fc785f83d313b163f39/5e60c2fc1a7b3fc785f83d313b163f392.gif)
![数据库原理及应用(MySQL版)PPT全套完整教学课件_第3页](http://file4.renrendoc.com/view/5e60c2fc1a7b3fc785f83d313b163f39/5e60c2fc1a7b3fc785f83d313b163f393.gif)
![数据库原理及应用(MySQL版)PPT全套完整教学课件_第4页](http://file4.renrendoc.com/view/5e60c2fc1a7b3fc785f83d313b163f39/5e60c2fc1a7b3fc785f83d313b163f394.gif)
![数据库原理及应用(MySQL版)PPT全套完整教学课件_第5页](http://file4.renrendoc.com/view/5e60c2fc1a7b3fc785f83d313b163f39/5e60c2fc1a7b3fc785f83d313b163f395.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库原理及应用(MySQL版在线实训版)第0章绪论.ppt 第1章数据库基础.pptx 第2章关系数据库理论.ppt 第3章搭建数据库实验环境.ppt 第4章数据库及表基本操作.ppt 第5讲单表查询.ppt 第6讲多表查询.ppt 第7章索引与视图.pptx 第8章数据库编程.ppt 第9讲数据库设计.ppt 第10讲范式及反范式设计.ppt 第11章事务及其并发控制.ppt 第12章数据库安全.ppt 第13章数据库管理及优化技术.ppt 第14章数据库应用系统开发技术.ppt 《数据库原理及应用》数据库虚拟教研室制作数据库目录绪论03该课程的教学方法01为什么要学习数据库02该课程的学习内容05该课程学习资源04该课程教学目标为什么要学习数据库?数据库不仅是计算机、软件工程等专业的核心课程,而且也是非计算机专业学生必修的信息技术课程。当前人工智能、互联网+、大数据、云计算等技术应用都建立在数据库之上,数据库技术已成为各种计算系统的核心技术,数据库课程已成为计算机及其相关专业必修课程。我们每天都在不知不觉中和数据库打交道,请谈谈你每天都用到哪些数据库系统?该课程的学习内容?该课程的教学方法?
(线上线下)混合式教学分组合作讨论交流检查验收作业30%实验30%课堂互动10%出勤5%线上资源10%章节测试10%讨论5%=平时成绩(50%)重点内容讲解+线上自主学习考核该课程的学习目标?素养目标培养学生计算思维能力和分析解决问题的能力;培养学生数据库系统的设计与实现能力;能力目标知识目标掌握数据库系统的基础知识,掌握数据库技术的应用方法,掌握数据库系统设计工具的使用;培养学生的自主学习能力、团队合作精神、规范化编程、家国情怀。该课程的MOOC学习资源?《数据库系统》哈尔滨工业大学战德臣教授/(国家高等教育智慧教育平台)《数据库系统概论》中国人民大学王珊教授/(国家高等教育智慧教育平台)《数据库原理及应用》安徽工业大学陈业斌教授/detail/232603658(学银在线)/
(国家高等教育智慧教育平台)该课程的网络学习资源?Bilibili——哔哩哔哩/video/BV1QE411u7Mh/?spm_id_from=333.337.search-card.all.click中国专业IT社区CSDN(ChineseSoftwareDeveloperNetwork)/ThankYou!ThankYou!谢谢学习数据库虚拟教研室制作数据库《数据库原理及应用》03
数据库系统01
数据与信息02数据模型目录第1章数据库基础什么是数据
数量描述:0、1、100、3.14事物描述文字陈述:我是一个学生
图形图象:
……
数据:用文字、数字、图象等各种符号对客观事实的表达。数据是计算机实际能处理的一切对象,只是它们有外部可视形式和内部处理形式的区别而已。什么是信息请说出如下数据的含义:
白云、20、计算机、199001
姓名、年龄、专业、出生年月
信息:把对数据进行加工得到的影响或可能影响用户决策的有关知识称之为信息。就是人们对数据赋予的一种意义、一种解释。数据与信息的关系数据与信息有区别也有联系。信息与数据之间的固有联系:数据是信息的符号表示或称为载体,信息则是数据的内涵,是对数据的语义解释。信息依赖于数据的表示,同一信息用不同的数据形式来表示。如:1999年,一九九九年数据处理
数据处理:对信息进行收集、整理、加工、存储、检索、传递和输出、利用等一系列活动的总和。信息是用数据表示的,故对信息的处理又具体地表现在对数据的处理上。数据处理也称信息处理。例如:(1)根据出生年月就能计算出某人的年龄;(2)根据某人的网上购物记录自动推送你感兴趣的商品;(3)根据商品前两个季度的销售数据推算后两个季度的销售情况。如何存储数据
计算机无法直接处理现实事物需要将现实事物转化为计算机可以理解的数据,以方便计算机进行存储和处理现实世界:事物及其联系信息世界:概念模型计算机世界DBMS支持的数据模型认识抽象收集、分类、抽象转换数据模型定义
模型:是用来描述数据,数据关系,数据语义,数据约束的工具。数据模型:用数学的方法(或计算机可实现的方法)对现实世界中的事物及其联系的描述。数据模型的作用:
用来抽象、表示和处理现实世界中数据和信息的工具是对现实世界的模拟和抽象数据模型三要素数据模型:是数据结构、数据操作和完整性约束三个部分组成。数据结构:是指数据在数据库中的存在方式数据操作:是指对数据库中的数据进行增、删、改、查操作的方式完整性约束:是指保证数据在操作过程中的正确性和一致性的规则典型的数据模型关系模型层次模型网状模型NOSQL对象关系XML……
第一代第二代第三代关系数据模型关系模型:以二维表来描述数据。……学号姓名出生年月性别系年级970501张平198005女计算机3970502王鹰198103男计算机3970601周丽198205女机械3980209李强198011男化工2关系数据模型数据结构--关系模式学号姓名出生年月性别系年级学号姓名出生年月性别系年级970501张平198005女计算机3970502王鹰198103男计算机3970601周丽198205女机械3980209李强198011男化工2键1,2,3,4域字
段
名元组(行)字段(列)整数字符串数值学生登记表关系名关系数据模型学号姓名年龄性别班级1005张力21男203学号课程号成绩1005002189学生关系成绩关系课程关系NMNM课程号课程名称0021代数关系模型的性质
二维表中的每一列的元素类型相同;列不可重名;列的顺序可以任意;行的顺序可以任意;表中任意两行不能完全相同(不可重行);表中的元素是不可再分的最小数据项。数据库定义数据库(DataBase):是指长期存储在计算机内、有组织地、可共享的大量数据的集合。数据库数据具有永久存储、有组织、可共享三个基本特点。数据库的基本特征数据按一定的数据模型组织、描述和储存,可为各种用户共享、冗余度较小、易扩展,数据独立性较高数据库管理系统数据库管理系统(DataBaseManagementSystem)DBMS是位于用户与操作系统之间的一层对数据进行管理的软件系统。它能按照数据库的方法建立、维护、存储及实现对DB的各种控制,并能向应用系统提供数据和信息支持的系统。DBMS的基本功能:①数据库定义和建立
②数据存取功能③数据库运行控制功能④组织、存储、管理和维护等
数据库语言数据库语言(SQL)是用户与DBMS之间的媒介,完成对数据库操作的工具。数据库语言DDL数据描述语言:定义数据结构及约束DML数据操纵语言:实现数据操作DCL数据控制语言:进行数据控制DBMS数据库SQL数据库系统数据库系统(DataBaseSystem)
DBS是一个实际可运行的,按照数据库方式存储、维护和向应用系统提供数据或信息支持的系统;它是存储介质、处理对象和管理系统的集合体,方便多用户访问的计算机软件、硬件和数据资源组成的系统。数据库系统的构成相互有关联关系的数据的集合DBDBMS管理数据库的系统软件DBA完成某一功能的应用程序1应用程序2应用程序nDBAP1DBAP2DBAPnComputerSystem(硬件和软件)数据库系统的构成硬件应用系统数据库管理系统操作系统应用程序员数据库管理员Database用户最终用户应用开发工具本讲内容回顾信息数据DBMSDBDBS数据模型层次网状模型关系模型非关系模型数据结构数据操作完整约束SQLSQLThankYou!ThankYou!谢谢学习数据库虚拟教研室制作数据库《数据库原理及应用》03
关系的完整性01
关系代数的基本术语02关系模式与关系04
关系运算目录第2章关系数据库理论关系数据库的奠基人E.F.Codd,英国人,1923生于英格兰中部波特兰。第二次世界大战时应征入伍,在皇家空军服役。大战结束后,到英国牛津大学数学专业学习,1963年获得硕士学位,1965年又获得博士学位。60年代后期开始数据库研究,1970年E.F.Codd博士提出关系模型概念,他因此获得1981年的ACM图灵奖。E.F.Codd博士关系数据库之父美国工程院院士关系代数的定义关系理论是建立在集合代数理论基础上的,有着坚实的数学基础。
定义1:域(Domain)是一组具有相同类型的值的集合。例:性别集合{男,女};正整数集合{1,2,3,……};姓名集合{张三,李四,王五};全体实数的集合等都可以称为是域。关系代数的定义
定义2:笛卡尔积给定一组域D1,D2,…,Dn,
D1,D2,…,Dn的笛卡儿积为D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}笛卡儿积中每一个元素(d1,d2,…,dn)叫做一个n元组。两个名词:度(n):参与笛卡儿积的域的个数。
基:域中可取值的个数。
关系代数的定义例:设有域
D1=姓名集合(NAME)={王三,丁平};
D2=职业集合(JOB)={工人,农民,商人};
D3=住址集合(ADDR)={北京,上海,广州};则D1×D2×D3={问题:笛卡儿积的度为多少?笛卡儿积的基为多少?(王三,工人,北京),(王三,工人,上海),(王三,工人,广州),(王三,农民,北京),(王三,农民,上海),(王三,农民,广州),(王三,商人,北京),(王三,商人,上海),(王三,商人,广州),(丁平,工人,北京),(丁平,工人,上海),(丁平,工人,广州),(丁平,农民,北京),(丁平,农民,上海),(丁平,农民,广州),(丁平,商人,北京),(丁平,商人,上海),(丁平,商人,广州)}
关系代数的定义
定义3:关系
D1×D2×…×Dn的子集叫作在域D1,D2,
…,Dn上的关系,记为R(D1,D2,…,Dn)。
一般说来,只有笛卡儿积的子集才是有意义的。为什么?学号姓名年龄年级0104赵六2010101张三2020103王五1930102李四182关系代数的基本术语①记录和属性记录是行,属性是列,域是属性的取值范围。学号姓名年龄年级0104赵六2010101张三2020103王五1930102李四182
关系就是一张二维表。
一行称为一个元组或一条记录,一列叫一个属性或一个字段。关系代数的基本术语②关系的码(Key)
(或候选码、键)。
如果一个属性(或属性集合)的值能唯一地标识一个关系的元组而又不含有多余的属性,则称该属性(或属性集合)为关系的码(或候选码,也称键)。每个关系都有一个且只有一个主码(PrimaryKey)。学号姓名年龄年级0104赵六2010101张三2020103王五1930102李四182关系代数的基本术语③外码(ForeignKey)
如果某一个关系中的属性(或属性集合)在另一个关系中是主码,则称该属性(或属性集合)是外码。
学号姓名所在系0101010201030104张三李四王五赵六计算机计算机计算机计算机课程号课程名学时数C01C02C03C04高等数学数据结构操作系统数据库100708060学号课程号成绩01010101010201040104C01C02C04C04C039080908570学生关系课程关系学习成绩关系外部码外部码主码主码关系模式
定义:
关系数据模型中的数据结构就是关系模式,即是对关系的描述。关系模式通常可以简记为:
R(A1,A2,…,An)
R:关系名
A1,A2,…,An:属性名
如:STUDENT(SNO,SNAME,SEX,SAGE,DEPT)或学生(学号,姓名,性别,年龄,系)关系的完整性约束类型说明实体完整性约束主键的值参照完整性约束外键的值用户自定义完整性(域完整性)约束其他字段的值关系的完整性约束(1)实体完整性(PRIMARYKEY)规则:设属性A是基本关系R的主属性(码的组成部分),则属性A不能空值(NULL)和码不能出现重复值。说明:实体完整性是针对基本关系的;本规则要求基本关系中的元组在组成码属性上不能有空值;现实世界中的实体是可区分的,即它们具有某种唯一性标识(不取重复值)关系的完整性约束(2)参照(引用)完整性(FOREIGNKEY)规则:基本关系R中含有与另一个基本关系S的主码相对应的属性组F(F称为R的外码),则对于R中的每个元组在F上的值必须为:
①或者取空值(F的每个属性值均为空值);
②或者等于S中某个元组的主码值
引用完整性约束是不同关系之间或同一关系的不同元组间的约束。
本规则要求不允许引用不存在的元组;关系的完整性约束例1:职工关系EMP(ENO,ENAME,DNO)
部门关系DEPT(DNO,DNAME)
在EMP中,DNO是外码。EMP中每个元组在DNO
上的值允许有两种可能:①取空值。这说明这个职工尚未分配到某个部门;
②若非空值,则DNO的值必须是DEPT中某个元组中的DNO值。表示此职工不可能分配到一个不存在的部门。关系的完整性约束职工号部门编号姓名…9801980298039804980501010203张三李四王五赵六钱七部门编号部门名称…01020304经理办公室人事部公关部技术部职工表(EMP)部门表(DEPT)关系主码外部关系码关系的完整性约束例2:学生实体及其内部的联系
学生(学号,姓名,性别,专业号,年龄,班长)关系的完整性约束例3:选修(学号,课程号,成绩)
“学号”和“课程号”可能的取值:(1)选修关系中的主属性,不能取空值(2)只能取相应被参照关系中已经存在的主码值关系的完整性约束(3)域完整性(用户自定义完整性)规则:要求属性值必须取自其对应的值域。例:学生的性别只能是:‘男’和‘女’CONSTRAINTSXCHECK(性别IN(‘男’,‘女’)传统的集合运算定义1.
设给定两个关系R和S,若满足:具有相同的度n,且R中第i个属性和S中第i个属性必须来自同一个域,则说关系R和S是相容的。即:关系R和S有相同的度,即有相同的属性个数,且对应的属性的域相同。
传统集合运算的两个关系必须是相容的。约定:大写字母表示命名关系和关系的属性;小写字母表示元组。
传统的集合运算①并(Union)
关系R和S的并记为R∪S,结果仍为n度关系,由或属于R或属于S的元组组成。RSR∪S传统的集合运算②差(Minus)
关系R和S的差记为R-S,结果仍为n度关系,由属于R而不属于S的元组组成。RSR-S传统的集合运算③交(Intersect[ˌɪntəˈsekt])
关系R和S的并记为R∩S,结果仍为n度关系,由既属于R又属于S的元组组成。RSR∩SR∩S=R–(R-S)广义笛卡儿积
广义笛卡儿积
R是一个n度关系,S是一个m度关系。关系R和S的广义笛卡儿积记为R×S,其结果是(n+m)度的关系,结果中的元组是R中元组和S中元组连成的一串,前n个分量是R中的一个元组,后m个分量是S的一个元组。假定R中有元组(r1,r2,…,rn),S中有元组(s1,s2,…,sm),则结果中的元组为
(r1,r2,…,rn,s1,s2,…,sm)。若R有k1个元组,S有k2个元组,则R×S有k1×k2个元组。
广义笛卡儿积例:ABCa1b1c1a1b2c2a2b2c1ABDa1b2c2a1b3c2a2b2c1RSABCA′B′Da1b1c1a1b2c2a1b1c1a1b3c2a1b1c1a2b2c1a1b2c2a1b2c2a1b2c2a1b3c2a1b2c2a2b2c1a2b2c1a1b2c2a2b2c1a1b3c2a2b2c1a2b2c1R×S记录个数9度数6专门的关系运算①选择(Select)σ(sigma)从一个关系中选出所有满足指定条件的元组。即在给定关系中,从水平方向上选取符合给定条件的元组的子集。一般定义为:
σF(R)={t|t∈R∧F(t)=‘True’}
读作关系R关于公式F的选择运算,表示从R中选择那些满足公式F的元组。
专门的关系运算SNOSNAMESDEPTSAGE96001丁一计算机1996002王二计算机2096003张三数学2196004李四信息1996005刘五数学2096006赵六计算机22SCNOCNAMECTC1高等代数144C2程序设计100C3微机原理44C4数据结构64C5编译原理90C6操作系统32CSNOCNOGRADE96004C39596004C57096005C28196005C395SC例:设有学生-课程关系数据库,如下所示:专门的关系运算例1:求计算机系的学生。σSDEPT=‘计算机’(S)例2:求计算机系叫的张三学生。σSDEPT=‘计算机’^SNAME=‘张三’(S)SNOSNAMESDEPTSAGE96001丁一计算机1996002王二计算机2096003张三数学2196004李四信息1996005刘五数学2096006赵六计算机22专门的关系运算②投影(Projection)∏(pi)
从一个关系出发构造其垂直子集的运算,即结果关系由运算分量中的某些列组成,并消去重复的元组。一般定义为:关系R在域列A上的投影:∏A(R)={t[A]|t∈R}
∏表示投影运算符;A为R中的属性列,R是运算对象的关系,写在∏之后用()括起来。专门的关系运算注意:
因为投影运算的属性表不一定包含关系的码,经投影运算后,结果中很可能出现重复元组,消除重复元组后所得关系的元组将小于等于原关系的元组数。如果属性列中包含码,则不可能出现重复元组,投影运算后所得关系的元组与原关系一样。
投影不仅会取消一些列,也可能取消某些行。但在实际的SQL实现时要靠关键字来完成。专门的关系运算例1:求学生关系S在学生姓名和所在系这两个属性上的投影。∏SNAME,SDEPT(S)例2:求有多少个系。∏SDEPT(S)SNOSNAMESDEPTSAGE96001丁一计算机1996002王二计算机2096003张三数学2196004李四信息1996005刘五数学2096006赵六计算机22专门的关系运算③连接(Join)θ连接
一般定义为:
R∞SAθB
∞(Infinity)表示连接运算符;θ通常为比较运算符,但还有其他一些运算符,AθB是条件表达式。含义是:从R×S的广义笛卡儿积中选取R关系在A属性组上的值与S关系在B属性组上值满足比较运算θ的那些元组。专门的关系运算ABCa12ca24da34cDEd4e10ABCDEa12cd4a12ce10a24de10a34ce10RSR∞SB<E专门的关系运算自然连接(NaturalJoin)
是一种特殊而常用的连接。自然连接只当两个关系含有公共属性时才能进行。
若关系R和关系S具有公共属性组B,则自然连接定义为:
R∞S含义是:
从两个关系的笛卡儿积中选取公共属性值相等的元组,且在非公共属性和一组公共属性上投影而形成的结果关系。专门的关系运算ABCa1b1c2a2b2c1a3b1c3a4b2c5a5b3c1BCDEb1c2d1e1b3c1d2e2b1c3d3e3b1c2d4e4b3c1d5e5ABCDEa1b1c2d1e1a1b1c2d4e4a3b1c3d3e3a5b3c1d2e2a5b3c1d5e5RSAR.BR.CS.BS.CDEa1b1c2b1c2d1e1a1b1c2b1c2d4e4a3b1c3b1c3d3e3a5b3c1b3c1d2e2a5b3c1b3c1d5e5R.BC=S.BCR∞SR∞S专门的关系运算比较:等值连接与自然连接
等值连接是在笛卡儿积的基础上选择满足两个关系中给定属性值相等的元组的集合。自然连接是在两个关系的相同属性组上的等值连接,并且自然连接要在结果中把重复的属性去掉,而等值连接则不必。
自然连接要求两个关系中相等的分量必须是公共属性组,而等值连接则不需要。专门的关系运算
外连接
如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTERJOIN)。左外连接
如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFTOUTERJOIN或LEFTJOIN)
右外连接
如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHTOUTERJOIN或RIGHTJOIN)。专门的关系运算关系R和关系S
如下所示:专门的关系运算关系R和关系S的外连接:专门的关系运算专门的关系运算关系代数示例例1:求选修‘C2’课程的学生号码。∏SNO(σCNO=‘C2’(SC))例2:求同时选修‘C3’和‘C5’课程的学生号码。∏SNO(σCNO=‘C3’(SC))∩
∏SNO(σCNO=‘C5’(SC)
SNOCNOGRADE96004C39596004C57096005C28196005C395SC专门的关系运算例3:求至少选修一门学时数为90的课程的学生姓名。∏SNAME(σCT=90(C)∞∏SNO,CNO(SC)∞∏SNO,SNAME(S))SNOSNAMESDEPTSAGE96001丁一计算机1996002王二计算机2096003张三数学2196004李四信息1996005刘五数学2096006赵六计算机22CNOCNAMECTC1高等代数144C2程序设计100C3微机原理44C4数据结构64C5编译原理90C6操作系统32SNOCNOGRADE96004C39596004C57096005C28196005C395专门的关系运算例4:求选修数据结构或操作系统学生的学号和姓名。
∏SNO,SNAME(σSNAME=‘数据结构’VSNAME=‘操作系统’(C)∞∏SNO,CNO(SC)∞S)SNOSNAMESDEPTSAGE96001丁一计算机1996002王二计算机2096003张三数学2196004李四信息1996005刘五数学2096006赵六计算机22CNOCNAMECTC1高等代数144C2程序设计100C3微机原理44C4数据结构64C5编译原理90C6操作系统32SNOCNOGRADE96004C39596004C57096005C28196005C395专门的关系运算∏CNO(C)-∏CNO(σSNAME=‘王’(S)∞SC))例5求‘王’同学不学的课程的课程号。例6将新课程元组(‘C9’,‘物理’,144)插入到课程关系C中。C∪{(‘C9’,‘物理’,144)}专门的关系运算例7:将学号96004,选修课程号为‘C5’的成绩改为85分。分解执行为三步:
第一步:取出元组,并命名为V
V=σSNO=‘96004’∧CNO=‘C5’(SC)
第二步:删除这个元组
SC-V
第三步:插入新元组
SC∪{(‘96004’,‘C5’,85)}SNOCNOGRADE96004C39596004C57096005C28196005C395专门的关系运算④除(Division)一般定义为:设关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域。除运算记为R÷S:专门的关系运算
象集给定一个关系R(X,Z),其中X,Z为属性组。定义当t[X]=x时,x在R中的象集为:
Zx={t[Z]|t∈R,t[X]=x}
表示R中属性组X上值为x的诸元组在Z上分量的集合。专门的关系运算A={a1,a2,a3}a1在R中的象集
Ba1={B1,B2,B3},a2在R中的象集
Ba2={B2,B3},a3在R中的象集
Ba3={B1,B3}例
已知R(A,B),求Ba象集ABa1B1a1B2a1B3a2B2a2B3a3B1a3B3R专门的关系运算例:设关系R(A,B,C,D)和S(C,D,F),求R÷SABCDabcdabefbcefedcdedefabdeCDFcddefeRSABabed四、计算R÷S{(a,b),(e,d)}XYY一、计算X的元素集合。
X=(A,B)={(a,b),(b,c),(e,d)}三、Y在S上的投影∏Y(S)在(C,D)上的投影为{(c,d),(e,f)}二、计算x的象集。Yx:(a,b)的象集{(c,d),(e,f),(d,e)}
(b,c)的象集{(e,f)}
(e,d)的象集{(c,d),(e,f)}专门的关系运算∏SNAME(S∞(∏SNO,CNO(SC)÷∏CNO(C)))例1求出选修全部课程学生姓名。SNOSNAMESDEPTSAGE96001丁一计算机1996002王二计算机2096003张三数学2196004李四信息1996005刘五数学2096006赵六计算机22CNOCNAMECTC1高等代数144C2程序设计100C3微机原理44C4数据结构64C5编译原理90C6操作系统32SNOCNOGRADE96004C39596004C57096005C28196005C395专门的关系运算查询优化:
选择有效的策略,求出给定关系表达式的值,使得查询代价最小。启发式规则:(1)尽可能早地做选择运算;(2)尽可能早地做投影操作;(3)避免直接做笛卡儿集运算。本讲内容回顾定义与术语关系模式与关系差并交连接选择投影除广义笛卡尔积专门关系运算传统集合运算关系运算关系完整性域完整性实体完整性参照完整性作业教材P282.4《数据库原理及应用》数据库虚拟教研室制作数据库目录01
MySQL数据库02MySQL数据库的安装与配置03MySQL服务04MySQL客户端工具第3章搭建数据库实验环境MySQL数据库特点:
MySQL是一个跨平台的开源关系型数据库管理系统,广泛应用在Internet上的中小型网站开发中。
相比其它关系数据库,因其体积小、速度快、成本低的特点,是目前世界上非常受欢迎的开放源代码数据库之一。MySQL数据库版本:
(1)MySQLCommunityServer(社区版):该版本完全免费,但是官方不提供技术支持。用户可以自由下载使用。(2)MySQLEnterpriseServer(企业版服务器):为企业提供数据库应用,支持ACID事务处理,提供完整的提交、回滚、崩溃恢复和行政锁定功能。需要付费使用,官方提供技术支持。MySQL数据库的安装与配置
Windows操作系统下,MySQL数据库的安装包分为图形化界面安装和免安装两种。
这里以图形化界面安装为例。MySQL数据库的安装与配置1.MySQL下载(1)打开MySQL官网();(2)点击DOWNLOADS进入产品列表,点击社区版下载链接MySQLCommunityDownloads;(3)下载Windows操作系统图形化MySQL安装包(本书安装的是MySQL8.0.26)。2.MySQL安装(1)双击MySQL安装文件,进入MySQL安装界面,如图所示,选择安装类型。
DeveloperDefault:默认安装
Serveronly:仅作为服务
Clientonly:仅作为客户端
Full:完全安装
Custom:自定义安装
这里选默认安装类型MySQL数据库的安装与配置2.MySQL安装(2)进入“CheckRequirements”界面,如图所示。
然后单击Next按钮进入下一步。MySQL数据库的安装与配置2.MySQL安装(3)进入安装确认界面,如图所示,点击Execute按钮,开始MySQL各个产品的安装。MySQL数据库的安装与配置2.MySQL安装(4)开始安装MySQL文件,安装完成后在【Status】列表下显示Complete,如图所示。MySQL数据库的安装与配置3.MySQL配置(1)在安装的最后一步中,点击Next按钮进入服务器配置窗口,进行配置信息的确认,如图所示。
确认后点击Next按钮。MySQL数据库的安装与配置3.MySQL配置(2)进入服务器类型和网络配置窗口,如图所示。网络连接一般使用TCP/IP模式,默认端口为3306。单击Next按钮进入下一步。MySQL数据库的安装与配置3.MySQL配置(3)进入认证方式,如图3所示,选择使用强密码认证还是使用已有认证方式。初次使用,可保持默认设置。单击Next按钮进入下一步。MySQL数据库的安装与配置3.MySQL配置(4)配置管理员账号和密码,如图所示。输入管理员root账号的密码,记住该密码以便配置完成后进行登录。单击Next按钮进入下一步。MySQL数据库的安装与配置3.MySQL配置(5)配置MySQL服务的实例名称以及是否在系统启动后自动运行,如图所示。可使用默认设置。单击Next按钮进入下一步。MySQL数据库的安装与配置3.MySQL配置(6)根据上述配置进入界面,如图所示,点击Execute按钮完成MySQL的各项配置。MySQL数据库的安装与配置3.MySQL配置(7)都检测通过后,继续点击Finish、Next安装就可配置完成了。MySQL安装配置完成的界面如图所示。MySQL数据库的安装与配置管理MySQL服务1.通过Windows服务管理器管理MySQL服务从Windows桌面右击【计算机】→【管理】→【服务】打开Windows的服务管理器,如图所示,MySQL服务名为MySQL80。启动类型有3种类型可供选择:(1)自动:随系统一起启动。(2)手动:需要时启动。(3)禁用:服务将不能启动。注意:如果要使用MySQL,服务的状态必须为已启动。管理MySQL服务2.通过命令行管理MySQL服务使用管理员身份打开命令提示符,输人如下命令启动名称为MySQL的服务:netstartMySQL80通过如下命令停止MySQL服务:netstopMySQL80命令行窗口登录MySQL服务在MySQL的bin目录中,mysql.exe是MySQL提供的命令行客户端工具,用于访问数据库。该程序不能直接双击运行,需要打开命令行窗口,执行如下命令。mysql-u<用户名>–p<密码>成功登录MySQL服务器后,效果如图所示。命令行窗口登录MySQL服务当CMD命令提示符窗口中提示符变成“mysql>”后,表示连接MySQL服务成功,即可输入SQL语句,如输入“showdatabases;”查看服务器中的所有数据库。
mysql>showdatabases;MySQL客户端工具为了方便操作,可以使用一些图形化的的客户端工具,如SQLyog、Navicat和MySQLWorkbench等。
本书主要以SQLyog为主介绍。SQLyog的安装及使用(1)打开SQLyog的官网“”,下载并进行安装SQLyog;SQLyog的安装及使用(2)打开SQLyog,建立新的连接。
我的SQL主机地址:默认为“localhost”
用户名和密码:可输入root和相应密码
端口:使用MySQL默认端口号3306
数据库:默认为服务器中的所有数据库SQLyog的安装及使用(3)连接成功,进入主界面,将上课用的教学案例文档拷贝至查询窗口r后,点击工具栏上的“ExecuteAllQueries”创建数据库(eaching_manage)及表(student、course、score)。查询teaching_manage数据库中的student表的数据:SELECT*FROMstudent;ThankYou!ThankYou!谢谢学习《数据库原理及应用》数据库虚拟教研室制作数据库目录01
SQL概述02存储引擎03字符集与字符编码04MySQL数据库管理05MySQL数据类型06MySQL数据表管理07数据表的数据操作第4章数据库及表基本操作SQL概述SQL:StructuredQueryLanguage,结构化查询语言。其功能包括数据查询、定义、操纵和控制等方面。SQL有SQL89、SQL92和SQL99多个版本,并向下兼容。注意:SQL是关系数据库的标准语言,在语法上,不同的数据库产品略有不同,MySQL的语法与其他工具差别较大。SQL组成数据库存储引擎:是数据库底层软件组织,是对数据库文件的一种存取机制,为存储的数据建立索引以及如何实现更新、查询数据等技术的方法。存储引擎为什么要使用不同的存储引擎:现实生活中,由于不同业务产生了不同的数据,这些数据有的可能偏重于被频繁查询,有的可能偏重于修改速度,有的则对事务、索引、外键有特殊规定。这样一来,就对存储数据要求使用不同的数据组织结构,使用不同的存储引擎可以将数据以不同的结构进行存储。查看MySQL支持的存储引擎:
showengines存储引擎存储引擎的类型服务器是否支持该类型引擎注释事务分布式交易处理的XA规范事务保存点通过系统变量default-storage-engine来查看存储引擎,查看方式:showvariableslike‘default-storage-engine’;存储引擎MySQL存储引擎可在定义表的时候设置,也可以通过修改表的方式来设置。服务器在运行期间可修改数据库服务器默认存储引擎方式:setdefault-storage-engine=存储引擎名;数据库服务在启动时会读取配置文件my.ini,配置文件中有默认存储引擎的设置。(C:\ProgramData\MySQL\MySQL
Server
8.0\my.ini)[mysqld]default-storage-engine=innodb字符集(Characterset):是字符的集合,是一套符号以及编码规则,以二进制形式存储。常用的字符集如下表:字符集与字符编码字符编码:将字符变成字节的过程。在符号集合与数字系统之间建立对应关系。与字符集相对应,不同的字符集有不同的字符编码。解码:将二进制字节转换成对应字符的过程。字符集与字符编码转码utf8gbk查看当前MSQL支持的字符集及其默认的排序方式:showcharset;/showcharacterset;使用系统变量查看当前MySQL使用的字符集:showvariableslike'character%';字符集与字符编码数据库服务在启动时会读取配置文件my.ini,配置文件中有默认字符集的设置。[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]character-set-server=utf8字符序:是指在同一字符集内字符之间的比较规则。字符集与字符编码如何比较两个英文字符的大小?最简单的方式是比较两个字符二进制编码的大小,如ASCII码字符集中的’A’的编号为65,’a’的编码为97。如何比较两个汉字字符的大小?UTF8中文采用康熙字典中定义的偏旁索引顺序排序,GBK中文采用新华字典中定义的字母顺序排序。二都可以转码。例:将student表的sname字段由utf8字符集转为gbk排序。SELECT*FROMstudentORDERBYCONVERT(snameUSINGgbk);创建数据库创建数据库的语法格式CREATEDATABASE|SCHEMA[IFNOTEXISTS]db_name[[DEFAULT]CHARACTERSETcharset_name][[DEFAULT]COLLATEcollation_name];MySQL数据库管理创建数据库命令早期数据库称谓待创建数据库名已经存在时,给出错误信息待创建数据库名设置默认字符集设置字符集默认校对规则在创建数据库时省略了字符集和校对规则的设置,MySQL将采用默认字符集和默认校对规则,默认字符集是在哪里设置的?例4-1:创建名称为mytest的数据库,字符集和排序规则为采用系统默认。CREATEDATABASEmytest;MySQL数据库管理说明:创建数据库后,会在存储数据文件夹data下生成一个与数据库同名的目录,将来创建的表数据保存在此文件夹中。例:创建名称为mytest的数据库,字符集为utf8mb4和排序规则为采用系统默认。CREATEDATABASEmytest1charsetutf8mb4;查看数据库查看所有的数据库SHOWDATABASES;查看某个数据库SHOWCREATEDATABASEmytest;MySQL数据库管理使用数据库MySQL服务器中可以同时存在多个数据库,在做数据处理前,需要切换到指定数据库。语法如下:USE数据库名;例:将mytest切换为当前数据库usemytest;MySQL数据库管理修改数据库更改数据库的字符集和排序规则ALTERDATABASEdb_name[[DEFAULT]CHARACTERSETcharset_name][[DEFAULT]COLLATEcollation_name];MySQL数据库管理【例4-2】修改已建数据库mytest1,将其字符集改为utf8。ALTERDATABASEmytest1CHARACTERSETutf8;删除数据库系统收回已创建数据库所占用的存储空间,清除其在数据字典中的定义,数据库中所包含数据也将被清除。DROPDATABASE[IFEXISTS]数据库名;【例4-3】删除mytest数据库,删除前判断数据库是否存在。DROPDATABASEIFEXISTSmytest;MySQL数据库管理数据类型:是指数据所代表信息的类型,不同的数据类型在使用范围、存储方式都不一样。MySQL数据类型数字类型日期和时间类型字符型数据库通用SET类型ENUM类型JSON数据类型MySQL使用(自学)数字类型MySQL数据类型类型字节取值范围(有符号)取值范围(无符号)TINYINT1(-128,127)(0,255)SAMLLINT2(-32768,32767)(0,65535)MEDIUMINT3(-8388608,8388607)(0,16777215)INT4(-2147483648,2147483647)(0,4294967295)BIGINT8(-263,263-1)(0,264-1)DECIMAL[(P[,S])]如果P>S,为P+2字节,否则为S+2字节和P、S的值有关和P、S的值有关关于数字类型的相关说明如下:MySQL数据类型(1)在选择数据类型时,若一个数据将来可能参与数学计算,推荐使用整数或定点数类型:若只用来显示,则推荐使用字符串类型。例如,商品库存保存为整数类型;用户的身份证、电话号码可以保存为字符串型。(2)表的主键推荐使用整数类型,与字符串相比,整数类型的处理效率更高,查询速度更快。(3)定义无符号数据类型,需要在数据类型右边加UNSIGNED关键字,例如INTUNSIGNED;字符型MySQL数据类型数据类型说明限制CHAR(n)固定长度字符串0~255字符VARCHAR(n)可变长度字符串与字符集相关TEXT长文本数据0~28-1字符BLOB二进制长文本数据0~216-1字符关于字符类型的相关说明如下:MySQL数据类型(1)CHAR(n)存储存储大小为n个字符。如果实际输入不足n个字符,系统会自动在后面添加空格来填满。(2)VARCHAR(n)存储大小为输入数据的字符的实际长度,其存储的最大长度取决于字符集,gbk和utf8对应的最大值分别为32766和21488。(3)BLOB类型用于保存数据量较大的二进制数据,如图片、PDF文档等,BLOB与TEXT类型的主要区别为:BLOB类型根据二进制数据进行比较与排序,区分字符大小写;TEXT类型根据字符进行比较与排序,不区分字符大小写。日期和时间类型MySQL数据类型类型字节取值范围格式YEAR11901到2155YYYYTIME3-838:59到838:59:59HH:MM:SSDATE31000-01-01到9999-12-31YYYY-MM-DDDATETIME81000-01-0100:00:00到9999-12-3123:59:59YYYY-MM-DDHH:MM:SSTIMESTAMP41970-01-0100:00:00到2038-01-1903:14:07YYYY-MM-DDHH:MM:SS关于日期时间类型的相关说明如下:MySQL数据类型(1)在输入YEAR类型的值时,既可以使用四位字符和数字,也可以使用2位字符和数字。使用两位字符表示为'00'~'99',其中,'00'~'69'会被转化为2000~2069,'70'~'99'的值会被转换为1970~1999。(2)日期型DATE的常量有多种表示方式:'20221025'、'2022-10-25'、'22-10-25'、'221025'都表示2022年10月25日。日期型的变量CURRENT_DATE返回系统当前日期,日期函数NOW()返回系统当前日期和日间。(3)时间型的常量以'HHMMSS'或HHMMSS格式表示,如输入'121314'或121314都表示12:13:14(12小时13分14秒)。时间型的变量CURRENT_TIME返回系统当前时间。创建数据表在已存在的数据库中建立新表语法格式:CREATETABLE[IFNOTEXISTS]<表名>(<字段名>
<字段类型>[字段属性]…[索引定义]);MySQL数据表管理【例4-5】在teaching_manage数据库中创建一个名称为student的数据表,保存学生信息。
CREATETABLEIFNOTEXISTSstudent( snoCHAR(6)PRIMARYKEYCOMMENT'学生编号’, snameVARCHAR(20)NOTNULL, deptVARCHAR(20), sexCHAR(1), birthdayDATE, totalcreditDECIMAL(4,1)DEFAULT0, remarksVARCHAR(100) );MySQL数据表管理【例4-6】在teaching_manage数据库中创建一个名称为course的数据表,保存课程信息。CREATETABLEcourse( cnoCHAR(3)PRIMARYKEY cnameVARCHAR(30)NOTNULLUNIQUE termTINYINT, ctimeTINYINTUNSIGNED, creditDECIMAL(3,1));MySQL数据表管理【例4-7】在teaching_manage数据库中创建一个名称为score的数据表,保存成绩信息。CREATETABLEscore( score_idINTUNSIGNEDAUTO_INCREMENTsnoCHAR(6), cnoCHAR(3), gradeDECIMAL(4,1)CHECK(grade>=0) PRIMARYKEY(score_id),CONSTRAINTfk_score_snoFOREIGNKEY(sno)REFERENCESstudent(sno),CONSTRAINTfk_score_cnoFOREIGNKEY(cno)REFERENCEScourse(cno));MySQL数据表管理【例4-8】在teaching_manage数据库中利用score创建一个名称为sc的数据表,保存成绩信息。CREATETABLEscASSELECT*FROMscore;MySQL数据表管理注意:使用CREATETABLE+子查询方式创建表,只复制表结构和内容,原表中的约束和索引通常不会被复制。数据库的完整性约束完整性约束名定义关键字约束规则违约处理实体完整性约束primarykey主键不能取重复值和空值拒绝执行参照完整性约束foreignkey外键的值依赖主键的值或为空值拒绝/级联删除/级联更新/置为空值用户自定义完整性约束check满足表达式的值拒绝执行非空约束notnull不能取空值拒绝执行唯一性约束unique不能有重复值拒绝执行默认值约束default不指定值时取默认值拒绝执行数据库的完整性是指保证数据库中数据的正确性、准确性和有效性,通过定义防止不合语义的数据进入数据库。查看数据表1.查看库中数据表SHOWTABLES[LIKE匹配模式];--查看当前数据库中所有数据表
SHOWTABLES;--查看当前数据库中以'sc'开头的数据表SHOWTABLESLIKE'sc%';MySQL数据表管理2.查看数据表的详细信息SHOWTABLESTATUS[FROM数据库名][LIKE匹配模式];--查看当前数据库中所有数据表的详细信息
SHOWTABLESTATUS;--查看teaching_manage数据库中所有数据表的详细信息SHOWTABLESTATUSFROMteaching_manage;MySQL数据表管理3.查看表结构DESC<数据表名>[字段名];SHOWCOLUMNSFROM<数据表名>;--查看当前数据库中student表的结构
DESCstudent;SHOWCOLUMNSFROMstudent;--查看当前数据库中student表中sname字段的结构DESCstudentsname;MySQL数据表管理4.查看表的创建语句SHOWCREATETABLE<数据表名>;--查看当前数据库中student表的创建语句
SHOWCREATETABLEstudent;MySQL数据表管理修改数据表1.修改数据表名称ALTERTABLE<原数据表名>RENAME[TO|AS]<新数据表名>;RENAMETABLE<原数据表名>TO<新数据表名>;--修改数据表student为student1ALTERTABLEstudentRENAMETOstudent1;--修改数据表student1为studentRENAMETABLEstudent1TOstudent;MySQL数据表管理2.修改数据表选项ALTERTABLE<数据表名><表选项>[=]<表选项>;--修改数据表student的字符集为utf8ALTERTABLEstudentCHARSET=utf8;MySQL数据表管理修改表结构1.新增字段ALTERTABLE<数据表名>ADD[COLUMN]<字段名类型>[FIRST|AFTER字段名];--修改数据表student增加1个新列nativeplaceALTERTABLEstudentADDCOLUMNnativeplaceVARCHAR(50);--修改数据表student在性别(sex)增加1个新列nativeplaceALTERTABLEstudentADDnativeplaceVARCHAR(50)AFTERsex;MySQL数据表管理2.修改字段(1)修改字段名ALTERTABLE<数据表名>CHANGE<旧字段名><新字段名类型>--修改数据表student将nativeplace改名为nativeALTERTABLEstudentCHANGEnativeplacenativeVARCHAR(50);MySQL数据表管理(2)修改字段类型和位置ALTERTABLE<数据表名>MODIFY<字段名类型>[FIRST|AFTER字段名2]--修改数据表student将nativeplace类型改为VARCHAR(30)ALTERTABLEstudentMODIFYnativeplaceVARCHAR(30);--修改数据表student将nativeplace类型改为VARCHAR(20),并放在birthday之后ALTERTABLEstudentMODIFYnativeplaceVARCHAR(20)AFTERbirthday;MySQL数据表管理3.删除字段ALTERTABLE<数据表名>DROP[COLUMN]<字段名>;--修改数据表student删除列nativeplaceALTERTABLEstudentDROPnativeplace;MySQL数据表管理4.添加和删除约束ALTERTABLE<数据表名>[ADDCONSTRAINT<完整性约束名><完整性约束>][DROPCONSTRAINT<完整性约束名>]--修改数据表score,在sno、cno两字段上添加唯一约束uk_sno_cnoALTERTABLEscoreADDCONSTRAINTuk_sno_cnoUNIQUE(sno,cno);MySQL数据表管理删除数据表DROPTABLE<数据表名>;--删除学生表DROPTABLEstudent;表被删除后,表在数据字典中的定义也被删除,此表上建立的索引和视图也被自动删除。MySQL数据表管理SQL提供了数据更新功能INSERT插入DELETE删除UPDATE更新数据表的数据操作插入数据1.插入单个记录语句格式
INSERT INTO<表名>[(<属性列1>[,<属性列2>…)] VALUES(<常量1>[,<常量2>]…)数据表的数据操作注意:
(1)INTO子句属性列的顺序可与表定义中的顺序不一致
(2)VALUES子句提供的值必须与INTO子句匹配1.插入单个记录--向student表中插入一条记录,所有字段都有值INSERTINTOstudentVALUES('001242','张青','计算机','女','04-01-22',50,'三好生');--向student表中插入一条记录,部分字段有值INSERTINTOstudent(sno,sname,dept)VALUES('001243','李四','计算机');数据表的数据操作2.插入多个记录INSERT[INTO]<表名>[(字段名,…)][AS]子查询--向stu表中一次插入多条记录INSERTINTOstuSELECTsno,sname,sex,deptFROMstudent;数据表的数据操作修改数据UPDATE<表名>SET列名={表达式|(子查询)}[,…][WHERE<条件表达式>];注意:
(1)如果不选WHERE子句,则表中所有的行全被更新;
(2)如果选择了WHERE子句,则使WHERE中条件表达式为真的行被更新。数据表的数据操作【例4-9】把student表中的总学分加10。UPDATEstudentSETtotalcredit=totalcredit+10;【例4-10】把student表中姓名为“罗林琳”的学生的专业改为“计算机”,备注改为“三好学生”。UPDATEstudentSETdept='计算机',remarks='三好学生'WHEREsname='罗林琳';数据表的数据操作删除数据DELETEFROM<表名>[WHERE<条件表达式>];WHERE子句指定要删除的元组缺省表示要删除表中的全部元组,表的定义仍在字典中数据表的数据操作TRUNCATETABLE语句截断基本表,从表中删除所有的行,并且释放该表所使用的存储空间。在使用TRUNCATETABLE语句时,不能回退已删除的行。【例4-13】将表STUDENT删除,并释放其存储空间。TRUNCATETABLESTUDENT;数据表的数据操作为什么要定义自增型的字段?自增型字段(1)业务需求(2)空间效率:相同长度的字符串和数值所能表示的范围有较大差别。
如4个字节的数值型字符所表示的范围为:‘0000’—‘9999’共10000种不同的值,而4个字节的int类型所能表示的范围为:0——232-1共42亿种不同的值。(3)时间效率:相同长度的字符串和数值进行比较时,数值的比较速度要高于字符的比较速度。AUTO_INCREMENT类型AUTO_INCREMENT定义自增长字段,查看参数下:SHOWVARIABLESLIKE'auto_increment%';自增型字段参数名称默认值取值范围作用auto_increment_increment11~65535控制增量的幅度。auto_increment_offset11~65535增量开始的位置(开始的偏移量)。--设置A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论