数据库设计与应用(MySQL)(第2版)课件全套 陈晓男 工作任务1-12 认识数据库 - 管理数据库_第1页
数据库设计与应用(MySQL)(第2版)课件全套 陈晓男 工作任务1-12 认识数据库 - 管理数据库_第2页
数据库设计与应用(MySQL)(第2版)课件全套 陈晓男 工作任务1-12 认识数据库 - 管理数据库_第3页
数据库设计与应用(MySQL)(第2版)课件全套 陈晓男 工作任务1-12 认识数据库 - 管理数据库_第4页
数据库设计与应用(MySQL)(第2版)课件全套 陈晓男 工作任务1-12 认识数据库 - 管理数据库_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

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

文档简介

数据库设计与应用—

M

y

S

Q

L认识数据库4卸截MySQL2搭建MySQL数据库环境3设置MySQL密码与配置MySQL字符编码1掌握数据库基础知识5创建和删除MySQL数据库和数据表6实践训练01020304掌握数据库基础知识1掌握常用的数据库相关概念,理解概念模型和逻辑模型,掌握常用的概念模型和逻辑模型,以及转换规则,能够按要求绘制E-R图。05数据库(Database,DB)数据库:按照

数据结构组织、存储和管理数据的仓库。存储在计算机内、有组织、可共享、统一管理数据库管理系统(DBMS)数据库管理系统:是操作和管理数据库的计算机软件系统。建立、使用、维护数据库,对其统一管理和控制,保证DB的安全性和完整性。关系数据库管理系统(RDBMS)关系数据库管理系统:管理关系型数据库的计算机软件系统。实体-联系模型(E-R模型)——概念模型列:属性、字段,一组相同类型的数据;行:元组、记录,一组相关的数据;域:属性的取值范围;关键字:可唯一标识元组的属性(集)数据表——关系模型实体:矩形;联系:菱形;属性:椭圆;直线:对象之间。列图2

超市管理系统关系模型——数据表行列名关键字图1

超市管理系统概念模型(E-R图)实体实体实体实体联系联系联系实体-联系模型对应关系模型的相关概念:实体——表实体属性——列(字段)码——关键字(主键)实体个体——行计算机配置建议:CPU为Intel

i5,内存8G以上0102安装过程中要使用超级用户root权限(sudo)03如果机器有预安装

的mariadb,先卸载后安装04安装后启动:systemctl

start

mysqld.service搭建MySQL数据库环境2可以在CentOS操作系统上安装并启动MySQL5.7,正确配置MySQL5.7的各项参数,也可以在Windows操作系统上安装。下述是在Linux操作系统上安装时的要求。MySQL5.7版本开始默认安装validate_password插件0102设置MySQL密码必须符合密码约束条件,否则报错03学会修改MySQL配置文档f04设置MySQL密码与配置MySQL字符编码3MySQL密码设置必须符合密码约束条件,如果希望设置简单的MySQL密码必须修改密码约束条件。配置MySQL字符编码需要修改MySQL的配置文件f中的相关代码。05setglobalvalidate_password_policy=LOW;设置密码策略强度为低强度setglobalvalidate_password_length=4;设置密码长度为4卸载程序包0102删除MySQL默认文档存储目录03删除MySQL默认安装目录04删除MySQL配置文档f卸载MySQL4能在CentOS操作系统下完全卸载MySQL,包括卸载程序安装包和删除相关配置文件。05删除MySQL日志文档mysqld.log010203查看当前用户下的数据库:show

databases;创建与删除MySQL数据库和数据表5学会使用create

database和create

table命令创建数据库和数据表,学会使用drop

database和droptable命令删除数据库和数据表。createdatabase数据库名;例:create

database

supermarket;--创建名为supermarket的数据库在建数据库时可以直接设置字符集和字符集排序规则。如:character

set

utf8

collate

utf8_general_ci例:create

database

supermarke

character

set

utf8

collateutf8_general_ci;0405创建与删除MySQL数据库和数据表506create

table

表名(字段名

数据类型

属性,......);例:createtablemerchinfo(merchidchar(10)notnullprimarykey,merchnamevarchar(50)notnull,merchpricefloatnotnull,specvarchar(10)notnull,merchnumintnotnull,cautionnumintnotnull,plannumintnotnull,provideidchar(10)not

null);--创建名为merchinfo的数据表,注意数据类型的写法查看当前数据库下的数据表:show

