Oracle继续学习中。。。。。。
/*
以下代码是对emp表进行显示宽度设置*/
col empno for 9999;
col ename for a10;
col job for a10;
col mgr for 9999;
col hiredate for a12;
col sal for 999999;
col comm for 9999;
col deptno for 99;
//--------------------------------------------------------------------------------------------------------------------------------
写一个PLsql程序,输出"hello world"字符串
begin
dbms_output.put_line('hello world');
end;
/
sql> begin 2 dbms_output.put_line('hello world'); 3 end; 4 / PL/sql 过程已成功完成。设置显示PLsql程序的输出结果,默认情况下,不显示PLsql程序的输出结果
set serveroutput on;
使用基本类型变量和常量,求10+100的和
declare
psum number(3);
msg varchar2(20);
begin
psum:=100+10;
msg:='100+10的和为:';
dbms_output.put_line(msg||psum);
end;
/
sql> declare 2 psum number(3); 3 msg varchar2(20); 4 begin 5 psum:=100+10; 6 msg:='100+10的和为:'; 7 dbms_output.put_line(msg||psum); 8 end; 9 / 100+10的和为:110 PL/sql 过程已成功完成。 已用时间: 00: 00: 00.04使用loop循环显示1-10
declare
pnum number(2);
begin
pnum:=1;
--以下是循环语句
loop
--只有当条件成立后,立即退出
exit when pnum>10;
--如果条件没成立,继续循环
dbms_output.put_line(pnum);
pnum:=pnum+1;
end loop;
end;
/
sql> declare 2 pnum number(2); 3 begin 4 pnum:=1; 5 loop 6 exit when pnum>10; 7 dbms_output.put_line(pnum); 8 pnum:=pnum+1; 9 end loop; 10 end; 11 / 1 2 3 4 5 6 7 8 9 10 PL/sql 过程已成功完成。使用while循环显示10-20
declare
pnum number(2):=10;
begin
while pnum<=20
loop
dbms_output.put_line(pnum);
pnum:=pnum+2;
end loop;
end;
/
sql> declare 2 pnum number(2):=10; 3 begin 4 while pnum<=20 5 loop 6 dbms_output.put_line(pnum); 7 pnum:=pnum+2; 8 end loop; 9 end; 10 / 10 12 14 16 18 20 PL/sql 过程已成功完成。使用for循环显示20-30
declare
pnum number(2):=20;
begin
for pnum in 20..30
loop
dbms_output.put_line(pnum);
end loop;
end;
/
sql> declare 2 pnum number(2):=20; 3 begin 4 for pnum in 20..30 5 loop 6 dbms_output.put_line(pnum); 7 end loop; 8 end; 9 / 20 21 22 23 24 25 26 27 28 29 30 PL/sql 过程已成功完成。使用光标,查询所有员工的姓名和工资,如果需要保存多行记录时,使用光标cursor。
declare
--光标中装着多条记录,类似于ResultSet集合
cursor cursor_emp is select ename,sal from emp;
--声明自定义变量
pename emp.ename%type;
psal emp.sal%type;
begin
--开打光标
open cursor_emp;
--循环取出每一条记录的值
loop
--取得每一条的记录,同时向下移动光标
fetch cursor_emp into pename,psal;
--当光标没有找到有用的记录时,就退出
exit when cursor_emp%notfound;
--显示
dbms_output.put_line(pename||'的工资是'||psal);
end loop;
--关闭光标,释放资源
close cursor_emp;
end;
/
create table person(
id number(2),
name varchar2(10) default 'xxxx',
salary number(7,2) default 99999.99,
birthday date default sysdate
);
--7表示整数+小数,除小数点外,一共显示7位
insert into person(id,name) values(1,'jack');
insert into person(id,name) values(2,'marry');
insert into person(id,name) values(3,'sisi');
sql> create table person( 2 id number(2),3 name varchar2(10) default 'xxxx',4 salary number(7,5 birthday date default sysdate 6 ); 表已创建。 sql> insert into person(id,'jack'); 已创建 1 行。 sql> insert into person(id,'marry'); 已创建 1 行。 sql> insert into person(id,'sisi');将emp表中的数据复制到new_emp表中
create table new_emp as select * from emp;
增加image列
alter table person
add image blob;
修改name列的长度为20
alter table person
modify name varchar2(20);
删除image列
alter table person
drop column image;
重名列名name为username
alter table person rename column name to username;
删除person表,oracle会将删除后的表,放入回收站中,用户都有回收站
drop table person;
查询回收站
show recyclebin;
sql> show recyclebin; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ ------------------- EMP BIN$knFF4cVYTSap1sgcipWpCw==$0 TABLE 2016-06-22:22:48:13 EMP BIN$b7kx/dCtSIa2fnQHSeK9QQ==$0 TABLE 2016-06-22:22:45:34 NEW_EMP BIN$2R70hRf0SpO34bu7QxpQ0Q==$0 TABLE 2016-06-22:22:53:29清空回收站
purge recyclebin;
sql> purge recyclebin; 回收站已清空。彻底删除person表,oracle不会将删除后的表,放入回收站中
drop table person purge;
表/视图/数据库对象/重命名
rename emp to xx;
创建表,使用primary key/not null/unique/foreign key约束
create table customers(
id number primary key,
name varchar2(20) not null
);
insert into customers(id,'jack');
insert into customers(id,'marry');
create table orders(
id number primary key,
orderno varchar2(20) not null unique,
cid number,
constraint cid_FK foreign key(cid) references customers(id) on delete set null
);
insert into orders(id,orderno,cid) values(1,'order100',1);
insert into orders(id,cid) values(2,'order200',cid) values(3,'order300',cid) values(4,'order400',2);
insert into orders(id,cid) values(5,'order500',2);
constraint cid_FK foreign key(cid) references customers(id) on delete cascade
显示当前用户
show user;
切换为管理员sysdba
conn / as sysdba;
sql> show user; USER 为 "SCOTT" sql> conn / as sysdba; 已连接。切换普通用户scott
conn scott/scott;
sql> conn scott/scott 已连接。原文链接:https://www.f2er.com/oracle/213918.html