MySQL网络数据库高职PPT完整全套教学课件_第1页
MySQL网络数据库高职PPT完整全套教学课件_第2页
MySQL网络数据库高职PPT完整全套教学课件_第3页
MySQL网络数据库高职PPT完整全套教学课件_第4页
MySQL网络数据库高职PPT完整全套教学课件_第5页
已阅读5页,还剩356页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单元一

走进数据时代单元1走进数据时代.pptx单元2创建数据.pptx单元3查看数据.pptx单元4约束数据.pptx单元5语言结构.pptx单元6数据库编程.pptx单元7管理数据库.pptx全套可编辑PPT课件任务一

认识数据库案例:银河商业集团旗下有多间大型超市,为了统一管理,建设了一个银河集团数据库管理系统。那么,究竟什么是数据库?什么是数据库管理系统?这个系统又是如何被设计出来?我们要如何使用这个系统?让我们带着这些问题,一起开始学习吧!数据(Data),是对客观事物进行抽象描述的结果。数据包括模拟数据和数字数据。模拟数据是连续的值,例如音频、视频;数字数据是离散的值,例如数值、符号、文字。1.1.1数据数据库(Database,简称DB),顾名思义就是数据的仓库。当然这是个先进的、存放有序的仓库,存放有序指的是有良好的数据结构,目的是更好的存放、管理这些库中的数据。银河集团的数据库中就存储了所有员工的信息数据、各种商品的信息数据以及每日销售的信息数据。这些数据在集团的运营中相关关联,把它们按照一定的数据结构存储在计算机的存储介质中,就构成了一个数据库。1.1.2数据库数据库管理系统(DatabaseManagementSystem,简称DBMS),是一个应用软件,作用是管理数据库中的各项数据,也就是对数据进行存储、处理以及保护数据的安全。数据库管理员(DatabaseAdministrators,简称DBA)通过提供的工具对数据库进行管理。银河集团的数据库管理系统就是管理它数据库的软件,通过这个软件,我们可以对数据库进行增、删、改、查等操作,也可以保护数据库中数据的安全。1.1.3数据库管理系统DBMS应提供如下功能:(1)数据定义功能可定义数据库中的数据对象。(2)数据操纵功能可对数据库表进行基本操作,如插入、删除、修改、查询。(3)数据的完整性检查功能保证用户输入的数据应满足相应的约束条件。(4)数据库的安全保护功能保证只有赋予权限的用户才能访问数据库中的数据。(5)数据库的并发控制功能使多个应用程序可在同一时刻并发地访问数据库的数据。(6)数据库系统的故障恢复功能使数据库运行出现故障时进行数据库恢复,以保证数据库可靠运行。(7)在网络环境下访问数据库的功能。(8)方便、有效地存取数据库信息的接口和工具。编程人员通过程序开发工具与数据库的接口编写数据库应用程序。1.1.3数据库管理系统数据库系统(DatabaseSystem,简称DBS),是包括了数据库、数据库管理系统、数据库管理员等的一个综合系统。我们要能区分出数据库系统和数据库管理系统的区别,数据库系统中包含了数据库管理系统。1.1.4数据库系统模型(Model),是对现实世界进行的抽象。数据模型(DataModel,简称DM),是把数据的特征抽象成为模型。数据模型从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供了一个抽象的框架。数据模型所描述的内容有三部分:数据结构、数据操作和数据约束。数据库管理系统根据数据模型对数据进行存储和管理,数据库管理系统采用的数据模型主要有层次模型、网状模型和关系模型。1.1.5数据模型1.层次模型层次模型的组织结构为树形,由根节点和子节点组成,这样就构成了一棵根在上,枝在下的树。1.1.5数据模型银河集团金星超市木星超市火星超市生鲜组熟食组纸品组……2.网状模型网状模型的组织结构为网络状,每个节点与其他节点都有联系,这样就构成了一个复杂的网络。1.1.5数据模型员工A员工B员工C员工D商品A商品B商品C商品D商品E3.关系模型关系模型的组织结构是表格(二维表),以行、列的形式构成。我们把表格中的一行称为一条记录,一列称为一个字段,每一列的标题名称为字段名。这样构成的结构表示为:表名(字段名1,…,字段名n)。1.1.5数据模型员工姓名员工入职日期员工联系电话员工家庭住址员工工资奖金0010001张子婷2018-5-1813303161111新华路3号470018000010002李伟泽2018-5-1813303161213文明路25号450011000020001王文诺2019-5-113303162112文华路23号45009000030002赵天成2019-12-113303163210詹天路5号4400550……

附录A的表A.2、表A.4和表A.6描述了银河集团数据管理系统中员工、销售和库存三个信息表的完整数据。对于关系表,假如有组合一个或几个字段的值,可以对其对应的记录起到唯一标志的作用,那么我们称这个字段或是这几个字段的组合为码。有的时候,对于一个表可能会出现多个码。“主码”作为最重要的码,一个关系表一般可以指定一个“主码”。在关系模式中,标出方式为在主码下划出横线。上述三个表的关系模式可以分别表示为:员工信息表(员工编号,员工姓名,员工入职日期,员工联系电话,员工家庭住址,员工工资,奖金)销售信息表(销售编号,销售日期,销售员工编号,商品编号,销售数量)库存信息表(商品编号,商品类型,商品名称,商品进价,商品售价,库存数量)1.1.5数据模型从上述表述可以看出,数据根据关系模型进行表达更加简洁、直观,并且对于后续进行插入、删除、修改等操作会更加的方便。如果数据根据层次模型或是网状模型进行表达则组织的方式将会更为复杂,插入、删除、修改等操作也会更加的繁琐。所以,数据库管理系统基本上都应用了关系模型,我们将要学习的MySQL也是支持关系数据模型的数据库管理系统。1.1.5数据模型任务二