tables;查看数据表的数据结构:desc

表名;例:desc

merchinfo;

--查看merchinfo表的数据结构,包括表中字段的名称、数据类型、是否为空等。drop

database

数据库名;drop

table

表名;例:drop

table

merchinfo;

--删除merchinfo表drop

database

supermarket;

--删除supermarket数据库能够按照要求独立安装MySQL(CentOS和Windows都可以),建议在Windows系统下安装时采用绿色安装。具体步骤看教材或在线课程资源。能够使用SQL语句create database和create table创建数据库和数据表能够根据要求使用SQL语句drop

database和drop

table删除数据库和数据表完成实训报告。实践训练:6工作任务1完成!数据库设计与应用—

M

y

S

Q

L使用数据表4删除表中数据2向数据表中添加数据3修改表中数据1修改数据表的定义5实践训练010203修改数据表的定义1以supermarket数据库为例,学会修改数据表的定义,包括修改表的名称、修改表中字段名称、修改表中字段的数据类型,增加表中字段、删除表中字段、更改表的存储引擎。altertable

旧表名

renameto

新表名;——修改表名例:alter

table

merch

rename

to

merchinfo;--将数据表merch的表名改为merchinfoaltertable

表名

modify

字段名

数据类型;——修改表中字段的数据类型例:alter

table

merchinfo

modify

spec

varchar(10)

not

null;--将数据表merchinfo中的spec字段的数据类型修改为非空的10位变长字符型数据alter

table

表名change 旧字段名

新字段名

新数据类型;——修改表中字段名称说明:修改字段名时,也会定义数据类型,这与纯粹修改字段数据类型有所不同,这里既修改字段名,也可能修改字段数据类型0607MySQL存储引擎一般情况下默认为:InnoDB,指MySQL数据库中表的存储类型。修改数据表的定义10405alter

table表名add字段名 数据类型 [属性

位置];——增加表中字段例:alter

table

provide

add

providecontacts

varchar(10);--向provide表中添加联系人字段,并给出数据类型altertable

表名

drop

字段名;——删除表中字段例:alter

table

provide

drop

providecontacts;--删除供应商信息表中前面增加的联系人字段altertable

表名

engine=引擎名;——修改表的存储引擎这个修改了解即可02如果插入数据时,值的个数、顺序与建表时的字段的个数、顺序完全一致,可省略不写。03values后的值列表可以不只一个,每个值列表都使用圆括号括起来,值列表与值列表之间使用逗号分隔。向表中添加数据(增)2会使用insert

into语句向数据表添加一行或多行数据。01 insert into

表名[(字段名列表)]

values(值列表);例:insertintomerchinfo(merchid,merchname,merchprice,spec,merchnum,cautionnum,plannum,provideid)values('S900120102','百雀羚护肤脂',10,'40g/盒',30,5,50,'G202312302');这个语句中的字段名个数、顺序与建表时一致,所以可以不用写字段名列表。02修改表中数据时可以使用一条语句修改多个字段的值03修改表中数据时如果没有where子句,则全表中的数据都要进行修改修改表中数据3能够按照要求使用update语句修改表中已有的数据。01 update表名

set

字段名=值[,......][where条件子句];例:将merchinfo中的商品价格高于20元的商品价格打8折。updatemerchinfosetmerchprice=merchprice*0.8where merchprice>20;如果是全部商品都打8折,就可以不用写where条件子句。deleate

from

表名

[where

条件子句];01020304删除表中数据4能够按照要求使用delete语句删除表中数据,也会使用truncate命令删除整个表中数据。05truncate语句删除数据后,新添加的数据将重新排序如果没有条件子句,将删除表中所有数据delete

from

merchinfo;--删除merchinfo表中所有数据delete语句删除数据后,新添加的数据仍然参照删除前的顺序排序truncatetable

表名;这个删除语句是DDL范畴的,一旦删除不可更改。能够使用inser

t命令对数据表进行数据的添加操作能够使用update命令对数据表进行数据的修改操作能够使用delete命令对数据表进行数据的删除操作完成实训报告实践训练:1 能够正确使用a

l

te

r t

a

b

l

e

命令按要求修改表的定义,

尤其是添加、删除字段5工作任务2完成!数据库设计与应用—

M

y

