数据库原理及应用-SQL数据操纵语言(Data Manipulation Language)和嵌入式SQL&存储过程
2018-02-19 18:03:54
一、数据操纵语言(Data Manipulation Language)
数据操纵语言是指插入,删除和更新语言。
二、视图(View)
数据库三级模式,两级映射中,使用视图可以实现外模式,可以实现数据的逻辑独立性。
视图可以分为两种:
1、普通视图(General view):使用CREATE VIEW 生成的视图,是通过基表进行运算得到的,也被称为虚表,其定义是永久保存的,其内容是临时计算的。
视图在一定程度上可以保证数据的安全性,因为可以选择呈现给用户的数据。另外,在早期,视图中的数据是不允许修改的,因为视图是一张虚表,是实际不存在的表。但是如果说能保证数据和基表的唯一对应,则可以进行修改。
2、临时视图(Temporary view and recursive query):使用WITH子句定义的临时表称为临时视图,注意其定义也是不进行保存的,可以实现递归查询。
三、嵌入式SQL
如何在程序设计语言中使用SQL呢?
主要要解决如下几个问题:
- 如何让程序设计语言接受SQL语句;
- 如何让程序和数据库如何交换消息和数据;
- 查询结果是一个集合,如何将其传递给程序设计语言中的变量;
- 数据类型的匹配问题
主要解决方法:
- 嵌入式SQL;
- 编程API(ODBC,JDBC等);
- 封装类库;
以C语言中的嵌入式SQL为例,其中有一些基本概念:
- 以 EXEC SQL 开头,分号结尾;
- 通过宿主变量(host variables)进行数据的交互;
- 在SQL中使用宿主变量需要加上:,以示区分;
- 有一个特殊的宿主变量SQLCA (SQL Communication Area),使用 EXEC SQL INCLUDE SQLCA 来定义;
- SQLCA.SQLCODE 来判别语句执行状态;
- indicator (short int) 来表征NULL;
首先可以定义一些宿主变量,之后通过这些宿主变量进行交互。但是,这里有一个问题就是如何对返回结果为集合的SQL语言进行数据的交互。解决方案就是很常用的cursor,游标机制。通过游标机制,可以将返回的集合看成文件进行读取。
四、动态SQL
程序运行前程序执行的SQL语句是没法确定的,所以需要使用动态SQL。先前的游标中的SELECT语句是写死的,但是实际应用中是不能这样的,经常需要运行时确定。
主要有三类动态SQL:
- Dynamic SQL executed directly:主要指非查询的插删改语句;
- Dynamic SQL with dynamic parameters:带有动态参数;
- Dynamic SQL for query:带有查询语句;
1)Dynamic SQL executed directly
2)Dynamic SQL with dynamic parameters
使用占位符进行带动态参数的动态SQL。
3)Dynamic SQL for query
五、存储过程
将经常使用的一组SQL语句可以存储成一个存储过程,系统可以将其进行优化存储,下次使用的时候用户就可以很方便的进行调用,不用重复编写。本质就是一种SQL语句的封装。
数据库原理及应用-SQL数据操纵语言(Data Manipulation Language)和嵌入式SQL&存储过程的更多相关文章
- CREATE TABLE——数据定义语言 (Data Definition Language, DDL)
Sql语句分为三大类: 数据定义语言,负责创建,修改,删除表,索引和视图等对象: 数据操作语言,负责数据库中数据的插入,查询,删除等操作: 数据控制语言,用来授予和撤销用户权限. 数据定义语言 (Da ...
- 【转】Hive Data Manipulation Language
Hive Data Manipulation Language Hive Data Manipulation Language Loading files into tables Syntax Syn ...
- oracle数据操纵语言(DML)data manipulation language
数据库操纵语言(DML)用于查询和操纵模式对象中的数据,它不隐式地提交当前事务. SELECTINSERTUPDATEDELETECALLEXPLAIN PLANLOCK TABLEMERGE使用算术 ...
- oracle数据操纵语言(DML)data manipulation language(续集)
SQL查询语句(SELECT)进阶分组函数(Group Functions):对多行进行操作,并为每一组给出一个结果. AVG([DISTINCT|ALL] expression) 平均值COUNT ...
- SQL Fundamentals || DCL(Data Control Language) || 用户管理&Profile概要文件
SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant ...
- SQL Fundamentals || DCL(Data Control Language) || 角色ROLES
SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant ...
- SQL Fundamentals || DCL(Data Control Language) || 系统权限&对象权限管理(GRANT&REVOKE)
SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant ...
- Hive 6、Hive DML(Data Manipulation Language)
DML主要是对Hive 表中的数据进行操作的(增 删 改),但是由于Hadoop的特性,所以单条的修改.删除,其性能会非常的低所以不支持进行级操作: 主要说明一下最常用的批量插入数据较为常用的方法: ...
- (让你提前知道软件开发33):数据操纵语言(DML)
文章2部分 数据库SQL语言 数据操纵语言(DML) 数据操纵语言(Data Manipulation Language,DML)包含insert.delete和update语句,用于增.删.改数据. ...
随机推荐
- 002-shell变量定义、使用、字符串、数组、注释
一.变量定义 定义变量时,变量名不加美元符号($) name="lhx" 注意,变量名和等号之间不能有空格.同时,变量名的命名须遵循如下规则: 命名只能使用英文字母,数字和下划线, ...
- 001-ant design pro 页面加载原理及过程,@connect 装饰器
一.概述 以列表页中的标准列表为主 Ant Design Pro 默认通过只需浏览器单方面就可处理的 HashHistory 来完成路由.如果要切换为 BrowserHistory,那在 src/in ...
- django高级之爬虫基础
目录: 爬虫原理 requests模块 beautifulsoup模块 爬虫自动登陆示例 一.爬虫原理 Python非常适合用来开发网页爬虫,理由如下:1.抓取网页本身的接口相比与其他静态编程语言,如 ...
- lua全局状态机
本文内容基于版本:Lua 5.3.0 global_State概述 global_State结构,我们可以称之为Lua全局状态机.从Lua的使用者角度来看,global_State结构是完全感知不到的 ...
- ADO是什么?
ADO是一个组件,ADO不适于MFC但是可以在MFC里面使用.(ADO在1996年冬被发布.) 由于ADO在MFC使用的比较频繁,所以一些前辈将ADO的三个智能指针封装了. 之后就可以在MFC 更方便 ...
- 阿里云搭建go开发环境
开通了一个阿里云来玩,记录一下环境搭建的过程 运行环境 ECS Ubuntu 16.04 64位 过程 #切换到安装文件夹 cd /usr/local #下载go #由于墙的原因,直接下载官方的可能会 ...
- JVM调优之Java进程消耗CPU过高
JVM调优之Java进程消耗CPU过高 查找问题思路 1.查看cpu使用率,发现有线程cpu占用率很高 tops 咱们拿18092线程举例示范 2.查询pid对应的进程 ps -ef|grep 18 ...
- 《阿里巴巴Java开发规约》插件使用
通过Jetbrains官方仓库安装 1. 打开 Settings >> Plugins >> Browse repositories... 2. 在搜索框输入alibaba即可 ...
- 20145307第9周JAVA学习报告
20145307陈俊达 <Java程序设计>第9周学习总结 教材学习内容总结 JDBC(Java DataBase Connectivity)即java数据库连接,是一种用于执行SQL语句 ...
- ARTS Week 002
Algorithm Leetcode 2. Add Two Numbers You are given two non-empty linked lists representing two non- ...