2018-02-19 18:03:54

一、数据操纵语言(Data Manipulation Language)

数据操纵语言是指插入,删除和更新语言。

二、视图(View)

数据库三级模式,两级映射中,使用视图可以实现外模式,可以实现数据的逻辑独立性。

视图可以分为两种:

1、普通视图(General view):使用CREATE VIEW 生成的视图,是通过基表进行运算得到的,也被称为虚表,其定义是永久保存的,其内容是临时计算的。

视图在一定程度上可以保证数据的安全性,因为可以选择呈现给用户的数据。另外,在早期,视图中的数据是不允许修改的,因为视图是一张虚表,是实际不存在的表。但是如果说能保证数据和基表的唯一对应,则可以进行修改。

2、临时视图(Temporary view and recursive query):使用WITH子句定义的临时表称为临时视图,注意其定义也是不进行保存的,可以实现递归查询。

三、嵌入式SQL

如何在程序设计语言中使用SQL呢?

主要要解决如下几个问题:

  1. 如何让程序设计语言接受SQL语句;
  2. 如何让程序和数据库如何交换消息和数据;
  3. 查询结果是一个集合,如何将其传递给程序设计语言中的变量;
  4. 数据类型的匹配问题

主要解决方法:

  1. 嵌入式SQL;
  2. 编程API(ODBC,JDBC等);
  3. 封装类库;

以C语言中的嵌入式SQL为例,其中有一些基本概念:

  1. 以 EXEC SQL 开头,分号结尾;
  2. 通过宿主变量(host variables)进行数据的交互;
  3. 在SQL中使用宿主变量需要加上:,以示区分;
  4. 有一个特殊的宿主变量SQLCA (SQL Communication Area),使用 EXEC SQL INCLUDE SQLCA 来定义;
  5. SQLCA.SQLCODE 来判别语句执行状态;
  6. indicator (short int) 来表征NULL;

首先可以定义一些宿主变量,之后通过这些宿主变量进行交互。但是,这里有一个问题就是如何对返回结果为集合的SQL语言进行数据的交互。解决方案就是很常用的cursor,游标机制。通过游标机制,可以将返回的集合看成文件进行读取。

四、动态SQL

程序运行前程序执行的SQL语句是没法确定的,所以需要使用动态SQL。先前的游标中的SELECT语句是写死的,但是实际应用中是不能这样的,经常需要运行时确定。

主要有三类动态SQL:

  1. Dynamic SQL executed directly:主要指非查询的插删改语句;
  2. Dynamic SQL with dynamic parameters:带有动态参数;
  3. 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&存储过程的更多相关文章

  1. CREATE TABLE——数据定义语言 (Data Definition Language, DDL)

    Sql语句分为三大类: 数据定义语言,负责创建,修改,删除表,索引和视图等对象: 数据操作语言,负责数据库中数据的插入,查询,删除等操作: 数据控制语言,用来授予和撤销用户权限. 数据定义语言 (Da ...

  2. 【转】Hive Data Manipulation Language

    Hive Data Manipulation Language Hive Data Manipulation Language Loading files into tables Syntax Syn ...

  3. oracle数据操纵语言(DML)data manipulation language

    数据库操纵语言(DML)用于查询和操纵模式对象中的数据,它不隐式地提交当前事务. SELECTINSERTUPDATEDELETECALLEXPLAIN PLANLOCK TABLEMERGE使用算术 ...

  4. oracle数据操纵语言(DML)data manipulation language(续集)

    SQL查询语句(SELECT)进阶分组函数(Group Functions):对多行进行操作,并为每一组给出一个结果. AVG([DISTINCT|ALL] expression) 平均值COUNT ...

  5. SQL Fundamentals || DCL(Data Control Language) || 用户管理&Profile概要文件

    SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant ...

  6. SQL Fundamentals || DCL(Data Control Language) || 角色ROLES

    SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant ...

  7. SQL Fundamentals || DCL(Data Control Language) || 系统权限&对象权限管理(GRANT&REVOKE)

    SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant ...

  8. Hive 6、Hive DML(Data Manipulation Language)

    DML主要是对Hive 表中的数据进行操作的(增 删 改),但是由于Hadoop的特性,所以单条的修改.删除,其性能会非常的低所以不支持进行级操作: 主要说明一下最常用的批量插入数据较为常用的方法: ...

  9. (让你提前知道软件开发33):数据操纵语言(DML)

    文章2部分 数据库SQL语言 数据操纵语言(DML) 数据操纵语言(Data Manipulation Language,DML)包含insert.delete和update语句,用于增.删.改数据. ...

随机推荐

  1. bat批处理异备文件、压缩文件

    1.压缩本地文件,并把压缩后的文件复制到其他机器 net use Z: \\192.168.135.1\share_linux a123456! /user:chaoqun.guo set bath= ...

  2. intellij idea 重命名或复制一个项目(不用重启)

    Idea 内无法直接修改Explorer 里文件夹的名称,只能手动改文件夹的名称. 目前找到的最好的方法: 1)重命名一个项目 在Idea 项目关闭状态下,在 Explorer (Windows) / ...

  3. JVM生命周期

    JVM生命周期可以分为以下三个阶段 启动:任何class文件的main函数都可认为是jvm示例的起点. 运行:以main函数为起点,后续的线程都由它启动,包括守护线程和用户线程.main方法启动的线程 ...

  4. Angular 笔记系列(二)数据绑定

    数据绑定这块儿没啥说的,简单两个例子带过了. Hello World: <!DOCTYPE html> <html ng-app> <head> <title ...

  5. XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem F. Matrix Game

    题目: Problem F. Matrix GameInput file: standard inputOutput file: standard inputTime limit: 1 secondM ...

  6. googleBigTable

    Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的PB级的数据.Google的很多项目使用Bigtable存储数据,包括Web索引.Googl ...

  7. 安卓 和 IOS 的icon 尺寸

    安卓 36*36 48*48 72*72 96*96 IOS Icon.png – 57×57 iPhone (ios5/6) Icon@2x.png – 114×114 iPhone Retina  ...

  8. tensorflowxun训练自己的数据集之从tfrecords读取数据

    当训练数据量较小时,采用直接读取文件的方式,当训练数据量非常大时,直接读取文件的方式太耗内存,这时应采用高效的读取方法,读取tfrecords文件,这其实是一种二进制文件.tensorflow为其内置 ...

  9. 如何做好Web接口测试

    说说我在测试接口时遇到的一些需要注意的点: 1.接口返回:数据格式是否与预期一致.例如:要求返回json格式的数据,json数据的key命名是否正确,对应的value是否与数据库一致.需要转换的数据是 ...

  10. windows上使用clang编译程序

    环境:windows7,64位 1.下载并安装llvm,安装包里除了llvm,也有clang: http://releases.llvm.org/5.0.0/LLVM-5.0.0-win64.exe ...