MySQL数据库第八章 数据库编程

合集下载

第8章数据库编程

第8章数据库编程

第8章数据库编程在应用程序设计中,很多应用程序都需要处理大量的数据,数据库的作用就是对这些数据进行管理、存储和访问。

利用.NET框架提供的访问数据库,使用户可以在短时间内设计出高效、简捷的数据库应用软件。

重点掌握:☑数据库基础☑概念☑数据组件以及数据库的访问方式8.1数据库基础1.信息不同的领域对信息有着不同的定义,通常认为,信息是人对现实世界事务存在方式或运动状态的某种认识,是客观事物属性和相互联系特性的表现,反映了客观事物的存在形式和运动状态。

2.数据数据是把事件的某些属性规范化后的表现形式,可以被识别,也可以被描述。

“数据”的概念包括两个方面:一方面,数据内容是事物特性的反映或描述;另一方面,数据是符号的集合。

信息与数据既有区别,又有联系,两者的关系是:数据是信息的载体,信息则是数据内在含义,两者可以相互转换。

两者也是抽象与客观的关系:信息是抽象的,不随数据设备所决定的数据表示方式而改变,而数据的表示方式及存在方式却是客观现实的。

3.数据库数据库(Database,简称DB)是长期存储在计算机内、有组织的、统一管理的相关数据的集合。

数据库能被各种用户共享,可以为多种应用提供服务,数据库不存在有害的或是不必要的冗余,数据间联系紧密但数据的存储独立于使用它的程序。

4.数据库管理系统数据库管理系统(Database Management Systems,简称DBMS)是专门用于管理数据库的计算机系统软件,位于用户与操作系统之间,为用户或应用程序提供访问DB的方法。

数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操纵功能,并完成数据完整性检查、安全性检查、并发控制及数据故障恢复等控制功能。

数据库管理系统主要功能:(1)数据定义功能DBMS提供了数据定义语言,用户通过它可以方便的定义数据库中的对象。

如表、视图和索引等。

(2)数据处理功能用户可以使用数据处理功能操纵数据实现对数据库的基本操作,如查询、修改、删除和插入等。

第八章数据库编程

第八章数据库编程

第八章数据库编程
内容概述
在数据库应用系统的开发中常常使用编程方法对数据库进行操纵。

本章讲解这些编程技术涉及的概念和使用的方法。

主要包括嵌入式SQL、游标的概念;SQL的过程化扩展PL/SQL和存储过程;使用ODBC设计开发数据库应用程序的方法。

因为JDBC编程、OLEDB编程与ODBC编程的思路基本相同,限于篇幅本章就不讲解JDBC和OLEDB 编程,学生可以通过上机实验了解这些技术。

本章内容的实践性较强,教师可以少讲,让学生多读书并进行实践。

本章目标
掌握开发数据库应用系统的各种编程方法,具有正确选择不同的方法和技术开发应用程序的能力。

重点和难点
重点:了解SQL编程技术可以有效克服SQL实现复杂应用方面的不足,提高应用系统和RDBMS间的互操作性。

掌握嵌入SQL中游标的概念和使用方法;掌握PL/SQL和存储过程的基本概念,基本结构,语句语法和用法。

了解使用ODBC开发应用系统的体系结构,掌握ODBC API和ODBC的应用程序的工作流程。

难点:理论联系实际,能够在实际安装的RDBMS上通过编程的方式开发应用程序,完成对数据库的各种
操作。

能够使用ODBC来进行数据库应用程序的设计,使设计的应用系统可移植性好,并且能同时访问不同的数据库,共享数据资源。

实验内容
《数据库系统概论》第4版给出了4个实验,教师可以根据情况选择其中部分实验让学生完成。

具体实验要求请参见教科书。

实验5 通过嵌入式SQL访问数据库
实验6 使用PL/SQL编写存储过程访问数据库
实验7 通过ODBC访问数据库
实验8 通过JDBC访问数据库。

