版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库基本知识DatabaseBasics全套可编辑PPT课件目录Contents010203走进数据库数据与信息区分概念04拓展任务走进数据库01EnteringtheDatabase走进数据库思政小课堂千里之行始于足下02数据与信息
DataandInformation数据与信息数据那么到底什么是数据呢?数据与信息数据数据是记录客观事物的可鉴别的符号离散的连续的声音动画图像``````符号文字``````数据与信息数据语义数据与信息语义定义:指数据的含义,我们通常的表示一个数据的时候,是通过两个方面来进行描述的,一个是型,一个是值。型,是数据存储在媒体上的具体的形式。定义:指数据的含义,我们通常的表示一个数据的时候,是通过两个方面来进行描述的,一个是型,一个是值。值,是指描述客观事物的具体的特性。数据与信息我们在表示同一个信息的时候,可以用多种不同的数据形式来表示,而信息本身,并不会随数据形式的不同而改变。数据与信息因为表示它的值的时候,就可以分别用1.80和1米8来进行表示,这就是数据。型数字字符值1.801米8数据与信息信息那么什么是信息呢?96成绩
体重
年龄定义:数据加上一定的语义。一个数据,如果没有给他赋予特定的语义的话,那么这个数据就容易产生歧义,只有给它赋予一定的语义以后,那么它才表示一个具体的信息。数据与信息信息=数据+语义03区分概念DistinguishingConcepts数据库的几个概念数据库数据库管理系统数据库系统数据库管理员数据库:Database(DB)数据库管理系统:DataBaseManagementSystem(DBMS)数据库系统:
DataBaseSystem(DBS)数据库管理员:DatabaseAdministrator,(DBA)
数据库的几个概念数据库数据库:Database(DB)定义:就是存储数据的仓库,更确切地说是长期存储在计算机内的、有组织的、可共享的大量数据的集合。举例:企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性别、籍贯、工资、简历等)存放在“表”中,这张表就可以看成是一个数据库。举例:企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性别、籍贯、工资、简历等)存放在“表”中,这张表就可以看成是一个数据库。数据库的几个概念数据库数据库管理系统数据库:Database(DB)数据库管理系统:DataBaseManagementSystem(DBMS)定义:是位于操作系统和用户之间的一层管理软件,是整个数据库系统中的核心。主要功能就是为了科学的组织和储存数据,高效的获取和维护数据SQLServerMySQLAccessOracle定义:是位于操作系统和用户之间的一层管理软件,是整个数据库系统中的核心。主要功能就是为了科学的组织和储存数据,高效的获取和维护数据数据库的几个概念数据库数据库管理系统数据库:Database(DB)数据库管理系统:DataBaseManagementSystem(DBMS)数据库系统数据库系统:
DataBaseSystem(DBS)数据库的几个概念数据库数据库管理系统数据库:Database(DB)数据库管理系统:DataBaseManagementSystem(DBMS)数据库系统数据库管理员数据库系统:
DataBaseSystem(DBS)定义:是专门建立、管理和维护数据库的数据库用户,属于运维工程师的一个分支。他的主要业务职责是数据库从设计、测试、部署到交付的全生命周期管理,保证我们数据库管理系统在运行的过程当中的稳定性、安全性、完整性和高性能等等。定义:是专门建立、管理和维护数据库的数据库用户,属于运维工程师的一个分支。他的主要业务职责是数据库从设计、测试、部署到交付的全生命周期管理,保证我们数据库管理系统在运行的过程当中的稳定性、安全性、完整性和高性能等等。数据库管理员:DatabaseAdministrator,(DBA)
拓展任务04ExpansionTasks拓展任务通过搜索和汇总,就目前数据库的新技术、新方法、新工具、新方向等展开研究,写一篇综述报告。THANKS感谢聆听数据模型DataModel目录Contents010203认知数据模型解析数据模型探索未知思政小课堂现实世界信息世界计算机世界认知数据模型01CognitiveDataModels数据模型的概念组成要素数据操作数据结构完整性数据约束类型逻辑模型概念模型物理模型数据模型是对现实世界数据特征的抽象描述,是现实世界两级抽象的结果概念数据模型的概念组成要素数据操作数据结构完整性数据约束类型逻辑模型概念模型物理模型数据模型是对现实世界数据特征的抽象描述,是现实世界两级抽象的结果概念数据模型的概念组成要素数据操作数据结构完整性数据约束类型逻辑模型概念模型物理模型数据模型是对现实世界数据特征的抽象描述,是现实世界两级抽象的结果概念数据模型的概念组成要素数据操作数据结构完整性数据约束类型逻辑模型概念模型物理模型数据模型是对现实世界数据特征的抽象描述,是现实世界两级抽象的结果概念数据模型的概念组成要素数据操作数据结构完整性数据约束类型逻辑模型概念模型物理模型数据模型是对现实世界数据特征的抽象描述,是现实世界两级抽象的结果概念数据模型的概念组成要素数据操作数据结构完整性数据约束类型逻辑模型概念模型物理模型数据模型是对现实世界数据特征的抽象描述,是现实世界两级抽象的结果概念解析数据模型02AnalyzingDataModels数据模型层次模型数据模型层次模型网状模型数据模型层次模型网状模型关系模型数据模型层次模型网状模型关系模型面向对象模型层次模型父子节点之间的联系是一对多联系(1∶n)一个模型有且只有一个节点没有双亲节点,这个节点称为根节点。层次模型的结构特点根节点以外的其他节点有且只有一个双亲节点。网状模型允许两个节点之间有多种联系允许一个节点有多个双亲节点允许一个以上的节点没有双亲节点网状模型的结构特点关系模型SnoSNAMESSEXCnameGS0140101夏巧妙女SQLServer92S0140205汪小峰男机械设计基础88S0140304朱乐阳男数字电子技术87S0140208王莹莹女传感器技术78S0140107陈佳乐男平面设计95S0140406杜玉艳女财务会计86…
……面向对象模型
模型具有抽象性、封装性、继承性和多态性等特性,是面向对象的思想与数据库技术相结合的产物。面向对象模型数据模型关于NoSQL数据模型,你了解吗?它们分别应用在哪些场景中?思政小课堂学无止境勇攀高峰03提炼总结Refiningandsummarizing提炼总结010203数据模型是数据库系统的核心和基础数据模型就是现实世界的模拟数据库的发展取决于数据模型的发展THANKS感谢聆听建模工具的使用UseofModelingTools目录Contents010203Visio能干什么绘制图形动手实践01Visio能干什么WhatCanVisioDo思政小课堂简而不凡美在约中Visio能干什么简单功能强大可视化Visio建模工具Visio能干什么绘制图形02DrawGraphics绘图方法选择图形连接图形排列图形文本操作图形操作操作演示03动手实践
Hands-onPractice动手实践任务:试完成下图的绘制。THANKS感谢聆听需求分析RequirementAnalysis目录Contents01020304落实任务确立方法实施步骤提炼总结落实任务01ImplementTasks落实任务调查分析用户的活动收集和分析需求数据编写系统分析报告输入文字,添加相关标题,修改文字内容,也可以直接复制你的内容到此。资料形式收集的资料可以是文字,实物,图片,视频,音频等等思政小课堂求真务实追求卓越输入文字,添加相关标题,修改文字内容,也可以直接复制你的内容到此。编写需求分析报告确立方法
02Establishmethods调查方法询问设计调查表查阅记录跟班作业开调查会请专人介绍常用的调查方法实施步骤03ImplementationSteps调查分析的步骤调查组织机构情况调查各部门的业务活动情况确定新系统的边界明确对新系统的各种要求提炼总结04Refiningandsummarizing提炼总结010203是“反复探寻,逐步求精”的过程设计一个完善的数据库应用系统是不可能一蹴而就的需求分析是设计数据库的起点、是关键、是数据库设计的基础思政小课堂追求目标坚持不懈THANKS感谢聆听概念结构设计ConceptualStructureDesign目录Contents01020304解析模型确立方法实施步骤提炼总结解析模型01AnalyticalModel概念模型的特点语义表达能力丰富易于修改扩充易于交流理解易于向各种数据模型转换E-R模型确立方法02Establishmethods概念结构设计的方法先定义全局概念结构,然后再逐步细化。自顶向下先定义每个局部的概念结构,再按一定的规则将它们聚集起来。自底向上先定义最重要的核心概念结构,再逐步向外扩充。逐步扩张采用自顶向下和自底向上相结合的方法。混合策略思政小课堂八仙过海各显神通实施步骤03ImplementationStepsE-R图设计步骤选择局部应用01逐一设计分E-R图02合并分E-R图03消除冗余和冲突04设计案例教务管理信息系统由教学计划管理、班级开课管理、成绩管理和注册分班管理等几部分组成设计分E-R图合并E-R图消除冗余和冲突word文档鼠标滑动浏览”分E-R图---项目2:任务2概念结构设计.docx”word文档鼠标滑动浏览”合并E-R图---项目2:任务2概念结构设计.docx”提炼总结04Refiningandsummarizing设计中需要注意的问题010203结构冲突命名冲突:同名异义、异名同义属性冲突:属性值域冲突、属性取值单位冲突THANKS感谢聆听逻辑结构设计LogicalStructureDesign目录Contents01020304解析任务设计步骤转化原则动手实践解析任务01ParsingTasks逻辑结构设计的任务逻辑结构结构设计的任务是把概念结构设计阶段设计好的整体E-R图转换为与选作某种特定的DBMS产品所支持的数据模型相符合的逻辑结构(这里用关系模型)。逻辑结构结构设计02设计步骤DesignSteps设计步骤010203模式的评价与改进关系模式规范化初始关系模式设计转化原则03TransformationPrinciple思政小课堂没有规矩不成方圆E-R图设计步骤动手实践04Hands-onPractice动手实践任务:请将下面的“学生管理”的E-R图转化成关系模型。THANKS感谢聆听关系规范化NormalizationofRelations目录Contents01020304规范化理论第一范式第二范式第三范式思政小课堂独立思考尊重事实提出问题
讨论分析下面的“学生信息”有什么漏洞?分析问题数据冗余太大插入异常删除异常更新异常“学生信息”表存在的问题规范化理论01NormativeTheory规范化理论规范化理论解决方法用形式更为简洁、结构更加规范的关系模式取代原有关系模式的过程。规范化范式关系的三级规范化形式,分别为第一范式、第二范式和第三范式即Boyce-Codd范式,简称BC范式(BCNF)第四范式(4NF)第五范式(5NF)E.F.CoddCodd和BoyceFaginChrisBishop02第一范式1NF第一范式第一范式:如果关系模式R的所有属性均为原子属性(不可再分),则称R属于第一范式,简称1NF,记作R∈1NF。TNoTNSexProfSalBasicBonus01001赵乾女讲师600050001002钱坤男讲师6000100001003孙震女副教授7000120002011李离女教授800080002013周巽男教授80002000TNoTNSexProfBasicBonus01001赵乾女讲师600050001002钱坤男讲师6000100001003孙震女副教授7000120002011李离女教授800080002013周巽男教授80002000T1T2第二范式032NF第二范式第二范式:如果关系模式R∈1NF,且每个非主属性都完全依赖于R的主码,则称R属于第二范式,简称2NF,记作R∈2NF。去掉仅由主属性构成的关系模式将主码属性集合的每个子集作为主码构建关系模式规范化到2NF的具体分解步骤将非主属性依次放到相应的关系模式中第二范式判断选课(学号,课程号,姓名,成绩)是否为2NF?若不是,请转化为2NF!任务该关系中存在如下函数依赖关系:
(学号,课程号)→成绩学号→姓名,(学号,课程号)→姓名分析投影分解可得两个关系:学生(学号,姓名)选课(学号,课程号,成绩)解答第三范式043NF第三范式如果关系模式R∈2NF,且每个非主属性都不传递依赖于R的主码,则称R属于第三范式,简称3NF,记作R∈3NF。新建关系模式,放入删除掉的依赖因子及其决定因子将关系模式中非主属性的依赖因子删除,即删除依赖于非主属性的属性规范化到3NF的具体分解步骤第三范式判断学生(学号,姓名,系别,系主任)是否为3NF?若不是,请转化为3NF!任务该关系中存在如下函数依赖关系:学号→姓名,学号→系别,学号→系主任,系别→系主任分析投影分解可得两个关系:学生(学号,姓名,系别)系管理(系别,系主任)解答动手实践任务:请将前面的“学生信息”规范到第三范式。THANKS感谢聆听认识MySQLKnowMySQL目录Contents01什么是MYSQL02MYSQL的特点03MySQL的安装与配置什么是MYSQL01WhatisMYSQL什么是MYSQL1985年MySQLAB前身成立1996年MySQL1.0发布1999~2000年MySQLAB公司成立2005年10月MySQL5.0发布,这是一个里程碑的版本2008年1月16日MySQL被Sun收购2009年4月20日Oracle收购Sun,MySQL转入Oracle旗下2016年8月MySQL8.0版本发布MySQL是一个关系型数据库管理系统MySQL现在是最流行的开源数据库产品,市场占有率高。思政小课堂耕耘今天收获明天MYSQL的特点02ThefeaturesofMYSQLMYSQL的特点MySQL是一个基于客户机/服务器架构、真正的多用户、多线程的数据库服务器。运行速度快功能强大可移植性高支持大型数据库强大的数据保护功能提供多种存储器引擎特点MySQL的安装与配置03InstallationandconfigurationofMySQLMySQL的安装与配置官方下载地址:/downloads/mysql/下载安装程序安装MySQL定制安装类型(SetupType)选择可用的产品(AvailableProducts)执行安装(Execute)MySQL的安装与配置验证测试Windows命令行登录命令:mysql–h主机名–P端口号–u用户名-p配置MySQL配置MySQL数据库服务器配置示例数据库将MySQL的bin目录添加到系统环境变量path中认识MySQL小结MySQL的安装与配置MySQL的发展史、特性什么是MySQL数据库THANKS感谢聆听数据库的创建与维护DatabaseCreationandMaintenance目录Contents01什么是数据库对象02创建数据库03数据库维护01什么是数据库对象WhatisDatabaseObject什么是数据库对象数据库是一个存储数据对象的容器数据库对象包括表、视图、触发器、存储过程等创建数据对象前,必须首先创建数据库02创建数据库CreateDatabase创建数据库CREATEDATABASE[IFNOTEXISTS]<数据库>[[DEFAULT]CHARACTERSET<字符集名>][[DEFAULT]COLLATE<校对规则名>];语法01通过CREATEDATABASE语句创建一个名称为library的数据库,并指定其字符集为GBK,在创建前判断该数据库名称是否存在,只有不存在时才进行创建。任务描述02CREATEDATABASEIFNOTEXISTSlibraryCHARACTERSETgbk;任务实施0303数据库维护DatabaseMaintenance数据库维护ALTERDATABASE[数据库名]{[DEFAULT]CHARACTERSET<字符集名>|[DEFAULT]COLLATE<校对规则名>}修改数据库02DROPDATABASE数据库名;删除数据库03查看数据库01查看服务器中的所有数据库名称列表。SHOWDATABASES;查看指定数据库的定义
SHOWCREATEDATABASE数据库名;删除数据库示例dropdatabaselibrary;切换当前数据库示例uselibrary;selectdatabase();修改数据库示例alterdatabaselibrarycharactersetutf8;查看library数据库的定义showcreatedatabaselibrary;查看数据库示例showdatabases;数据库的创建与维护小结数据库对象的查看、修改和删除数据库对象的创建认识数据库对象滴水成河粒米成箩思政小课堂THANKS感谢聆听认识表UnderstandingTable目录Contents01020304表的探究表的概述数据类型提炼总结表的探究01InvestigationofTables分析问题MySQL中表的功能是什么?表的结构又是怎样的?表的概述02OverviewofTables表的概述表是数据库中最重要、最基本的操作对象。表是存储数据的基本单位。一个数据库包含若干张表且名称不同。表是由列(Column)和行(Row)组成。数据类型03
DataTypes数据类型DataTypes整数类型日期时间类型字符串类型...小数类型二进制类型确定表中每列(字段)的数据类型是设计表的重要步骤。不同的数据类型决定了MySQL存储数据方式的不同。字段的数据类型数据类型MySQL中的整数类型SMALLINTBIGINTTINYINTINTMEDIUMINT根据数值取值范围的不同,MySQL中的整数类型可分为5种,分别是TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。MySQL中的整数类型数据类型浮点数单精度浮点数类型(FLOAT)双精度浮点类型(DOUBLE)定点数DECIMAL(M,D)数据类型为了方便在数据库中存储日期和时间,MySQL提供了表示日期和时间的数据类型DATE02TIME03DATETIME04TIMESTAMP0501YEAR数据类型MySQL中的整数类型VARCHARTEXTCHARVARBINARYBINARYBLOBENUMSETBITMySQL提供了字符串和二进制类型实战演练查看教务管理系统数据库(tea_man)中学生表(student)的结构和字段的数据类型。任务描述01usetea_man;descstudent;任务实施02观察性别字段(sex)的数据类型和普通的字符串类型有何不同?任务拓展03提炼总结04Refiningandsummarizing提炼总结010203熟悉数据类型,并在设计表时为不同字段选择合理的数据类型。表是由行和列所组成的,行称之为记录,列称之为字段表是MySQL数据库中存储数据的最基本单位思政小课堂注重实效适度灵活THANKS感谢聆听创建表Createtable目录Contents01020304表的创建表的查看约束条件提炼总结表的创建01TableCreationMethod创建表CREATETABLE<表名>(<字段1><数据类型1>[<完整性约束条件>],<字段2><数据类型2>[<完整性约束条件>],…
<字段n><数据类型n>[<完整性约束条件>]);语法01在tea_man数据库中,创建名为class1的表,需求如右图所示。任务描述02CREATETABLEclass1(class_idint,
class_namechar(20),
date_enrollmentdate);任务实施03字段名数据类型备注class_idint主键class_namechar(20)date_enrollmentdate表的查看02viewtable查看数据库中的表列表SHOWTABLES;语法01查看tea_man数据库中的表列表,看是否有class1表?任务描述02SHOWTABLES;任务实施03约束条件03ConstraintCondition完整性约束条件主键约束PRIMARYKEY唯一约束UNIQUE非空约束NOTNULL默认值约束DEFAULT外键约束FOREIGNKEY列举的约束条件均是针对表中字段进行的限制,从而保证表中数据的正确性和唯一性。思政小课堂欲成方圆规矩必严实战演练CREATETABLEstu(sidintnotnullprimarykey,snamevarchar(12)unique,sexchar(3)default'男',birthdaydate,class_idint,foreignkey(class_id)referencesclass1(class_id));任务实施02在tea_man数据库中创建如下需求的stu表。任务描述01字段名数据类型约束条件sidint
非空,主键samevarchar(12)唯一约束sexchar(3)默认值为“男”birthdaydateclass_idint外键,参照引用class1表中的class_id提炼总结04Refiningandsummarizing创建表的一般步骤010203添加必要的完整性约束条件根据实际情况定义所需字段及其类型CREATETALBE表名THANKS感谢聆听管理表ManagementTable目录Contents01020304表结构的查看表的修改表的删除提炼总结表结构的查看01viewingtablestructure表结构的查看方法1方法2方法3任务:查看stu表的结构DESCRIBE|DESC表名 ; SHOWCOLUMNSFROM表名;SHOWCREATETABLE表名;表的修改02Alter
Table表的修改修改的类型修改字段的排列位置修改字段名删除字段修改表名添加字段修改字段的数据类型ALTER
TABLE<表名>{[add<新字段名><数据类型>[<约束>][first|after已存在字段名]]|[modify<字段名1><新数据类型>][<约束>][first|after已存在字段名]]|[change<旧字段名><新字段名><新数据类型>]|[drop<字段名>|<约束名>]|[rename[to]<新表名>]};修改表的语法格式表的修改在stu表的最后增加一列id_card数据类型为int,查看此时stu表的结构;然后将其调整到sex列的后面,并同时修改数据类型为char(19),查看此时stu表的结构。任务描述01altertablestuaddid_cardint;descstu;altertablestumodifyid_cardchar(19)aftersex;descstu;任务实施02如果要将id_card列名称修改为sfz,数据类型同时修改为varchar(19),用一条命令应该如何完成?拓展任务03表的删除03
Drop
Table删除表删除stu表。任务描述02droptablestu;任务实施03语法01DROPTABLE[IFEXISTS]表名[,…];提炼总结04Refiningandsummarizing注意事项删除数据表时更应该慎重,并做好备份。进行任何结构性修改之前要确保有适当的备份虽然修改表结构有很多好处,但是这个过程应该谨慎进行思政小课堂精心准备万无一失THANKS感谢聆听数据更新DataUpdate目录Contents01020304插入数据修改数据删除删除提炼总结插入数据01insertingdata插入数据INSERT[INTO]表名[(列名列表)]VALUES(值列表)[,(值列表)]...语法01向class1表中插入如下的三条记录:(1,'软件211','2021-09-01'),
(100,'网络222','2022-09-01'),
(203,'大数据231','2023-09-01')。任务描述02insertintoclass1values(1,'软件211','2021-09-01'),(100,'网络222','2022-09-01'),(203,'大数据231','2023-09-01');任务实施03修改数据02UpdateData修改数据UPDATE<表名>SET<列名1>=<表达式1>[,<列名2>=<表达式2>][,…][WHERE<条件表达式>];语法01将class1表中班级号(class_id)为100的班级名称(class_name)修改为'软件222'。任务描述02updateclass1setclass_name='软件222'whereclass_id=100;任务实施03删除数据03DeleteData删除数据从class1表中将班级号大于等于100的班级信息删除。任务描述02deletefromclass1whereclass_id>=100;任务实施03语法01DELETEFROM<表名>[WHERE<条件表达式>];思政小课堂失之毫厘谬以千里提炼总结04Refiningandsummarizing注意事项在进行大规模更新之前,应该备份相关数据在修改和删除数据时,应确保使用正确的WHERE条件更新数据时,应保证更新后的数据依然符合业务规则和约束条件THANKS感谢聆听单表无条件查询SingleTableUnconditionalQuery目录Contents01020304查询的探究SELECT语句的一般格式单表无条件查询提炼总结查询的探究01InvestigationofQuerySELECT语句的一般格式02TheGeneralFormatoftheSELECTStatementSELECT语句的一般格式KeywordsSELECTWHERELIMITORDERBYFROMGROUPBYSELECT目标列语法格式FROM目标表[WHERE查询满足的条件][GROUPBY分组所依据的列][HAVING附加筛选的条件表达式]][ORDERBY排序所依据的列][LIMIT[M,]N]循序渐进步步为营思政小课堂单表无条件查询03SingleTableUnconditionalQueryDISTINCT和LIMIT从student表中查询出所有不同的班级号,最终输出查询结果中的前5个不同的班级号。任务描述02步骤一:查询出student中所有的班级号selectclass_idfromstudent;步骤二:查询出student中所有不同的班级号selectdistinctclass_idfromstudent;步骤三:输出步骤二中查询结果的前5条记录
selectdistinctclass_idfromstudent
limit0,5;任务实施03语法01SELECT[ALL|DISTINCT]目标列|*FROM表名[LIMIT[M,]N];查询经过计算的列SELECT<列1>[AS<列别名1>][,<列2>[AS<列2>][,...]]FROM表名语法01从student表中查询出前10个同学的姓名和年龄。(年龄通过year(now())-year(date_birth)计算得到)要求查询结果中输出中文列名“姓名”和“年龄”。任务描述02步骤一:查询前10个同学的姓名和年龄selectsname,year(now())-year(date_birth)fromstudentlimit10;步骤二:指定查询结果中的中文列别名。selectsnameas姓名,year(now())-year(date_birth)as年龄fromstudentlimit10;任务实施03提炼总结04Refiningandsummarizing提炼总结010203查询经过计算列,一般要结合具体的业务规则合理利用DISTINCT和LIMIT关键词正确指定查询的目标列THANKS感谢聆听单表有条件查询SingleTableConditionalQuery目录Contents01020304单表有条件查询概述单表有条件查询任务一单表有条件查询任务二提炼总结单表有条件查询概述01OverviewofSingleTableConditionalQuery单表有条件查询概述WHERELIMITORDERBYFROMGROUPBYSELECT目标列FROM<表名>WHERE<条件表达式>;条件表达式是通过运算符连接起来的逻辑表达式。语法格式WHERE条件中的运算符查询条件运算符比较运算符=,<,>,<=,>=,<>,!=,!<,!>范围运算符BETWEENAND,NOTBETWEENAND列表运算符IN,NOTIN字符匹配符LIKE,NOTLIKE空值ISNULL,ISNOTNULL逻辑运算符AND,OR,NOT单表有条件查询任务一02SingleTableConditionalQueryTaskOne任务一从student表中查询出班级号(class_id)在1-4之间的所有同学的相关信息。任务描述02方法一:select*fromstudentwhereclass_id>=1andclass_id<=4;方法二:select*fromstudentwhereclass_idbetween1and4;方法三:select*fromstudentwhereclass_idin(1,2,3,4);任务实施03运算符01比较运算符(>、<...),范围运算符(BETWEEN...AND),列表运算符(IN)和逻辑运算符(AND、OR、NOT)。思政小课堂尺有所短寸有所长单表有条件查询任务二03SingleTableConditionalQueryTaskTwo任务二空值判断(IS[NOT]NULL)、字符匹配([NOT]LIKE)运算符01从student表中查询出姓名第二个字符为“俊”且班级号为空的同学的信息。任务描述02select*fromstudentwheresnamelike'_俊%'andclass_idisnull;任务实施03通配符名称说明_下划线匹配单个的任意字符%百分号匹配0个或多个任意字符提炼总结04Refiningandsummarizing提炼总结单表有条件查询是数据库操作中非常基础且重要的技能在进行条件查询时,可以使用各种运算符来构建条件表达式单表有条件查询是指在数据库的单个表中根据特定的条件筛选数据THANKS感谢聆听分组与排序查询GroupandSortQueries目录Contents01020304聚合函数分组查询排序查询提炼总结聚集函数01AggregateFunction聚合函数WHERELIMITORDERBYFROMGROUPBY常用聚合函数的用法及含义聚合函数具体用法具体含义COUNTCOUNT([DISTINCT|ALL]*)统计元组个数COUNTCOUNT([DISTINCT|ALL]<列名>)统计一列中值的个数SUMSUM([DISTINCT|ALL]<列名>)计算一列值的总和(此列必须为数值型)AVGAVG([DISTINCT|ALL]<列名>)计算一列值的平均值(此列必须为数值型)MAXMAX([DISTINCT|ALL]<列名>)求一列值中的最大值MINMIN([DISTINCT|ALL]<列名>)求一列值中的最小值分组查询02GroupingQuery对查询结果集进行分组语法01从grade表中查询出每个同学所学所有课程期末成绩(final_score)的平均分,要求输出每个同学的学号(sid)和平均分(使用中文列别名),并筛选出平均分在90分以上的同学的统计信息。任务描述02selectsidas学号,avg(final_score)as平均分fromgradegroupbysidhavingavg(final_score)>90;任务实施03SELECT字段名列表FROM表名[WHERE查询条件][GROUPBY分组表达式][HAVING条件表达式]排序查询03OrderingQuery对查询结果集进行排序SELECT字段名列表FROM表名[WHERE
查询条件][ORDERBY<列名1>[ASC|DESC][,<列名2>[ASC|DESC]][,…]]语法01从grade表中查询选修了cs001号课程的学生的学号(sid)及其期末成绩(final_score),查询结果按期末成绩的降序和学号升序排列。任务描述02任务实施03selectsid,final_scorefromgradewherecid='cs001'orderbyfinal_scoredesc,sidasc;思政小课堂科学排序德育为先提炼总结04Refiningandsummarizing注意事项分组GROUPBY子句的分组依据可以是字段或表达式;可以是一列或多列。分组HAVING子句用于对分组进行筛选分组没有GROUPBY子句时使用HAVING子句是没有意义的。排序排序依据除字段和表达式外,也可以是顺序号,即SELECT子句中对应列的顺序。排序排序时空值(NULL)作为最小值处理。THANKS感谢聆听多表连接查询MultipleTableJoinQuery目录Contents01020304连接查询探究内连接左外连接提炼总结连接查询探究01InvestigatingJoinQueries连接查询的类型交叉连接CROSS
JOIN内连接INNER
JOIN左外连接LEFT
[OUTER]JOIN右外连接RIGHT[OUTER]JOIN全外连接(模拟)左外UNION右外内连接02INNER
JOIN内连接的语法内连接的语法传统的用法SELECT<结果集列表>FROM表数据源1,表数据源2[,…]WHERE<连接条件>[AND<筛选条件>]SQL标准中规定的语法SELECT<结果集列表>FROM表数据源1{[INNER]JOIN表数据源2ON连接条件}[…][WHERE<筛选条件>]内连接的语法任务实战任务描述01查询出班级编号(class_id)为119的所有学生的学号(sid)、姓名(sname)和班级名称(class_name)。任务实施02selectsid,sname,class_namefromstudentjoinclassonstudent.class_id=class.class_idwherestudent.class_id=119;任务拓展03查询出学习“C语言程序设计”的学生的学号、姓名和成绩左外连接03LeftOuterJoin左外连接SELECT<结果集列表>FROM表数据源1{{LEFT[OUTER]JOIN表数据源2ON连接条件}[…][WHERE<筛选条件>]语法01查询担任辅导员的教师情况。任务描述02select*fromteacherleftouterjoinclassontid=counsellor;任务实施03提炼总结04Refiningandsummarizing思政小课堂团结协作共建共享注意事项010203将左右表互换就可以用左外连接实现右外连接表连接运算可以两表、三表甚至是多表虽然不常用,但SQL也支持不等值内连接。THANKS感谢聆听子查询Subquery目录Contents01020304子查询的探究比较运算符引导的子查询IN或EXISTS引导的子查询提炼总结子查询的探究01InvestigatingSubqueries子查询的定义比较运算符引导[NOT]IN引导[NOT]EXISTS引导子查询1、在SQL查询中,可以在WHERE子句、FROM等子句中嵌入另一个完整的SELECT查询。2、嵌入的查询称为子查询。3、WHERE子句、FROM等子句所在的查询称为外部查询或主查询4、主子查询在一起称为查询的嵌套。比较运算符引导的子查询02Subqueryguidedbycomparisonoperator任务实战语法01任务描述02任务实施03表达式比较运算符(子查询)从student表中查询出比“李晓”同学年长的所有同学的信息。select*fromstudentwheredate_birth<(selectdate_birthfromstudentwheresname='李晓');思政小课堂理清层次铸就信念IN或EXISTS引导的子查询03SubqueriesguidedbyINorEXISTSIN或EXISTS引导的子查询表达式[NOT]IN(子查询)————————————[NOT]EXISTS(子查询)语法01查询出没有选修任何课程的学生学号和姓名。任务描述02方法二:selectsid,snamefromstudentwherenotexists(select*fromgradewherestudent.sid=grade.sid);
相关子查询任务实施03方法一:selectsid,snamefromstudentwheresidnotin(selectsidfromgrade);提炼总结04Refiningandsummarizing提炼总结比较运算符引导的子查询中,通常要求子查询返回的是单个值。包含相关子查询的查询效率较低,建议使用外连接或(NOT)IN引导的子查询替代。比较运算符引导的子查询如果返回的是多个值,可以使用ALL、ANY、SOME等关键字进行限定THANKS感谢聆听了解与创建索引UnderstandingandCreatingIndexes目录Contents01020304探究索引认知索引创建索引提炼总结探究索引01ExploreIndex“双十一购物狂欢节”访问速度减慢存储数据量以及查询数据频率增加如何改善这种情况索引为改善这种状况,我们在设计数据库的同时需要考虑优化系统的性能。视图观察实验
探究本质此处嵌入视频界面分析问题分析问题上述查询执行效率为何差距很大,导致这种现象的原因究竟是什么?认知索引02Recognizingindex索引的概念索引是一个单独的、物理的数据库结构。索引是依赖于表建立的。索引是某个表中一列或者若干列值的集合。索引可以提高数据的访问速度。索引分类MYSQL数据库的索引普通索引唯一性索引全文索引单列索引多列索引空间索引唯一性索引列的值必须唯一,但允许有空值,索引关键字为UNIQUE其中全文索引、单列索引、多列索引、空间索引全文索引空间索引单列索引多列索引1、全文索引关键字为FULLTEXT,主要用在查询数据量较大的字符型字段上。2、单列索引即一个索引只包含单个列,一个表可以有多个单列索引。3、多列索引,就是在多个字段上创建一个索引,也称为复合索引。4、空间索引是对空间数据类型的字段建立的索引,空间索引关键字为SPATIAL。创建索引03
Creatingindex创建索引INDEXCREATEFULLTEXTSPATIALHASHUNIQUEBTREECREATE[UNIQUE|FULLTEXT|SPATIAL]INDEX索引名称[USING{BTREE|HASH}]ON表名(列名[(n)][ASC|DESC],...);语法实战演练在CLASS(班级表)上创建一个CLASS_NAME(班级名称)的唯一索引,索引名为IX_CLASSNAME。任务描述01CREATEUNIQUEINDEXIX_CLASSNAMEONCLASS(CLASS_NAME);任务实施02各组根据所选的课题,依据其系统的特性,针对前台查询需求,完成课程设计中数据表的索引设计。任务拓展03插入视频提炼总结04Refiningandsummarizing过犹不及,恰到好处思政小课堂索引的设计原则数据量小的表最好不要使用索引避免对经常更新的表进行过多的索引主键、连接中频繁使用的列需要建立索引为经常需要排序、分组和联合操作的字段建立索引指定唯一索引是由某种数据本身的特征来决定在不同值少的列上不要建立索引THANKS感谢聆听索引的维护MaintenanceofIndexes目录Contents01020304查看索引删除索引修改索引提炼总结查看索引01ViewIndex查看索引方法1方法2方法3方法4任务:查看student表的索引SHOW INDEX FROM 表名; SHOWKEYSFROM表名;DESCRIBE表名;SHOWCREATETABLE 表名 ; 删除索引02Dropindex删除索引DROPINDEX<索引名>ON<表名>;语法01删除CLASS表中名为IX_CLASSNAME的索引。任务描述02DROPINDEXIX_CLASSNAMEONCLASS;任务实施03修改索引03
Modifyindex修改索引在MYSQL中并没有直接提供修改索引的命令,通常情况下,需要先删除原索引,再根据需要创建一个同名的索引,实现修改索引的操作,从而优化数据查询性能。索引提炼总结04Refiningandsummarizing拓展任务数据库运行了较长时间后,有可能产生很多的碎片或者索引遭到了损坏,为维护数据库的性能。我们需要定期维护数据表和索引以保证它们运行良好。提炼总结重建索引使用REPAIRTABLE表名QUICK修复索引利用MySQL8.0新特性,使用降序索引思政小课堂持之以恒功成事成THANKS感谢聆听视图的创建与查看ViewCreationandViewing目录Contents01020304认知视图创建视图查看视图提炼总结认知视图01CognitiveView观看动画
探究原理思政小课堂透过现象挖掘本质认知视图视图是由一个或多个表(或视图)导出的表01视图是一个虚拟的表,数据库中只存储视图的定义02视图是已经编译好的SQL语句03视图的建立和删除只影响视图本身,不影响对应的基本表04创建视图02Creating
View创建视图CREATE[ORREPLACE]VIEW视图名[(列名列表)]ASSELECT
语句[WITHCHECKOPTION];语法01创建名为NOGRADE_STU的视图,用来显示所有不及格学生的信息,包括学生学号(SID)、姓名(SNAME)、课程名称(CNAME)、成绩(FINAL_SCORE)。任务描述02CREATEVIEWNOGRADE_STU(学号,姓名,课程名称,成绩)ASSELECTA.SID,A.SNAME,C.CNAME,B.FINAL_SCOREFROMSTUDENTA,GRADEB,COURSECWHEREA.SID=B.SIDANDB.CID=C.CIDANDB.FINAL_SCORE<60;任务实施03查看视图03
ViewingViews查看视图DESCRIBE视图名;或DESC视图名;语法01查看NOGRADE_STU信息。任务描述02DESCRIBENOGRADE_STU;任务实施03提炼总结04Refiningandsummarizing视图的优点将数据集中显示屏蔽数据库的复杂性简化用户权限管理便于数据的共享可以重新组织数据THANKS感谢聆听视图的使用与维护UseandMaintenanceofViews目录Contents01020304操作视图修改视图删除视图提炼总结操作视图01OperationalView操作视图查看视图数据通过视图插入数据通过视图修改数据通过视图删除数据通过视图操作数据使用方法同表类似究其原因聚合函数AVG()COUNT()SUM()MIN()只能来自单一的表MAX()计算列操作视图通过NOGRADE_STU视图将所有"Python数据分析"成绩改为90,能实现吗?通过视图更新数据有限制的!插入演示视频听不如看看不如干思政小课堂修改视图02ModifyView修改视图ALTERVIEW视图名[(列名列表)]ASSELECT查询[WITHCHECKOPTION];语法01修改名为NOGRADE_STU的视图,用来显示所有"数据库技术与应用"成绩不及格学生的信息,包括学生学号(SID)、姓名(SNAME)、课程名称(CNAME)、成绩(FINAL_SCORE)。任务描述02ALTERVIEWNOGRADE_STU(学号,姓名,课程名称,成绩)ASSELECTA.SID,A.SNAME,C.CNAME,B.FINAL_SCOREFROMSTUDENTA,GRADEB,COURSECWHEREA.SID=B.SIDANDB.CID=C.CIDANDB.FINAL_SCORE<60ANDCNAME='数据库技术与应用';任务实施03删除视图03
DropView删除视图语法01删除NOGRADE_STU视图。任务描述02DROPVIEWNOGRADE_STU;任务实施03DROPVIEW[IFEXISTS]视图名[,…];提炼总结04Refiningandsummarizing注意事项只有对满足可更新条件的视图,才能进行更新并不是所有的视图都可以更新通过更新视图数据可以修改基表数据THANKS感谢聆听SQL语言基础SQLLanguageBasics目录Contents01020304常量和变量运算符表达式提炼总结常量和变量01ConstantsandVariables常量日期时间常量
位字段值
布尔常量
NULL值其他常量
十进制整型常量十六进制整型常量定点实型常量浮点实型常量字符串常量常量变量系统变量用户变量局部变量变量1.全局变量2.会话变量系统变量查看系统变量version和server_id的值。任务描述01select@@version,@@server_id;任务实施02大多数的系统变量应用于其他SQL语句时,必须在名称前加两个@符号。系统变量查看与字符集相关的系统变量。任务描述01showvariableslike‘char%’;任务实施02
显示系统变量的语法:SHOW[global|session]VARIABLES[LIKE‘字符串’];修改系统变量的值在MySQL中,只有一部分系统变量可通过SET语句来修改。将全局系统变量server_id的值改为25000;将会话系统变量SQL_SELECT_LIMIT的值设置为100.任务描述01任务实施02SET@@global.server_id=25000;SET@@SESSION.SQL_SELECT_LIMIT=100;用户变量用户可以在表达式中使用自己定义的变量,这样的变量叫做用户变量。用户变量在被引用时要在其名称前加上标志@定义和初始化一个用户变量可以使用SET或SELECT语句使用set语句赋值可以使用“=”或者“:=”使用select语句赋值,必须用“:=”;创建用户变量name并赋值为”张三”。任务描述01任务实施02SET@name=‘张三’;或SET@name:=‘张三’;或SELECT@name:=‘张三’;局部变量
局部变量定义的格式:DECLARE局部变量名[,…]变量类型[DEFAULT默认值];【例】定义局部变量myvar,数据类型为INT,默认值为10。
DECLAREmyvarintDEFAULT10;
给局部变量myvar赋值为100。
SETmyvar=100;局部变量是使用DECLARE语句进行定义的且作用于BEGIN…END语句块中的变量。02运算符Operators运算符的分类算术运算符比较运算符逻辑运算符赋值运算符位运算符算术运算符运算符描述示例+加运算SELECT5+2;-减运算SELECT5-2;*乘运算SELECT5*2;/除运算SELECT5/2;%取模运算SELECT5%2;比较运算符运算符示例=用于相等比较<=>可以进行NULL值比较的相等运算符>
表示大于比较<
表示小于比较>=表示大于等于比较<=表示小于等于比较<>、!=表示不等于比较BETWEEN…AND…比较一个数据是否在指定的闭区间范围内,若在则返回1,若不在则返回0比较运算符运算符示例NOT
BETWEEN…AND…比较一个数据是否不在指定的闭区间范围内,若不在则返回1,若在则返回0IS比较一个数据是否是TRUE、FALSE或UNKNOWN,若是则返回1,否则返回0ISNOT比较一个数据是否不是TRUE、FALSE或UNKNOWN,若不是则返回1,否则返回0ISNULL比较一个数据是否是NULL,若是则返回1,否则返回0ISNOTNULL比较一个数据是否不是NULL,若不是则返回1,否则返回0LIKE'匹配模式'获取匹配到的数据NOTLIKE'匹配模式'获取匹配不到的数据逻辑运算符运算符描述AND或&&逻辑与,操作数全部为真,则结果为1,否则为0OR或||逻辑或,操作数中只要有一个为真,则结果为1,否则为0NOT或!逻辑非,操作数为0,则结果为1,操作数为1,则结果为0XOR逻辑异或,操作数一个为真,一个为假,则结果为1;若操作数全部为真或全部为假,则结果为0赋值运算符运算符描述:=专门用于表示赋值运算=既可以用于比较数据是否相等,又可以表示赋值位运算符运算符描述示例&按位与SELECTb'1001'&b'1011'; 结果为9|按位或SELECTb'1001'|b'1011'; 结果为11^按位异或SELECTb'1001'^b'1011'; 结果为2<<
按位左移SELECTb'1001'<<2;
结果为36>>
按位右移SELECTb'1001'>>2; 结果为2~按位取反SELECT~b'1001'&b'1011'; 结果为2表达式03Expressions表达式表达式就是常量、变量、列名、复杂计算、运算符和函数的组合。表达式通常都有返回值。根据表达式值的类型,表达式可分为字符型表达式、数值型表达式和日期型表达式。表达式一般用在SELECT及SELECT语句的WHERE子句中。注释符号从井字符到行尾都是注释内容。井字符(#)双连线字符(--)从双连线字符到行尾都是注释内容。注意,双连线后一定要加一个空格。斜杠星号(/*…*/)加标题开始注释对(/*)和结束注释对(*/)之间的所有内容均视为注释。提炼总结04Refiningandsummarizing总结常量、变量、运算符、表达式等MySQL数据库编程的基础知识MySQL官方文档010203思政小课堂百尺高台起于垒土THANKS感谢聆听循环结构程序设计LoopStructureProgramming目录Contents01020304WHILE语句REPEAT语句LOOP语句提炼总结WHILE语句01While
StatementWHILE语句语法【标签】:WHILE条件表达式DO语句列表ENDWHILE[标签]标签是可选项,标签名称只要符合MySQL标识符的定义规则即可。WHILE语句任务使用WHILE语句求1+2+3+...+100的和。WHILE语句02REPEAT语句
Repeat
StatementREPEAT语句语法【标签】:REPEAT语句列表UNTIL条件表达式ENDREPEAT[标签]REPEAT语句是在执行操作后检查结果,程序至少会无条件执行一次。REPEAT语句任务使用REPEAT语句求1+2+3+...+100的和。REPEAT语句03LOOP语句Loop
StatementLOOP语句语法【标签】:LOOP语句列表ENDLOOP[标签];LOOP语句本身没有停止循环的语句,必须使用LEAVE跳转语句才能停止循环,跳出循环过程。REPEAT语句跳转语句语法【标签】:{ITERATE|LEAVE}标签名;REPEAT语句ITERATE语句用于结束本次循环的执行,开始下一轮循环的执行操作,重新开始循环。LEAVE语句用于终止当前循环,跳出循环体。跳转语句语法REPEAT语句ITERATE只能应用在循环结构LOOP、REPEAT和WHILE语句中,LEAVE除可以在循环结构中应用外,还可在BEGIN…END代码块中使用。思政小课堂ITERATE语句和LEAVE语句都用来跳出循环语句。这启发我们在平时的思考和行动上,也要注重培养自己独立思考、勇于尝试和创造性地解决问题的能力,勇于打破固定思维模式,寻求创新和突破。任务使用LOOP语句求1+2+3+...+100的和。LOOP语句LOOP语句这里用标签abc标记LOOP循环语句的开始和结束,用leaveabc语句跳出loop循环。LOOP语句通过测试我们验证了LOOP语句的正确使用方法。提炼总结04Refiningandsummarizing总结WHILE语句在执行语句列表之前进行条件判断REPEAT语句在执行语句列表之后进行条件判断LOOP语句是简单的循环,一般使用LEAVE语句跳出循环010203THANKS感谢聆听游标的使用UseofCursor目录Contents01020304认识游标操作游标错误处理提炼总结认识游标01UnderstandingCursors游标的本质是一种能从SELECT结果集中每次提取一条记录的指针。主要用于交互式的应用程序,用户可以根据需要浏览或修改结果集中的数据。认识游标游标使用练习思政小课堂脚踏实地志存高远02操作游标
OperationofCursor游标的操作流程01020304关闭游标打开游标定义游标利用游标检索数据定义游标的语法【语法】:DECLARE游标名称CURSORFORSELECT语句;游标名称是唯一用于区分不同游标的标识,名称必须唯一。游标在定义时必须在错误处理程序的语句之前和局部变量的声明之后。另外,SELECT语句中不能含有INTO关键字。定义游标打开游标的语法【语法】:OPEN游标名称;使SELECT语句根据查询条件将数据存储到MySQL服务器的内存中。打开游标游标检索的语法【语法】:FETCH[[NEXT]FROM]游标名称INTO变量名[,变量名]…利用游标检索数据关闭检索的语法【语法】:CLOSE游标名称;关闭游标后,若再次需要利用游标检索数据,仅需打开游标即可,不需要重新定义游标。如果没有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产品销售业绩考核办法函8篇
- 绿色能源开发与节能减排技术创新实施方案
- 企业级智慧仓储与物流管理系统升级方案
- 年终绩效考核实施通知函(6篇)范文
- 2026林业资源开发行业市场分析深度研究与投资策略探讨报告
- 2025-2026学年国外雕塑的说课稿
- 2025-2026学年《绿》说课稿板书设计
- 2025-2026学年丰收的节日说课稿
- 2026物流自动化技术发展分析及前景趋势与仓储优化研究报告
- 2025-2026学年初中八年级上册说课稿语文
- 第一月考过关测试卷(试卷)2026-2027学年五年级语文上册统编版(含答案)
- 2026年特种设备安全管理人员A证考试题库(含答案)
- 电子档案和档案数字化副本移交接收规范
- 医院职工绩效考核制度(2026版)
- 临床科学防治颈椎病守护颈部健康关键策略
- 信托业务监管分类说明(试行)
- 油田分层注水技术
- 电气控制技术说课
- 灌装工专业技能培训课件
- 中药黄芪课件
- 2025部编版三年级道德与法治上册全册教案
评论
0/150
提交评论