设计关系型数据库实体、实体集、属性和属性值。通常,把每一类数据对象的个体称为“实体”,而每一类对象个体的集合称为“实体集”。与每个实体集有关的信息项称为属性。实体集中的实体彼此是可区别的,如果实体集中的属性或最小属性组合的值能唯一标志其对应实体,则将该属性或属性组合称为码。对于每一个实体集,可指定一个码为主码。1.2.1概念结构设计用图形来表达这些概念:用矩形框表示实体集;用椭圆或带半圆的矩形框表示属性;用线段连接实体集与属性;当一个属性或属性组合指定为主码时,在实体集与属性的连接线上标记上斜线;这样我们就得到了实体集之间的各种关系,我们把这些关系称为“联系”,联系用菱形表示,通过直线与实体相连。这种实体集和实体集之间联系的图叫做实体——联系(Entity-Relationship)图,简称E-R图。1.2.1概念结构设计总的来说,对于两个实体集A和B之间的联系分为三种情况:1.一对一的联系(1:1)A中的一个实体最多与B中的一个实体相联系,B中的一个实体也最多与A中的一个实体相联系。例如,“超市”与“店长”这两个实体集之间的联系是一对一的联系,因为一间超市只有一位店长,反过来,一位店长只属于一间超市。如图1.5所示,是“超市”与“店长”这两个实体集的E-R模型。1.2.1概念结构设计2.一对多的联系(1:n)A中的一个实体可以与B中的多个实体相联系,而B中的一个实体至多与A中的一个实体相联系。例如,“超市”与“员工”这两个实体集之间的联系是一对多的联系,因为,一间超市可以雇佣多名员工,反过来,一名员工却只能在一间超市工作。如图1.6所示,是“超市”与“员工”这两个实体集的E-R模型。1.2.1概念结构设计3.多对多的联系(m:n)A中的一个实体可以与B中的多个实体相联系,而B中的一个实体也可与A中的多个实体相联系。例如,“员工”与“商品”这两个实体集之间的联系是多对多的联系,因为,一名员工可以销售多种商品,那么同样的,一种商品也可以被多名员工进行销售。如图1.7所示,是“员工”与“商品”这两个实体集的E-R模型。1.2.1概念结构设计1.一对一联系(1∶1)的E-R图到关系模式的转换对于一对一的联系(1∶1)可以单独对应一个关系模式,也可以不单独对应一个关系模式。(1)联系单独对应一个关系模式,则由联系属性、参与联系的各实体集的主码属性构成关系模式,其主码可选参与联系的实体集的任一方的主码。例如,对于图1-5所描述的“超市(supermarket)”实体集与“店长(manager)”实体集,它们通过属于(belong)联系的E-R模型可以设计为下面的关系模式(下横线表示该字段为主码):supermarket(编号,店名)manager(编号,姓名)belong(s编号,m编号)。1.2.2逻辑结构设计(2)联系不单独对应一个关系模式,则由一方实体集的主码加入到另一方实体集的属性中,然后共同构成关系模式。例如,对于图1-5所描述的“超市(supermarket)”实体集与“店长(manager)”实体集,它们通过属于(belong)联系的E-R模型可以设计为下面的关系模式(下横线表示该字段为主码):supermarket(编号,店名,m编号)manager(编号,姓名)或者supermarket(编号,店名)manager(编号,姓名,s编号)1.2.2逻辑结构设计2.一对多联系(1∶n)的E-R图到关系模式的转换对于一对多联系(1∶n)可以单独对应一个关系模式,也可以不单独对应一个关系模式。(1)联系单独对应一个关系模式,则由联系的属性、参与联系的各实体集的主码属性构成关系模式,n端的主码作为该关系模式的主码。例如,对于图1-6所描述的“超市(supermarket)”实体集与“员工(employees)”实体集,它们通过属于(belong)联系的E-R模型可以设计为下面的关系模式(下横线表示该字段为主码):supermarket(编号,店名)employees(编号,姓名)belong(s编号,e编号)1.2.2逻辑结构设计(2)联系不单独对应一个关系模式,则由联系的属性及1端的主码加入n端实体集对应的关系模式中,主码仍为n端的主码。例如,对于图1-6所描述的“超市(supermarket)”实体集与“员工(employees)”实体集,它们通过属于(belong)联系的E-R模型可以设计为下面的关系模式(下横线表示该字段为主码):supermarket(编号,店名)employees(编号,姓名,s编号)1.2.2逻辑结构设计3.多对多联系(m:n)的E-R图到关系模式的转换对于多对多联系(m∶n),单独对应一个关系模式。该关系模式包括联系的属性、参与联系的各实体集的主码属性,该关系模式的主码由各实体集的主码属性共同组成。例如,对于图1-7所描述的“员工(employees)”实体集与“商品(goods)”实体集,它们通过销售(sale)联系的E-R模型可以设计为下面的关系模式(下横线表示该字段为主码):employees(编号,姓名)goods(编号,名称)sale(e编号,g编号)在一个关系模式只能有一个主码。以上关系模式sale的主码,是一个主码,它是由员工的“编号”和商品的“编号”两个属性组合起来,共同构成的。1.2.2逻辑结构设计逻辑结构设计就是上述依靠E-R图来设计关系模式的设计过程。逻辑结构设计的目的是为了设计项目中各实体集的关系模式,我们只有完成了逻辑结构设计,才可以在数据库管理系统的环境下(例如MySQL软件),进行创建数据库,创建数据表,创建其他数据库对象,对数据进行增、删、改、查及其他管理操作。1.2.2逻辑结构设计数据的物理模型即指数据的存储结构,如对数据库物理文件和索引文件的组织方式、文件的存取路径、内存的管理等。物理模型不仅与数据库管理系统(DBMS)有关,还和操作系统(OS)甚至硬件有关,物理模型对用户是不可见的。数据库的物理结构设计是对已经确定的逻辑数据结构,利用DBMS所提供的方法、技术,以较优的数据存储结构、数据存取路径、合理的数据存放位置以及存储分配,设计出一个高效的、可以实现的物理数据结构。简单的说,就是针对已经完成的逻辑结构设计,再进一步设计出与其相应的并且较为优化的物理结构,设计出的物理结构包括实现数据存储、数据存取路径、数据存放位置、存储分配等。1.2.3物理结构设计任务三

安装MySQL数据库