S

Q

L查询单个数据表2按条件查询3数据统计1认识SELECT语句4实践训练010203认识SELECT语句1掌握SELECT语句的语法格式,学会使用基本的SELECT语句查询单个表中的数据。select

字段名列表|*from

表名;——基本查询作为查询语句,select子句和from子句都是必选项。*代表所有字段,如果查询结果有重复值,则要在select子句的字段名列表前面加上distinct关键字。select

字段名列表|*

from

表名

where

条件子句;——条件查询where条件子句是可选项,用于指定查询的条件。select语句如果不作为查询语句,还可以用来做计算,如:select

8*9;select语句除了可以作为查询语句的子句外,本身也可以做些简单的测试或计算,执行结果也是列表形式。010203按条件查询2能够正确使用where子句的查询条件查询单个数据表。0405关系运算符和逻辑运算符用于条件表达式中关系运算符:>,<,>=,<=,=,<>|!=;逻辑运算符:and,or,not范围运算符between...and用于条件表达式中范围运算符包含两个边界值,等价于:>=小边界值

and

<=大边界值列表运算符in用于条件表达式中in

后面的列表需要使用一对圆括号括起来,等价于:=值1

or

=值2

or

…模糊匹配运算符like用于条件表达式中一般情况下,与like结合使用的通配符有%(当前位置下的若干个字符)和_(当前位置下的单个字符);与rlike|regexp结合使用的是正则表达式。空值判断运算符isnull用于条件表达式中is

null是判断是否是空值,而=null是判断是否等于null,此时把null当作是一个确切的值,而不是空值。数据统计3能够灵活使用聚合函数和group

by子句、order

by子句以及limit子句等进行数据统计。010203常用聚合函数:sum(),avg(),count(),max(),min()聚合函数有多种,这5种比较有代表性,且非常常用,其中sum()和avg()需要对数值型数据使用。聚合函数与group

by子句结合使用,select子句中的字段要么出现在聚合函数中,要么出现在group

by子句中在MySQL高版本中,如果查询结果只有一行时,这个规则也可不遵循。04order

by

子句是排序子句,排序方式有升序(asc)和降序(desc)两种。order

by后面可以跟多个字段,每个字段排序都需要写清楚是升序还是降序,默认是升序,可不写asc。limit

[m,]n|limit n

[offset

m],该子句是用来限制查询结果的行数。如果偏移量m的值是0,则可以省略不写,即限制行数就是:limit

n数据统计3能够灵活使用聚合函数和group

by子句、order

by子句以及limit子句等进行数据统计。0607列别名的使用:select

列名

as

列别名......对于select子句中出现聚合函数或其他形式的表达式时,在查询时往往会使用列别名以便增加查询结果的可读性。表别名的使用:from

表名 as

表别名......一旦在from子句中定义了表别名,则在select子句中用到表名时必须要使用别名。having子句只用于使用group

by子句时,用来表示进一步筛选having子句也是条件子句,在having子句中,可使用聚合函数作为条件。05能够正确使用运算符、条件子句进行按条件查询;能够正确使用聚合函数、分组子句、排序子句等进行高级查询;能够正确使用列别名、表别名;完成实训报告。实践训练1

能够按要求正确使用select语句查询单个数据表中的所有字段或指定字段;4工作任务3

完成!数据库设计与应用—

M

y

S

Q

L查询多个数据表2使用内连接查询多个数据表3使用外连接查询多个数据表1使用交叉连接查询多个数据表4实践训练010203select

字段

名列表|*

from

表名1,表名2;使用交叉连接查询多个数据表1掌握交叉连接的语句格式,能够正确使用交叉连接查询至少两个数据表交叉连接的实质是数学中的笛卡尔积运算根据数学中的笛卡尔积运算可知,如果不限制查询结果的行数和字段数,则交叉连接查询的结果集的行数是连接的两个表的行数的乘积,字段数是连接的两个表的字段数的和。select

字段名列表|*from

表名1crossjoin

表名2;010203select

列名列表|*

from

表名1,表名2where 表名1.列名=表名2.列名;使用内连接查询多个数据表2能够理解内连接的含义,掌握内连接语句格式,正确使用内连接查询至少两个数据表。04内连接使用最为广泛,连接的两个表要有匹配字段连接的两个表中的匹配字段可以同名,也可以不同名,但是数据类型要匹配,原则上,做内连接的两个表应该有参照关系。select