第8章 数据库编程

第8章 数据库编程
Web程序设计 第八章
ResultSet
处理完毕后,继续使用next方法,指针移向下 一行,继续处理第二行数据。next方法的返回值 是一个boolean型的值,该值若为true,,说明结果 集中还存在下一条记录,并且指针已经成功指向 该记录,可以对其进行处理;若返回值是false, 则说明没有下一行记录,结果集已经处理完毕。 ResultSet类的getXXX()方法可以从某一列中获 得检索结果。其中XXX是JDBC中的Java数据类型, 如int,、String、Date等
MySQL是一个小型关系型数据库管理系统, 开发者为瑞典MySQL AB公司。 MySQL同时也是一个典型的客户机/服务器架 构的网络数据库管理系统。
Web程序设计 第八章
8.2.1 MySQL服务器的安装配臵
打开MySQL安装文件MySQL-5.0.18win32.zip,双击解压缩,运行“setup.exe”
第8章 数据库编程
本章目录
8.1 JDBC基础 8.2 MySQL的使用 8.3 JDBC编程示例 8.4 数据库连接池技术 8.5 Web数据库编程 8.6 本章小结
Web程序设计 第八章
前言
在当今互联网上各种丰富多彩的Web 应用中,几乎无一例外地都要与数据库打 交道,与数据库的交互是Web应用中必不 可少的环节。
Web程序设计 第八章
PreparedStatement
2)为PreparedStatement对象提供参数
pstmt.setString(1, "手机"); //商品名称 pstmt.setInt(2, 200); //商品数量 pstmt.setString (3, "20050102026"); //商品编码

mysql数据库8

mysql数据库8

8.3 查看视图
查看视图是指查看数据库中已存在的视图的定义。查 看视图必须要有SHOW VIEW的权限,mysql数据库下的 user表中保存着这个信息。查看视图的方法包括DESCRIBE 语句、SHOW TABLE STATUS语句、SHOW CREATE VIEW语句和查询information_schema数据库下的views表等 。本节将详细讲解查看视图的方法。
8.5 更新视图
更新视图是指通过视图来插入(INSERT)、更新( UPDATE)和删除(DELETE)表中的数据。因为是视图是 一个虚拟表,其中没有数据。通过视图更新时,都是转换到 基本表来更新。更新视图时,只能更新权限范围内的数据。 超出了范围,就不能更新。本小节将重点讲解更新视图的方 法和更新视图的限制。
8.2.3 在多表上创建视图
MySQL中也可以在两个或两个以上的表上创建视图, 也是使用CREATE VIEW语句实现的。【示例8-4】下面在 department表和worker表上创建一个名为worker_view1的视 图。创建视图的代码如下: CREATE ALGORITHM=MERGE VIEW worker_view1 ( name, department,sex, age,address ) AS SELECT name, department.d_name, sex, 2009birthday, address FROM worker , department WHERE worker.d_id= department.d_id WITH LOCAL CHECK OPTION;
8.3.1 DESCRIBE语句查看视图基本信息
在6.2.1小节中已经详细讲解过使用DESCRIBE语句来 查看表的基本定义。因为,视图也是一张表。只是这张表比 较特殊,是一张虚拟的表。因此,同样可以使用DESCRIBE 语句可以用来查看视图的基本定义。DESCRIBE语句查看视 图的基本形式与查看表的形式是一样的。基本形式如下: DESCRIBE 视图名 ;

第8章 数据库编程