及可视化界面工具MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,因此一般的中小型网站开发在网站数据库方面都选择MySQL。1.3.1关系型数据库管理系统MySQL1.下载MySQL8.0.192020年1月,MySQL发布了本年度的第一个小版本MySQL8.0.19。同其他版本一样,下载的地址依然为:/downloads/mysql/。1.3.1关系型数据库管理系统MySQL以MicrosoftWindows操作系统为例,安装版下载后是mysql-installer-community-.msi,压缩版下载后是mysql-8.0.19-winx64.zip,分别需要进行安装以及解压缩、配置环境。1.3.1关系型数据库管理系统MySQL2.安装MySQL8.0.19(1)mysql-installer-community-.msi的安装1.3.1关系型数据库管理系统MySQL2.安装MySQL8.0.19(1)mysql-installer-community-.msi的安装1.3.1关系型数据库管理系统MySQL2.安装MySQL8.0.19(2)mysql-8.0.19-winx64.zip的安装对mysql-8.0.19-winx64.zip文件进行解压缩,解压到当前文件夹。1.3.1关系型数据库管理系统MySQL2.安装MySQL8.0.19(2)mysql-8.0.19-winx64.zip的安装在mysql-8.0.19-winx64的目录下,配置MySQL配置文件,新建my.ini编辑如下配置信息(注意:my.ini需要以ANSI格式编码)。1.3.1关系型数据库管理系统MySQL2.安装MySQL8.0.19(2)mysql-8.0.19-winx64.zip的安装以管理员的身份打开cmd,切换目录D:\mysql\mysql-8.0.19-winx64\bin的bin目录下,即在“命令提示符”界面中输入:cdD:\mysql\mysql-8.0.19-winx64\bin。然后,使用命令行初始化数据库,即在“命令提示符”界面中输入:mysqld--initialize–console,初始化完成后会得到,root用户初始密码。1.3.1关系型数据库管理系统MySQL3.运行和退出MySQL8.0.19安装完毕后,点击“开始”菜单,找到MySQL下的MySQL8.0CommandLineClient,点击进入,在首行“Enterpassword:”后面输入设置好的MySQL登录密码,即可登入。输入:exit,即可退出。1.3.1关系型数据库管理系统MySQLMySQLWorkbench是一款专为MySQL设计的ER/数据库建模工具,是MySQLAB发布的可视化的数据库设计软件,它的前身是FabForce公司的DBDesigner4。MySQLWorkbench为数据库管理员、程序开发者和系统规划师提供可视化设计、模型建立、以及数据库管理功能。它包含了用于创建复杂的数据建模ER模型,正向和逆向数据库工程,也可以用于执行通常需要花费大量时间和需要的难以变更和管理的文档任务。使用者可以利用MySQLWorkbench设计和创建新的数据库图示,建立数据库文档,以及进行复杂的MySQL迁移。MySQLWorkbench同时具有开源和商业化的两个版本,可在Windows、Linux和MacOS等操作系统上使用。最新的版本是2020年发布的MySQLWorkbench8.0.19。1.3.2可视化界面工具MySQLWorkbench8.0.19MySQLWorkbench可在MySQL的官方网站进行下载,具体网址是:/downloads/workbench/,同MySQL的下载页面相类似,可以选择不同的操作系统,选择32位或64位的安装版。MySQLWorkbench8.0.19的安装非常简单,按照提示即可完成安装,是MySQLWorkbench软件运行的界面截图。在此界面上点击左下方“MySQLConnections”右侧的“+”号,即弹出对话框。在此对话框中,可以设置数据库连接,包括设置连接的名称、连接的方式、主机号、端口号、账号和密码等。按照之前安装MySQL8.0.19时设置的各项内容进行填写,最后点击“TestConnection”。即可完成数据库连接,看到MySQL8.0.19自带的数据库。1.3.2可视化界面工具MySQLWorkbench8.0.191.3.2可视化界面工具MySQLWorkbench8.0.19MySQLWorkbench8.0.19软件的操作页面,可以划分为五个区域,分别是:数据库及其各对象的显示区域、选择对象的相关信息区域、SQL命令编辑区域、SQL命令运行结果显示区域和命令执行区域。1.3.2可视化界面工具MySQLWorkbench8.0.19在SQL命令编辑区中输入测试语句,“usesys;”(使用sys数据库)以及“select*fromsys_config;”(查询sys_config表中的所有数据),如图1.20所示,其中sys数据库是mysql自带的系统数据库,然后选择执行(或者使用快捷键Ctrl+Enter)。执行成功后,查询结果会以列表的形式显示在下面的运行结果区域中。使用完毕后,可以直接退出。假如没有后续的数据库操作,可以关闭MySQL的服务。1.3.2可视化界面工具MySQLWorkbench8.0.19NavicatforMySQL是一套管理和开发MySQL或MariaDB的理想解决方案,支持单一程序,可同时连接到MySQL和MariaDB。这个功能齐备的前端软件为数据库管理、开发和维护提供了直观而强大的图形界面,给MySQL或MariaDB新手以及专业人士提供了一组全面的工具。NavicatforMySQL可连接到任何本机或远程MySQL和MariaDB服务器。它可以用于MySQL数据库服务器版本3.21或以上和MariaDB5.1或以上,与Drizzle、OurDelta和PerconaServer兼容,并支持大部分最新功能,包括表、视图、函数或过程、事件等。NavicatforMySQL15.0.13主要功能包括SQL创建工具或编辑器、数据模型工具、数据传输、导入或导出、数据或结构同步、报表等。NavicatforMySQL15.0.13可在Navicat的官方网站进行下载,具体网址是:/download/navicat-for-mysql,可以选择14天免费全功能的试用版先行试用。NavicatforMySQL15.0.13同样支持Windows、MacOS和Linux这些不同的操作系统,可以选择32位或64位的安装版。1.3.3可视化界面工具NavicatforMySQL15.0.13NavicatforMySQL的安装非常简单,按照提示即可完成安装。1.3.3可视化界面工具NavicatforMySQL15.0.131.3.3可视化界面工具NavicatforMySQL15.0.13MySQL数据库的图形化界面工具软件有很多,其中MySQLWorkbench8.0.19和NavicatforMySQL15.0.13是使用者较多的两款。综合比较MySQLWorkbench8.0.19和NavicatforMySQL15.0.13,使用操作都很方便,NavicatforMySQL15.0.13有中文版,对初学者来说感觉更舒适和方便,但其只提供14天的免费使用,长期使用需要付费购买。MySQLWorkbench8.0.19在MySQL的官方网站上即可进行下载,可与MySQL8.0.19的下载一起完成,而且可以长期免费使用。在本教材中,我们将使用MySQLWorkbench8.0.19作为主要的数据库编辑工具。1.3.3可视化界面工具NavicatforMySQL15.0.13单元二

创建数据任务一

