教学课件·《网络数据库技术》1.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《教学课件·《网络数据库技术》1.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络数据库技术 教学 课件 网络 数据库技术
- 资源描述:
-
1、网络数据库技术MySQL基础MySQL基本情况 The worlds most popular open source database.瑞典MySQL AB公司(2000年,正式进入开源世界)SUN公司 Oracle公司 LAMP(Linux+Apache+MySQL+PHP)流行的网站构架方式MySQL支持的操作系统 MySQL可运行于20多种操作系统 Linux Windows Mac OS,Solaris,HP-UX,IBM AIX等。MySQL版本 MySQL Community Edition(MySQL社区版):商业用途的MySQL:MySQL Standard Edition(
2、标准版)MySQL Enterprise Edition(企业版)MySQL Cluster Carrier Grade Edition(集群版)MySQL相关产品 MySQL Workbench Oracle为MySQL服务器和数据库提供的图形工具 MySQL Installer for Windows MySQL相关产品的安装包 第三方图形工具 如Navicat for MySQLMySQL Server服务启动 控制面板管理工具服务MySQL57 任务管理器MySQL57MySQL 命令行客户端运行 开始菜单快捷方式 命令窗口 运行cmd命令 所有程序附件命令提示符MySQL基本命令 1
3、连接及断开MySQL服务器 1.1 连接MySQL服务器例:在MySQL服务器所在机上,以root身份登录。1.2 断开MySQL服务器连接2简单查询2简单查询MySQL命令说明:命令通常以分号结束。(个别例外如QUIT)当用户发出一个命令时,mysql将其发送到服务器执行并显示结果,之后,在屏幕上显示另一个mysql提示符表示已准备接受另外的命令。mysql 以表格形式显示查询结果。表格首行显示列的名字,其余行显示查询结果。mysql 显示了命令执行的结果以及命令执行的时间 命令关键词不分大小写。MySQL命令说明:命令可以写在一行上,也可以输入在一行上输入多条命令,每条命令以;结束。MyS
4、QL命令说明:允许一条命令写在几行上,直到以;结束。MySQL命令说明:若想中断命令执行,则键入c:各种系统提示符的含义MySQL Workbench使用 开始菜单快捷方式网络数据库技术网络数据库技术MySQL数据数据类型类型学习目标 掌握MySQL常见数据类型 能够为业务选择合适数据类型QQ个人资料MySQL常用数据类型 数值类型 日期时间类型 字符串类型数值类型整数整数类型字节取值范围最小值最大值TINYINT1signed-128127unsigned0255SMALLINT2signed-3276832767unsigned065535MEDIUMINT3signed-83886088
5、388607unsigned01677215INT/INTEGER4signed-21474836482147483747unsigned04294967295BIGINT5signed-9223372036854775808-9223372036854775808unsigned018446744073709551615INT(5)和 INT(11)取值范围不同?存储方式不同?INT 和 BIGINT BIGINT存储空间更大,INT和BIGINT之间通常选择BIGINT整数类型的属性 zerofill unsigned 若为zerofill,则自动为unsigned auto_increm
6、ent 一个表最多只能有一列auto_increment auto_increment列应定义为not null auto_increment列应定义为primay key或unique数值类型小数 浮点数 float double 定点数 decimal 更精确数值类型小数浮点数类型字节取值范围最小值最大值FLOAT41.175494351E-383.402823466E+38DOUBLE82.22507385850720014E-3081.7976931348623157E+308定点数类型字节取值范围最小值最大值DEC(M,D)DECIMAL(M,D)M+2由M和D决定,最大取值范围与D
7、OUBLE相同对比 FLOAT 与 DOUBLE 与 DECIMAL FLOAT(5,2)与 DOUBLE(5,2)与 DECIMAL(5,2)n浮点数不写精度和标度,则会按实际位数显示n浮点数如果有精度和标度,则规定了其表示范围,自动将四舍五入结果插入n定点数不写精度和标度,则会按默认值DECIMAL(10,0)n定点数若数据超越了精度和标度值,则会警告注意 浮点数存在误差问题 对货币等对精度敏感的数据,应该用定点数表示或存储 尽量避免做浮点数的比较 浮点数中一些特殊值的处理日期时间型日期和时间型字节取值范围最小值最大值DATE31000-01-019999-12-31DATETIME810
8、00-01-01 00:00:009999-12-31 23:59:59TIMESTAMP4197001010800012038年某个时刻TIME3838:59:59838:59:59YEAR119012155日期和时间类型 各类型都有一个有效范围,超出则进行错误提示,并以零值进行存储 DATE,TIME 和 DATETIME最常使用TIMESTAMP 与 DATETIME TIMESTAMP的1970-2038,DATETIME的范围为1000-9999 TIMESTAMP还可以自动根据OS时区设置自动转换为对应值TIMESTAMP类型 若一个表有一列类型为TIMESTAMP,则系统自动创建
9、其默认值为CURRENT_TIMESTAMP 若一个表有多列类型为TIMESTAMP,则系统会不会都自动创建他们的默认值为CURRENT_TIMESTAMP呢?说明 日期和时间类型可以采用多种格式说明 在具体业务中,要根据实际需要选择能够满足应用的最小存储的日期类型字符串型 CHAR 与 VARCHAR TEXT BLOB 与 BINARY ENUM字符串型CHAR 与 VARCHAR字符串型字节描述及存储需求CHAR(M)固定M为0255之间的整数VARCHAR(M)可变M255 (MySQL5.7为 21844)n存储文本信息nCHAR(M),VARCHAR(M),M指的是字符数n其所占用
10、的存储空间字节数,根据采用编码的不同可能不同字符串型CHAR 与 VARCHAR值CHAR(4)存储需求VARCHAR(4)存储需求 4个字节1个字节abab 4个字节ab3个字节abcdabcd4个字节abcd5个字节abcdefabcd4个字节abcd5个字节n英文字符p在各种编码方式上,英文字符都占用一个字节not using strict mode字符与字节的区别编码 字符串大学universityGBK(双字节)VARCHAR(2)VARCHAR(10)UTF8(三字节)VARCHAR(2)VARCHAR(10)UTF8MB4(三或四字节)VARCHAR(2)VARCHAR(10)编
11、码 字符串大学universityGBK(双字节)VARCHAR(2)4+1字节VARCHAR(10)11字节UTF8(三字节)VARCHAR(2)6+1字节VARCHAR(10)11字节UTF8MB4(三或四字节)VARCHAR(2)6+1字节VARCHAR(10)11字节n不同编码方式,一个中文字符占用的存储字节数不同n在各种编码方式上,一个英文字符都占用一个字节nUTF8MB4可存储表情字符串尾部的空格 在数据检索时,CHAR类型数据删除了尾部的空格,而VARCHAR类型数据则保留这些空格 在进行数据比较时,CHAR,VARCHAR 和 TEXT 值都不计尾部的空格 LIKE 除外说明
12、char为固定长度类型,容易造成空间的浪费(分配的空间是固定,不足以空格补齐).varchar为可变长度类型,可以超过255个字符,较为节省空间.存储字符串推荐使用varchar(M),M尽量小;如果是uuid,gender等定长内容可以用char.当存储字符再多时,可使用TEXT字符串型TEXT字符串型字节描述及存储需求TEXT允许长度为065535字节,值的长度+2个字节n存储大文本信息nTEXT存储单位为字节,总大小为65535字节,约为64KB;n在DB内部大多存储格式为溢出页,效率不及char字符串型BLOB,BINARY 可存储二进制字符串 可存储图像,音频等。但是不推荐!性能低下
13、(存储方式类似TEXT的溢出页)强调 CHAR(M),VARCHAR(M),M指的是字符数 存储字符串推荐使用VARCHAR(M),M尽量小;虽然BLOB和BINARY可存储二进制数据,但性能低下,不建议用数据库存储文件视频音频等二进制数据字符串型ENUM枚举类型字节描述及存储需求ENUM121255个成员25665535字节,nENUM类型只能从值集合中取单个值,不能取多个n忽略大小写字符串型ENUM小结 数值类型 整数TINYINT,INT,BIGINT 小数FLOAT,DOUBLE,DECIMAL 日期时间类型 DATE,TIME,DATETIME 字符串类型 CHAR(M),VARCH
14、AR(M),TEXT,ENUMQQ个人资料每一项都应是什么数据类型呢?网络数据库技术网络数据库技术MySQL数据数据对象对象学习目标 掌握几种常见MySQL的数据对象的概念 学会定义具体的数据对象MySQL常见数据对象 Database/Schema Table Index Constraint View/Trigger/Function/ProcedureMySQL各数据对象的关系模式 (数据库)表列索引外键触发器视图存储过程函数模式/数据库 Schema和Database同义 是存储数据对象的容器创建数据库例:创建sakila数据库p 其中的/*!40100.*/这部分注释会被MySQL执
15、行,表示服务端版本号大于4.1.00时会被执行。例:创建ldb数据库p 数据库默认的字符集是utf8修改数据库删除数据库表 Table 是最基本的数据对象,是存放数据的实体创建表例:sakila.filmAUTO_INCREMENT列的初始值设为1001例:sakila.customer例:订单表修改表删除表MySQL各数据对象的关系模式 (数据库)表列索引外键触发器视图存储过程函数索引 类似一本书的目录 索引是数据库中数据的目录 索引和数据是两个对象,索引需要占用实际磁盘空间(与view不同)索引主要用来提高数据的查询效率 数据库中数据变更同样需要同步索引数据的变更 在mysql中,inde
16、x和key是同一个概念,都是指索引.创建索引创建索引(1)(1)创建索引创建索引(2)(2)删除索引约束 生活中的约束 每个的指纹信息唯一 每个人的身份证号唯一 网上购物要先登录才能下订单MySQL中的约束 唯一约束 外键约束唯一约束 对一张表的某个字段或某几个字段设置唯一约束,保证在这个表里对应的数据必须唯一 用户ID,手机号,身份证号 街道号和门牌号的组合创建唯一约束 唯一约束是一种特殊的索引 唯一约束可以建立在一列上,也可建立在多列上 唯一约束可以在create table时定义,也可以alter table增加,但存在重复数据时该操作将报错 主键也是一种唯一约束 表order1中有 多
17、少索引 多少唯一约束添加唯一约束 添加主键 添加唯一索引删除唯一约束外键约束 外键是指两张表的数据通过某种条件关联起来创建外键约束 用户表和订单表删除外键约束使用外键注意事项 必须都是InnoDB表,MyISAM和其他引擎都不支持 互相约束的字段类型必须一样 INT和BIGINT,UNSIGNED和SIGNED都认为是类型不同 TABLE的CHARSET也必须一致.主表的约束字段必须要有索引 子表+references+主表 约束名称必须是当前DATABASE唯一视图(VIEW)业务需求 其它部门的同事要查询我们数据库里的数据,但是我们并不想暴露表结构,并且只提供给他们部分数据 View的作用
18、 视图将一组语句构成的结果集,是一种虚拟结构,并不是实际数据 视图能简化数据库的访问,能将多个查询语句结构化成一个虚拟结构 视图可以隐藏数据库后端表结构,提高数据库的安全性 视图可以作为权限管理,只对用户提供部分数据创建已完成订单的视图删除视图触发器(TRIGGER)业务需求 随着客户个人等级的提升,系统需要自动更新用户的积分,其中一共有两张表 用户信息表(存等级信息)积分信息表(存积分信息)Trigger 指可以在数据写入表A之前或之后做一些其他的动作 使用Trigger在每次更新用户表的时候触发更新积分表还有 存储函数(Function)存储过程(Procedure)小结 Database
19、/Schema Table Index Constraint View/Trigger/Function/Procedure网络数据库技术网络数据库技术MySQL权限管理权限管理学习目标 掌握MySQL授权操作 了解MySQL权限验证流程登录网站需要什么信息连接MySQL的必要条件 网络要畅通 用户名/密码要正确 数据库IP白名单 更细颗粒度的验证(库,表,列权限类型等)MySQL权限管理的步骤用户管理权限管理p合法的用户才能连接到MySQL服务器p用户名p密码p登录IPp进一步操作数据库对象的权限p包括库,表,列权限类型 用户管理 新建一个用户(MySQL命令)n用户nuserhostn密码
20、host 允许登录的主机名 可以是主机名或IP 特殊主机名 localhost:本地主机%:任何主机%:域的所有主机 只有user无host,代表%更改用户名 RENAME USER更改用户密码(1)SET PASSWORD set password for userhost=password(newpassword);若是更改当前用户的密码 set password=password(newpassword);SET PASSWORD 更改用户密码(2)ALTER USERn用户nuserhostn新密码删除用户 DROP USERuser表进行用户管理 创建用户 向mysql数据库的use
21、r表里面插入一条记录 更改用户名 修改user表里的user列和host列 删除用户 删除user表里的对应记录 执行flush privileges命令,让权限生效不推荐 权限管理 MySQL有哪些权限show privileges;权限粒度1 数据操作Privileges DATA:SELECT,INSERT,UPDATE,DELECT权限粒度2 数据定义Privileges DATABASE:CREATE,ALTER,DROP TABLE:CREATE,ALTER,DROP VIEW/FUNCTION/TRIGGER/PROCEDURE:CREATE,ALTER,DROP权限粒度3 管理
22、员Privileges SHUTDOWN DATABASE REPLICATION SLAVE REPLICATION CLIENT FILE PRIVILEGEMySQL授权语句 GRANT授权(GRANT)授权WITH GRANT OPTION 允许被授予权限的用户,把这个权限转授他人新建一个用户并授权MySQL命令 新建用户 授权 更简单的方法新建一个用户并授权的其他方法 更改数据库记录 首先向mysql数据库的user表里面插入一条记录 根据自己需要是否向db和tables_priv表插入记录。执行flush privileges命令,让权限生效不推荐查看用户权限 查看当前用户权限查看
23、用户权限 查看其他用户权限回收权限 REVOKE回收权限 REVOKEMySQL权限信息存储结构 存储在数据库表中 密码也加密存储在表中 每一种权限类型在元数据里都是枚举类型,表明是否有该权限与权限相关的表 User Db Tables_priv Columns_privMySQL权限管理的步骤用户管理权限管理p合法的用户才能连接到MySQL服务器p用户名p密码p登录IPp进一步操作数据库对象的权限p包括库,表,列权限类型小结 MySQL权限信息都是以数据记录的形式存储在数据库的表中 MySQL权限验证有IP白名单的环节,并且粒度更细,可以精确到表和字段。小结 使用Binary二进制安装时,没
24、有设置密码,需要重置root的密码 权限相关的操作不要直接操作表,统一使用MySQL命令网络数据库技术网络数据库技术 数据查询数据查询学习目标 掌握SELECT语句的用法 掌握多表查询 等值连接 join连接 子查询 unionSELECTSELECT语法语法示例:网易云音乐歌单歌单表(play_list)的结构SELECT基本使用查询全部列*代表所有的列场景1:查询所有的歌单信息SELECT基本使用查询指定的列 各列名之间以逗号分隔场景2:查询所有的歌单名字和作者账号SELECT基本使用定义列别名 as 可以省略 当列别名中有空格时,列名必须用单引号单引号括起来 也可以定义表别名表别名场景3
25、:查询所有的歌单名字和作者账号,并以中文显示对应的列名SELECT基本使用 消除结果集中的重复行 distinct 大表慎用 可对多字段使用场景4:查询创建歌单的用户账号SELECT基本使用 替换查询结果中的数据 case when 实现类似编程语言的if else功能 可以对SQL的输出结果进行选择判断场景5:对未录入歌曲的歌单(trackcount=null),输出结果时,歌曲数返回0SELECT基本使用 替换查询结果中的数据 case when 格式casewhen 条件1 then 表达式1when 条件2 then 表达式2else 表达式nendSELECT基本使用比较运算场景6:
展开阅读全文