《数据库基础及应用-MySQL》书中引导问题的参考_第1页
《数据库基础及应用-MySQL》书中引导问题的参考_第2页
《数据库基础及应用-MySQL》书中引导问题的参考_第3页
《数据库基础及应用-MySQL》书中引导问题的参考_第4页
《数据库基础及应用-MySQL》书中引导问题的参考_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

项目一初识数据库任务一认识数据与数据库一、认识对象和数据(1)毛笔、导弹、石油、景点、培训、运动会、领海、……(2)文字、数字、图形、声音等;数据(3)先告知电器名称,然后描述它的各方面的特性,如厂家、型号、作用、功能特点、价格、折扣等;可规纳为一种表述模式:电器名称(厂家,型号,作用、功能特点,价格,折扣,……)(4)不肯定;标注数字的意义二、数据处理与数据管理(1)采集、转换、加载、分类、组织、存储、计算、排序、检索和传输(2)建立数据治理框架、数据架构管理、数据质量管理、数据安全与隐私管理、数据集成与互操作性管理、数据生命周期管理、数据资产与服务管理三、认识数据库和数据库管理系统(1)不能,这些对象拥有多个方面的属性,需要一个数据集合方能有效地描述。如销售活动就可能包括销售的商品,数量、经办人、日期等多方面的数据。(2)关于一台空调的数据记录: 100146042265,海尔,KFR-35GW/E1-1,壁挂式,…… 关于商品的一般描述方式: 商品名(商品编码,品牌,型号,类型,……)(3)表格(4)数据清洗与校验保证数据准确、完整、一致;实施数据备份安全措施和访问权限控制;即时维护保证数据真实反映业务状态。四、数据库系统的组成与结构(1)医院诊疗系统、售票系统、学藉管理系统、销售管理系统、……(2)数据库:存储数据 数据库管理系统:负责数据管理 数据库应用软件:基于数据库实现业务处理 数据库管理员:使用数据库管理系统完成数据的维护与管理 数据库应用操作员:使用数据库应用软件开展业务工作。(3)数据库中的数据可支持多种应用。不同的应用软件可以通过数据服务接口来使用数据库中的数据以满足应用的需求,数据是独立于某一个具体应用的。任务二走进关系型数据库一、认识关系(1)能表示关系的二维表要求每列是不可分的单一数据项(原子性),因此,表1-3表示关系;表1-4中电话列拆分成移动电话和固定电话两个独立的列就满足关系的要求(2)顾客(顾客号,姓名,性别,电话),它定义了描述顾客对象数据的模式,相当于数据类型的作用(3)每行数据表示一个确定的顾客对象,称为记录。列数据称为字段。(4)每列数据有相同的数据类型;每列数据值将受数据类型以及应用需求的限制,电话号码在实际应用中是以数字编码的,不能使用字母。性别取值为('男','女')(5)表1-3中是顾客号,表1-5中是(顾客号,商品编码)(6)需要把两个表连接起来。顾客号二、认识管理数据模型(1)数据结构;列是不可分的单一数据项,列名不能相同,不能有完全相同的行(2)关系,关系(3)定义主键(4)选购关系中的顾客号必须取顾客关系中顾客号已有的值,同理,选购关系中的商品编码必须取商品关系中商品编码的已有值(5)自定义完整性约束任务三设计关系型数据库一、分析表达业务系统的需求(1)前台功能和后台功能,输入什么和输出什么;调研、访谈、跟班作业等(2)业务数据的处理逻辑与流程;外部项(表示数据的源或终点)、数据处理(对数据的操作)、数据存储(表示存储数据)和数据流(指示数据流动的方向)(3)数据字典记录的是元数据,即描述某一业务数据的数据二、设计业务系统概念数据模型(1)直观表示实体在业务应用中要关注的属性。矩形框(代表实体),椭圆框(表示属性),线段(表所属关系)(2)略(3)菱形框,有,可以(4)入出库,销售,供货三、设计业务系统数据模式(1)关系名和关系的相关属性(2)各种完整性约束,最基础的是指定主键实现实体完整性约束(3)员工(工号,姓名,性别,出生日期,电话,…)。其它几个类似四、规范化关系模式(1)(顾客号,商品编号)(2)5000份;数据冗余(3)不能,因为顾客号是主键中的主属性,不能取空值,没有顾客选购该商品时,该商品数据也不能插入数据表(4)将删除;不能(5)有;修改异常(6)顾客姓名依赖顾客号;顾客号与商品编码,(顾客号,商品编号)→数量(7)根据应用语义,顾客号与供货商之间没有依赖关系;商品编码决定供货商;供货商地址决定供货商(8)成立;成立;成立;成立关系规范实例(1)顾客号→顾客姓名,顾客号→顾客电话,商品编码→供货商名,商品编码→商品名,商品编码→供货商名,(顾客号,商品编码)→数量部分函数依赖:(顾客号,商品编码)→顾客姓名,(顾客号,商品编码)→供货商名,(顾客号,商品编码)→商品名传递函数依赖:商品编码→供货商名(商品编码→供货商地址,供货商地址→供货商名)(2)商品编码;顾客号;(顾客号,商品编码)(3)第一步,列出有关系中所有属性依赖关系;第二步,把依赖于同一属性的相关属性从原关系中移出构成新关系(4)没有;商品关系中存在供货商对商品编码的传递函数依赖(5)不能;对商品关系再次进行投影分解生成新的关系,商品(商品编码,商品名,供货商地址)和供货商(供货商地址,供货商)(6)(客户,商品)或(客户,销售商);没有非主属性对候选键的部分和传递函数依赖;有,存储主属性对候选键的部分函数依赖,(客户,销售商)→商品,而销售商→商品,有商品部分函数依赖候选键(客户,销售商)。通过“投影分解”把原关系分解成供货(销售商,商品)和选购(客户,销售商)

