`
lovnet
  • 浏览: 6690639 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

SQL_DML语句基础知识(二)

 
阅读更多

1.利用查询语句建表

CREATE TABLE employe AS

SELECT * FROM emp;

不过这样建表会把emp表中的数据也都复制过来了.如果只想复制表的结构而不复制数据的话则这样

CREATE TABLE employe AS

SELECT * FROM emp WHERE 1=2; --此处1=2可以换成任何一个表达式,只要是使WHERE语句后面条件返回FALSE就行.比如改成4=5啊

注:通过SELECT语句建的表只是每个列名,列的类型与原表相同.原表中的约束条件,索引等都不会复制过来

2.DECODE和CASE

3.只读事务:

我们知道在数据库中在任何时候都有可能有用户在表中插入或删除数据.这样不同的时间查找会得到不同的结果.假如有这样一种业务需求,我们只去统计30号6点之前数据.

之后的不去管.财务会计部门可能会有这种需求.那怎么办呢.我们在六点钟时连接到数据库,然后执行下面的命令

SET TRANSACTION READ ONLY;

从此刻开始在这个会话中所有的查询语句都会忽略掉6点以后的操作.至少oracle后台是怎么实现的还不清楚.反正这有点像把数据库里面的数据都拷贝一份过来让你查.别人之后做的改动影响不到你.举个例子吧.

(1)假如你用sql*plus 连接到oracle.--这为会话1

SET TRANSACTION READ ONLY;

查询表emp:SELECTename,empno FROM emp;结果为

scott 123

(2)另一用户也用sql*plus连接到oracle--这为会话2

INSERT INTO emp(ename,empno) VALUES('arwen',321);

COMMIT;

(3)在会话1中查找SELECT ename,empno FROM emp;结果仍为

scott 123

注意:会话1中只能找查找操作.不用做插入,更新或删除等操作

4.顺序事务:

在只读事务中只能查询不能做DML操作.而顺序事务除了有只读事务的所有功能外还有DML操作的功能.

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

--不过要注意当在此会话中如果做了DML操作并提交了.顺序事务貌似就失效了.跟正常的操作又一样了.觉得这功能有点怪怪的啊

MERGE修改表数据

假如我们要对数据库中某个重要的表备份.并定时更新备份的表,以保持与原表同步.oracle里面有个简单的方法实现这功能.就是用merge.下面是语法

MERGE INTO SCHEMA .TABLE ALIAS

USING SCHEMA . { TABLE | VIEW | SUBQUERY } ALIAS

ON (CONDITION)

WHEN MATCHED THEN

UPDATE SET column = value[,column=value]...

WHEN NOT MATCHED THEN

MERGE_INSERT_CLAUSE / MERGE_DELETE_CLAUSE;

示例:

先创建原表ta:

CREATE TABLE ta(ename char(5), eno int);

INSERT INTO ta VALUES('arwen',10);

INSERT INTO ta VALUES('alice',20);

创建备份表ta_copy

CREATE TABLE ta_copy(ename char(5), eno int);

INSERT INTO ta_copy VALUES('god',10);

1.使两表同步:

MERGE INTO ta_copy t_c

USING ta t

ON(t_c.eno=t.eno)

WHEN MATCHED THEN

UPDATE SET t_c.ename = t.ename

--WHERE t_c.ename ='god' --此行可加可不加

WHEN NOT MATCHED THEN

INSERT (t_c.ename,t_c.eno)

VALUES(t.ename,t.eno)

--WHERE t_c.ename='god'--此行可加可不加

;

2.我们注意到1中的例子同时用到了update和insert.但我们也可只使用其中一种.只更新或只插入

只更新:

MERGE INTO ta_copy t_c

USING ta t

ON(t_c.eno=t.eno)

WHEN MATCHED THEN

UPDATE SET t_c.ename = t.ename;

只插入:

MERGE INTO ta_copy t_c
USING ta t
ON(t_c.eno=t.eno)
WHEN NOT MATCHED THEN
INSERT (t_c.ename,t_c.eno)
VALUES(t.ename,t.eno);

3.将原表的数据全部插入到备份表中

MERGE INTO ta_copy t_c
USING ta t
ON(1=0) --此处只要条件为假就行,表示不管重复与否,插入全部数据
WHEN NOT MATCHED THEN
INSERT (t_c.ename,t_c.eno)
VALUES(t.ename,t.eno);

分享到:
评论

相关推荐

    2024年SQL基础语句,看这里!一天搞定90%常用语句

    它为读者提供了一个实用的指南,帮助他们掌握SQL的基础知识和实战技巧。 使用场景及目标: 本篇文章适用于求职者准备涉及SQL的面试场景。它的目标是帮助求职者理解并掌握这些概念,从而在面试中更好地展示自己的技术...

    GBase 8a SQL参考手册

    第二章详细介绍了 SQL 语言基础知识,包括数值,数据库、表、列和别名, 如何设置和使用用户变量、系统变量和注释语法。 第三章详细介绍 GBase 8a 支持的操作符和函数,包括操作符、控制流函数、 字符串函数、数值...

    oracle数据库基础知识

    这是我学习过程中整理的oracle数据库基础知识,里面包含了DML、DDL等相关语句。还解释了什么情况下该用什么样的SQL。包含了很多基础知识。欢迎大家收藏。

    精通SQL--结构化查询语言详解

    3.1 表的基础知识 37 3.1.1 表的基本结构 37 3.1.2 表的种类 38 3.2 sql数据类型 39 3.2.1 字符型数据 39 3.2.2 数字型数据 40 3.2.3 日期数据类型 41 3.2.4 二进制数据类型 43 3.2.5 文本和图形数据类型 44...

    PL/SQL Developer8.04官网程序_keygen_汉化

    编程基础知识  1. 程序结构 PL/SQL程序都是以块(block)为基本单位,整个PL/SQL块分三部分:声明部分(用declare开头)、执行部分(以 begin开头)和异常处理部分(以exception开头)。其中执行部分是必须的,...

    SQL Server2005基础教程

    本书重点阐述了SQL Server 2005的基础知识,前半部分以建立一个金融数据库系统为主线,从最基础的收集信息入手,一步步地引导读者学会如何保证数据库的安全,创建表、主键、索引等项目,在表之间建立恰当的关系,并...

    2024年SQL语句常考面试题(干货满满).zip

    本文为你提供了2024年最全面的SQL面试题集锦,覆盖了从基础到高级的各类SQL知识点。内容涉及SQL的定义、数据库类型、SQL语言的不同分类(DDL、DML、DCL)、连接类型(内连接、左连接等)、索引的作用和原理、事务的...

    精通SQL 结构化查询语言详解

    3.1 表的基础知识  3.1.1 表的基本结构  3.1.2 表的种类  3.2 SQL数据类型  3.2.1 字符型数据 3.2.2 数字型数据  3.2.3 日期数据类型 3.2.4 二进制数据类型 3.2.5 文本和图形数据类型  3.2.6 自定义...

    从零开始学Oracle

    作者以实际工作为切入点,详细介绍了Oracle数据库的基础知识及PL/SQL程序设计实战的知识。本书共分为17章,主要介绍了数据库的入门知识、安装Oracle以及使用Oracle的客户端工具管理Oracle,Oracle数据库表、索引、...

    oracle管理应用工具和sql高级应用视频教程详细完整版

    第三章:SQL基础知识 第四章:使用SELECT语句 第五章:数据的限定与排序 第六章:多表连接技术 第二部分:ORACLE SQL高级应用 第一章:使用子查询 第二章:用户访问控制 第三章:Oracle的事务和锁 第四章:使用索引 ...

    SQL编程实用大全(精华版).part1

    本书与众多的介绍某种软件的使用与操作方法的书籍不同,以SQL-89和SQL-92两种规范为基础,着重介绍SQL数据库各种产品的共同的基础知识和编程方法,在涉及具体软件时,重点介绍了MS-SQLServer的实现方式,但同时比较...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    6.2.4 标识SQL语句以便以后取回计划 153 6.2.5 深入理解DBMS_XPLAN的细节 156 6.2.6 使用计划信息来解决问题 161 6.3 小结 169 第7章 高级分组 170 7.1 基本的GROUP BY用法 171 7.2 HAVING子句 174 7.3 GROUP...

    SQL Server 数据库基础知识点整理

    SQL语句相关 DDL:数据定义语言(物理级别->在硬盘上创建或者删除) 创建数据库:CREATE database 名称 删除数据库:DROP database 名称 定位到数据库:USE 名称 设置自增:identity(起始值,自增值), 非空约束:not ...

    SQLServer2008查询性能优化 2/2

    10.4.1 不要交替使用DDL和DML语句 270 10.4.2 避免统计变化引起的重编译 271 10.4.3 使用表变量 273 10.4.4 避免在存储过程中修改SET选项 275 10.4.5 使用OPTIMIZE FOR查询提示 276 10.4.6 使用计划指南 277 ...

    SQLServer2008查询性能优化 1/2

    10.4.1 不要交替使用DDL和DML语句 270 10.4.2 避免统计变化引起的重编译 271 10.4.3 使用表变量 273 10.4.4 避免在存储过程中修改SET选项 275 10.4.5 使用OPTIMIZE FOR查询提示 276 10.4.6 使用计划指南 277 ...

    数据库应用技术之实验4-SQL数据查询

    适合人群:具备一定数据库知识基础的新手小白 能学到什么:本次实验了解DML语言的SELECT语句对数据的查询,学会用DML语言对表中的数据进行简单查询、连接查询、嵌套查询和组合查询。 阅读建议:1.“Sno,Cno”间逗号...

    SQL编程实用大全(精华版).part3

    本书与众多的介绍某种软件的使用与操作方法的书籍不同,以SQL-89和SQL-92两种规范为基础,着重介绍SQL数据库各种产品的共同的基础知识和编程方法,在涉及具体软件时,重点介绍了MS-SQLServer的实现方式,但同时比较...

    SQL编程实用大全(精华版).part2

    本书与众多的介绍某种软件的使用与操作方法的书籍不同,以SQL-89和SQL-92两种规范为基础,着重介绍SQL数据库各种产品的共同的基础知识和编程方法,在涉及具体软件时,重点介绍了MS-SQLServer的实现方式,但同时比较...

    PLSQLDeveloper下载

    编程基础知识程序结构 控制结构 变量声明与赋值 SQL基本命令 过程与函数 游标显示游标 隐式游标 简介 背景 主要特性 编程基础知识 程序结构 控制结构 变量声明与赋值 SQL基本命令 过程与函数 游标 显示游标 ...

Global site tag (gtag.js) - Google Analytics