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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值