列名列表|*from

表名1

inner

join

表名2on 表名1.列名=表名2.列名;内连接中的一种特殊形式——自连接,即对一个表的两个副本进行内连接查询在做自连接时,要给同一张表取两个表别名,自连接的连接条件要根据任务的要求使用不同的关系运算符。使用外连接查询多个数据表3能够掌握正确的外连接语句格式,使用外连接查询至少两个数据表。MySQL中将外连接分为左外连接和右外连接010203select

列名列表|*from

表名1

left|rightouterjoin

表名2on 表名1.列名=表名2.列名;左外连接和右外连接中的左和右是相对的,表示在join关键字的左和右04左外连接表示的是查询结果中包含左侧表中不符合连接条件的行,同理,右外连接的查询结果包含右侧表中不符合连接条件的行掌握交叉连接、内连接和外连接的语句格式;能够正确使用内连接查询两个或三个数据表,注意连接条件和查询条件的异同点;能够正确使用外连接查询两个数据表,注意外连接的类别;注意在内连接查询和外连接查询中表别名的使用;完成实训报告。实践训练4工作任务4

完成!数据库设计与应用—

M

y

S

Q

L使用子查询4使用比较测试子查询查询数据表2使用集合成员测试子查询查询数据表3使用存在性测试子查询查询数据表1认识子查询5实践训练010203子查询必须使用一对圆括号括起来认识子查询1掌握子查询概念,能够根据具体要求分析出使用子查询的条件,并使用正确的子查询。子查询是指一个查询语句嵌套在另一个查询语句内部,如where子句或from子句。理论上,子查询可以出现在查询语句的任意位置,但在实际应用中,多出现在where子句或from子句中。外层的select语句称为主查询或父查询,与子查询相对应。嵌套在查询语句的子句中的select语句称为子查询。0102使用集合成员测试子查询查询数据表2能够正确使用in或not

in运算符将子查询与父查询连接进行单表或多表数据查询。子查询结果是一个数据集合。子查询的结果可能是一个多行单列的数据集合(较为常用),也可能是一个多行多列的数据集合。主查询中的条件子句中使用列表运算符in(not

in)例

:select *fromprovidewhereprovideidin(selectprovideidfrom

merchinfo);--

查询已经供应商品的供应商信息,此时子查询结果是一个多行单列的数据集合select

*from

users

where

(userid,userpw)

in

(select

userid,userpw

from

users

where

username

like'张%');--

查询所有姓张的用户信息,此时子查询结果是一个多行多列的数据集合,当然,这个语句是可以不用子查询的:select*

from

users

where

username

like

'张%';存在性测试子查询可以是任一类子查询,有查询结果就表示存在结果为真0102exists测试有否定形式:not

exists03父、子查询涉及的表不同时,要建立两个表之间的参照关系,即父表.列名=子表.列名使用存在性测试子查询查询数据表3能够按照要求使用exists运算符或not

exists运算符将主查询和子查询连接起来,此时子查询如果与主查询使用的表不同,还需要建立两个表之间的参照关系。例

:select *fromprovidepwhereexists(selectprovideidfrommerchinfomwhere

videid=videid);--

查询已经供应商品的供应商信息,此时使用的是存在性测试子查询,且子表和父表不同。比较测试子查询还分为单值比较测试子查询和批量比较测试子查询010203子查询的返回结果是一个单行单列的数据,使用单值比较测试子查询子查询的返回结果是一个多行单列的数据,使用批量比较测试子查询04使用比较测试子查询查询数据表4能够根据具体要求正确使用比较测试子查询查询一个或多个数据表。批量比较测试子查询需要用到两个关键字any和all>any,实质上就是>最小值<any,实质上就是<最大值>all,实质上就是>最大值<all,实质上就是<最小值=all,不存在;=any实质上就是in运算能够正确分析应该使用哪种子查询能够按要求正确使用集合成员测试子查询能够根据要求正确使用存在性测试子查询能够根据要求正确使用比较测试子查询实成实训报告实践训练5工作任务5

完成!数据库设计与应用—

M

y

S

Q