项目二创建数据库环境任务一认识MySQL数据库管理系统一、认识MySQL(1)Unireg一个报表数据处理工具(2)按照某种协议开放程序源代码的软件;开源软件一般分为免费的社区版和付费的商业版(3)MySQL是跨平台的开源DBMS,支持多种系统平台,如Linux、Unix、MacOS、Windows等主流平台(4)完全满足二、认识MySQL数据库存储引擎(1)表结构管理、数据存储与读取、数据完整性约束、索引管理(2)表结构文件frm、数据文件myd、索引文件myi(3)InnoDB支持两模式,一种是一个表独占一个表空间文件ibd,也可以多个表共享一个表空间文件,默认的是ibdata1(4)不能;用于存储高频查询的数据(5)存在,在会员及购物卡管理中;InnoDB三、对比MySQL与主流RDBMS系统(1)成本低,技术新(2)Oracle是老牌的RDBMS,稳定、可靠、性能卓越,符合这些行业的应用场景;核心技术为国外企业掌握,没有安全性可言。(3)DB、postgreSQL、Sybase、MSSQL、SQLite、DM、GBase、openGauss、…四、规范化关系模式(1)开发者、仅服务器、仅客户端、完全、自定义共5种(2)需要改变默认端口3306时(3)包含字母且至少有一个大写字母,数字和符号,长度一般在8个字符以上任务二安装配置MySQL数据库管理系统一、安装MySQL(1)开发者、仅服务器、仅客户端、完全、自定义共5种(2)需要改变默认端口3306时(3)包含字母且至少有一个大写字母,数字和符号,长度一般在8个字符以上二、配置MySQL(1)注释;分别代表服务器、mysql客户端和客户端的配置节(2)按实际安装的路径配置MySQL的安装路径和数据存储路径;注意路径中分隔符的写法,为linux风格的/而不是Windows下的\(3)客户端的默认字符集default-charracter-set的配置与服务端的默认字符集character-server-set配置不兼容(4)在服务器配置节中通过default-storage-engine指定三、使用mysql连接MySQL服务器(1)mysql-uroot-p;-u指定登录用户名,-p指示输入密码;-h(2)mysql>;分号(;)项目三体验数据处理任务一认识数据类型一、认识数值数据类型(1)整数:88、106、456、300;小数:146.59、219.25、1.89、1.56、4.99;小数有小数点,整数则没有(2)在表示不可分割的数量时用整型数据,需要表示精确数据时用小数(3)502000书写整型数据时直接书写数字,书写小数时必须有且只有一个小数点,且小数点的左右两边至少一边有数字整型支持的运算有:算术运算、关系运算、逻辑运算;小数支持的运算有:算术运算、关系运算、逻辑运算二、认识日期数据类型(1)材料中的日期时间数学形式的日期时间数据类型名7点半7:30时间型2020年10月28日2020-10-28日期型2020年10月29日17点25分2020-10-2917:25:00日期时间型时间在表示的时候是按时分秒(HH:MM:SS)来表示的36:23:51表示错误,时不能超过245:61表示错误,分不能超过60121212表示正确121212表示错误,日期的正确格式应该是YYMMDD生活中的年月日可以用/、-、.、空格分隔,在MySQL中只能用“-”分隔或者不分隔;不能用其他符号作为分隔符日期的年份可以是4位也可以是2位,月份和日期必须是2位,年月日之间可以用“-”分隔,也可以不分隔三、认识字符串数据类型(1)字符串:商品名称,员工身份证号码,供货商地址;字节串:员工身份证扫描件,生产商宣传片,店面语音广告(2)字符串用于文字类描述,不参与运算的数字也是字符串,如身份证号码,字节串主要用于表示声音、图片、视频(3)性别=“男”or性别=“女”性别in(“男”,“女”)(4)赠品=“茶杯”and赠品=“抽纸”or赠品=“茶杯”and赠品=“洗手液”or赠品=“抽纸”and赠品=“洗手液”任务二实现数据运算计算数值数据算式:2*4.00,2*8.00,10*4.5,2*4.00+2*8.00+10*4.5,用到的运算符有:+、*(2)(2*4.00+2*8.00+10*4.5)*0.9(3)表达式是由运算符和操作数组成的式子(4)*、/、%、+、-二、利用关系运算表达简单条件(1)uname=“红牛”onum>mnumsprice>=10andsprice<=50或者spricebetween10and50midlike“jd%”unamein(“酱油”,“醋”,“味精”)(2)成立时结果是:1,不成立时结果是:0(3)定义会话变量@sprice并赋值为22,测试@sprice的值是不是在10到50之间(4)@weight的值为NULL,select@weightisnull的值为1,select@weight<=>null的值为1,不能确定@weight的值三、使用逻辑运算表达复杂条件(1)and的运算规则是:只要有一个操作数的值为0结果就为0,只有当两个操作数的值都为1时结果才为1;or的运算规则是:只要有一个操作数的值为1结果就为1,只有当两个操作数的值都为0时结果才为0(2)@tcost>=5000and@tcost<=8000(3)@mname=“面包”or@mname=“蛋糕”四、使用位运算简化查询(1)记录顾客购物状态的语句有:set@sdays=0;set@sdays=@sdays|2;set@sdays=@sdays|8;“|”的运算规则是:a、b对应二进制位同为0,结果为0,其余为1(2)运算结果为1表示当天进行了购物;“&”的运算规则是:a、b对应二进制位同为1,结果为1,其余为0

