zoukankan      html  css  js  c++  java
  • oracle小记

    -- PL/SQL程序结构 以块为单位
    /* 声明部分,以declare开头,声明变量方式从右向左 给变量赋值用:=*/
    declare 
    v_id integer;
    v_name varchar(
    20);
    cursor c_emp is select * from employee where emp_id=
    3;
    /*游标的定义
        declare cursor_name cursor
        for selectStatement
        [for{read only\ update[of column]}]
    */
    /*执行部分以begin开头*/
    begin
        open c_emp; --打开游标
        loop
            fetch c_emp into v_id,v_name; --从游标开始取数据
            exit when c_emp% notfound; --游标属性 sql%found ,sql%notfound , sql% rowcount
        end loop;
    close c_emp; --关闭游标
        
    dbms_output.put_line(v_name);
        
    /*异常处理部分,以exception开始*/
    exception
        when no_data_found then 
            dbms_output.put_line(
    '没有数据');
    end

    /*控件结构 -- 条件结构*/
    if condition then 
        statement
    else 
        statement
    end if

    /*控件结构 -- 循环结构*/
    loop  ... end loop;
    while condition loop ... end loop;
    for variable in low_bound ... upper_bound loop ... end loop;

    /*SQL语言分类*/
    /*
    数据定义语言DDL Create Drop Grant Revoke
    数据操纵语言DML Update Insert Delete
    数据控制语言DCL Commit Rollback Savapoint
    其它            Alter System Connect Allocate
    */

    /*过程与函数*/
    create 
    or replace procedure test_procedure as 
    v_f1 number := 
    1; --声明变量并赋值
    v_f2 number := 
    2;
    v_f3 varchar(
    20) := 'first';
    v_f4 varchar(
    20) := 'second';

    begin
         insert into t1 values(v_f1,v_f2);
         insert into t1 values(v_f3,v_f4);
    end test_procedure; --test_procedure可以省略

    /*游标*/
    cursor cursor_name is Sql语句;
    --
    使用游标必须有三步:打开游标,使用fetch语句将游标里面的数据取出,关闭游标
    /*触发器是一种特殊的存储过程,当发生特定的事件才被调用,主要用于多表之间的消息通知书*/

    /*select 用法*/
    select [name], xtype,case when xtype=
    'U' then '用户表' else case when xtype='S' then '系统表' end end as 类型 from sysobjects
    /*union 与union all的区别*/
    --若无ALL参数将过滤相同的记录
    select A from table1 union select A from table2;
    select A from table1 union all select A from table2;
    /*与into联用*/
    --将A表的指定数据存入B表中
    select ... into b from a;
    --创建新表
    select * into new_tableName from a where 
    1<>1;
    select top 
    0 * into new_tableName from a;
    --将查询结果保存
    select field1, field2 into result from table1 where id> 
    1000;
    --创建新表并在新表中加入自动序号
    select IDENTITY(int, 
    1,1) as autoid,* into new_tableName from table1;
    --identity函数说明
    --identity(datatype,seed,increment) 数据类型,开始数,增量
    --identity可以用在创建表时,修改表时,
    create table table1 (
           autoid int identity, --或者AutoId int IDENTITY(
    1,1)
           field1 nvarchar(
    20),
           field2 nvarchar(
    20)
    )

    /*INNER JOIN 只显示两表一一对应的记录*/
    select * from table1 inner join table2 on table1.id = table2.id order by table1.id;
    /*LEFT JOIN 显示左表所有记录与右表对应左表的记录,当右表无记录,右表相应字段用NULL填充*/
    select * from table1 left join table2 on table1.id = table2.id order by table1.id;
    /*RIGHT JOIN 显示右表所有记录与左表对应右表的记录*/
    select * from table1 right join table2 on table1.id = table2.id order by table1.id;
    /*FULL JOIN 显示左右两表所有记录*/
    select * from table1 full join table2 on table1.id = table2.id order by table1.id;


    /*GROUP BY*/
    select A,B,Sum(D) from table1 group by a,b order by a;
    --同一查询中所有未进行聚合操作的字段都需要被GROUP BY
    /*对聚合结果进行筛选用having*/
    select A,b,Sum(d) from table1 group by a,b having count(*) >
    2;

    /*变量定义
    用户变量用@打头,系统变量用@@打头
    declare @i int
    set @i =0;
    在SQL语句中对变量的赋值用SET 或者SELECT 
    */

    游标的定义,将查询结果返回为游标类型
    declare cursor cursor_name
    for select name from sysobjects

    open cursor_name
    fetch next from cursor_name into @i;
    close cursor_name

    删除游标 deallocate cursor_name;

  • 相关阅读:
    python获取公网ip,本地ip及所在国家城市等相关信息收藏
    Tkinter的下拉列表Combobox
    pyinstaller打包pyqt文件(转)
    通过pyqt5实现俄罗斯方块游戏例子
    pygame游戏开发入门例子
    python界面Tkinter编程(tkMessageBox对话框使用)
    python tkinter-菜单栏
    python tkinter-容器、子窗体
    HUNNU--湖师大--11409--Skill
    [置顶] 博客搬迁到新地址。
  • 原文地址:https://www.cnblogs.com/chenqingwei/p/1705157.html
Copyright © 2011-2022 走看看