--视图的概念:视图就是提供⼀个查询窗⼝,所有数据来⾃于原表
create index idx_ename on emp(ename);
--单列索引触发规则,条件必须是索引列中的原始值。
--单⾏函数,模糊查询,都会影响索引的触发。
select * from emp where ename='SCOTT';
--复合索引
create index idx_enamejob on emp(ename,job);
--复合索引中第⼀列为优先检索列
--如果要触发复合索引,必须包含有优先检索列中的原始值。
select * from emp where ename='SCOTT' and job='xx';--触发复合索引。
select * from emp where ename='SCOTT' or job='xx';--不触发索引。
select * from emp where ename='SCOTT';--触发单列索引。
--主要记索引的概念和它的触发规则即可’
--pl/sql编程语⾔
--pl/sql编程语⾔是对sql语⾔的扩展,使得sql语⾔具有过程化编程的特性。
--pl/sql编程语⾔⽐⼀般的过程化编程语⾔,更加灵活⾼效。
--pl/sql编程语⾔主要⽤来编写存储过程和存储函数等。
--声明⽅法 int只能存整数
--赋值操作可以使⽤:=也可以使⽤into查询语句来赋值
declare
--定义⼀个数值类型
i number(2) :=10;
s varchar2(10) :='⼩明';
--想当于在emp表到enamel这个列,把它的类型复制粘贴到这个地⽅
ame%type; --引⽤型变量
--如何存⼀个对象?
emprow emp%rowtype;--记录型变量,因为存放的是⼀⾏记录,所以是记录型变量;begin
sql自学难吗dbms_output.put_line(i);
dbms_output.put_line(s);
select ename into ena from emp where empno=7788;
dbms_output.put_line(ena);
select * into emprow from emp where empno=7788;
dbms_output.put_ame ||'的⼯作为:'|| emprow.job);
end;
--pl/sql中的if判断
--输⼊⼩于18的数字,输出未成年。
--输⼊⼤于18⼩于40的数字,输出中年⼈。--输⼊⼤于40的数字,输出⽼年⼈。declare
i number(3) :=ⅈ
begin
if i<18 then
dbms_output.put_line('未成年');
elsif i<40 then
dbms_output.put_line('中年⼈');
else
dbms_output.put_line('⽼年⼈');
end if;
end;
--pl/sql中的loop循环
--⽤三种⽅式输出1到10⼗个数字
--while循环
declare
--定义⼀个number类型
i number(2) :=1;
begin
--满⾜什么条件的情况下循环
while i<11 loop
dbms_output.put_line(i);
i :=i+1;
end loop;
end;
--exit循环,⼀上来就循环
declare
i number(2) :=1;
begin
loop
exit when i>10;
dbms_output.put_line(i);
i :=i+1;
end loop;
end;
--for循环
declare
begin
--在1-10的情况下进⾏循环
for i in 1..10 loop
dbms_output.put_line(i);
end loop;
end;
--游标,可以存放多个对象,多⾏记录。
--输出emp表中所有员⼯的姓名
declare
--定义了⼀个游标为c1的游标,⽽且把emp表中所有的记录存放到游标中cursor c1 is select * from emp;
emprow emp%rowtype;
begin
--遍历游标之前必须打开它
open c1;
loop
fetch c1 into emprow;
exit when c1%notfound;
dbms_output.put_ame);
end loop;
close c1;
end;
--给指定部门员⼯涨⼯资
declare
cursor c2(eno emp.deptno%type)
is select empno from emp where deptno =eno;
pno%type;
begin
open c2(10);
loop
fetch c2 into en;
exit when c2%notfound;
update emp set sal=sal+100 where empno=en;
commit;
end loop;
close c2;
end;
--查询10号部门员⼯信息
select * from emp where deptno=10;
-
-存储过程:存储过程就是提前已经编译好的⼀段pl/sql语⾔,放置在数据库端--------可以直接被调⽤。这⼀段pl/sql⼀般都是固定步骤的业务。
--创建存储过程的语法:
--create [or replace] PROCEDURE 过程名[(参数名 in/out 数据类型)]
--AS
--begin
--PLSQL⼦程序体;
--end;
----给指定员⼯涨100块钱
create or replace procedure p1(pno%type)
is
begin
update emp set sal=sal+100 where empno=eno;
commit;
end;
--测试
select * from emp where empno=7788;
declare
begin
p1(7788);
end;
--通过存储函数实现计算指定员⼯的年薪
--存储过程和存储函数的参数都不能带长度
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论