操作数据库MySQL安装后,系统自动地创建information_scema和mysql数据库,MySQL把有关数据库的信息存储在这两个数据库中。如果删除了这些数据库,MySQL就不能正常工作。对于用户的数据,需要创建新的数据库来存放。使用CREATEDATABASE或CREATESCHEMA命令可以创建数据库。语法格式:CREATE{DATABASE|SCHEMA}[IFNOTEXISTS]db_name[create_specification[,create_specification]...]其中create_specification:[DEFAULT]CHARACTERSETcharset_name|[DEFAULT]COLLATEcollation_name2.1.1创建数据库【例2.1】创建一个名为yhdb的数据库。createdatabaseyhdb;注意:(1)在MySQL中,每一条SQL语句都以“;”作为结束标志。(2)由于MySQL中不允许出现两个数据库命名相同的情况,所以如果再创建一个数据库也命名为yhdb,将提示错误。如果不知道是否有重名的数据库,可以在创建数据库时使用IFNOTEXISTS从句,即为:createdatabaseifnotexistsyhdb;意为:如果不存在yhdb数据库就创建它,这样不论是否有重名的数据库,均可以不显示错误信息。2.1.1创建数据库创建了数据库之后使用USE命令可指定当前数据库。语法格式:USEdb_name;【例2.2】使用yhdb数据库。useyhdb;说明:这个语句也可以用来从一个数据库“跳转”到另一个数据库,在用CREATEDATABASE语句创建了数据库之后,该数据库不会自动成为当前数据库,需要用这条USE语句来指定。2.1.2使用数据库数据库创建后,如果需要修改数据库的参数,可以使用ALTERDATABASE命令。语法格式:ALTER{DATABASE|SCHEMA}[db_name]alter_specification[,alter_specification]...其中alter_specification:[DEFAULT]CHARACTERSETcharset_name|[DEFAULT]COLLATEcollation_name2.1.3修改数据库【例2.3】修改数据库yhdb的默认字符集和校对规则。alterdatabaseyhdbdefaultcharactersetgb2312defaultcollategb2312_chinese_ci;说明:ALTERDATABASE用于更改数据库的全局特性,这些特性储存在数据库目录中的db.opt文件中。用户必须有对数据库进行修改的权限,才可以使用ALTERDATABASE。修改数据库的选项与创建数据库相同,功能不再重复说明。如果语句中数据库名称忽略,则修改当前(默认)数据库。2.1.3修改数据库已经创建的数据库需要删除,使用DROPDATABASE命令。语法格式:DROPDATABASE[IFEXISTS]db_name【例2.4】删除数据库yhdb。dropdatabaseyhdb;注意:如果删除的数据库不存在,比如完成例2.4后,再次删除数据库yhdb,将会提示错误。为了避免这种错误,与创建数据库相同,可以在删除数据库时使用IFEXISTS从句,即为:dropdatabaseifexistsyhdb;意为:如果存在yhdb数据库就删除它,这样不论这个数据库是否存在,均可以不显示错误信息。注意:这个命令必须小心使用,因为它将删除指定的整个数据库,该数据库的所有表(包括其中的数据)也将永久删除。2.1.4删除数据库任务二