L使用索引提高数据查询效率2删除索引1创建和查看索引3实践训练数据库中的索引类似于书中的目录。0102MySQL支持6种索引:普通索引,唯一索引,全文索引,单列索引,多列索引和空间索引03索引是单独的、物理的数据库结构,依赖于表的建立。创建和查看索引1掌握索引的分类,能够按要求正确创建索引,并根据要求删除不需要的索引。0405建表或是修改表定义时,创建索引格式为:unique|fulltext|spatial

index

索引名(列名[(长度)][ASC|DESC])使用create

index语句创建索引的格式为:create

unique|fulltext|spatialindex索引名

on

表名(列名);普通索引:不附加任何限制条件的索引。唯一索引:索引列的值必须是唯一的。06创建和查看索引1掌握索引的分类,能够按要求正确创建索引,并根据要求删除不需要的索引。070809创建索引的三种情况:创建表的同时创建索引;修改表定义时添加索引;直接创建索引。单列索引:索引字段只有一个,如果不只一个,就是多列索引。createunique

indexindex_id on

users(userid,username);--

在用户信息表中的用户编号和用户姓名两个字段上创建一个名为index_id的唯一索引索引可以提升查询数据的效率,但要付出时间和空间的代价。altertablestockadduniqueindex

index_stock(stockid);--

在入库信息表中的入库编号字段上添加一个名为index_stock的唯一索引。使用drop

index删除索引,可以直接删除,也可使用修改表定义的方式删除。(两种情况)0102drop

index

索引名

on

表名;03alter

table

表名

drop

index

索引名;删除索引2能够按要求正确地从指定数据表中删除指定的索引。掌握创建索引的三种方式,并能够根据要求使用三种方式创建索引掌握删除索引的两种方式,并能够根据要求使用两种方式删除索引实成实训报告。实践训练3工作任务6

完成!数据库设计与应用—

M

y

S

Q

L使用视图提高复杂查询语句的复用性2通过视图修改基本表中数据1认识视图3实践训练视图本质是虚拟表,实际存放的是查询语句0102视图中查询语句查询的数据表称基本表03createview

视图名[(字段名列表)]

as

select语句;认识视图1掌握视图和基本表的含义,能够使用create

view按要求创建视图。04alter

view

视图名[(字段名列表)]

as

select语句;05drop

view

视图名列表;060708使用\G替代分号作为语句结束符时,语句执行结果按列输出,即:将执行结果的结构旋转90度变成纵向。认识视图1掌握视图和基本表的含义,能够使用create

view按要求创建视图。查看视图的数据结构与查看表的数据结构相同desc[ribe]视图名;查看创建视图的详细信息show

create

view

视图名;09with

check

option选项是可选的,如果在创建视图时有这个选项,表示通过视图更新数据时检查更新的数据是否符合视图定义中的where子句设置的条件。数据表的增、改、删操作同样适用于视图。0102视图的“增”操作只能用在使用一个基本表创建的视图中。03视图的“改”操作只能用在直接引用基本表的列上。通过视图修改基本表中数据2使用学过的增、改、删操作通过对视图操作达到修改基本表中数据。视图的“删”操作也是只能用在使用一个基本表创建的视图中。040506通过视图修改基本表中数据2使用学过的增、改、删操作通过对视图操作达到修改基本表中数据。例:创建江苏省供应商视图(view_jsprovide)时设置了withcheck

option选项。通过视图添加如下数据:G202412001,张三日化用品有限公司,四川省成都市,02824546228。insert into

view_jsprovide

values(‘G202412001’,’张三日化用品有限公司’,’四川省成都市’,’02824546228’);语句本身是正确的,但是这行数据不符合定义视图时的where子句条件,所以执行时会报错。创建低价商品视图view_cheap,具体语句如下:createviewview_cheapasselectmerchid,merchname,merchprice*1.05pricefrommerchinfowheremerchprice<5;视图创建后,要通过该视图修改商品价格:updateview_cheapset

price=price*1.1;语句本身是正确的,但是语句执行时会报错,只因为视图中的price字段是通过运算得到的。掌握创建视图、修改视图和删除视图的语句掌握通过视图修改数据的原则完成实训报告实践训练3工作任务7

完成!数据库设计与应用—

M

y

S

Q

L实施数据库的数据完整性2使用约束检查域完整性3使用约束检查参照完整性1使用约束保证数据表内行唯一4实践训练主键约束的关键字为:primary

