createsequencemyseque;
select myseque.nextval fromdual;
createtablestudent(
idnumber,
namevarchar2(20)
)
insertintostudent(id,name)values(myseque.nextval,‘zhangsan’);
select*fromstudent;
索引
可以理解为书的页面
创建索引的必须条件:
最好是数值型,里面的值都不同
格式:create index 索引名 on 表名(字段名)
createindexnameindex on student(name);
同义词
格式:create synonym 同义词 for 原词
createsynonymabc for student;
select*fromabc;
同义词也有权限问题:
Sqlplus / as sysdba; 以管理员身份登录
Show user; 查看当前用户
Grant create synonym to scott; 授予scott创建视图的权限
触发器(trigger)
当某种情形发生的时候,触发器就执行一定plsql语句。
触发器分为行级触发器和语句级触发器
行级触发器:操作表中的每一行语句都会执行。
语句级触发器:每次操作,不管你操作多少行,只执行一次。
格式:create [or replace]trigger 触发器名字
[before|after] 定义触发器执行的时间
<insert |update|delete> 定义触发器执行的事件
On 表名|视图名
[for each row] 行级触发器
Begin
Plsql语句;
End;
在某个表里,每插入一条记录,我们就打印一句helloworld
createorreplacetriggermytrigger
after
insert
On student
foreachrow
Begin
dbms_output.put_line(‘hellowrld’);
End;
非工作日的时候,不能在student表中插入数据
createorreplacetriggeraddrecodeNoRest
beforeinsertOnstudent
foreachrow
Begin
–判断今天是否是工作,如果不是,抛出异常
if(to_char(sysdate,‘DAY’)in(‘星期六’,‘星期日’,‘星期二’))
thenraise_application_error(-20001,‘不能在休息日修改内容’);
endif;
End;
存储过程~~(函数)~~
类似于java的方法
它是按照一定功能,把plsql语句整合在一起,形成代码块。
存储过程的特点是:可以有参数,但是必然有返回值。
格式:create or replace procedure 存储过程名
As
Begin
Plsql语句;
End;
打印HelloWorld
createorreplaceproceduresayHello
As
hello varchar2(20);
Begin
hello :=‘helloworld’;
dbms_output.put_line(hello);
End;
带参数,根据输入的id,修改某人的工资+100
In 输入参数
Out 输出参数
Inout 输入输出参数
createorreplaceprocedureaddMoney(eno innumber)
As
esal emp.sal%type;
Begin
selectsal into esal fromemp where empno =eno;