操作数据表1.数值类型MySQL支持所有标准SQL数值数据类型。严格数值数据类型:INTEGER或INT,SMALLINT,DECIMAL或DEC,NUMERIC近似数值数据类型:FLOAT,REAL,PRECISIONMySQL支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。对于浮点列类型,在MySQL中单精度值使用4个字节,双精度值使用8个字节。MySQL允许使用FLOAT(M,D)或REAL(M,D)或DOUBLEPRECISION(M,D)格式。“(M,D)”表示该值一共显示M位整数,其中D位位于小数点后面。例如,定义为FLOAT(7,4)的一个列可以显示为-999.9999。MySQL保存值时进行四舍五入,因此如果在FLOAT(7,4)列内插入999.00009,近似结果是999.0001。2.2.1数据类型2.字符串类型:字符串类型的数据主要是由字母、汉字、数字符号、特殊符号构成的数据对象。按照字符个数多少的不同分为以下几类:(1)CHAR:列的长度固定为创建表时声明的长度。长度可以为从0到255的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。例如,在员工信息表中,如果设定“员工姓名char(8)”,表示“员工姓名”是8个字符长度的字符串,可以做赋值引用即:员工姓名=`高田`,这里员工姓名的值包括8个字符,其中2个汉字(按照4个字符处理)和4个空格。name右侧会有若干个空格占位。这样浪费了磁盘的存储空间。2.2.1数据类型(2)VARCHAR:列中的值为可变长字符串。长度可以指定为0到65,535之间的值。(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)。同CHAR对比,VARCHAR值保存时只保存需要的字符数。(3)BLOB:二进制字符串(字节字符串)。BLOB列没有字符集,并且排序和比较基于列值字节的数值值。这种类型数据用于存储声音、视频、图像等数据。(4)TEXT:非二进制字符串(字符字符串)。TEXT列有一个字符集,并且根据字符集的校对规则对值进行排序和比较。在实际应用中像个人履历、奖惩情况、职业说明、内容简介等设定为text的数据类型。BLOB和TEXT列不能有默认值。BLOB或TEXT对象的最大大小由其类型确定,但在客户端和服务器之间实际可以传递的最大值由可用内存数量和通信缓存区大小确定。你可以通过更改max_allowed_packet变量的值更改消息缓存区的大小,但必须同时修改服务器和客户端程序。2.2.1数据类型3.日期和时间类型(1)date:表示日期,输入数据的格式是:yyyy-mm-dd。支持的范围是'1000-01-01'到'9999-12-31'。例如,在员工信息表中的员工入职日期可以设定成为date类型。(2)time:表示时间,输入数据的格式是:hh:mm:ss。TIME值的范围可以从'-838:59:59'到'838:59:59'。小时部分会因此大的原因是TIME类型不仅可以用于表示一天的时间(必须小于24小时),还可能为某个事件过去的时间或两个事件之间的时间间隔(可以大于24小时,或者甚至为负)。(3)datetime:表示日期时间,格式是:yyyy-mm-ddhh:mm:ss。支持的范围为'1000-01-0100:00:00'到'9999-12-3123:59:59'。2.2.1数据类型创建表使用CREATETABLE命令。语法格式:CREATE[TEMPORARY]TABLE[IFNOTEXISTS]tbl_name[([column_definition],...|[index_definition])][table_option][select_statement];2.2.2创建数据表【例2.5】创建数据库yhdb,并在该数据库中创建员工信息表employees。2.2.2创建数据表createdatabaseyhdb;useyhdb;CREATETABLEemployees(员工编号CHAR(7)NOTNULLPRIMARYKEY,员工姓名CHAR(8)NOTNULL,员工性别TINYINTNOTNULL,入职日期DATENOTNULL,联系电话CHAR(11)NOTNULL,家庭住址CHAR(20),工资收入FLOAT(6,2),奖金收入FLOAT(6,2))ENGINE=INNODB;2.2.2创建数据表“NOTNULL”表示对应的字段如“员工姓名”不允许有空值。空值(NULL)通常表示未知、不可用或将在以后添加的数据。若一个列允许为空值,则向表中输入记录值时可不为该列给出具体值;而一个列若不允许为空值,则在输入时必须给出该列的具体值。空值不能与数值数据0或字符类型的空字符混为一谈。任意两个空值都不相等。“PRIMARYKEY”表示将“员工编号”字段定义为主键。主键表示该字段的值不能为空值并且不能出现重复值,即非空且唯一。“ENGINE=InnoDB”表示采用的存储引擎是InnoDB,InnoDB是MySQL在Windows平台默认的存储引擎,所以“ENGINE=InnoDB”可以省略。【例2.6】在数据库yhdb中创建销售信息表sales。2.2.2创建数据表CREATETABLEsales(销售编号CHAR(7)NOTNULL,销售日期DATENOTNULL,员工编号CHAR(7)NOTNULL,商品编号CHAR(4)NOTNULL,销售数量TINYINTNOTNULL,PRIMARYKEY(销售编号,销售日期,员工编号,商品编号));注意:对于一个数据表来说,“PRIMARYKEY”只能出现一次,但有4个字段(销售编号、销售日期、员工编号、商品编号)的说明中写了“主键”,这表明这4个字段共同构成了联合主键,在SQL命令行中需要在各字段后以“PRIMARYKEY(销售编号,销售日期,员工编号,商品编号)”的形式声明,表明这4个字段的组合值不能为空值并且不能出现重复值,也就是说这4个字段的值在一条记录中最多有3个是一致的。2.2.2创建数据表【例2.7】在数据库yhdb中创建库存信息表stocks。2.2.2创建数据表CREATETABLEstocks(商品编号CHAR(4)NOTNULL,类型编号CHAR(6)NOTNULL,商品名称CHAR(50)NOTNULL,商品进价FLOAT(5,2)NOTNULL,商品售价FLOAT(5,2),库存数量INTNOTNULL,PRIMARYKEY(商品编号,类型编号));。2.2.2创建数据表ALTERTABLE用于更改原有表的结构。例如,可以增加或删减列,创建或取消索引,更改原有列的类型,重新命名列或表,还可以更改表的评注和表的类型。语法格式:ALTER[IGNORE]TABLEtbl_namealter_specification[,alter_specification]...2.2.3修改数据表【例2.8】在数据库yhdb中的employees表中增加“备注”列(text类型)。altertableemployeesaddcolumn备注text;【例2.9】在数据库yhdb中的employees表中删除“备注”列。altertableemployeesdrop备注;注意:增加字段时要注明字段类型,删除字段时只需注明字段名称。2.2.3修改数据表除了上面的ALTERTABLE命令,还可以直接用RENAMETABLE语句来更改表的名字。语法格式:RENAMETABLEtbl_nameTOnew_tbl_name[,tbl_name2TOnew_tbl_name2]...【例2.10】将数据库yhdb中的employees表重命名为员工信息表,将sales表重命名为销售信息表。renametableemployeesto员工信息表,salesto销售信息表;2.2.4修改数据表名语法格式:CREATE[TEMPORARY]TABLE[IFNOTEXISTS]tbl_name[()LIKEold_tbl_name[]]|[AS(select_statement)] ;【例2.11】将数据库yhdb中的员工信息表拷贝,创建一个名为employees的数据表,将销售信息表拷贝,创建一个名为sales的数据表。createtableemployeeslike员工信息表;【例2.12】创建数据表销售信息表的一个名为sales的拷贝,并且复制其内容。createtablesalesas(select*from销售信息表);2.2.5复制数据表需要删除一个表时可以使用DROPTABLE语句。语法格式:DROP[TEMPORARY]TABLE[IFEXISTS]tbl_name[,tbl_name]...【例2.13】删除表员工信息表。droptable员工信息表;【例2.14】删除表销售信息表。droptableifexists销售信息表;注意:为防止要删除的数据表不存在,出现提示错误,与创建数据库相同,可以在删除数据表时使用IFEXISTS从句。意为:如果存在这个数据表就删除它,这样不论这个数据表是否存在,均可以不显示错误信息。注意:这个命令必须小心使用,因为它将删除指定的整个数据表(包括其中的数据)。2.2.6删除数据表任务三

