• 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中的外键约束定义
    

      

  • 相关阅读:
    汉诺塔略写
    第六章实验报告
    第三次实验报告
    第五章 循环结构反思
    第二次实验报告
    第一次实验报告x
    第九章 结构体与共用体
    第八次实验报告
    第7章 数组实验
    第六章 函数和宏定义实验(2)
  • 原文地址:https://www.cnblogs.com/ipetergo/p/6257567.html
Copyright © 2020-2023  润新知