key0102唯一约束的关键字为:unique03使用约束保证数据表内的行唯一1掌握数据完整性的概念和实体完整性的实施方法,能够根据要求选择合适的方法实施实体完整性保证数据表中的行是唯一的。0405自动增值约束的关键字为:auto_increment自动增值约束只对整型字段有效,并且是主键字段本身或主键字段的一部分。字段名

数据类型 primary

key

[默认值]

或:[constraint约束名] primary

key(字段名列表)唯一约束的格式与主键约束格式完全一致一个表有且只能有一个主键约束,唯一约束不限0607字段名 数据类型 auto_increment08删除约束使用altertable命令删除主键约束:alter

table

表名

drop

primary

key;删除唯一约束:alter

table

表名

drop

key|index

索引名;使用约束保证数据表内的行唯一1例:创建表st,两个字段:st_id,整型,主键,自动增值,st_name,可变长4位字符型,不能为空。createtablest(st_idintprimarykeyauto_increment,st_namevarchar(4)not

null);在表st的st_name字段上添加一个唯一约束。altertablestadd

unique(st_name);非空约束:字段名 数据类型

not

null0102使用约束检查域完整性2能够使用非空约束和默认值约束实现域完整性。默认值约束:字段名

数据类型

defalut

默认值在创建表的时候可直接设置非空约束和默认值约束,如果是在已经存在的表上添加非空约束和默认值约束,则需要使用修改表定义的字段数据类型。例:在provide表的provideaddress字段上设置默认值“江苏省”。altertableprovidemodifyprovideaddressvarchar(250)default

‘江苏省’;使用约束检查参照完整性3能够正确使用外键约束实现数据库中相关数据表的数据一致性。0102外键约束:[constraint

约束名]foreignkey(字段名1)references表名(字段名2)删除外键约束:altertable

表名

drop

foreign

key

外键约束名;03删除外键还需要删除外键约束产生的索引键:altertable

表名

drop

key|index索引名;设置外键约束要注意是否定义了on

delete|update

cascade选项。掌握主键约束、唯一约束、自动增值约束的使用方法掌握外键约束的使用方法掌握非空约束和默认值约束的使用方法完成实训报告实践训练4工作任务8

完成!数据库设计与应用—

M

y

S

Q

L使用用户自定义函数2创建用户自定义函数3使用游标1认识用户自定义函数4实践训练0102常量:程序运行中始终不变的量。字符串常量、数值常量、日期时间常量等。变量:全局变量、会话变量、用户变量和局部变量03查看全局变量:select@@global.变量名;或showglobal

variables[like

'匹配模式'|where

表达式];认识用户自定义函数1掌握数据库编程基础知识和用户自定义函数的创建语句格式,能够根据要求创建简单的用户自定义函数并调用。0405设置全局变量:set

global

变量名=值;或set@@global.变量名=值;会话变量与全局变量类似,关键字换成:session常量:'Tom'、13.3、25、'2024-11-04'、'09:43:13'060708认识用户自定义函数1常量与系统变量的使用。字符串常量

数值常量 日期常量时间常量查看全局系统变量showglobal

variables;查看会话系统变量showsession

variables;091011认识用户自定义函数112用户变量的使用。查看用户变量:select

@变量名;用户变量无需定义,可直接使用。但未给用户变量赋值,则用户变量的值是:NULL设置用户变量:set

@变量名=值;或:set

@变量名:=值;set

@a=6;set

@a:=8:设置用户变量:select

@变量名:=值

[from

子句

where子句];select

字段名1,字段名2,……

[from

子句][where子句]into

变量;select字段名1,字段名2,……into变量[from子句]

[where

子句]

;局部变量需要先定义后使用:declare变量名

数据类型

[default

默认值];set

变量名=值|表达式;delimiter

$;

//修改语句结束符为$1314116删除自定义函数:drop

function

[if

exists]

函数名;15create

function

函数名(参数列表)returns

返回值

类型[begin]函数体return

返回值;[end]//调用时,使用select语句,放在可用表达式的地方查看自定义函数:show

create

function

函数名;认识用户自定义函数用户自定义函数的定义。1认识用户自定义函数用户自定义函数的定义。创建一个名为sayHello的自定义函数,输入参数是姓名,返回一个用于表示问候的字符串。delimiter

$$createfunctionsayHello(namevarchar(30))returns