数据表记录操作通过INSERT或REPLACE语句完成向数据表中插入一行或多行数据的操作。语法格式:INSERT[LOW_PRIORITY|DELAYED|HIGH_PRIORITY][IGNORE][INTO]tbl_name[(col_name,...)]VALUES({expr|DEFAULT},...),(...),...|SETcol_name={expr|DEFAULT},...[ONDUPLICATEKEYUPDATEcol_name=expr,...]2.3.1插入表数据从INSERT的语法格式可以看到,使用INSERT语句可以向表中插入一行数据,也可以插入多行数据,插入的行可以给出每列的值,也可只给出部分列的值,还可以向表中插入其他表的数据。使用INSERTINTO…SELECT…,可以快速地从一个或多个表中向一个表插入多个行。语法格式如下:INSERT[LOW_PRIORITY|HIGH_PRIORITY][IGNORE][INTO]tbl_name[(col_name,...)]SELECT...[ONDUPLICATEKEYUPDATEcol_name=expr,...]2.3.1插入表数据从INSERT的语法格式可以看到,使用INSERT语句可以向表中插入一行数据,也可以插入多行数据,插入的行可以给出每列的值,也可只给出部分列的值,还可以向表中插入其他表的数据。使用INSERTINTO…SELECT…,可以快速地从一个或多个表中向一个表插入多个行。语法格式如下:INSERT[LOW_PRIORITY|HIGH_PRIORITY][IGNORE][INTO]tbl_name[(col_name,...)]SELECT...[ONDUPLICATEKEYUPDATEcol_name=expr,...]2.3.1插入表数据【例2.13】向yhdb数据库的数据表employees中(表中列包括员工编号、员工姓名、员工性别、入职日期、联系电话、家庭住址、工资收入、奖金收入)中插入如下的一行:0010001张子婷02018-5-1813303161111 新华路3号 4700 1800insertintoemployeesvalues('0010001','张子婷',0,'2018-5-18',,'新华路3号',4700,1800);注意:(1)此例中,employees表中有8个字段,在values值的括号中要按照这8个字段的顺序依次插入数据值,不能颠倒顺序,也不能有字段不插入值。(2)数据值为字符串类型(如char、varchar、text等)和日期时间类型(如date、time等),要把值用引号括起来。数据值为数值型(如tinyint、int、float等),可以直接写值。(3)各数据字段值用“,”间隔,这里的标点符号为英文标点。2.3.1插入表数据【例2.14】向yhdb数据库的数据表employees中(表中列包括员工编号、员工姓名、员工性别、入职日期、联系电话、家庭住址、工资收入、奖金收入)中插入如下的一行:0000000 张三 1 2018-5-18null null null(null表示家庭住址、工资收入、奖金收入这3个字段为空值,暂不插入内容。)第一种:insertintoemployeesvalues('0000000','张三',1,'2018-5-18',,null,null,null);第二种:insertintoemployees(员工编号,员工姓名,员工性别,入职日期,联系电话)values('0000000','张三',1,'2018-5-18',);第三种:(使用set子句)insertintoemployeesset员工编号='0000000',员工姓名='张三',员工性别=1,入职日期='2018-5-18',联系电话=;2.3.1插入表数据【例2.15】完成例2.14之后,如果要插入如下一行数据库:其中学号为主键(PRIMARYKEY),现在想再插入下列一行数据:0000000 李四 1 2018-6-18null null nullinsertintoemployeesvalues('0000000','李四',1,'2018-6-18',,null,null,null);命令行将提示错误。replaceintoemployeesvalues('0000000','李四',1,'2018-6-18',,null,null,null);命令行没有提示错误。2.3.1插入表数据MySQL也支持图片信息的插入存储。图片信息的插入存储方式有两种:(1)图片信息插入存储在数据表中,可以采用直接插入要存储的图片的路径,也就是以路径的形式来存储。(2)图片信息插入存储的数据表中,也可以使用LOAD_FILE函数,也就是以直接插入要存储的图片本身。第一种,采用直接插入要存储的图片的路径:insertintotest(图片)values('D:\IMAGE\picOne.jpg');第二种,采用直接插入要存储的图片本身:insertintotest(图片)values(LOAD_FILE('D:\IMAGE\picture.jpg'));要说明的是:不论采用哪种方法,我们并不能在MySQL运行的过程中看到这个图片的图像,只能结合其他的开发语言,如PHP、JSP、python,在开发出的网站或信息系统中才能显示数据表中存储的图片图像。2.3.1插入表数据1.使用DELETE语句删除数据从单个表中删除,语法格式:DELETE[LOW_PRIORITY][QUICK][IGNORE]FROMtbl_name[WHEREwhere_definition][ORDERBY...][LIMITrow_count]2.3.2删除表数据【例2.16】目前数据库yhdb的数据表employees中有如下数据:2.3.2删除表数据要删除第一条记录员工姓名为“李四”的信息可使用DELETE语句:useyhdb;deletefromemployeeswhere员工姓名='李四';要全部删除此表中的数据记录是:deletefromemployees;2.使用TRUNCATETABLE语句删除表数据删除指定表中的所有数据,也可以使用TRUNCATETABLE语句,因此该语句也被称为是清除表数据语句。语法格式:TRUNCATETABLEtable_name;说明:使用TRUNCATETABLE语句要谨慎,因为使用此语句将删除数据表中的所有数据,该语句的操作是不能恢复的。2.3.2删除表数据TRUNCATETABLE在功能上与不带WHERE子句的DELETE语句相同,即:deletefromemployees;等价于truncatetableemployees;这两条语句都表示删除数据表中的所有记录行。区别在于TRUNCATETABLE比DELETE删除的速度更快,并且使用的系统和事务日志资源更少。DELETE语句每次删除一行,需要在事务日志中为所删除的每行记录一项。而TRUNCATETABLE通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。使用TRUNCATETABLE,AUTO_INCREMENT计数器被重新设置为该列的初始值。对于参与了索引和视图的表,不能使用TRUNCATETABLE删除数据,而应使用DELETE语句。2.3.2删除表数据要更新数据表中的一行数据,可以使用UPDATE语句,UPDATE可以用来更新一个表,也可以更新多个表。更新单个表,语法格式:UPDATE[LOW_PRIORITY][IGNORE]tbl_nameSETcol_name1=expr1[,col_name2=expr2...][WHEREwhere_definition][ORDERBY...][LIMITrow_count]2.3.3更新表数据【例2.17】更新数据库yhdb中的数据表employees的数据记录,将员工编号“0010001”的员工姓名更新为“张婷”,再将其工资收入增加500元。updateemployeesset员工姓名='张婷',工资收入=工资收入+500where员工编号='0010001';然后,可以使用查询语句:select*fromemployees;进行查看,发现已经更新完毕。如果上述的更新语句不添加where子句,即:updateemployeesset员工姓名='张婷',工资收入=工资收入+500;如果employees数据表中有多条记录,将所有记录行都变成员工姓名为“张婷”,并且工资收入都增加500元。2.3.3更新表数据1.SHOW语句SHOWTABLES或SHOWTABLESFROMDATABASE_NAME:显示当前数据库中所有表的名称。SHOWDATABASES:显示MySQL中所有数据库的名称。SHOWCOLUMNSFROMtable_nameFROMdatabase_name或SHOWCOLUMNSFROMdatabase_name.table_name:显示表中各字段的名称。SHOWGRANTSFORuser_name:显示一个用户的权限,显示结果类似于GRANT命令。SHOWINDEXFROMtable_name:显示表的索引。SHOWSTATUS:显示一些系统特定资源的信息,例如,正在运行的线程数量。SHOWVARIABLES:显示系统变量的名称和值。SHOWPROCESSLIST:显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有PROCESS权限,就可以查看所有人的进程,包括密码。SHOWTABLESTATUS:显示当前使用或者指定的DATABASE中的每个表的信息。信息包括表类型和表的最新更新时间。2.3.4SHOW和DESCRIBE语句1.SHOW语句SHOWPRIVILEGES:显示服务器所支持的不同权限。SHOWCREATEDATABASEdatabase_name:显示创建某一个数据库的CREATEDATABASE语句SHOWCREATETABLEtable_name:显示创建一个表的CREATETABLE语句。SHOWEVENTS:显示所有事件的列表。SHOWINNODBSTATUS:显示InnoDB存储引擎的状态。SHOWLOGS:显示BDB存储引擎的日志。SHOWWARNINGS:显示最后一个执行的语句所产生的错误、警告和通知。SHOWERRORS:只显示最后一个执行语句所产生的错误。SHOW[STORAGE]ENGINES:显示安装后的可用存储引擎和默认引擎。SHOWPROCEDURESTATUS:显示数据库中所有存储过程基本信息,包括所属数据库、存储过程名称、创建时间等。SHOWCREATEPROCEDUREsp_name:显示某一个存储过程的详细信息。2.3.4SHOW和DESCRIBE语句【例2.19】使用SHOW语句,显示当前所有数据库的名称,显示数据库yhdb中的各个数据表的名称,显示数据库yhdb中数据表employees的各个字段的名称。显示当前所有数据库的名称:showdatabases;使用数据库yhdb,显示其中各个数据表的名称:useyhdb;showtables;显示数据表employees的各个字段的名称:showcolumnsfromemployees;2.3.4SHOW和DESCRIBE语句2.DESCRIBE语句DESCRIBE语句用于显示表中各列的信息,结果等于SHOWcolumnsfrom语句。语法格式:{DESCRIBE|DESC}tb1_name[col_name|wild]【例2.20】使用DESCRIBE语句查看yhdb数据库中的employees表结构信息,也就是各字段的信息。useyhdb;describeemployees;【例2.21】使用DESC语句查看yhdb数据库中的employees表中员工姓名列的信息。descemployees员工姓名;2.3.4SHOW和DESCRIBE语句单元三