第8章 数据库编程
3 游标的应用
游标是一种数据访问机制,它允许用户访问单独的数据行, 而非对整个行集进行操作。用户可以通过单独处理每一行逐条 收集信息并对数据逐行进行操作,这样可以降低系统开销和潜在 的阻隔情况。从另一个角度来看,游标是用户使用T-SQL代码 可以获得数据集中最紧密的数据的一种方法。
使用Select/Update/Delete语句返回的行集包括所有满足该 语句Where子句中条件的行,而有时需要一种机制以便每次处理 一行或一部分行。游标就是提供这种机制的结果集扩展。
An Introduction to Database System
第八章 数据库编程
1 T-SQL编程
1.1 T-SQL语言基础 1.2 存储过程 1.3 游标的应用
2 编程 3 JDBC编程 自学
An Introduction to Database System
8.1 T-SQL编程
FROM 游标名称 [ INTO @局部变量名 [ ,...n ] ]
参数的含义:请参阅联机帮助丛书
An Introduction to Database System
8.1 T-SQL编程
3 游标的应用
3.3 从游标读取数据
Current形式的更新操作: Where Current of 《游标名称》 更新语句尤其是Update和Delete子句都是集合操作。
③ 根据输入的用户名和密码,完成以下功能: 如果用户名不存在,则返回1; 如果用户名存在,但密码输入错误,则返回2; 如果用户名和密码都正确,则返回3。 数据库准备工作:创建管理员表(UserName,UserPwd)
An Introduction to Database System
8.1 T-SQL编程

数据库系统概论第8章 数据库编程(2003)

数据库系统概论第8章 数据库编程(2003)

8.1嵌入式SQL (7)
打开游标 Open 游标名; Open cur_sc
8.1嵌入式SQL (8)
获取游标数据 FETCH [ NEXT | PRIOR | FIRST | LAST] FROM { 游标 名 | @游标变量名 } [ INTO @变量名 [,…] ] fetch next from cur_sc into @sno,@cno,@grade
在主语言中使用嵌入式SQL时,区分计语句与SQL 语句的标志一般随主语言的不同而不同。有的在 嵌入的sql语句前加前缀,如C语言的EXEC sql;有 的把SQL扩从为主语言的一部分,如powerbuilder 语言
8.1嵌入式SQL (3)
嵌入SQL语句与主语言之间通过共享变量(主变量 )完成数据的传递。 主变量根据其作用不同,分输入主变量和输出主 变量。 EXEC SQL select sno,cno,grade into :sno,:cno,:grade from sc where sno=:givensno End exec
8.2.4 过程化语句块的基本结构(2)
控制结构
条件控制 If …else… 循环控制 While … Break continue
8.2.4 过程化语句块的基本结构(3)
错误处理 BEGIN TRY [SQL代码写在这里] END TRY BEGIN CATCH [异常处理代码写在这里] END CATCH
第8章
数据库编程
内容
8.1嵌入式SQL 8.2存储过程
8.1嵌入式SQL(1)
将SQL语言嵌入到某种高级语言中,混合编程使用 。嵌入SQL的高级语言称为宿主语言或主语言。 对于宿主语言的嵌入式SQL,DBMS有两种处理方 法处理方法:

数据库原理及应用-第8章数据库编程

数据库原理及应用-第8章数据库编程

/*变量yn代表yes或no*/
printf("Please choose the department name(CS/MA/IS): ");
scanf("%s", deptname);
/*为主变量deptname赋值*/
EXEC SQL CONNECT TO TEST@localhost:54321 USER
}
/* C语言主程序结束*/
8.1 嵌入式SQL
8.1.1 嵌入式SQL的处理过程 8.1.2 嵌入式SQL语句与主语言之间的通信 8.1.3 不使用游标的SQL语句 8.1.4 使用游标的SQL语句 8.1.5 动态SQL 8.1.6 小结
8.1.3 不用游标的SQL语句
不用游标的SQL语句的种类 说明性语句 数据定义语句 数据控制语句 查询结果为单记录的SELECT语句 非CURRENT形式的增删改语句
五、程序实例
[例1]依次检查某个系的学生记录,交互式更新某些 学生年龄。
EXEC SQL BEGIN DECLARE SECTION; /*主变量说明开始*/
char deptname[64];
char HSno[64];
char HSname[64];
char HSsex[64];
int HSage;
if (sqlca.sqlcode != 0) /* sqlcode != 0,表示操作不成功*/
break;
/*利用SQLCA中的状态信息决定何时退出循环*/
if(count++ == 0)
/*如果是第一行的话,先打出行头*/
printf("\n%-10s %-20s %-10s %-10s\n", "Sno", "Sname", "Ssex", "Sage");