varchar(100)beginreturnconcat('Hello',name,'!');end$$执行sayHello自定义函数,输入参数为:李小龙,调用自定义函数的语句为:delimiter

;selectsayHello('李小龙');语句块:begin

......

end0102分支结构:1)if表达式:if(条件,表达式1,表达式2)既然是表达式,就要放在任何可以放表达式的地方。创建用户自定义函数2能够使用常量、变量等按要求创建自定义函数,完成相关功能。select

if(4>5,5,4);分支结构:2)

if语句(单层):if

条件1

then

语句1;[else

语句2;]end

if;0304分支结构:3)

if语句(嵌套):if

条件1

then

语句1;[elseif 条件2 then

语句2;]...[else

语句n;]end

if;创建用户自定义函数2能够使用常量、变量等按要求创建自定义函数,完成相关功能。createfunction

f1()returns

intbegindeclarenintdefault

10;declaremintdefault8;ifn>mthenreturnn;elsereturn

m;end

if;end0506分支结构之case

表达式:格式1:case

表达式when值1 then

结果1

语句1when

2

then

结果2

语句2[else

结果n]end格式2:casewhen

条件1

then

结果1when

条件2

then

结果2......[else

结果n]end创建用户自定义函数20708创建用户自定义函数209循环结构1:while语句while

条件

do循环体;end

while;循环结构2:loop语句loop

循环体;end

loop;loop循环本身不包括中断循环条件,此时要设置标签,使用:leave 标签;中断循环。当然,这个中断循环语句往往要与if语句结合使用。循环结构3:repeat语句repeat循环体;until

结束循环条件end

repeat;使用游标3能够按照要求在用户自定义函数中正确使用游标。010203040506游标:用于标识使用select语句从一个或多个基本表中选取出的一个结果集,也称光标。四个步骤使用游标:声明游标(declare),打开游标(open),读取游标(fetch),关闭游标(close)声明游标:declare

游标名称

cursorfor select

语句;打开游标:open

游标名称;读取游标:fetch

[next]

[from]

游标名称

into

变量名[,...];关闭游标:close

游标名称;使用游标3能够按照要求在用户自定义函数中正确使用游标。例:有表sc结构如下:stuid

char(5),courseid

char(2),grade

int。如果创建一个名为avgrade的自定义函数,要求使用游标求grade字段值的平均值。createfunction

avgrade()returns

floatbegindeclareg

int;declaremfloat;declarenintdefault

0;declareflagintdefault

1;declaremarkcursorforselectgradefrom

sc;declarecontinuehandlerfornotfoundsetflag=0;set

m=0;setg=0;open

mark;fetchmarkinto

g;repeat setm=m+g;set

n=n+1;fetchmarkinto

g;until

flag=0endrepeat;setm=m/n;returnm;close

mark;end$掌握游标的使用方法掌握用户自定义函数的创建、查看、和删除的语句格式和使用完成实训报告实践训练1 掌握数据库编程元素,包括常量、变量、系统函数、选择结构、循环结构等4工作任务9

完成!数据库设计与应用—

M

y

S

Q

L使用存储过程2创建、使用存储过程1认识存储过程3实践训练创建存储过程:create

procedure0102调用存储过程:call

存储过程名03查看存储过程的创建信息:show

create

procedure

存储过程名;认识存储过程1掌握创建、查看、调用和删除存储过程的语句格式及使用方法。04删除存储过程:drop

procedure修改存储过程只能修改其特征,使用alter

procedure0102游标也可以使用在存储过程中03调用存储过程时,注意输出参数的使用创建、使用存储过程2能够按要求正确地创建存储过程并能够修改存储过程中的相关特征参数。掌握创建存储过程、调用存储过程的语句格式掌握删除存储过程的语句格式完成实训报告实践训练3工作任务1

0

完成!数据库设计与应用—

M

y

S

Q

L设置触发器2创建并使用触发器1认识触发器3实践训练触发器:特殊的存储过程,不需要去调用执行,由插入、删除、更新操作自动触发。0102触发器专用临时表:new和old03触发器分类:时间(after和before)操作(insert、update和delete)认识触发器1掌握触发器的基础知识以及创建触发器的格式,并会使用相关语句验证触发器的的功能。04创建触发器:createtriggercreate

trigger

触发器名称

after|before

i

温馨提示

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

最新文档

评论

0/150

提交评论