oracle子查询,创建用户,授权,操作表,添加约束

--子查询
     ---单行子查询
         --使用:需要查询的数据存在不明确的条件时考虑使用

 

         --注意:可以直接在where子句中书写,作为条件使用

 

 

     ---多行子查询
         --使用:当查询的结果是多个值的时候,考虑使用

 

         --关键字:all 所有  any 任意  in或者,在其中

 

 

  --查询所有比雇员“CLARK”工资高的员工信息

 

  select * from emp where sal>(select sal from emp where ename='CLARK' );

 

 

  --查询工资高于平均工资的员工的名字和工资

 

  select ename,sal from emp where sal>(select avg(sal) from emp);

 

 

  --查询和scott属于同一部门且工资比他低的员工资料

 

  select * from emp where deptno=(select deptno from emp  where ename='SCOTT') and sal<(select sal from emp where ename='SCOTT');

 

 

  --查询工资最高的员工资料

 

  select * from emp where sal=(select max(sal) from emp);

 

 

  --查询职务和scott相同,雇佣时间早的员工信息

 

  select * from emp where job=(select job from emp where ename='SCOTT') and hiredate<(select hiredate from emp where ename='SCOTT');

 

 

  --查询工资比scott高或者雇佣时间早的员工编号和名字

 

  select empno,ename from emp where sal>(select sal from emp where ename='SCOTT') and hiredate<(select hiredate from emp where ename='SCOTT');

 

 

  --查询工资高于任意一个CLERK的所有员工信息
  select * from emp where sal>(select min(sal) from (select sal from emp where job='CLERK'))and job<>'CLERK'order by sal desc;

 

  select * from emp where sal>any (select sal from emp where job='CLERK') and job<>'CLERK';

 

 

  --查询工资高于所有SALESMAN的员工信息
   select * from emp where sal>(select max(sal) from (select sal from emp where job='SALESMAN')) order by sal desc;

 

  select * from emp where sal>all(select sal from emp where job='SALESMAN')order by sal desc;

 

 

  --查询部门20中同部门10的雇员工作一样的雇员信息
  select * from emp where job in(select job from emp where deptno='10')  and deptno='20';  --使用in关键字
  select * from emp  where job=any(select job from emp where deptno='10') and deptno='20'; --将in转换为=any关键字


--用户操作
  --系统用户介绍
      --scott 普通用户
      -- system 系统用户

 

      --sys超级用户

 

 

  --创建用户
  create user linkcyzk identified by oracle;

 

              --用户名               --密码

 

 

  --给创建的用户分配角色和权限
  grant connect to linkcyzk;
  grant resource to linkcyzk;

 

  grant dba to linkcyzk;

 

 

  --删除用户权限

 

  revoke dba from linkcyzk;

 

 

  --删除用户
  drop user linkcyzk;
 
--操作表
    --创建表
      --明确表个数(业务和范式结合考虑)
      --明确表名:z_user
      --明确字段名及字段个数
      --明确字段类型
            --varchar2是字节长度,指定的是最大长度
            --char是字符长度,指定长度,效率高,空间利用率低
      --创建
          --create table 表名(字段名 字段类型,字段名 字段类型,……)
     create table usre(
         usid varchar2(10),
         uname varchar2(50),
         pwd   varchar2(40)
     );


    --修改表
      --查看表结构
      desc usre;--在命令窗口查看
      --修改表名
      rename usre to userer;
      --添加字段
      alter table usre add  usex varchar2(4);
      --修改字段
        --修改字段类型(使用modify关键字)
          alter table usre modify pwd char(16);
         --修改字段名(使用rename column  oldname to newname)

 

         alter table usre rename column pwd to passwd;

 

 

    --删除表
      drop table usre;
      --删除字段
      alter table usre  drop column pwd;
   
 --约束学习
        --主键约束
      --非空约束  
      --检查约束
      --唯一约束 
      --添加的方法有3种,建议采用第三种 
        --1.直接在字段后添加
           create table usre(
               usid varchar2(10) primary key,
               uname varchar2(50) not null,
               age   number(3) check(age>0 and age<300),
               sex  char(4) default '男'check(sex='男'or sex='女'),--默认为男
               phone varchar2(11) unique
            );


       --2.在创建表的最后加
          create table usre(
               usid varchar2(10) ,
               uname varchar2(50),
               age   number(3) ,
               sex  char(4) ,
               phone varchar2(11),
               constraints pk_usre_usid primary key(usid),
               constraints ck_usre_uname check(uname is not null),
               constraints ck_usre_age check(age>0 and age<300),
               constraints ck_usre_sex check(sex='男'or sex='女'),
               constraints  uq_usre_phone unique(phone)       
            );
       --3.在创建表后添加 
           create table usre(
               usid varchar2(10) ,
               uname varchar2(50),
               age   number(3) ,
               sex  char(4) ,
               phone varchar2(11),
            );
            --第一种方法
           alter table usre add constraints pk_usre_usid primary key(usid);
           alter table usre add constraints ck_usre_uname check(uname is not null);
           alter table usre add constraints ck_usre_age check(age>0 and age<300);
           alter table usre add constraints ck_usre_sex check(sex='男'or sex='女');
           alter table usre add constraints uq_usre_phone unique(phone); 
           --第二种方法(从一定含义上是进一步改变它的类型,建议采用第一种)
           alter table usre modify usid primary key;
           alter table usre modify uname not null;
           alter table usre modify age check(age>0 and age<300);
           alter table usre modify sex check(sex='男'or sex='女');
           alter table usre modify phone unique;  
      
      
      --删除约束:
        alter table usre drop constraints pk_usre_usid;
        alter table usre drop constraints ck_usre_uname;
        alter table usre drop constraints ck_usre_age;
        alter table usre drop constraints ck_usre_sex;
        alter table usre drop constraints uq_usre_phone;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值