oracle--第一天PLSQL--bai

第一天:
-- 创建book表
create table book
(
bid number primary key,
bname varchar2(20) not null,
price number(10,2) not null
)
-- 插入数据
insert into book(bid,bname,price)values('20','西游记','170.5');
insert into book(bid,bname,price)values('12','红楼梦','190.5');
insert into book(bid,bname,price)values('22','三国演义','150.5');
insert into book(bid,bname,price)values('32','梅','140.5');
--查询
select * from book;
--清空表
delete from book;--删除数据
truncate table book;---删除数据,含日志
--查询所有的逻辑对象。所有。 前缀dba_   system用  
select count(1) from dba_objects;--查询所有的逻辑对象。所有。
select * from dba_users;--查看所有的用户
select * from dba_tables;--查询所有的表· 前缀all_
--查询所有的逻辑对象.本用户权限范围下的能看的所有。
select count(1) from all_objects;--查询所有的逻辑对象。所有。
select * from all_users; --查看权限下能看到的所有用户
select * from all_tables; --查询所有的表·
--查询本用户私有的逻辑对象
select * from user_objects;
select * from user_users; --查看本用户。
select * from user_tables;--查看本用户的所有私有表

select * from v$instance;--oracle实例的情况
select * from v$session; --oracle所有连接的情况


-- 使用system的normal对soctt用户进行解锁
 alter user scott account unlock;
  
 -- 使用system的normal对soctt用户进行密码解锁
  alter user scott identified by orcl;


-- 创建1个用户
create user bai  identified by orcl; --创建用户bai,指定密码为orcl。
--默认的表空间是users,默认的临时表空间是temp;
 grant connect,resource to bai;-- 将连接及创建对象权限交给bai
 
 drop user bai cascade;  -- 删除用户bai

第二天:
---创建用户java2
create user java2 identified by orcl;
grant connect,resource to java2;
--java2登录后,建表并插入数据
create table student1
  (
      sid number primary key ,  
      sname varchar2(20) not null,
      sex varchar2(20) not null,
      age number not null check(age>=0 and age<=120)
   )
   
    insert into student1 values('11','白','男','18');
   insert into student1 values('21','白2','男','18');
   insert into student1 values('31','白3','男','18');
---创建用户java3
create user java3 identified by orcl;
grant connect,resource to java3;

--将student1表的查询及修改及删除权限授予java3
grant select,update,delete on student1 to java3;
--授权后,java3就能执行成功   --无法插入(无此权限)
select * from java2.student1;
delete from java2.student1 where sid='31';
insert into java2.student1 values('34','黑','女','90');--无法插入(无此权限)



{用户角色权限}:
-- 查看当前用户的所有角色
select * from user_role_privs;
--查看用户的表对象权限
select * from user_tab_privs;
--查看用户的系统权限
select * from user_sys_privs;
--查看指定角色的权限
select * from role_sys_privs;
--使用system登录,将创建视图的权限授予java2
grant create view to java2;
--使用java2登录后,可以创建视图
create view j2_view2 as
select * from java2.student1;
--让1个角色拥有其他多个角色的功能总和
create role myrole;
--让myrole继承于connect角色的权限
grant connect to myrole;
grant resource to myrole-- 10g里面,resource是无法继承的。
--查看角色所继承的角色
select * from role_role_privs where role='MYROLE';
--使用system登录,从java2回收创建视图的权限
   revoke create view from java2;



{常用逻辑对象}:



{表空间}:
--创建表空间
create tablespace bai_ts2 datafile 'E:1.dbf' size 6M;
--创建用户,绑定表空间
create user java_bai2 identified by orcl
default tablespace bai_ts2;
--修改指定用户的默认表空间
alter user java_bai2
default tablespace bai_ts2;

grant connect,resource to java_bai2;
select * from dba_users where username='JAVA_BAI2';

--扩容
alter tablespace bai_ts2
add datafile 'E:2.dbf' size 50M;

--删除表空间
drop tablespace bai_ts2 including contents;




{视图}:
--视图的创建
   查询员工编号、员工名及所在部门的名称
   create or replace  view  emp_basic_info_view 
   as
  select  scott.emp.empno as 员工编号,scott.emp.ename as 员工名,
  scott.dept.dname as 部门名  from scott.emp ,scott.dept 
  where scott.emp.deptno = scott.dept.deptno
  
  --查询视图
  select * from emp_basic_info_view
  
delete from system.emp_basic_info_view where 员工编号='7369';


--创建一个学生信息(INFOS)表和约束
CREATE TABLE INFOS
(
STUID VARCHAR2(7) NOT NULL,    --学号 学号=‘S’+班号+2位序号
STUNAME VARCHAR2(10) NOT NULL,  --姓名
GENDER VARCHAR2(2) NOT NULL,    --性别
AGE NUMBER(2) NOT NULL,        --年龄
SEAT NUMBER(2) NOT NULL,        --座号
ENROLLDATE DATE,      --入学时间
STUADDRESS VARCHAR2(50) DEFAULT '地址不详',      --住址
CLASSNO VARCHAR2(4) NOT NULL    --班号 班号=学期序号+班级序号
)
ALTER TABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STUID);--创建一个主键约束
ALTER TABLE INFOS ADD CONSTRAINTS UN_STUNAME UNIQUE(STUNAME);--创建唯一约束
--创建各种check约束
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_GENDER CHECK(GENDER = '男' OR GENDER = '女');
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_SEAT CHECK(SEAT >=0 AND SEAT <=50);
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_AGE CHECK(AGE >=0 AND AGE<=100);
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_CLASSNO CHECK((CLASSNO >='1001' AND CLASSNO<='1999') OR   (CLASSNO >='2001' AND CLASSNO<='2999'));

--创建一个成绩表(SCORES)表和约束
CREATE TABLE SCORES 
(
ID NUMBER ,        --ID   SQL Server中可以使用identify创建自动增长列,但是Oracle中的自动增长需要借助 序列(Sequence)完成
TERM VARCHAR2(2),         --学期 S1或S2
STUID VARCHAR2(7) NOT NULL,   --学号
EXAMNO VARCHAR2(7) NOT NULL,     --考号 E+班号+序号
WRITTENSCORE NUMBER(4,1) NOT NULL, --笔试成绩
LABSCORE NUMBER(4,1) NOT NULL   --机试成绩
)
ALTER TABLE SCORES ADD CONSTRAINT CK_SCORES_TERM CHECK(TERM = 'S1' OR TERM ='S2');
ALTER TABLE SCORES ADD CONSTRAINT FK_SCORES_INFOS_STUID FOREIGN KEY(STUID) REFERENCES INFOS(STUID);--Oracle中的外键约束定义

  

原文地址:https://www.cnblogs.com/ipetergo/p/6257567.html