`

oracle PL/SQL编程笔记

阅读更多
1.第一范式:实体的所有属性都是不可分割的,称该表满足1NF;
  第二范式:允许用多个属性作为主码
  第三范式:不存在传递函数依赖关系,即存在一个属性,其函数依赖的属性既不是主码也不是候选码
  Boyce-Codd范式:在表中,可以将其中一列或多列指定为主码,也可以指定其他某些列为候选码,表中也存在着其他属性。不考虑候选码,  唯一的函数依赖关系存在于表中每个属性和整个主码之间
2.SQL语言:DDL(Create drop alter crate view drop view create index drop index)、SELECT、DML、TC、DCL
3.select sysdate from dual
4.一个表中最多只能有一个Long列,Long列不能索引,不能出现在完整性约束中
5.ROWID数据类型是Orcale数据表中一个伪列,他是数据表中每行数据内在的唯一的标识。
6.describe <table_name>;drop table <table_name>;
7.delete from <table_name>;全部删除
8.order by必须是最后一条子句
9.日期默认格式是“DD-MON-YY”,to_char(date,'YYYY-MM-DD')
10.NVL(EXPR1,EXPR2):expr1和expr2必须为同一数据类型,选择expr1和expr2中不为null的那个值;
11.NVL2(EXPR1,EXPR2,EXPR3):类似于EXPR1 is null?EXPR2:EXPR3
12.COLALESCE(EXPR1,...[EXPRN]);选择第一个非空值
13.=,>,<,>=,<=,<>,!=,IN,ONT IN,BETWEEN AND ,NOT BETWEEN AND ,LIKE ,NOT LIKE,IS NULL,IS NOT NULL,AND ,OR ,NOT
14.逻辑运算符AND,OR,NOT中,not优先级最高,and其次,or最低,并且他们的优先级低于任何一种比较操作符
15.count(column):列不为null的行数
16.group by 将表的行分为若干组,组中的行并不重复,然后通过列函数分别统计每个组,这样每个组都有一个统计值
   select mdzt,count(*) from md_mdjcxx group by mdzt;
17.group by   having
18.select department_id ,AVG(wage) from teachers where wage>3000 group by department_id having AVG(wage)>=2000 order by 2;
19.IN:匹配于子查询结果的任意一个值
   ANY:只要符合子查询结果的任意一个值
   ALL:必须要符合子查询结果的所有值结果
20.union:用于得到两个查询结果集的并集,并集中自动去掉重复行
   union all:用于得到两个查询结果集的并集,并集中保留重复行
   intersect:用于得到两个查询结果结果集的交集,交集以结果的第一列进行排序;
   minus:用于得到两个查询结果集的差集,差集以结果的第一列进行排序
   使用并、交、差三种运算符进行集合操作时,要求参与集合操作的查询结果集列的数据类型相匹配
21.事务处理语句:commit(提交)、rollback(撤销)、savepoint(保留点)
22.TRUNCATE TABLE <table_name>删除teachers表的所有数据
23.savepoint savepoint_name 可撤销部分事务
24.set tansaction read only:设置当前事务为只读事务,不允许执行DML语句,只允许执行查询语句
25.ADD_MONTHS(x,n):返回日期x加上n个月所对应的日期,n可为负值
26.LAST_DAY(x):返回日期x所在月份的最后一天的日期
27.MONTHS_BETWEEN(x,y):返回日期x和日期y两个日期之间相差的月数
28.create table teacher2 as select * from teacher
29.select * from user_sys_privs
30.删除表的外关键字约束:drop constraint t1_fk_d1;删除表的某列的notnull约束:alter table student modify name null;禁止约束:alter table student disable constraint sex_ch
31.建立索引:create index wage_idx on teacher(wage);唯一索引:create unique index wage_idx on teacher(wage);
32.建立视图:create view departments_view as select * from departments;
33.select table_name,tablespace_name,temporary from user_tables;
34.修改视图:create or replace view student_view as slect student_id,name,specialty from students where sex='男'
35.PL/SQL编程:
   set serveroutput on
   DECLARE
     Declarations
   BEGIN
     Executable code
   EXCEPTION
     Exceptional handlers
   END;
ps: declare
      v_sname varchar2(10)
    begin
      select name into v_sname from students where student_id=&student_id;
    dbms_output.put_line('学生姓名:'||v_sname);
    exception
      where no_data_found then
      dbms_output.put_line('输入的学号不存在');
    end;
    /
输入student_id的值:10228
36.如果字符串文字中本身就包含单引号,则可用两个连续的单引号进行转义。或者使用其他分隔符([],(),<>):q'[I'm a student.]'
37.case
     when ...then
     when ...then
     else
   end case;
38.为了使PL/SQL代码中定义的变量,能与数据库中的某一列或某一行的数据类型相联系,oracle提供了%type和%rowtype的变量定义方式(甚至可以使某一张表)
   Declare v_student student/%rowtype;
   Begin
     select * into v_student from student
   END;
   /
39.变量初始化
   declare v_id student.student_id%type:=10199(注意:=而不是=)
40.if condition then
     statements1;
   else  statements2
   end if;
41.loop
     statement(s);
     exit [when condition];
   end loop;
42.while condition loop
    statement(s);
   end loop;
43.for loop_index in [REVERSE] lowest_number .. highest_number loop
     statement(s);
   end loop;REVERSE 表示循环控制变量从上限向下限递减(减1)计数
44.异常:Exception when zero_divide then dbms_output.put_line('除数为0'); end;/
45.输入字符串接收应该为
   v_specialty :='&specialty';
46.抛出自定义异常:raise exception_name;
47.声明游标:cursor cursor_name is select_statement;
declare cursor students_cur is select name,dob from students where specialty='计算机';
48.打开游标:open students_cur;
49.读取游标:fetch students_cur into v_sname,v_dob;
50.关闭游标:close cursor_name;
51.select object_name ,created,status from user_objects where object_name='tatol';通过视图user_objects查看函数信息
52.select text from user_source where name='tatol';
53.函数中的out参数必须预先定义:variable v_sname varchar2(10);
   函数中返回的参数也得预先定义:variable grade number; execute :grade:=show_grade(101101,10201,:v_sname,:v_cname);
54.输出返回的参数 print :v_sname :v_cname
55.函数输入参数形式为:
   variable v_id number
   variable v_name varchar2(10)
   execute :v_id:=222
   execute :v_name:='航空机械'
其实最好的方式是在调用函数的时候一起赋值,就不用一个一个execute了
56.建立触发器:
   create or replace trigger chage_teacher
     before insert or update or delete on teachers
   begin
     if(tochar(sysdate,'HH24')not between '8' and '17') or (to_char(sysdate,'dy','nls date_langudage=american')in ('sat','sun'))
     then
     raise_application_error(-20000,'在非工作时间不能改变教师信息');
     end if;
   end chage_teacher;
57.禁用触发器执行:alter trigger chage_teacher disable;
   启用:alter trigger chage_teacher enable;
58.审计:
    create or replace trigger s_g_change
     after update of score on students_grade
     for each row
     begin
      insert into students_grade_change
       values(:old.student_id,:old.course_id,:old.score,:new.score.sysdate);
     end s_g_change;
59.常用命令:
   connect sys/password@localhost as sysdba;
   disc
   password scott
   /*缓冲区*/
   list
   append
   change
   del
   input
   N
   edit
   run或/
   clear
   /*文件*/
   save(保存缓冲区内容到文件)
   get(获取)
   start或者@(运行SQL脚本文件)
   /*交互式命令*/
   &:使用替换变量,即需要运行时输入的变量,且注意字符串数据必须‘&varibale_name’
   &&:只需给替换变量赋值一次,在当前环境中一直使用
   variable:变量 variable variable_name type
   print
   prompt(输出提示信息)
   pause(暂停sql脚本文件的执行)
   accept(用于定义替换变量的类型)
方案(schema)是方案对象(schema  object)的一个结合,每一个数据库用户对应一个方案。
select object_name,object_type from user_objects;
selct owner,object_name,object_type from all_objects.
slect owner,object_name,object_type from sys.dba_objects;
v$datafile视图包含数据库数据文件的信息
v$fixed_table视图包含性能表和数据库视图的信息
SGA(系统全局区):oracle数据库存放系统信息的一块内存区域
恢复管理器:RMAN
iSQL*PLUS URL:http://localhost:5560/isqlplus
Enterprise Manager 10g Database Control URL:http://localhost:5500/em



数据结构与java:
1.在开始一个大循环的开始前,是不是可以先将其分组得到的效率会更高一点呢?当然这有可能会增加内存的消耗。
2.解决散列表冲突:分离链接法和开放定址法:分离链接法将新插入的元素插入到链表的前端:因为经常发生这样的事实:新近插入的元素最

有可能不久又被访问
3.归并排序的话要实现先排好序,那效率肯定高了
0
0
分享到:
评论

相关推荐

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...

    oracle 9i pl/sql程序设计笔记

    通过上述对Oracle 9i PL/SQL程序设计笔记的总结,我们可以看到PL/SQL作为一种强大的数据库编程语言,提供了丰富的功能来支持数据处理、事务控制及业务逻辑的实现。掌握PL/SQL的不同块类型及其使用方法对于开发高效、...

    pl/sql学习笔记

    PL/SQL(Procedural Language/Structured Query Language)是Oracle数据库中的过程式编程语言,它结合了SQL查询语句和传统的过程式编程元素,使得在数据库管理中进行复杂逻辑处理成为可能。以下是对PL/SQL的学习笔记...

    PL/SQL学习笔记

    PL/SQL是Oracle公司开发的一种...总之,PL/SQL是Oracle数据库强大功能的重要组成部分,它为数据库编程提供了丰富的过程化控制功能和面向对象的特性。通过学习和掌握PL/SQL,开发者可以构建高效、复杂的数据库应用程序。

    pl/sql个人笔记.

    PL/SQL(程序化SQL)是Oracle数据库的标准编程语言,它扩展了SQL的功能,允许在数据库环境中编写过程化的业务逻辑。在PL/SQL中,可以嵌入多种类型的SQL语句来实现复杂的数据处理任务。根据标题和描述中的内容,我们...

    PL/SQl超级笔记

    总的来说,“PL/SQL超级笔记”应该涵盖了从基本语法到高级特性的全面教程,通过学习,新手可以逐步掌握如何使用PL/SQL进行数据库编程,从而更好地管理和操作Oracle数据库。配合"oracle_ppt"中的PPT材料,学习效果会...

    oracle/SQL和PL/SQL课堂笔记

    Oracle SQL和PL/SQL是数据库管理和编程的重要工具,主要用于处理Oracle数据库中的数据。这篇课堂笔记主要涵盖了基础的SQL查询语法和部分PL/SQL概念。 首先,SQL查询的基础是从数据库中选择数据。`SELECT`语句用于...

    pl/sql数据库学习笔记

    PL/SQL是一种高级的程序语言,主要用于Oracle数据库管理系统中。下面是PL/SQL数据库学习笔记的知识点总结。 一、基本原则 *瀑布模型:需求分析→设计(概要设计,详细设计:SQL语句,变量(初始值是多少,最终值...

    PL/SQL笔记pl/sql笔记

    PL/SQL是Oracle数据库的一种编程语言,它结合了SQL(结构化查询语言)与过程编程语言的功能,使得数据库管理和应用程序开发更加便捷。本篇笔记主要涵盖了PL/SQL的基础语法和常用操作,包括检索数据、操纵数据以及SQL...

    pl/sql培训笔记

    PL/SQL,即Procedural Language for SQL,是Oracle数据库的一种内嵌式编程语言,结合了SQL的数据操作能力和过程化编程语言的控制结构。它提供了一种高效、安全的方式来处理数据,支持复杂的业务逻辑实现。PL/SQL的...

    PL/SQL学习教程,附笔记

    PL/SQL,全称是Procedural Language/Structured Query Language,是Oracle数据库提供的一种结合了SQL语言和过程式编程的编程环境。它扩展了SQL的功能,使得开发人员能够编写复杂的数据库应用程序,处理事务、实现...

    PL/SQL听课笔记

    ### PL/SQL听课笔记 #### 一、PL/SQL简介 **PL/SQL**(Procedural Language for SQL)是一种专门为Oracle数据库设计的过程化语言扩展。它是在标准SQL基础上增加了一系列高级编程特性,如变量、控制结构、函数、...

    我的PL/SQL学习笔记(一)

    PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种结合了SQL语言与过程式编程的高级语言,主要用于数据库管理和应用程序开发。在这个“我的PL/SQL学习笔记(一)”中,我们将探讨PL/SQL的基础知识,包括其...

    oracle笔记pl/sql流程控制

    oracle笔记pl/sql流程控制,有具体的代码案例,流程控制的知识点笔记!

    pl/sql笔记

    PL/SQL(Procedural Language for SQL)是Oracle数据库系统中的一种过程化编程语言,它结合了SQL的数据处理能力与传统过程化语言的控制结构,使得在数据库内部进行复杂逻辑处理成为可能。以下是PL/SQL能够实现的主要...

Global site tag (gtag.js) - Google Analytics