查看数据任务一

单表查询使用数据库和表的主要目的是存储数据以便在需要时进行检索、统计或组织输出,通过SQL语句的查询可以从表或视图中迅速方便地检索数据。SQL的SELECT语句可以实现对表的选择、投影及连接操作。SELECT语句可以从一个或多个表中选取特定的行和列,结果通常是生成一个临时表。在执行过程中系统根据用户的标准从数据库中选出匹配的行和列,并将结果放到临时的表中,这就是实现选择和投影运算的一个形式。下面介绍SELECT语句,它是SQL的核心。查询SELECT[ALL|DISTINCT|DISTINCTROW][HIGH_PRIORITY][STRAIGHT_JOIN][SQL_SMALL_RESULT][SQL_BIG_RESULT][SQL_BUFFER_RESULT][SQL_CACHE|SQL_NO_CACHE][SQL_CALC_FOUND_ROWS]select_expr,...[INTOOUTFILE'file_name'export_options|INTODUMPFILE'file_name'][FROMtable_reference[,table_reference]…] /*FROM子句*/[WHEREwhere_definition] /*WHERE子句*/[GROUPBY{col_name|expr|position}[ASC|DESC],...[WITHROLLUP]] /*GROUPBY子句*/[HAVINGwhere_definition] /*HAVING子句*/[ORDERBY{col_name|expr|position} [ASC|DESC],...] /*ORDERBY子句*/[LIMIT{[offset,]row_count|row_countOFFSEToffset}] /*LIMIT子句*/查询使用SELECT语句选择一个表中的某些列,各列名之间要以逗号分隔。【例3.1】查询数据库yhdb的数据表employees中所有员工的员工姓名、入职日期和工资收入。语句如下:useyhdb;select员工姓名,入职日期,工资收入fromemployees;【例3.2】查询数据库yhdb的数据表employees中所有员工的全部信息。语句如下:select*fromemployees;说明:上述语句中的“*”号,表示数据表中的所有字段。3.1.1选择指定的列当希望查询结果中的某些列或所有列显示时且使用自己选择的列标题时,可以在列名之后使用AS子句来更改查询结果的列别名。语法格式为:SELECTcolumn_name[AS]column_alias【例3.3】查询数据库yhdb的数据表employees中所有员工的员工姓名、家庭住址和工资收入,结果中的各字段名分别定义为employeesname、address和income。语句如下:select员工姓名as'employeesname',家庭住址asaddress,工资收入incomefromemployees;注意:(1)字段名称当自定义的列标题中含有空格时,必须使用引号将标题括起来,如'employeesname'。(2)“AS”可以省略。3.1.2定义新的字段名在对表进行查询时,有时对所查询的某些字段,希望得到的是一种概念而不是具体的数据。例如查询数据库yhdb的数据表employees中所有员工的工资收入,所希望知道的是工资收入的总体情况,这时,就可以用等级来替换工资收入的具体数字。要替换查询结果中的数据,则要使用查询中的CASE表达式,格式为:CASEWHEN条件1THEN表达式1WHEN条件2THEN表达式2……ELSE表达式END3.1.3替换查询结果中的数据【例3.4】查询数据库yhdb的数据表employees中所有员工的员工姓名,入职日期和工资收入,对其工资收入按以下规则进行替换:若工资收入小于等于4000元,替换为“较低工资”;若工资收入大于4000元并且小于4500元,替换为“中等工资”;若工资收入大于等于4500元,替换为“较高工资”,并将工资收入字段名更改为“工资等级”。select员工姓名,入职日期,casewhen工资收入<=4000then'较低工资'when工资收入>4000and工资收入<4500then'中等工资'else'较高工资'endas'工资等级'fromemployees;3.1.3替换查询结果中的数据使用SELECT对列进行查询时,在结果中可以输出对列值计算后的值,即SELECT子句可使用表达式作为结果,格式为:SELECTexpression[,expression]【例3.5】计算数据库yhdb的数据表employees中所有员工的总收入(总收入=工资收入+奖金收入)。select员工姓名,工资收入+奖金收入as'总收入'fromemployees;3.1.4计算列值对表只选择其某些列时,可能会出现重复行。例如,若对数据库yhdb的数据表employees中只选择工资收入,则出现多行重复的情况。可以使用DISTINCT或DISTINCTROW关键字消除结果集中的重复行,其格式是:SELECTDISTINCT|DISTINCTROWcolumn_name[,column_name…]其含义是对结果集中的重复行只选择一个,保证行的唯一性。【例3.6】对数据库yhdb的数据表employees中只选择工资收入,消除结果集中的重复行。selectdistinct工资收入fromemployees;3.1.5消除结果集中的重复行SELECT子句的表达式中还可以包含所谓的聚合函数。聚合函数常常用于对一组值进行计算,然后返回单个值。除COUNT函数外,聚合函数都会忽略空值。聚合函数通常与GROUPBY子句一起使用。如果SELECT语句中有一个GROUPBY子句,则这个聚合函数对所有列起作用,如果没有,则SELECT语句只产生一行作为结果。3.1.6聚合函数1.COUNT函数聚合函数中最经常使用的是COUNT()函数,用于统计组中满足条件的行数或总行数,返回SELECT语句检索到的行中非NULL值的数目,若找不到匹配的行,则返回0。语法格式为:COUNT({[ALL|DISTINCT]expression}|*)其中,expression是一个表达式,其数据类型是除BLOB或TEXT之外的任何类型。ALL表示对所有值进行运算,DISTINCT表示去除重复值,默认为ALL。使用COUNT(*)时将返回检索行的总数目,不论其是否包含NULL值。【例3.7】求数据库yhdb的数据表employees中员工的总人数。selectcount(*)as'员工总人数'fromemployees;【例3.8】统计数据库yhdb的数据表employees中有奖金收入的员工人数。selectcount(奖金收入)as有奖金人数fromemployees;3.1.6聚合函数2.MAX和MINMAX和MIN分别用于求表达式中所有值项的最大值与最小值,语法格式为:MAX/MIN([ALL|DISTINCT]expression)其中,expression是常量、列、函数或表达式,其数据类型可以是数字、字符和时间日期类型。【例3.9】求数据库yhdb的数据表employees中员工的最高工资收入和最低工资收入。SELECTMAX(成绩),MIN(成绩)selectmax(工资收入)最高工资,min(工资收入)最低工资fromemployees;注意:当给定字段上只有空值或检索出的中间结果为空时,MAX和MIN函数的值也为空。3.1.6聚合函数3.SUM函数和AVG函数SUM和AVG分别用于求表达式中所有值项的总和与平均值,语法格式为:SUM/AVG([ALL|DISTINCT]expression)其中,expression是常量、列、函数或表达式,其数据类型只能是数值型数据。【例3.10】求数据库yhdb的数据表employees中员工的总工资收入和总奖金收入。selectsum(工资收入)总工资收入,sum(奖金收入)总奖金收入fromemployees;【例3.11】求数据库yhdb的数据表employees中员工的平均工资收入和平均奖金收入。selectavg(工资收入)平均工资收入,avg(奖金收入)平均奖金收入fromemployees;3.1.6聚合函数4.VARIANCE和STDDEV(STD)函数VARIANCE和STDDEV函数分别用于计算特定的表达式中的所有值的方差和标准差。语法格式:VARIANCE/STDDEV([ALL|DISTINCT]expression)【例3.12】求数据库yhdb的数据表employees中员工工资收入的方差。selectvariance(工资收入)工资收入方差fromemployees;说明:方差的计算按照以下几个步骤进行。①计算相关列的平均值;②求列中的每一个值和平均值的差;③计算差值的平方的总和;④用总和除以(列中的)值得结果。STDDEV函数用于计算标准差。标准差等于方差的平均根。所以,STDDEV(…)和SQRT(VARIANCE(…))这两个表达式是相等的。3.1.6聚合函数【例3.13】求数据库yhdb的数据表employees中员工工资收入的标准差。selectstd(工资收入)工资收入标准差fromemployees;STDDEV可以缩写为STD,这对结果没有影响。3.1.6聚合函数5.GROUP_CONCAT函数MySQL支持一个特殊的聚合函数GROUP_CONCAT函数。该函数返回来自一个组指定列的所有非NULL值,这些值一个接着一个放置,中间用逗号隔开,并表示为一个长长的字符串。这个字符串的长度是有限制的,标准值是1024。语法格式为:GROUP_CONCAT({[ALL|DISTINCT]expression}|*)【3.14】求数据库yhdb的数据表employees中所有工资收入是4500元的员工姓名。selectgroup_concat(员工姓名)fromemployeeswhere工资收入=4500;3.1.6聚合函数6.BIT_AND、BIT_OR和BIT_XOR与二进制运算符|(或)、&(与)和^(异或)相对应的聚合函数也存在,分别是BIT_OR、BIT_AND、BIT_XOR。例如,函数BIT_OR在一字段中的所有值上执行一个二进制OR。语法格式为:BIT_AND|BIT_OR|BIT_XOR({[ALL|DISTINCT]expression}|*)例如,有一个数据表demo,其中有一数据类型为int型的字段column,该字段有2个数据值,分别是1、3,如执行:selectbin(bit_or(column))fromdemo;则结果为:011。其中BIN函数用于将结果转换为二进制位。因为“1”对应的二进制值是“001”,“3”对应的二进制值是“011”,bit_or(column)的含义是“001|011”,则为“011”。如果把bit_or替换为bit_and,则结果为:001。如果把bit_or替换为bit_xor,则结果为:010。3.1.6聚合函数任务二

