小布老师Oracle11g基础知识小记

SQL> conn/as sysdba                 //sys权限


SQL> select username, account_status from dba_users order by username;           //查看账户状态,是否锁定?

 


第一集:Introduction to PL/SQL

 

Block 的基本结构: DECLARE(optional)  - Variables, cursors, user-defined, exceptions
                   BEGIN(mandatory)    - SQL statements
                                       - PL/SQL statements
                   EXCEPTION(optional) - Actions to perform when errors occru
                   END(mandatory); //有分号
                  
                  
Block Types:  Anonymous(匿名的,不是存储在数库里,只能使用一次。), Procedure(过程的), Function(必须返回值)

 


匿名块的执行过程:

SQL> declare
  2  v_fname varchar2(20);                                      //定义一个变量 v_fname
  3  begin
  4       select first_name into v_fname from employees where employee_id = 100;

  5  end;
  6  /                                 //结束
 
 
  SQL> help set               //查看帮助
 
 SQL> set serveroutput on            //将服务器输出端打开
 
 

SQL> declare
  2       v_fname varchar2(20);
  3  begin
  4       select first_name into v_fname from employees where employee_id = 100;

  5       dbms_output.put_line('The result is ' || v_fname);                          //输出结果, ||连接字符串
  6  end;
  7  /
 
 
 
 
 
  第二集:Declaring PL/SQL Variables
 
 
 
  A variable name:(大小写不敏感)
 
  1, Must start with a letter
  2, Can include letters or numbers
  3, Can include special charaacters(such as $,_,and #)  //#和$尽量不用
  4, Must contain no more than 30 characters
  5, Must not include reserved words
 
 
 
  Syntax:
    identifier [CONSTANT] datatype [NOT NULL]
           [:= | DEFAULT expr];
          
          
 
 
 
 
 
SQL> declare
  2       v_myName varchar(20);
  3  begin
  4       dbms_output.put_line('My name is: '|| v_myName);
  5       v_myName := 'John';
  6       Dbms_output.put_line('My name is: '|| v_myName);
  7  end;
  8  /
My name is:
My name is: John

PL/SQL 过程已成功完成。

 


SQL> declare
  2     v_myName varchar2(20) := 'John';                                       //初始化,如果有限制not null则必须进行初始化
  3  begin
  4     dbms_output.put_line('My name is: '|| v_myname);                     //变量名大小写不敏感
  5  end;
  6  /
My name is: John

 

 


分隔符:


SQL> declare
  2     v_event varchar2(15);
  3  begin
  4     v_event := q'!Father's day!';                                  //如果字符串里有 ’ 则要使用分隔符。 不要忘了q 分隔符可以自己任意取。(这里是!)
  5     dbms_output.put_line('3re Sunsday in June is :'||v_event);
  6     v_event := q'[Mother's day]';                                    //这里是[].
  7     dbms_output.put_line('2nd Sunday in May is :'||v_event);
  8  end;
  9  /
3re Sunday in June is :Father's day
2nd Sunday in May is :Mother's day

PL/SQL 过程已成功完成。


修改成如下程序的过程:

  4             //定位到第四行
     c/q'!/"
     c/'/''           //两个单引号
     c/"/'
     c/!'/'
     l
     /


SQL> declare
  2     v_event varchar2(15);
  3  begin
  4     v_event := 'Father''s day';                      //另一种分隔符的方法,但不常见
  5     dbms_output.put_line('3re Sunday in June is :'||v_event);
  6     v_event := q'[Mother's day]';
  7     dbms_output.put_line('2nd Sunday in May is :'||v_event);
  8  end;
  9  /
 
 
 
 
 
 
  Types of Variables
 
  -Scalar                标量
  -Composite             复合型
  -Reference            引用
  -Large object(LOB)     
 
  Non-PL/SQL variables:Bind variables
 
 
 
  Scalar Data Types: 1, Hold a single value. 2, Have no internal components
 
 
 
 
  %Type Attribute(oracle 独有):让变量绑定某一列或另一个变量的类型,这样如果类型改变,这个变量也跟着改变了,不需要另外修改
 
 
 
 
  Declaring Boolean Variables:(true, false, null)
 
 
 
 
 
  Bind Variables(外部变量,环境变量(c, c++, java),不是oracle内部的)。
 
  绑定变量的例子:
SQL> variable b_salary number;                          //定义引用参数
SQL> begin
  2     select salary into :b_salary from employees where employee_id = 178;      //必须加:而且不能有空格
  3  end;
  4  /

PL/SQL 过程已成功完成。

SQL> print b_salary;                                      //打印变量,这里就不需:了,也可以不用分号

  B_SALARY
----------
      7000

SQL> select first_name, last_name from employees where salary =:b_salary;                   //变量是存储在环境里的,在别的表里也可以引用

FIRST_NAME           LAST_NAME
-------------------- -------------------------
Oliver               Tuvault
Sarath               Sewall
Kimberely            Grant

 
 
 
 
 
  SQL> variable b_emp_salary number
SQL> set autoprint on                                      //自动输出
SQL> declare
  2     v_empno number(6) := &empno;                        //引用变量
  3  begin
  4     select salary into :b_emp_salary
  5     from employees where employee_id = v_empno;
  6  end;
  7  /
输入 empno 的值:  178
原值    2:      v_empno number(6) := &empno;
新值    2:      v_empno number(6) := 178;

PL/SQL 过程已成功完成。


B_EMP_SALARY
------------
        7000

 
 
 
 
  CLOB:  字符串
  BLOB:  二进制 (图片或视频)数据是存储在数据库里的
  BFIE: 和BLOB的区别( 数据是存储在系统上的,只在数据库里留一个指针)
  NCLOB: 存放一些非英文字母的,如韩国语言
 
 
 
 
 
 
 
 
 
 
 
 
 
第四集:

 


//BEGIN <<outer>>            //打标签
SQL> DECLARE
  2     v_father_name VARCHAR2(20):='Father';
  3     v_date_of_birth DATE:='1-11月-1972';
  4  BEGIN
  5     DECLARE
  6             v_child_name VARCHAR2(20):='Child';
  7             v_date_of_birth DATE:='28-2月-1991';                         //变量名和外层的变量名相同
  8     BEGIN
  9             DBMS_OUTPUT.PUT_LINE('Father''s Name: '||v_father_name);
 10             DBMS_OUTPUT.PUT_LINE('Date of Birth: '||v_date_of_birth);      //和外层相同变量名优先使用内层的,如果要使用外层的则用:out.v_date_of_birth指明使用外部的变量并去掉头尾的注释。
 11             DBMS_OUTPUT.PUT_LINE('Child''s Name: '||v_child_name);
 12  END;
 13     DBMS_OUTPUT.PUT_LINE('Date of Birth: '||v_date_of_birth);            //输出外层的
 14  END;
 //END outer;
 15  /
 
 输出如下:
 
Father's Name: Father
Date of Birth: 28-2月 -91
Child's Name: Child
Date of Birth: 01-11月-72

PL/SQL 过程已成功完成。

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值