Oracle基本以及plsql语句Oracle
⼀、基本SQL语句
1、综述
基本SQL 语句分为DDL、DML、DCL和TCL 四种:
(1)DDL 数据定义语⾔ —————> 对表结构、索引和同义词的操作
(2)DML数据操作语⾔ —————> 表数据的增删改查
(3)DCL 数据控制语⾔ —————> 授权和收回权限
(4)TCL 事务控制语⾔ —————> commit、rollback、savepoint
2、DDL 数据定义语⾔
(1)表
A.创建
–创建表
create table tbl_person(
pid number(11) primary key,
pname varchar(20),
psex varchar(4) not null,
pposition varchar(20),
constraint per_u unique (pname),
constraint per_c check (psex in ('boy','girl'))
)
--constraint对表字段添加约束(unique、check、primary key、foreign key)
B.删除
–删除表
drop table tbl_person;
C.修改
–添加新字段
alter table tbl_person add page number(4);
–修改字段名
alter table tbl_person rename column page to age;
–修改字段数据类型
alter table tbl_person modify (age varchar(4));
–删除字段
alter table tbl_person drop column age;
–修改表名
rename tbl_person to t_person;
rename t_person to tbl_person;
–删除约束
alter table tbl_person drop constraint per_u;
–添加约束
alter table tbl_person add constraint per_u unique (pname);
–禁⽤约束
alter table tbl_person disable constraint per_u;
–启⽤约束
alter table tbl_person enable constraint per_u;
(2)索引
A.创建
–创建索引 感觉就是⽬录 根据某种顺序便于查之类的
create index name_in on tbl_person(pid desc);
B.删除
–删除索引
drop index  name_in;
(3)同义词
A.创建
–创建同义词 同义词就是给表或视图取⼀个别名
CREATE SYNONYM <synonym_name> for <tablename/viewname>
Eg:create synonym mm for emp;
B.删除
–删除同义词
drop  synonym  mm;
3、DML数据操作语⾔
(1)增删改——update
insert into tbl_person values(tbl_val,'zhangsan','boy','snncjj');
insert into tbl_person values(tbl_val,'lisi','boy','snncjj');
update tbl_person set pposition = 'ajkaj'where pid=5;
delete from tbl_person where pid=5;
(2)查—–query
select * from tbl_person;
select count(*)  from tbl_person;
select pname  from tbl_person where pid = 4;
⼀般查询
SELECT [DISTINCT] <column1 ,columns2,...>
-- DISTINCT --表⽰隐藏重复的⾏
FROM <table1>
sql语句实现的四种功能[WHERE <;条件>]  WHERE --按照⼀定的条件查记录
[GROUP BY <column_list>]  GROUP BY --分组查(需要汇总时使⽤)
[HAVING <;条件>]                                            HAVING --分组的条件
[ORDER BY <column_list> [ASC|DESC]]
-
- ORDER BY --对查询结果排序
聚集函数—-只能放在select或者having下⾯
SUM –求和
AVG –求平均值
MAX –求最⼤值
MIN –求最⼩值
COUNT –求个数
⼦查询
SELECT <;字段列表> from <table_name> where字段运算符(<SELECT语句>);
eg:select * from emp where sal=(select max(sal) from emp);
Any 运算符
select * from emp where sal>ANY(select sal from emp where deptno=30) and deptno<>30;
--出⽐deptno=30的员⼯最低⼯资⾼的其他部门的员⼯
ALL 运算符
select * from emp where sal>ALL(select sal from emp where deptno=30) and deptno<>30;
--出⽐deptno=30的员⼯最⾼⼯资⾼的其他部门的员⼯
连接查询
SELECT <;字段列表> from <table1,table2> WHERE table1.字段[(+)]=table2.字段[(+)]
eg:select empno,ename,dname from emp,dept where emp.deptno=dept.deptno;
分页—rownum
select * from emp where rownum<=10;--查询前10⾏记录
select * from emp where rownum<=3and empno not in (
select empno from emp where rownum<=3);
--查询第3到6⾏记录
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21
4、DCL 数据控制语⾔
(1)授权
GRANT <;权限列表> to <user_name>;
(2)收回权限
REVOKE <;权限列表> from <user_name>
5、TCL 事务控制语⾔
COMMIT 提交
– ROLLBACK 撤销数据更新 返回到事务开始时的状态 或者回退到保存点 注意:回退到更上层的保存点之后,下层的会失效 – SAVEPOINT 保存点
⼆、Oracle其他对象
1、视图
创建视图
CREATE [OR REPLACE] VIEW <view_name>  AS  <SELECT语句>;
删除视图
DROP VIEW <view_name>
2、序列
创建序列
CREATE SEQUENCE <sequencen_name>
INCREMENT BY n
START WITH n
[MAXVALUE n][MINVALUE n]
[CYCLE|NOCYCLE]
[CACHE n|NOCACHE];
INCREMENT BY n --表⽰序列每次增长的幅度;默认值为1
START WITH n --表⽰序列开始时的序列号。默认值为1
MAXVALUE n --表⽰序列可以⽣成的最⼤值(升序)
MINVALUE n --表⽰序列可以⽣成的最⼩值(降序)
CYCLE --表⽰序列到达最⼤值后,在重新开始⽣成序列.默认值为 NOCYCLE
CACHE --允许更快的⽣成序列
使⽤序列
CURRVAL 返回序列的当前值.
注意在刚建⽴序列后,序列的CURRVAL值为NULL,所以不能直接使⽤。
可以先初始化序列:
⽅法:select .nextval from dual; 之后就可以使⽤CURRVAL属性了
NEXTVAL 返回序列下⼀个值;
可以表⽰记录ID的⾃增:
insert into tbl_person values(tbl_val,’lisi’,’boy’,’snncjj’);修改序列
ALTER SEQUENCE <sequencen_name>
INCREMENT BY n
START WITH n
[MAXVALUE n][MINVALUE n]
[CYCLE|NOCYCLE]
[CACHE n|NOCACHE];
删除序列
DROP SEQUENCE <sequence_name>
3、⽤户
创建⽤户
CREATE USER <user_name> [profile "DEFAULT"]
identified by"<password>" [default tablespace "USERS"]
删除⽤户
DROP USER <user_name> CASCADE;
4、⾓⾊
创建⾓⾊
CREATE  ROLE  <role_name>  identified by"<password>"
删除⾓⾊
DROP ROLE <role_name>
三、Pl/SQL
pl/sql 过程化SQL语⾔ 是Oracle 数据库对标准数据库语⾔SQL的扩展,把数据库技术和过程化程序设计语⾔联系起来 简⽽⾔之 pl/sql就是可以过程化的操作SQL语句
1、Pl/SQL结构
DECLARE          --声明部分
声明语句
BEGIN            --执⾏部分
执⾏语句
EXCEPTION        --异常处理部分
执⾏语句
END;
变量声明
<;变量名> 类型 [:=初始值];
1、特殊类型======字段%type
eg: ame%type –表⽰name的类型和ame的类型相同
2、表类型===========%rowtype
eg:test emp%rowtype
–表⽰test的类型为emp表的⾏类型;也有 .empno; .ename; .sal ;等属性
常量声明
<;变量名> CONSTANT 类型:=初始值;
⽰例: pi constant number(5,3):=3.14;
全局变量声明
VARIABLE <;变量名> 类型;
⽰例: VARIABLE num number;
使⽤全局变量
:
<;变量名>
⽰例:
:num:=100;
i=:num;
查看全局变量的值
print <;变量名>
⽰例: print num;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。