任务三使用系统函数一、使用数学函数(1)ceil()功能:返回大于x的最小整数,原型:ceil(x);floor()功能:返回小于x的最大整数,原型:floor(x)(2)不能省略小括号,输入数据(3)ceil(-3.9)的返回值是:-3,floor(-3.9)的返回值是:-4(4)函数名、参数、功能、返回值二、使用日期时间函数(1)约,见表3-16(2)星期一,返回值0,星期二,返回值1,星期三,返回值2三、使用字符串函数(1)约,见表3-17(2)char_length()返回字符串的字符个数,length()返回字符串的字节数(3)以字节为单位(4)依次比较各个字符,大(小)写字母以顺序为准,a(A)最小,z(Z)最大;字母大于数字字符;字母小于汉字四、使用加密函数(1)明文指没有经过任何加密处理的原始数据,可直接理解;密文是指通过特定加密算法处理后得到的不可逆或可逆的乱码形式数据,无法直接识别原文(2)sha2()更安全,因为它的密文最复杂(3)加密长度越长,密文越复杂;当长度为0时,默认长度为256位五、使用数据转换函数(1)约,见表3-19(2)函数调用语句1:conv(0x2C,16,10)返回结果:14函数调用语句2:conv(0x2C,16,2)返回结果:101100(3)可以;与round(-25.78)功能相同的函数调用语句是:convert(-25.78,signedint),与round(25.78)功能相同的函数调用语句是:convert(25.78,signedint)(4)可以。convert(‘2021-1-112:30’,datetime)(5)能比较。按汉字拼拼音逐个比较(6)date_format(now(),’%Y%c%d%H%i%s’)六、使用系统信息函数(1)需要了解mysql版本、当前连接ID、当前连接用户、当前连接数据库、采用的字符集等信息时需要使用系统函数(2)charset()的返回值是:gbk,collation()的返回值是gbk_chinese_ci;说明当前使用的字符集是gbk

