[高等教育]第4章 SQL 语言基础.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[高等教育]第4章 SQL 语言基础

动态SQL语句 (1) 动态SQL预备语句 EXEC SQL PREPARE〈动态SQL语句名〉FROM〈共享变量或字符串〉 这里共享变量或字符串的值应是一个完整的SQL语句。这个语句可以在程序运行时由用户输入才组合起来。此时,这个语句并不执行。 动态SQL语句 (2) 动态SQL执行语句 EXEC SQL EXECUTE〈动态SQL语句名〉 动态SQL语句使用时,还可以有两点改进: (1)当预备语句中组合而成的SQL语句只需执行一次时,那么预备语句和执行语句可合并成一个语句: EXEC SQL EXECUTE IMMEDIATE〈共享变量或字符串〉 (2)当预备语句中组合而成的SQL语句的条件值尚缺时,可以在执行语句中用USING短语补上: EXEC SQL EXECUTE 动态SQL语句名 USING 共享变量 动态SQL语句 (3) 例 下面两个C语言的程序段说明了动态SQL语句的使用技术。 ① EXEC SQL BEGIN DECLARE SECTION; char *query; EXEC SQL END DECLARE SECTION; scanf(〞%s〞,query); /* 从键盘输入一个SQL语句 */ EXEC SQL PREPARE que FROM :query; EXEC SQL EXECUTE que; 这个程序段表示从键盘输入一个SQL语句到字符数组中;字符指针query指向字符串的第1个字符。 如果执行语句只做一次,那么程序段最后两个语句可合并成一个语句: EXEC SQL EXECUTE IMMEDIATE :query; 动态SQL语句 (4) ② char *query =〞UPDATE sc SET grade = grade * 1.1 WHERE CNO = ?〞; EXEC SQL PREPARE dynprog FROM :query; char cno[5] = 〞C4〞; EXEC SQL EXECUTE dynprog USING :cno; 这里第一个char语句表示用户组合成一个SQL语句,但有一个值(课程号)还不能确定,因此用“?”表示。第二个语句是动态SQL预备语句。第三个语句(char语句)表示取到了课程号值。第四个语句是动态SQL执行语句,“?”值到共享变量cno中取。 例49.查询选修了‘c01’号课程的学生姓名。 SELECT Sname FROM Student WHERE EXISTS (SELECT * FROM SC WHERE Sno = Student.Sno AND Cno = c01) 4.3.4 子查询——使用子查询进行存在性测试 注意 注1:处理过程为:先外后内;由外层的值决定内层的结果;内层执行次数由外层结果数决定。 注2: 由于EXISTS的子查询只能返回真或假值,因此在这里给出列名无意义。所以在有EXISTS的子查询中,其目标列表达式通常都用*。 上句的处理过程 1.找外层表Student表的第一行,根据其Sno值处理内层查询 2.由外层的值与内层的结果比较,由此决定外层条件的真、假 3.顺序处理外层表Student表中的第2、3、 …行。 例50.查询没有选修‘c01’号课程的学生姓名和所在系。 SELECT Sname, Sdept FROM Student WHERE NOT EXISTS (SELECT * FROM SC WHERE Sno = Student.Sno AND Cno = c01) 4.3.4 子查询——使用子查询进行存在性测试 4.1 基本概念 4.2 SQL的数据定义 4.3 数据查询功能 4.4 数据更改功能 4.5 视图的定义和对视图的操作 4.6 嵌入式SQL 4.4 数据更改功能 4.4.1 插入数据 4.4.2 更新数据 4.4.3 删除数据 4.4.1 插入数据 插入单行记录的INSERT语句的格式为: INSERT INTO 表名 [(列名表)] VALUES (值表) 功能:新增一个符合表结构的数据行,将值表数据按表中列定义顺序[或列名表顺序]赋给对应列名。 4.4.1 插入数据——注意 值列表中的值与列名表中的列按位置顺序对应,它们的数据类型必须一致。 如果表名后边没有指明列名,则新插入记录的值的顺序必须与表中列的定义顺序一致,且每一个列均有值(可以为空)。 4.4.1 插入数据——

文档评论(0)

jiupshaieuk12 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档