`

sql相关

阅读更多

两种表复制语句:

eg:

selectinto destTbl from srcTbl  注:destTbl 表可不存在,运行是自动创建
insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl  注:5是常量,不是来自表中的字段 .destTbl表要存在

 

oracle 查询:http://www.iteye.com/topic/578724

 

删除表中重复记录:

1.记录完全相同

select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp

2.有字段相同

delete from tbl where rowid not in (select max(rowid) from tbl tgroup by t.col1, t.col2);

 

delete from tbl where (col1, col2) in (select col1,col2 from tblgroup bycol1,col2 having count(*) >1)

 

and rowid not in(select min(rowid)from tbl group by col1,col2 havingcount(*) >1)

 

 

--===============带参数的游标==================--
DECLARE
   dept_code emp.deptno%TYPE; --声明列类型变量三个
   emp_code   emp.empno%TYPE;
   emp_name   emp.ename%TYPE;
   CURSOR emp_cur(deptparam NUMBER) IS
     SELECT empno, ename FROM EMP WHERE deptno = deptparam; --声明显示游标
BEGIN
   dept_code := &部门编号; --请用户输入想查看的部门编号
   OPEN emp_cur(dept_code); --打开游标
   LOOP
     --死循环
     FETCH emp_cur
       INTO emp_code, emp_name; --提取游标值赋给上面声明的变量
     EXIT WHEN emp_cur%NOTFOUND; --如果游标里没有数据则退出循环
     DBMS_OUTPUT.PUT_LINE(emp_code || '' || emp_name); --输出查询
   END LOOP;
   CLOSE emp_cur; --关闭游标
END;

--=================REF游标==================--

ACCEPT tab FROMPT '你想查看什么信息?员工(E)或部门信息(D):'; --使用ACCEPT命令弹出对话框让用户输入数据
DECLARE
   TYPE refcur_t IS REF CURSOR; --声明REF游标类型
   refcur     refcur_t; --声明REF游标类型的变量
   pid        NUMBER;
   p_name     VARCHAR2(100);
   selection VARCHAR2(1) := UPPER(SUBSTR('&tab', 1, 1)); --截取用户输入的字符串并转换为大写
BEGIN
   IF selection = 'E' THEN
     --如果输入的是'E',则打开refcurr游标,并将员工表查询出来赋值给此游标
     OPEN refcur FOR
       SELECT EMPNO ID, ENAME NAME FROM EMP;
     DBMS_OUTPUT.PUT_LINE('=====员工信息=====');
   ELSIF selection = 'D' THEN
     --如果输入是'D',则打开部门表
     OPEN refcur FOR
       SELECT deptno id, dname name FROM DEPT;
     DBMS_OUTPUT.PUT_LINE('=====部门信息======');
   ELSE
     --否则返回结束
     DBMS_OUTPUT.PUT_LINE('请输入员工信息(E)或部门信息(D)');
     RETURN;
   END IF;
   FETCH refcur
     INTO pid, p_name; --提取行
   WHILE refcur%FOUND LOOP
     DBMS_OUTPUT.PUT_LINE('#' || pid || ':' || p_name);
     FETCH refcur
       INTO pid, p_name;
   END LOOP;
   CLOSE refcur; --关闭游标
END;

--===================动态SQL=================--
VARIABLE maxsal NUMBER; --声明变量
EXECUTE :maxsal := 2500; --执行引用并给变量赋值
DECLARE
   r_emp EMP%ROWTYPE; --声明一个行类型变量
   TYPE c_type IS REF CURSOR; --声明REF游标类型
   cur       c_type; --声明REF游标类型的变量
   p_salary NUMBER; --声明一个标量变量
BEGIN
   p_salary := :maxsal; --引用变量
   --使用USING语句将引用到的值传给动态SQL语句'SAL >: 1'中的'1'
   OPEN cur FOR 'SELECT * FROM EMP WHERE SAL >: 1 ORDER BY SAL DESC'
     USING p_salary;
   DBMS_OUTPUT.PUT_LINE('薪水大于' || p_salary || '的员工有:');
   LOOP
     FETCH cur
       INTO r_emp;
     EXIT WHEN cur%NOTFOUND;
     DBMS_OUTPUT.PUT_LINE('编号:' || r_emp.empno || '姓名:' || r_emp.ename ||
                          '薪水:' || r_emp.sal);
   END LOOP;
   CLOSE cur; --关闭游标
END;

 

存储过程

create or replace procedure PROC_INSETFORCE
 is
 r_ft cm_ct_force_test%ROWTYPE; --声明一个行类型变量
 contentid number;
 c_temp number;
 CURSOR forcttest_cur IS SELECT * FROM cm_ct_force_test t;
begin
  OPEN forcttest_cur; --打开游标  
  LOOP     --死循环
  --FOR i IN 1..12 LOOP   
    FETCH forcttest_cur INTO r_ft; --提取游标值赋给上面声明的变量
    EXIT WHEN forcttest_cur%NOTFOUND; --如果游标里没有数据则退出循环   
    SELECT seq_cm_contentid.NEXTVAL INTO contentid FROM DUAL;
    --DBMS_OUTPUT.PUT_LINE('seq:'||contentid);
    select count(*) into c_temp from biz_user_infor_verify t where t.verify_key=r_ft.jszh and t.type='7' and t.zoneid='379';
    if c_temp<1 then
    insert into biz_user_infor_verify(VERIFY_KEY,TYPE,ZONEID)values(r_ft.jszh,'7','379');
    end if;
    --DBMS_OUTPUT.PUT_LINE('count:'||c_temp);
    insert into cm_content values (contentid,'force','7','00000','7月份强制违法','7月份强制违法',0,'0006',sysdate,sysdate,sysdate);
    insert into cm_ct_force values (contentid,'379',r_ft.dabh,r_ft.jszh,r_ft.fzjg,to_date(r_ft.wfsj,'yyyy-MM-dd HH24:mi:ss'),r_ft.wfdz,r_ft.wfxw1,r_ft.cljg,r_ft.cjbj);    
    --DBMS_OUTPUT.PUT_LINE(r_ft.zoneid || '' || r_ft.dabh); --输出查询
   
    if mod(forcttest_cur%rowcount,100)=0 then
     commit;
     DBMS_OUTPUT.PUT_LINE(forcttest_cur%rowcount);
    end if;
    --if forcttest_cur%rowcount>610 then
    --DBMS_OUTPUT.PUT_LINE(forcttest_cur%rowcount);
    --end if;
  END LOOP; 
  commit;
  CLOSE forcttest_cur; --关闭游标
end PROC_INSETFORCE;

 

 

Set serveroutput on /*使dbms_output.put_line可以显示在屏幕上

 

常用函数介绍:

 

返回查询结果中相同的部分 
exp:各个部门中有哪些相同的工种 
select job 
from account 
intersect 
select job 
from research 
intersect 
select job 
from sales; 

minus运算 
返回在第一个查询结果中与第二个查询结果不相同的那部分行记录。 
有哪些工种在财会部中有,而在销售部中没有? 
exp:select job from account 
minus 
select job from sales;

分享到:
评论

相关推荐

    一款与SQl有关的程序

    一款与SQl有关的程序

    SQL相关操作笔记(附习题)

    SQL相关操作 插入 删除 更新 触发器 视图 索引 权限 授权图 插入 ABC 删除 delete from workson where empno=(select empno from employee where empname='\u5218\u56fd\u98ce') and projectno=(select ...

    数据库SQL有关文件

    数据库SQL有关文件

    SQL相关电子书

    SQL的相关知识涵盖了基础语法、高级查询技巧、数据库设计、性能优化等多个方面。 《SQL必知必会》这本书是SQL学习的经典之作,它适合SQL初学者和有一定经验的数据库管理员阅读。书中详细介绍了SQL的基本概念,包括...

    sqlsql工具下载

    标题中的"sqlsql工具下载"指的是SQL相关的数据库管理工具,可能是某个特定的软件或者一系列工具的集合。在数据库管理领域,SQL(Structured Query Language)是用于处理关系型数据库的标准编程语言,而SQL工具则帮助...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一)

    第一部分 sql和pl/sql相关工具  第1章 在windows 平台上安装oracle database 11g  第2章 配置网络服务名  第3章 使用sql database  第4章 使用sql*plus 第二部分 sql  第5章 sql和pl/sql综述  第6章 简单查询 ...

    SQL Prompt 6.1 5.3 sql格式化工具 SqlServer格式化工具

    压缩包内的文件"格式化工具SSMSToolsPack.3.2.2.0.msi"可能是另一个与SQL相关的工具集合,SSMS Tools Pack,它为SQL Server Management Studio (SSMS) 提供额外的增强功能。这个工具包可能包含多种实用工具,如...

    PL/Sql相关语法

    而包是包含一组相关函数和过程的逻辑单元,可以组织和封装相关的业务逻辑。 总的来说,PL/SQL是Oracle数据库的重要组成部分,它提供了一种强大、灵活且高效的编程方式,使得数据库管理员和开发人员能够更有效地管理...

    java控制台输出可执行sql,支持oracle,mysql,sqlserver,kingbas

    从标签"sqlserver oracle mysql java sql"我们可以推断,这个库专注于SQL相关的操作,特别是与Java编程语言结合使用时。它涵盖了几个主流的关系型数据库管理系统,如SQL Server、Oracle和MySQL,以及可能不太常见的...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二)

    第一部分 sql和pl/sql相关工具  第1章 在windows 平台上安装oracle database 11g  第2章 配置网络服务名  第3章 使用sql database  第4章 使用sql*plus 第二部分 sql  第5章 sql和pl/sql综述  第6章 简单查询 ...

    Hive-SQL相关语法

    Hive-SQL相关语法

    基于SQL 语法解释器JSqlParser实现的SQL解析工具

    总之,JSqlParser作为一个强大的SQL解析工具,通过提供对SQL语句的结构化解析,极大地简化了开发者处理SQL相关任务的复杂度。通过学习和应用JSqlParser,我们可以更好地理解和控制SQL查询,提高代码的健壮性和安全性...

    java的sql解析器jsqlparser

    Java的SQL解析器JSQLPaser是一个强大的开源库,专门设计用于处理SQL语句的解析工作。这个库允许开发者分析SQL语句的结构,提取出其中的关键元素,如列名、...在处理与SQL相关的任务时,JSQLPaser是一个值得信赖的伙伴。

    关于SQL Server 2000 的外文翻译

    在“SQL2000外文翻译”文件中,我们可以找到SQL Server 2000的相关术语和概念的英文原文及其对应的中文翻译,这对于学习和工作中需要查阅或交流英文资料的读者来说是宝贵的资源。通过对照阅读,可以加深对SQL Server...

    Oracle 11g SQL和PL SQL从入门到精通〖送源代码〗

    第一部分SQL和PL/SQL相关工具  第1章在Windows平台上安装OracleDatabase11g  第2章配置网络服务名  第3章使用SQLDatabase  第4章使用SQL*Plus 第二部分SQL  第5章SQL和PL/SQL综述  第6章简单查询  第7章SQL...

    绿色版sqlserver客户端工具

    ADO(ActiveX Data Objects)是微软提供的一个数据库访问接口,用于在应用程序中连接和操作数据库,而"SqlW"可能代表SQL的简写,暗示这是一个与SQL相关的命令行工具或者图形化界面工具。 对于客户端工具而言,它...

    SqlTree_src

    而"SqlTree_src"项目,从其标题和描述来看,显然是一款用C#编程语言实现的与SQL相关的源代码库。这个项目可能是一个针对SQL查询进行处理、分析或优化的工具,或者是用于帮助用户构建和理解SQL查询结构的可视化界面。...

    人大金仓数据库SQL手册

    该手册涵盖了SQL语言的基础知识、各种元素、操作符、函数以及其他SQL相关特性,并按照国际标准SQL:1992、SQL:1999和SQL:2003进行了编写。KingbaseES是一个遵循这些标准并进行了适当扩展的关系型数据库管理系统。 ##...

    SQL2005 x64 SP4文件

    3、完成安装后,关闭所有和SQL相关的服务,将刚才备份的原sqlservr.exe和sqlos.dll文件复制到Binn目录下(不然无法安装SP4,因为之前的那两个文件是SP4的)。然后直接安装SP4。 完成安装后,重启服务器,妥啦~!

Global site tag (gtag.js) - Google Analytics