《MySQL数据库技术与项目应用教学课件汇总完整版电子教案.pptx》由会员分享,可在线阅读,更多相关《MySQL数据库技术与项目应用教学课件汇总完整版电子教案.pptx(513页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、认识MySQL数据库MySQL数据库技术与项目应用01目录/Contents010203认识数据库安装与配置MySQL数据库设置MySQL字符集任务1认识数据库在设计和使用MySQL数据库之前,需要了解数据库的基本概念、数据库的发展以及关系型数据库数据的存储方式。任务场景数据库的基本概念数据(Data)用来记录信息的可识别符号,是信息的具体表现形式。数据是对现实世界的事物采用计算机能够识别、存储和处理的方式进行描述,其具体表现形式可以是数字、文本、图像、音频、视频等。数据库(Database,DB)用来存放数据的仓库。数据库管理系统(DatabaseManagementSystem,DBMS)
2、是操纵和管理数据库的软件,为应用程序提供访问数据库的方法,包括数据的定义、数据操纵、数据库运行管理及数据库建立与维护等功能。数据库的基本概念数据库系统数据库系统(DatabaseSystem,DBS)由软件、数据库和数据库管理员组成。数据库技术的发展数据库技术的发展演变人工管理,文件系统管理,数据库系统管理数据库系统管理的发展演变层次/网状数据库系统,关系数据库系统,新一代数据库系统新一代数据库系统ITDT关系型数据库在关系模型中,实体和实体间的联系均由单一的关系来表示。在关系型数据库中,关系就是表,一个关系型数据库就是若干个二维表的集合。关系型数据库产品OracleOracle是商用关系型数
3、据库管理系统中的典型代表,是甲骨文公司的旗舰产品。MySQLMySQL是当下最流行的开源和多线程的关系型数据库管理系统,它具有快速、可靠和易于使用的特点。SQLServerSQLServer是微软推出的关系型数据库管理系统,广泛应用于电子商务、银行、电力、教育等行业,它使用Transact-SQL语言完成数据操作。SQL语言SQL(StructuredQueryLanguage,结构化查询语言)是关系型数据库语言的标准。数据定义语言(DataDefinitionLanguage,DDL)用于创建数据库和数据库对象,为数据库操作提供对象。例如,数据库、表、存储过程、视图等都是数据库中的对象,都需
4、要通过定义才能使用。DDL中主要的SQL语句包括CREATE、ALTER、DROP,分别用来实现数据库及数据库对象的创建、更改和删除操作。数据操纵语言(DataManipulationLanguage,DML)主要是用于操纵数据库中的数据。包括INSERT、SELECT、UPDATE、DELETE等语句。数据控制语言(DataControlLanguage,DCL)主要实现对象的访问权限及对数据库操作事务的控制,包括GRANT、REVOKE、COMMIT和ROLLBACK。数据库中的操作都是通过执行SQL语句来完成,它可以方便的嵌套在Java、C#、PHP等程序语言中,以实现应用程序对数据的查
5、询、插入、修改和删除等操作。大数据时代的数据库NoSQL(NotOnlySQL)泛指非关系型数据库,采用键值对(key-value)方式存储数据。主要应用于分布式数据处理环境,用于解决大规模数据集合下数据种类的多样性问题。当下流行的NoSQL数据库主要有Redis、MonogoDB、HBase等。NewSQL为了将传统关系型数据库事务的ACID特性和NoSQL的高性能和可扩展性进行有机结合,以提升传统关系数据库在数据分析方面的能力。主要代表的数据库有TiDB、VoltDB、MemSQL等。在大数据时代,适用事务处理的的传统关系型数据库、适用于高性能应用的NoSQL和适用于数据分析应用的NewS
6、QL三种形式不会单一存在,“多种架构支持多类应用”会成为数据库行业应用的基本思路。任务2安装与配置MySQL数据库要使用MySQL来存储和管理数据库,首先要安装和配置MySQL数据库。本任务介绍了MySQL的安装和配置过程,并使用命令行和Navicat工具操作MySQL数据库。任务场景MySQL概述MySQL作为关系型数据库的重要产品之一,由于其体积小、开放源码、成本低等优点,被广泛的应用在Internet的中小型网站上。MySQL的主要特点可移植性好强大的数据保护功能强大的业务处理能力支持大型数据库运行速度快MySQL8.0简介自2009年MySQL5.1发布后,MySQL5.x系列延续了多
7、年,直到2018年4月MySQL首个正式版8.0.11发布。MySQL8.0版本在功能上进行较大的增加和改进。MySQL8.0的部分新特性事务性数据字典安全与帐户管理InnoDB增强字符集支持优化器窗口函数安装MySQL服务器下载MySQL,其官网下载地址为http:/ USINGutf8mb4),CONVERT(SQL语言 USINGutf8),CONVERT(SQL语言 USINGgbk),CONVERT(SQL语言 USINGlatin1);设置MySQL字符集MySQL支持服务器(Server)、数据库(Database)、数据表(Table)、字段(Field)和连接层(Connec
8、tion)五个层级的字符集设置。数据库进行存取数据时,会根据各层级字符集寻找对应的编码,进行转换,若转换失败则显示为乱码。系统变量名说明character_set_server默认的内部操作字符集,标识服务器的字符集。服务器启动时通过该变量设置字符集,当未设置值时,系统默认为utf8mb4。该变量为createdatabase命令提供默认值character_set_client客户端来源数据使用的字符集,该变量用来决定MySQL如何解释客户端发到服务端的SQL命令character_set_connection连接层字符集。用来决定MySQL如何处理客户端发来的SQL命令character_
9、set_results查询结果字符集。当SQL返回结果时,这个变量的值决定了发给客户端的字符编码character_set_database当前选中数据库的默认字符集character_set_system系统元数据(字段名等)字符集。数据库、表和字段都用这个字符集character_set_filesystem文件系统的编码格式,默认值为binary,表示不对字符编码进行转换character_set_dir指示字符集的安装目录设置MySQL字符集【例1.8】使用SHOW语句查看字符集变量。mysqlSHOWVARIABLESLIKEchar%;设置MySQL字符集【例1.9】使用SET语句
10、修改字符集变量。mysqlSETcharacter_set_client=utf8mb4;mysqlSETcharacter_set_connection=utf8mb4;mysqlSETcharacter_set_results=utf8mb4;项目实践实践任务(1)安装、配置和访问MySQL服务器。(2)安装Navicat图形化管理工具,并使用该工具操作MySQL服务器。(3)使用SHOW语句查看MySQL服务器的字符集、校对规则及状态信息等。(4)了解MySQL服务器配置文件(my.ini)的常用参数。实践内容(1)安装、配置和访问MySQL服务器。(2)安装Navicat图形化管理工具
11、,并使用该工具操作MySQL服务器。(3)使用SHOW语句查看MySQL服务器的字符集、校对规则及状态信息等。(4)了解MySQL服务器配置文件(my.ini)的常用参数。拓展实训1.打开Windows服务组件,将MySQL服务器改为自动启动。2.使用“SHOWSTATUS;”命令查看MySQL服务器的状态信息。3.使用“SHOWDATABASES;”命令查看MySQL服务器下的默认数据库。4.打开“my.ini”文件,记录port、datadir、basedir、default-storage-engine、character-set-server等参数值,了解其各自含义。您的关注是我们前行
12、的动力KEEPONGOINGNEVERGIVEUPPPT模板下载: Model定义:模型是对现实世界的抽象,表示对象(实体)与对象之间关系的模型,在关系数据库系统中,使用数据模型描述数据库的结构和语义。数据操作数据约束数据模型数据模型的组成要素数据结构数据结构是数据模型的基础,不同的数据结构具有不同的操作和约束。描述数据库系统的静态特征,如数据库中表的结构定义、视图定义等。数据操作描述系统的动态特征,主要是在数据库中对每个数据对象允许执行的操作集合主要包括数据的添加、更改、删除和查询等。数据约束用来描述数据结构内数据间完整性规则的集合。完整性规则是数据及其关系所具有的制约和储存规则,用来限定符
13、合数据库的语法、关系和它们间的制约与依存及数据动态的规则,以保证数据的正确性、有效性和兼容性。数据模型的分类数据模型概念模型Data Model逻辑模型物理模型概念模型概念模型定义:是面向用户的数据模型,它是用户容易理解的现实世界特征的数据抽象。最常用的概念模型是实体-关系模型。实体(Entity)实体集(EntitySet)属性(Atrribute)标识符(Identifier)逻辑模型逻辑模型定义:是用户在数据库中所看到的数据模型,它由概念数据模型转换得到。字段(Field)记录(Record)关键字(Keyword)表(Table)物理模型物理模型定义:是描述数据在物理存储介质上的组织结
14、构,它与具体的数据库管理系统(DBMS)相关,也与操作系统和硬件相关,是物理层次上的数据模型。实体和关系实体:是一个数据对象,是客观存在且相互区分的事物。例:商品、会员、订单等实体集:具有相同属性实体的所有实例集合例:数据库中存储的所有用户在E-R模型中,实体表示:会员实体实例1实例2登录名1380911231217134324389用户名李明刘立性别男女会员积分200120实体和关系实体通过一组属性来表示。属性是实体集中成员所拥有的特性,不同的实体其属性值不同。在E-R模型中,实体属性的表示:实体和关系关系是指多个实体间的相互关联。例:商品“紫竹洞箫”和商品类别“乐器”之间的联系关系集(Re
15、lationshipSet)是同类联系的集合,是n(n2)个实体集上的数学关系。在E-R模型中,商品实体和会员实体间的关系表示:添加购物车商品会员实体和关系关系属性:关系同实体一样也具有描述性的属性在E-R模型中,“添加购物车”关系及其属性:添加购物车商品会员购买数量实体和关系现实世界中,事物内部及事物之间存在一定的联系,这些联系在信息世界中反映为实体内部的联系和实体间的关系。关系数据模型主要研究实体间的关系,它是指不同实体集之间的关系。这种关系通常有一对一、一对多和多对多3种。概念模型设计抽象实体标识实体间的关系标识实体属性确定主关键字1234标识实体概念模型设计抽象实体确立实体间的关系标识
16、实体属性确定主关键字1234标识实体间的关系概念模型设计抽象实体确立实体间的关系标识实体属性确定主关键字1234标识实体属性概念模型设计抽象实体确立实体间的关系标识实体属性确定主关键字1234确定主关键字网上商城系统E-R图逻辑模型设计关系数据库设计过程中,概念模型确定了系统中应有的实体和实体关系,为了创建用户所需的数据库,还需要将实体和实体关系转换成对应的关系模式,也就是建立系统逻辑模型。逻辑模型是用户在数据库中所看到的数据模型,它由概念模型转换得到。(1)实体转换原则将E-R模型中的每一个实体转换成一个关系,即二维表;实体的属性转换为表的字段,实体的标识符转换成表的主关键字。(2)关系转换
17、原则由于实体间存在1:1、1:n和n:m3种关系,所以实体关系在转换成逻辑模型时,不同的关系作不同的处理。若实体间联系为1:1时,可选择实体关系中的任意一个关系模式(表),将其主关键字作为另一个关系模式的属性。若实体间联系为1:n时,则在n端实体类型的关系模式中加入1端实体类型的主关键字作为属性。若实体间联系为n:m时,则要将实体关系转换成新的关系模式,两端实体集中的主关键字作为新关系模式的属性。逻辑模型设计根据网上商城系统的E-R模型和转换原则,其中会员、商品、商品类别和订单等实体及添加购物车和订单详情的关系模式设计如下。商品类别(类别id,类别编号)。商品(商品id,类别id,商品编号,名
18、称,价格,库存量,销售量,上架时间,是否热销)。会员(会员id,用户名,密码,性别,联系电话,积分,注册时间)。订单(订单id,会员id,订单金额,下单时间)。购物车(购物车id,会员id,商品id,购买数量)。订单详情(详情id,订单id,商品id,购买数量)。关系模式的规范化范式定义:范式是符合某一级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,即满足不同的范式。第一范式(1NF)第二范式(2NF)第三范式(3NF)Boyee-Codd范式(BCNF)范式可以有效避免数据冗余,减少数据库的空间,减轻维护数据完整性等优点。但是随着范式的级别越高,其操作难度越大,性能降低。第一范式
19、不符合不符合1NF的的会员信会员信息表息表定义:第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。会员id用户名联系方式1李明手机:13689070000;邮箱:2刘立手机:13980600000,13567809000;邮箱:会员id用户名邮箱手机手机1李明136890700002刘立1398060000013567809000第一范式符合1NF的模型设计会员id用户名1李明2刘立会员表会员表联系id会员id联系方式联系值11邮箱21手机1368907000032邮箱42手机1398060000052手机
20、13567809000联系方式表联系方式表第二范式会员id用户名商品id商品名称价格购买数量1李明1曾国藩全集25511李明2平凡的世界全三集9812刘立2平凡的世界全三集9852刘立3SSD固态硬盘40023张三2平凡的世界全三集981不符合不符合2NF的学生选课表的学生选课表从上表中可以看出,会员id不能唯一标识一行记录,且属性值存在如下关系:会员会员id,商品,商品id用户名,商品编号,商品名称,价格,购买数量用户名,商品编号,商品名称,价格,购买数量定义:第二范式要求数据库表中的每个实例或行必须被唯一区分。第二范式这时需要通过会员id和商品id作为复合主关键字,决定非主关键字的情况。因
21、此,该购物车表不符合第二范式的要求,在实际操作中会出现如下问题。数据冗余:如同一件商品被n个用户购买,则商品id,商品名称,价格就要重复n-1次;当一个会员购买m件商品时,其用户名就要重复m-1次。更新异常:若某件商品的价格要进行折扣销售,则整个表中该商品的价格都要进行修改,否则会出现同一件商品价格不同的情况。对上述购买关系进行拆分后形成的关系模式包含如下3张表。会员:Users(会员id,用户名)商品:Goods(商品id,商品名称,价格)购物车:Scar(会员id,商品id,购买数量)商品id商品名称价格1曾国藩全集2552平凡的世界全三集983SSD固态硬盘400会员ID商品id购买数量
22、111121225232321会员id用户名1李明2刘立3张三第三范式从表可以看出,在此关系模式中存在如下关系。商品id商品编号,商品名称,价格,类别id,类别名称商品id作为该关系中的唯一关键字,符合第二范式的要求,但不符合第三范式,因为还存在商品ID类别ID类别名称的关系。定义:第三范式是在第二范式的基础上建立起来,即满足3NF必须满足2NF。3NF要求关系表中不存在非关键字列对任一候选关键字的传递函数依赖。传递函数依赖,指的是如果存在“ABC”的决定关系,则C传递函数依赖于A。也就是说,第三范式要求关系表不包含其他表中已包含的非主关键字段信息。商品id商品名称价格类别id类别名称1曾国藩
23、全集2551图书2平凡的世界全三集981图书3SSD固态硬盘4002电脑及配件第三范式即存在非关键字段“类别名称”对关键字“商品id”的传递依赖,这种情况下也会存在数据冗余、更新异常、插入异常和删除异常。数据冗余:一个类别有多种商品,类别名称会重复n-1次。更新异常:若要更改某类别名称,则表中所有该类别的类别名称的值都需要更改,否则就会出一件商品对应多种类别。插入异常:若新增了一种商品类别,如果还没有指定到商品,则该类别名称无法插入到数据库中。删除异常:当要删除一种商品类别时,那就应该删除它在数据库中的记录,而此时与其相关的商品信息也会被删除。对上述选课关系进行拆分后可形成如下2个关系。商品:
24、Goods(商品id,商品名称,价格,类别id)商品类别:GoodsType(类别id,类别名称)商品id商品名称价格类别id1曾国藩全集25512平凡的世界全三集9813SSD固态硬盘4002类别id类别名称1图书2电脑及配件关系代数数据模型通过对现实世界抽象来优化数据存储,其目的是为了有效使用数据。在关系数据模型中,通过关系代数建立数据操纵模型。关系代数是一种抽象的查询语言,是关系数据库中数据操纵语言(DML)的传统表达方式,它用关系运算来表示数据查询。类别运算符说明类别运算符说明传统集合运算符交并差比较运算符CREATEDATABASEonlinedb;QueryOK,1rowaffec
25、ted(0.01sec)查看数据库查看数据库SQL语句mysqlSHOWDATABASES;+-+|Database|+-+|information_schema|mysql|onlinedb|performance_schema|sys|+-+5rowsinset(0.06sec)SHOWDATABASES;查看数据库查看指定数据库信息的SQL语句mysqlSHOWCREATEDATABASEonlinedb;+-+-+|Database|CreateDatabase|+-+-+|onlinedb|CREATEDATABASEonlinedb/*!40100DEFAULTCHARACTERS
26、ETutf8mb4COLLATEutf8mb4_0900_ai_ci*/*!80016DEFAULTENCRYPTION=N*/|+-+-+1rowinset(0.00sec)SHOWCREATEDATABASE数据库名;修改数据库修改数据库的基本语法为:【例3.5】使用SQL语句,修改数据库onlinedb的字符集设置为uft8,排序规则设置为utf8_bin。ALTERDATABASE数据库名DEFAULTCHARACTERSET字符集名|DEFAULTCOLLATE排序规则名;mysqlALTERDATABASEonlinedbCHARACTERSETutf8COLLATEutf8_bi
27、n;QueryOK,1rowaffected(0.00sec)删除数据库删除数据库的基本语法;【例3.6】删除数据库服务器中名为onlinedb的数据库,执行结果如下。mysqlDROPDATABASEonlinedb;QueryOK,0rowsaffected(0.16sec)学习提示学习提示:删除数据库会删除该数据库中所有的表和所有数据,且不能恢复,因此在执行删除数据库操作时要慎重。DROPDATABASE数据库名;MySQL的存储引擎存储引擎就是数据的存储技术。针对不同的处理要求,对数据采用不同的存储机制、索引技巧、读写锁定水平等。MySQL现提供有InnoDB、MyISAM、CSV、M
28、emory等。查看MySQL支持的存储引擎【例3.7】查看MySQL服务器系统支持的存储引擎。SHOWENGINES;MySQL的存储引擎【例3.8】查看MySQL服务器系统支持的默认存储引擎。mysqlSHOWVARIABLESLIKEdefault_storage_engine;+-+-+|Variable_name|Value|+-+-+|default_storage_engine|InnoDB|+-+-+1rowinset(0.00sec)MySQL的存储引擎InnoDB存储引擎InnoDB是MySQL的默认事务型引擎,也是最重要、使用最广泛的存储引擎。InnoDB的性能和自动崩溃恢
29、复特性,使得它在非事务型存储的需求中也很流行,MySQL一般优先考虑InnoDB引擎。InnoDB具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)。InnoDB是为处理巨大数据量的最大性能设计,被用在众多需要高性能的大型数据库站点上。InnoDB支持外键完整性约束,存储表中的数据时,每张表的存储都按主键顺序存放,如果没有在表定义时指定主键,InnoDB会为每一行生成一个6字节的ROWID列,并以此作为主键。MySQL数据库的组成MySQL数据库文件MySQL中每一个数据库,在data目录下都会有一个与数据库同名的文件夹,用于存储该数据库的表文件。MySQL数据库文件的组成取决于该数据库使
30、用的存储引擎。InnoDB存储引擎采用表空间来管理数据,其主要文件如下表。文件名说明Ibdata*MySQL中共享表空间文件,存储InnoDB系统信息和用户数据表数据和索引,为所有表共用。如ibdata1、ibdata2等*.ibdibd文件表示单表表空间文件,每个表使用一个表空间文件,存储用户数据表数据和索引。不能直接读取Ibtmp*MySQL临时独立的表空间文件。如ibtmp1、ibtmp2等ib_logfile*MySQL的日志文件,如ib_logfile0、ib_logfile1等*.errMySQL的错误日志文件,记录MySQL服务器运行或启停时发生的错误信息。可用记事本打开*_bi
31、n.00000n二进制日志文件,n是1开始的自然数。用于记录数据库中对象和数据的添加和更改操作undo_00*MySQL中的undo日志文件,主要记录事务异常时的数据,以实现数据回滚操作,如undo_001、undo_002等*.pid用来记录当前mysqld进程的pid值,即ProcessID*.pemMySQL中的证书文件,用于SSL认证。包括MySQL服务器的公钥、私钥及客户端和服务器端的证书和密钥等。如private_key.pem、public_key.pem等系统数据库MySQL的数据库包括系统数据库和用户数据库用户数据库是用户创建的数据库;系统数据库是由MySQL安装程序自动创建
32、的数据库,用于存放和管理用户权限和其他数据库的信息,包括数据库名、数据库中的对象及访问权限等信息。MySQL中共有4个可见的系统数据库数据库名说明mysql包含用于存储MySQL服务的系统信息表,包括授权系统表、系统对象信息表、日志系统表、服务器端辅助系统表等。此数据库中的表默认情况下多为MYASIM引擎。information_schema用于保存MySQL服务器所维护的所有其他数据库的信息,包括数据库名、数据库的表、表中列的数据类型与访问权限等。此数据库中的表均为视图,因此在用户或安装目录下无对应用数据文件。performance_schema主要用于收集数据库服务器的性能参数。此数据库中
33、所有表的存储引擎为performance_schema,用户不能创建存储引擎为performance_schema的表。默认情况下些数据库为关闭状态。syssys数据库中所有数据来自performance_schema。目标是把performance_schema的把复杂度降低,让DBA(数据库管理员)更快的了解DB的运行情况。任务2MySQL中数据的表示数据类型决定了数据的存储格式和有效范围等。MySQL提供了丰富的数据类型,包括整数类型、小数类型、字符串类型、日期类型和JSON类型等。本节通过实例解读MySQL中的常用数据类型,以及在实际开发中数据类型的选择建议。任务场景整数类型整数类型是
34、数据库中最基本的数据类型,MySQL中支持的5种整数类型,整数类型的数据范围主要是通过区分有符号和无符号数据。整数类型字节数无符号数的取值范围有符号数的取值范围TINYINT10255-128127SMALLINT2065535-3276832767MEDIUMINT30224-223223-1INT40232-1-231231-1BIGINT80264-1-263263-1整数类型【例3.9】创建test_int表,用于测试整数类型的数据存储。创建test_int数据表向表test_int中,添加两条测试记录如下。mysqlCREATETABLEtest_int-(-int_1int,-in
35、t_2intunsigned,-int_3int(6)zerofill,-int_4tinyint,-int_5tinyintunsigned-);#测试1:添加成功mysqlINSERTINTOtest_intVALUES(100,100,100,100,100);QueryOK,1rowaffected(0.01sec)#测试2:添加失败mysqlINSERTINTOtest_intVALUES(100,-100,100,100,100);ERROR1264(22003):Outofrangevalueforcolumnint_2atrow1整数类型查看表结构查询test_int表mysq
36、lDESCtest_int;+-+-+-+-+-+-+|Field|Type|Null|Key|Default|Extra|+-+-+-+-+-+-+|int_1|int|YES|NULL|int_2|intunsigned|YES|NULL|int_3|int(6)unsignedzerofill|YES|NULL|int_4|tinyint|YES|NULL|int_5|tinyintunsigned|YES|NULL|+-+-+-+-+-+-+5rowsinset(0.00sec)mysqlSELECT*FROMtest_int;+-+-+-+-+-+|int_1|int_2|int_3
37、|int_4|int_5|+-+-+-+-+-+|100|100|000100|100|100|+-+-+-+-+-+1rowinset(0.00sec)小数类型MySQL中,小数类型包括浮点数和定点数。浮点数又包括单精度(FLOAT)和双精度(DOUBLE),定点数类型是DECIMAL;浮点数在数据库中存放的是近似值,定点数存放的是精确值。类型字节数负数的取值范围非负数的取值范围FLOAT4-3.402823466E+38-1.175494351E-380或1.175494351E-383.402823466E+38DOUBLE8-1.7976931348623157E+308-2.2250
38、738585072014E-3080和2.2250738585072014E-3081.7976931348623157E+308DECIMAL(M,D)或DEC(M,D)M+2同DOUBLE型同DOUBLE型小数类型DECIMAL类型的有效取值范围由M和D决定M称为精度,是数据的总长度,小数点不占位D为标度,是指小数点后面的位数。如DECIMAL(6,2)表示指定的数据类型为DECIMAL,数据长度是6,小数点后保留2位,如1234.56是符合该类型的小数。数据类型(M,D)小数类型【例3.10】创建test_dec表,用于测试小数类型的数据存储。创建测试表添加测试数据mysqlCREATE
39、TABLEtest_dec-(-float_1float(10,2),-double_2double(10,2),-decimal_3decimal(10,2)-);QueryOK,0rowsaffected,2warnings(0.02sec)mysqlINSERTINTOtest_decVALUES(12345678.99,12345678.99,12345678.99);QueryOK,1rowaffected(0.01sec)小数类型查询表结果mysqlSELECT*fromtest_dec;+-+-+-+|float_1|double_2|decimal_3|+-+-+-+|1234
40、5679.00|12345678.99|12345678.99|+-+-+-+1rowinset(0.00sec)日期类型MySQL中提供了多种表示日期和时间的数据类型,其主要差别是在精度和范围上。类型字节数取值范围零值表示形式YEAR1190121550000DATE41000-01-019999-12-310000:00:00TIME3-838:59:59838:59;5900:00:00DATETIME81000-01-0100:00:009999-12-3123:59:590000-00-0000:00:00TIMESTAMP419700101080001203801191114070
41、00000000000000日期类型【例3.11】创建test_date表,用于测试日期类型的数据存储。创建测试表添加测试数据mysqlCREATETABLEtest_date-(-year_1year,-date_2date,-time_2time,-datetime_4datetime,-timestamp_5timestamp-);QueryOK,0rowsaffected(0.03sec)mysqlINSERTINTOtest_dateVALUES(NOW(),CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP);
42、QueryOK,1rowaffected(0.01sec)日期类型查询表结果mysqlSELECT*FROMtest_date;字符串类型字符串类型是一种非常重要的数据类型,MySQL提供了非常丰富的字符串类型。类型允许长度用途CHAR0255字节定长字符串VARCHAR065535字节变长字符串BIT164位不超过8个字符的字符串,存储每个字符ASCII码TINYTEXT0255字节短文本字符串TEXT065535字节长文本字符串BINARY0255字节定长的二进制数据VARBINARY065535字节变长的二进制数据TINYBLOB0255字节不超过255个字符的二进制字符串BLOG065
43、535字节二进制形式的长文本字符串MECDIUMTEXT0167772150字节中等长度文本字符串LONGTEXT04294967295字节极大长度文本字符串MEDIUMBLOB0167772150字节中等长度的二进制字符串LONGBLOG04294967295字节极大长度的二进制字符串字符串类型【例3.12】创建test_char1表,测试字符串类型单列数据存储大小。测试1:超出列长度的定义测试2:超出列长度的定义mysqlCREATETABLEtest_char1-(-varchar_1varchar(65535)-);ERROR1074(42000):Columnlengthtoobig
44、forcolumnvarchar_1(max=21845);useBLOBorTEXTinsteadmysqlCREATETABLEtest_char1-(-varchar_1varchar(21845)-);ERROR1118(42000):Rowsizetoolarge.Themaximumrowsizefortheusedtabletype,notcountingBLOBs,is65535.Thisincludesstorageoverhead,checkthemanual.YouhavetochangesomecolumnstoTEXTorBLOBs字符串类型测试3:符合列长度的定义m
45、ysqlCREATETABLEtest_char1-(-varchar_1varchar(21844)-);QueryOK,0rowsaffected(0.02sec)字符串类型【例3.13】创建test_char2表,测试字符串类型单行数据存储大小。测试1:超出行长度的定义测试2:符合行长度的定义mysqlCREATETABLEtest_char2-(-varchar_1varchar(21844),-char_2char(10)-);ERROR1118(42000):Rowsizetoolarge.Themaximumrowsizefortheusedtabletype,notcounti
46、ngBLOBs,is65535.Thisincludesstorageoverhead,checkthemanual.YouhavetochangesomecolumnstoTEXTorBLOBsmysqlCREATETABLEtest_char2-(-varchar_1varchar(21834),-char_2char(10)-);QueryOK,0rowsaffected(0.06sec)JSON类型JSON是一种轻量级的数据交换格式,是ECMAScript(欧洲计算机协会制定的JS规范)的一个子集,是当前最为流行的数据交换格式。自MySQL5.7开始支持JSON数据类型后,数据库与应用
47、程序间的数据交换变得为简单、灵活和高效。MySQL中,JSON类型的值主要有对象和数组两种方式。JSON对象JSON数组#包含2个键值对的JSON对象database:MySQL,language:Java#包含3个键值对的JSON对象uid:1,uname:李明,ugender:男abc,12,NULL,TRUE,FALSEJSON类型【例3.14】创建test_json表,测试JSON数据类型的存储。创建测试表添加测试数据mysqlCREATETABLEtest_json-(-json_1JSON,-json_2JSON-);QueryOK,0rowsaffected(0.03sec)my
48、sqlINSERTINTOtest_json-VALUES(uid:1,uname:李明,-reading,music);QueryOK,1rowaffected,1warning(0.01sec)JSON类型查看表结果mysqlSELECT*FROMtest_json;+-+-+|json_1|json_2|+-+-+|uid:1,uname:李明,|reading,music|+-+-+1rowinset(0.00sec)任务3创建和操作数据表数据表是数据库中存储数据的基本单位,一个数据库可包含若干个数据表。在关系型数据库管理系统中,应用系统的基础数据都存放在关系表中,数据库程序员在创建完
49、数据库后需要创建数据表,并确定表中各个字段列的名称、数据类型、数据精度、是否为空等属性。本节主要讲述创建和查看数据表、复制、修改、删除表等操作。任务场景创建和查看数据表关系数据库中,表是以行和列的形式组织起来,数据存在于行和列相交的单元格中,1行数据表示1条唯一的记录,1列数据表示1个字段,唯一标识1行记录的属性称为主键。查看数据表SQL语句【3.15】查看onlinedb数据库下的数据表使用USE语句将onlinedb设为当前数据库查看数据表SHOWTABLESmysqlUSEonlinedb;DatabasechangedmysqlSHOWTABLES;Emptyset(0.00sec)使
50、用Navicat图形工具创建表【例3.16】使用Navicat工具,在onlinedb数据库中新建会员表,表名为users。序号字段名数据类型标识主键允许空默认值说明1uidint是是否用户id2unamevarchar(30)否用户名3upwdvarchar(50)否密码4ugenderchar(1)是男性别使用CREATETABLE语句创建表创建表的语法格式字段定义的语法格式CREATETABLEIFNOTEXISTS数据库名.表名(字段定义1,字段定义2,字段定义n);IFNOTEXISTS:可选参数,判断表不存在时才执行创建表的语句。表名:表示所要创建的表的名称,若不在当前数据库中创建