项目四建立数据库任务一认识MySQL数据库对象(1)有用户自定义业务数据库(supermark)、系统数据库(mysql、performance_schema、sys)、事务日志(#innodb_temp)、二进制日志(INFO-PC-bin000002等)、表空间文件(ibtemp1等)、配置证书(f)等MySQL运行所需的核心数据对象和文件。(2)数据存储在表(table)里,在文件系统中存储在与数据库同名的文件夹里,如supermark文件夹。(3)supermark文件夹里,在表文件中。(4)严重削弱数据的安全,因为日志和数据在同一块磁盘,一旦该磁盘发生物理故障(如坏道、损坏),数据文件+日志文件会同时损坏,日志丢失后,MySQL无法完成崩溃恢复,也无法通过日志重建数据,最终导致数据彻底不可用。因此,日志与数据分离存储是保障数据安全的基础策略。任务二创建MySQL数据库一、认识MySQL数据库(1)服务器中有information_schema、MySQL、performance_schema和Sys数据库等,相同的数据库有information_schema、MySQL、performance_schema和Sys。(2)没有,不能。(3)数据库information_schema保存有MySQL服务中所有数据库的元数据(Metadata,即字典数据),包括数据库、表、字段类型以及访问权限等相关信息。数据库MySQL存储了MySQL服务器正常运行所需的各种控制和管理信息,是MySQL服务器的核心数据库。数据库performance_schema用于收集数据库服务器的性能参数,为MySQL服务器的运行提供底层的监控功能。数据库Sys包含了一系列的视图,其数据来源于performance_schema,让用户可以更好地解读其中的数据。sys数据库主要用于MySQL服务器性能调优和诊断。二、创建数据库(1)createdatabasemydb;(创建数据库mydb)usemydb;(设置mydb为当前数据库)(2)不能,因为不能在同一个服务器中创建两个同名数据库。(3)建议:数据库名应见名知意,同一服务器中的数据库不能重名,不能使用系统保留字。(4)dropdatabasemydb;(5)不存在,使用dropdatabase要慎重使用,删除数据库后不能恢复。任务三创建数据表一、创建数据表(1)创建供货商表(provider)createtableprovider(->pidchar(5)primarykey,->pnamevarchar(54)notnull,->paddressvarchar(90),->pphonechar(11)unique);按类似方法创建商品信息表(merchinfo)。(2)表必须依附数据库,表不能独立存在,这是MySQL的固定结构;不选库就建表会直接报错;总之:先有库,再有表,无库不建表。(3)创建表时必须表名、字段名(列名);每个字段需要从字段名、数据类型、否允许为空、默认值、主键/自增,注释等。即要“字段名+类型+约束+注释”等方面的信息。CREATETABLE表名(字段1数据类型约束1约束2COMMENT'字段注释',字段2数据类型约束1约束2COMMENT'字段注释',PRIMARYKEY(主键字段名)--写法1:单独定义主键);(4)被参照的表不存在时,不能正常建立包含外键约束的数据表;建表顺序建议:先创建被参照表(主表),再创建包含外键约束的表(从表);删除表时则相反(先删从表,再删主表)。主表与从表的区分:主表就是被参照的表,即外键所指向的表(存储主键,无外键约束指向其他表),从表就是包含外键约束的表,即通过外键关联主表的表(依赖主表存在)。(5)如何书写提高可读性?一是采用标准缩进格式,将字段名、数据类型、约束条件分行排列,视觉上层次分明。二是关键字大写,表名/字段名用小写,这样的好处是一眼就能区分哪些是固定语法,哪些是自定义名称,不易看错。三是加上一定的注释,方便团队合作。提高可读性的技巧有:一个字段占一行;数据类型和约束在垂直方向对;复杂的约束(如NOTNULL)加注释;字段和逗号之间留空格,括号成对出现,避免语法错误。提高可读性的益处有:极速排错;便于高效维护和修改;逻辑清晰,便于理解;方便团队协作和复盘。(6)不能同名,数据表的表名建议:以字母开头,可跟字母、数字、下划线,能见名知意。(7)desc表名:简洁显示表的字段结构,包括字段名、类型、是否为空、主键等信息。showcreatetable表名:显示创建表的完整SQL语句,信息更详细。showcreatetable会多出在建表时没有手动写的项有:存储引擎、字符集、排序规则、完整的索引/约束详细格式等。(8)略。二、插入数据(1)操作过程略。(2)INSERTINTO最常用的有2种写法:一是给所有字段填数据,其格式为INSERTINTO表名VALUES(值1,值2,值3,...);要求值的顺序、个数、类型必须和表里的字段完全一致。二是只给部分字段填数据,其格式为INSERTINTO表名(字段1,字段2,...)VALUES(值1,值2,...);要求字段名列表与值的列表一一对应。技巧:INSERTINTO可以一次添加多行数据,直接在VALUES值列表写出数据记录值即可,每条记录用逗号分开。INSERTINTO使用注意事项:字符串加单引号,数字不用加;顺序对应、类型匹配、主键不重复。(3)能,利用INSERTINTO表名(字段1,字段2,...)VALUES(值1,值2,...)可以给指定的字段插入数据。(4)不相同,插入后记录的按主键升序自动排列。任务四维护数据表一、维护数据表结构(1)操作过程略;修改表结构用altertable添加新字段(ADD):ALTERTABLE表名ADD字段名数据类型;修改字段类型/长度(MODIFY):ALTERTABLE表名MODIFY字段名新数据类型;修改字段名字(CHANGE):ALTERTABLE表名CHANGE旧字段名新字段名数据类型;删除字段(DROP):ALTERTABLE表名DROP字段名;修改表名(RENAME):ALTERTABLE旧表名RENAMETO新表名;(2)不能(3)略(4)可以。删除字段:DROP字段名删除主键:DROPPRIMARYKEY删除外键:DROPFOREIGNKEY外键名二、维护数据表数据(1)修改数据用UPDATE命令,其命令格式为UPDATE表名SET列名1=新值1,列名2=新值2...WHERE条件;删除记录用DELETE命令,其命令格式为DELETEFROM表名WHERE条件。(2)不使用WHERE条件子句,执行的是修改或者删除整个表的记录,建议在使用UPDATE和DELETE时都加上WHERE子句。(3)能,在SET子句中用英文逗号(,)隔开多个字段。(4)DELETE能清除整个数据表中的数据,当不添加WHERE条件时,该操作将删除表内的全部数据。任务五创建索引一、创建索引(1)创建索引有两个时机:一是在创建表的时候创建;二是创建表后追加索引。(2)不同地方,创建表sidchar(20),在查看表信息时是sidchar(20)NOTNULL;不能;是索引名,因为在创建索引index(snumdesc)中省略了索引名,系统自动用列名作为索引名。(3)插入电话号码出错,违反了unique唯一性约束。二、管理索引(1)showindexfromsale索引的主要属性属性说明属性说明table创建索引的数据表Non_unique是否唯一索引Key_name索引名称Seq_in_index字段在索引中的序号Column_name定义索引的字段collcation排序方式Sub_part索引长度null索引字段能否为空Index_type索引类型visible是否显示优化器如果没有指定索引名,系统用索引字段名作为索引名。(2)定义了sid为primarykey(主关键字),该字段自动成为索引。(3)前者没有排序,后者按num值的降序排列了;这种不同由num的索引引起的;直接使用索引字段值充当查询条件,也没有被函数、运算等破坏,所以创建的索引就发挥了作用。(4)略(5)图4-16使用了索引。索引使用信息表属性说明属性说明Id执行select的顺序Select_type查询类型Table查询使用的数据表Possible_keys可用的索引列表Key实际使用的索引Key_len索引长度Ref多表查询的连接条件rows预读取记录的行数Filtered返回行占读取的百分比extra额外信息(6)索引过多或者选择的索引字段不恰当,会降低MYSQL的服务性功能。建议不要在重复值较多的字段和查询中很少使用的字段上建立索引。

项目五使用数据库任务一查询单一数据表中的数据一、尝试简单查询(1)查询命令基本用法:select{查询表达式1[<显示标题>]},… from{数据表名};select指出要显示的表达式,多个表达式之间以逗号分隔,可同时为每个表达式指定显示标题,默认表达式就是标题;from用于指出数据的来源表(2)表示数据表中的所有字段;列数超过显示区域后叠到下一行形成混乱,可改成垂直显示方式(按列显示),以\G结束命令即可(3)作为显示标题,让显示更友好二、筛选查询结果(1)添加where子命令来指定查询结果中的记录(2)有关系表达式或逻辑表达式,参考P76和P79页上列出的关系和逻辑运算符(3)有;在select命令后,查询表达式前加上distinct,它让重复的记录只显示一个(4)selectmname,mprice frommerchinfo wheremid='001'andmprice<5;三、排序查询结果(1)右边,因按库存量有序排列;使用了子命令orderby(2)一个升序一个降序;默认按升序,使用desc指定降序排列(3)使用子命令limit{n}来控制查询结构的显示数量;默认显示所有结果(4)可以 selectmname,mnum,mprice frommerchinfo orderbymnumdesc,mprice;四、分组查询结果(1)都实现了;图5-10(2)groupby{分组表达式1}[,…](3)不能,不使用得到一个分组第一条记录的数据;当要汇总一个分组的数据时,使用聚集函数(4)能实现,通过在groupby命令后添加子命令having商品数<10任务二从多数据表中检索数据一、使用连接查询(1)数据来自两个及以上的数据表;它们是数据表的别名,则from子命令中定义(2)两种方式都实现了连接查询;在from中定义表之间的连接,方法是{表1}innerjoin{表2}on{连接条件},其中innerjoin用于连接两个表,on指定连接条件(3)一个表的外键一定是参照另一个表的主键,用于建立两表之间的逻辑联系,外键所在表是从表,主键所在表是主表;通过外键参照主键连接起来,主表是merchinfo,从表是dealing(4)能;输出的记录数等于两个表记录数之积;连接时需要正确给出连接条件和筛选条件,不然会产生大量无意义的结果记录(5)一致;相同字段的等值连接(6)leftouterjoin为左连接,结果中包含两表中符合连接条件的记录和左表中所有记录,其对应右表的字段值均为nullrightouterjoin为右连接,结果中包含两表中符合连接条件的记录和右表中所有记录,其对应左表的字段值均为null二、合并查询结果(1)实现;union(2)不能(3)能,但无价值三、体验子查询(1)where和from子命令中,由()包围(2)单列值;不在查询的结果集中(3)多行多列;临时表(4)一个值;可以(5)查询结果是单列或单行;多行多列(6)子查询可以提升查询效率,因为没有连接开销任务三使用存储过程和存储函数一、创建存储过程和存储函数(1)正确写出所有代码,检查无误后,小心输入,不能出现任何错误,否则得从新开始(2)使用系统外文本编辑器录入程序代码,然后在客户端使用source导入是较好的选择,如发生错误,可以修改源代码后重新导入,而不必重新输入全部代码,有更高的编写效率(3)在创建存储过程和存储函数中的语句也是使用分号作为结束符,为避免把代码中的语句当成客户端命令直接执行,因此,需要临时把客户端的命令默认结束符改成别的符号(4)存储过程代码框架:createprocedure{过程名}(参数声明列表) [特性选项] begin {过程代码} end; 存储函数代码框架:createprocedure{函数名}(参数声明列表) return{类型} [特性选项] begin {过程代码} end;(5)存储函数有返回值,存储过程没有(6)定义变量:declare{变量名类型}[default{初值}]; 变量赋值:set{变量名}={表达式};或 selelct{表达式列表}into{变量名列表}…(7)--;置于语句后,也可以独占程序行(8)调用存储过程使用call;调用存储函数放在表达式中;调用时需要提供存储过程和函数名及放在小括号中的参数(9)不能;把原setfsn=right(ldid,3)+1;改成ifldidisnullthen setfsn='001'; else setfsn=right(ldid,3)+1; endif;二、在存储过程和存储函数中使用游标(1)定义:declare{cursor_name}cursorfor{select语句}; 打开:open{cursor_name}; 处理:fetch{cursor_name}into{变量列表}; ……; 关闭:close{cursor_name};(2)循环语句是recycle:loop…endloop;;本循环语句构建的是无限循环流程,需要使用辅助命令leave来结束循环(3)一条;从头到尾依次取记录;不能指定取某一记录;notfound事件(4)declarecontinuehandlerfornotfoundsetflag=1; 命令处理方式命令异常事件操作三、管理存储过程和存储函数(1)显示了存储过程或函数所属的数据库、名称、类型、定义者用户名、修改创建的日期时间、安全类型、客户端字符集、排序规则;存储过程或函数的源代码(2)showfunctionstatusgetdid\G showcreatefunctiongetdid\G(3)alterprocedure|function{特性}(4)information_schema,routines;{数据库名}.{数据表名}(5)dropprocedure|function[ifexists]{名称}

任务四使用视图一、创建视图(1)createview{视图名}as{select命令}(2)select*fromcashier_goodsinfo;(3)视图字段名是查询结果中的标题名;可以在查询命令中为字段定义更友好的标题名称,它将作为视图字段名,方便使用视图的用户(4)不能;视图定义了用户权限范围内能查看的数据,在一定各种上能保护数据安全(5)能提高查询工作效率,不必每次重新连接二、使用视图(1)有区别(2)没有成功;成功;如果视图来自一个表,更新一般会成功的,如果视图建立在多个表上,在更新时,有违完整性,则不能成功更新(3)插入与删除操作与更新相似,视图来自一个表且符合完整性约束时,可以成功执行,如果视图来自两个或以上表时,则禁止插入和删除操作三、管理视图(1)3 showtablestatus:显示视图状态信息; showcreateview:显示视图的创建代码信息; select…frominformation_schema.views:查询视图的详细信息(2)如果是视图则在comment条目显示view字样,数据表则为空。在存储引擎条目engine视图显示为null,数据表显示实际采用的存储引擎,如InnoDB,从这些地方可用于识别是否为视图(3)information_schema.views; table_name:视图名或表名table_schema:所属数据库view_definition:视图定义is_updateable:是否可更新security_type:安全类型

项目六保障数据库安全任务一使用触发器一、创建触发器(1)触发器的创建方法类似于创建存储过程和存储函数,触发器就是一特别的存储过程;触发器由触发事件和其它特性与触发器代码体组成;根据触发事件的不同,可用insert、delete、update命令进行测试(2)createtrigger{触发器名}{时间}{事件}on{表名}foreachrowbegin{语句序列}end(3)最多三大行为,两个时间点,共六类事件的触发器,之前的版本支持最多6个触发器,即每个事件可定义一个触发器,但从8.0之后,在每个事件上可定义多个触发器,因此,其具体个数没有固定了(4)与存储过程不同的是触发器执行不需要人为调用,而在事件发生时自动激活并执行;实现复杂的自定义完整性约束(5)new代表新行,它可以是insert插入的行,或update、delete更新、删除的行,old与之相反(6)主要是校验或作一些符合业务逻辑的自动数据处理操作,保证数据的完整性二、管理触发器(1)主要包括触发器名、事件、时间、所属表、触发器代码、创建者、日期等(2)select*frominformation_schema.triggerswheretrigger_name='触发器名'\G(3)在文本编辑器中编写或修改完成,保存为后缀名为sql的程序文件;删除原触发器;使用命令source导入到数据库任务二使用事务一、执行事务保证数据的一致性(1)没有;李双的消费总额成功扣除,但没有给李云成功转入,因为命令执行出错(2)启动了事务;能保证数据一致性(3)两次结果相同;启用事务后,所有命令执行不会自动提交,而是写入内存中的REDO日志缓冲或REDO日志文件中,而没有实际更新数据表,因此,两次查询的结果相同(4)执行commit命令提交事务,存储引擎使用REDO日志缓冲或REDO日志文件实际更新数据表;两者数据按执行逻辑正确改变,符合数据一致性要求(5)把它们视为一个事务;begin;{数据管理命令组}commit;要么完整执行,要么完全不执行二、使用锁机制访问数据表(1)showvariableslike"transaction_isolation";+++|Variable_name|Value|+++|transaction_isolation|REPEATABLE-READ|+++默认为隔离级别为REPEATABLE-READ(可重复读)由于事务隔离级别为可重复读,在事务1更新了数据,但没有提交,所以事务2读取同一数据时和更新前是相同的(2)共有4种级别读未提交:读取未提交的数据读已提交:读取提交的数据可重复读:前后读取数据相同串行化:读取数据总是一致的(3)更新的是未加锁的行,成功;更新加锁行,不成功(4)⑦的操作是事务1提交事务释放了锁后,因此,操作成功(5)不能;使用主键选择是实施了行锁,非主键选择时,实施了表级锁(6)可以修改库存量100及以上的记录,而小于100的记录处于锁定状态而不修改(7)保证数据操作的一致性(8)在事务中执行数据操作命令加锁,提交事务后,释放锁手动加锁(1)不能;可以,对同一对象加共享锁,其它事务可读也可以加共享锁,共享锁是相容的(2)不能更改,用于写的锁是排它锁,其它事务

温馨提示

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

评论

0/150

提交评论