第8章 数据库编程2

第8章 数据库编程2

其中: 参数列表:由一个或多个参数说明组成,每个参 数说明包括参数名和参数的数据类型。 当然,存储过程可以没有任何参数。 过程体:是实现存储过程功能的一组SQL语句。
例8.11(p248 )
为了使存储过程的设计更方便,功能更强大,SQL 中增加了一些流程控制语句,主要有以下几种: (1)赋值语句。可将SQL表达式的值赋值给局部变量。 (2)分支语句。用于设计分支程序。如: IF…THEN…ELSE…ENDIF语句、CASE语句等。 (3)循环语句。如:FOR、WHILE、REPEAT等语句。 (4)调用存储过程语句CALL或EXECUTE和从存储过程 返回语句RETURN。
8.2 SQL中的存储过程 中的存储过程
存储过程是由一组SQL语句组成,预先编译后存储 在数据库中,可供应用程序多次调用,类似于高级语 言中的函数。使用存储过程既能方便软件开发,又减 少了解释执行SQL语句时句法分析和查询优化的时间, 提高了效率。
பைடு நூலகம்
如在客户/服务器体系结构下,应用程序(客户端) 只需向服务器发出一次请求调用一个存储过程,服务 器上就可一次执行一批SQL命令,中间结果不用送回 客户端,大大降低了网络流量和服务器的开销。 存储过程的定义主要包括两部分:一是过程名及参 数的说明;二是过程体的说明。创建存储过程的语句 形式如下: CREATE PROCEDURE<存储过程名> [<参数列表>] AS <过程体>;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用户变量
变量用于临时存放数据,变量有名字及其数据类型两个属 性,变量名用于标识该变量,变量的数据类型确定了该变量存 放值的格式及允许的运算。MySQL中根据变量的定义方式,变 量可分为用户变量和系统变量。 1.用户变量 用户可以在表达式中使用自己定义的变量,这样的变量叫 做用户变量。在使用用户变量前必须定义和初始化。如果使用 没有初始化的变量,它的值为NULL。 定义和初始化一个变量可以使用SET语句 语法格式为:
SET @name='王林';
还可以同时定义多个变量,中间用逗号隔开。 【例】 创建用户变量user1并赋值为1,user2赋值为2,user3赋值 为 3。
SET @user1=1, @user2=2, @user3=3;
定义用户变量时变量值可以是一个表达式。 【例】 创建用户变量user4,它的值为user3的值加1。
知识能力目标
【情境】:Petstore数据库操作程 序化 【职业岗位】:程序员 【典型工作任务】:通过数据库编 程操作数据库。 【技能要求】: 1、流程控制语句的应用 2、存储过程的编写、应用与管理 3、触发器编写、应用与管理 【知识要求】: 1、顺序结构、分支结构和循环结 构的应用 2、存储过程创建、调用删除 3、触发器创建、调用及删除 ‚员工管理系统‛编程操作
第八章
数据库编程
项目知识要点与目标
项目知识要点
任务1 MySQL语言结构 1 常量与变量 2 表达式与函数 3 流程控制语句 任务2 存储过程 1 创建存储过程 2 调用存储过程 3 删除存储过程 任务3 存储函数 1 创建存储函数 2 调用存储函数 任务4 触发器 1 创建触发器 2 删除触发器 综合实例 PetStore数据库编程 实训八
SET @user4=@user3+1;
在一个用户变量被创建后,它可以以一种特殊形式的表达式用于其 他SQL语句中。变量名前面也必须加上符号@。 【例】 创建并查询用户变量name的值。
SET @name='王林'; SELECT @name;
变量举例
【例8.1】查询Book表中图书编号为TP302/057的书名,并存储在 变量b_name中。 SET @b_name= (SELECT 书名 FROM Book WHERE 图书编号='TP302/057'); 查询Book表中名字等于例8.1 中b_name值的图书信息。 SELECT * FROM Book WHERE 书名=@b_name;
ห้องสมุดไป่ตู้
常量
5.位字段值 可以使用b'value'符号写位字段值。value是一个用0和1写成的 二进制值。直接显示b'value'的值可能是一系列特殊的符号。例如, b'0'显示为空白,b'1'显示为一个笑脸图标。 使用BIN函数可以将位字段常量显示为二进制格式。 6.布尔值 布尔值只包含两个可能的值:TRUE和FALSE。 FALSE的数字值为‚0‛,TRUE的数字值为‚1‛。 7.NULL值 NULL值可适用于各种列类型,它通常用来表示‚没有值‛、 ‚无数据‛等意义,并且不同于数字类型的‚0‛或字符串类型的 空字符串。
SELECT @@VERSION ;
说明:在MySQL中,系统变量VERSION的值设臵为版本号。在变量 名前必须加两个@符号才能正确返回该变量的值。
大多数的系统变量应用于其他SQL语句中时,必须在名称前加 两个@符号,而为了与其他SQL产品保持一致,某些特定的系统变 量是要省略这两个@符号的。如CURRENT_DATE(系统日期) 【例】 获得系统当前时间。
系统变量
MySQL有一些特定的设臵,当MySQL数据库服务器启动的时候, 这些设臵被读取来决定下一步骤。例如,有些设臵定义了数据如 何被存储,有些设臵则影响到处理速度,还有些与日期有关,这 些设臵就是系统变量。和用户变量一样,系统变量也是一个值和 一个数据类型,但不同的是,系统变量在MySQL服务器启动时就 被引入并初始化为默认值。 【例】 获得现在使用的MySQL版本。
SELECT 'This\nIs\nFour\nLines'; 其中,“\n”表示回车。
常量
2.数值常量 数值常量可以分为整数常量和浮点数常量。 3.十六进制常量 一个十六进制值通常指定为一个字符串常量,每对十六进制数字 被转换为一个字符,其最前面有一个大写字母‚X‛或小写字‚x‛。 4.日期时间常量 日期时间常量:用单引号将表示日期时间的字符串括起来构成。日 期型常量包括年、月、日,数据类型为DATE,表示为‚1999-06-17‛ 这样的值。 时间型常量包括小时数、分钟数、秒数及微秒数,数据类型为 TIME,如‚12:30:43.00013‛。 日期/时间的组合,数据类型为DATETIME或TIMESTAMP,如‚199906-17 12:30:43‛。
学时
4
4
任务一 MySQL语言结构
1.字符串常量 字符串是指用单引号或双引号括起来的字符序列,分为ASCII 字符串常量和Unicode 字符串常量。 ASCII字符串常量是用单引号括起来的,由ASCII字符构成的符 号串。举例:‘hello’,‘How are you!’ Unicode 字符串常量与ASCII字符串常量相似,但它前面有一 个N标志符(N代表 SQL-92标准中的国际语言(National Language))。N前缀必须为大写。只能用单引号括起字符串。 举例:N‘hello’,N‘How are you!’ Unicode 数据中的每个字符用两个字节存储,而每个ASCII字 符用一个字节存储。 在字符串中不仅可以使用普通的字符,也可使用几个转义序列, 它们用来表示特殊的字符。
SET @user_variable1=expression1 [,user_variable2= expression2 , „]
其中,user_variable1、user_variable2为用户变量名, 变量名可以由当前字符集的文字数字字符、‚.‛、‚_‛和 ‚$‛组成。
变量举例
【例】 创建用户变量name并赋值为‚王林‛。
相关文档
最新文档