子查询WHERE子句必须紧跟FROM子句之后,在WHERE子句中,使用一个条件从FROM子句的中间结果中选取行。WHERE子句会根据条件对FROM子句的中间结果中的行一行一行地进行判断,当条件为TRUE的时候,一行就被包含到WHERE子句的中间结果中。说明:IN关键字既可以指定范围,也可以表示子查询。在SQL中,返回逻辑值(TRUE或FALSE)的运算符或关键字都可称为谓词。判定运算包括比较运算、模式匹配、范围比较、空值比较和子查询。WHERE子句比较运算符用于比较两个表达式值,MySQL支持的比较运算符有:=(等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、<=>(相等或都等于空)、<>(不等于)、!=(不等于)。比较运算的语法格式为:expression{=|<|<=|>|>=|<=>|<>|!=}expression其中expression是除TEXT和BLOB外类型的表达式。当两个表达式值均不为空值(NULL)时,除了“<=>”运算符,其他比较运算返回逻辑值TRUE(真)或FALSE(假);而当两个表达式值中有一个为空值或都为空值时,将返回UNKNOWN。3.2.1比较运算【例3.15】查询数据库yhdb的数据表employees中员工编号为0020002的员工姓名、家庭住址和联系电话。select员工姓名,家庭住址,联系电话fromemployeeswhere员工编号='0020002';【例3.16】查询数据库yhdb的数据表employees中工资收入大于等于4600的员工姓名、员工性别和入职日期。select员工姓名,员工性别,入职日期fromemployeeswhere工资收入>=4600;3.2.1比较运算MySQL有一个特殊的等于运算符“<=>”,当两个表达式彼此相等或都等于空值时,它的值为TRUE,其中有一个空值或都是非空值但不相等,这个条件就是FALSE。没有UNKNOWN的情况。【例3.17】查询数据库yhdb的数据表employees中奖金收入是NULL的情况。select*fromemployeeswhere奖金收入<=>null;执行结果如下:Emptyset这里的执行结果“Emptyset”表示没有查询出符合要求的数据记录,没有奖金收入是NULL的情况。“<=>”是一个MySQL的特殊的等于运算符,表示“是”的含义,也

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论