关闭

Oracle数据库基础

标签: 数据库oracleplsql
134人阅读 评论(0) 收藏 举报
分类:

1、使用PL/SQL数据库开发工具登录,在sql command命令窗口执行如下操作

oracle 默认有以下三个用户 sys(超级管理员)  system(普通管理员) scott(普通用户)

alter user sys identified by a;                 / /使用 sys登录,修改初始密码

alter user scott account unlock;            / /用sys超级管理员使scott用户解锁,scott用户即可登录

grant create session to scott;                / /给scott用户授权 可以使用create

create user dyg identified by a;     / /创建一个用户 dyg 密码 a

grant create session to dyg;                 / /给dyg 授权会话

但是实际上给一个新建用户用角色resource,connect赋给一个新用户权限

grant resource,connect   to dyg;

 
    查看表: desc table_name;



    --alter create droop (DDL :数据定义语言)
   -- insert ,update, delete,select(DML :数据操作语言)
    insert 插入数据到表中,没有外键的表
    插入一段数据:insert into test(id,name,age)values(1001,'tony',22);


   -- 当插入所有字段时,可以省略,指定字段名,必须要和字段顺序一致: insert into t_test values(1002,'admin01',25);
    添加默认约束:alter table t_test modify age default 18;
   -- delected 删除表中内容
---update :修改表中的数据
    update t_test set name='小红' where id=1001;
    --修改多列时,用,隔开
    update t_test set name='小小红',age=100 where id=1001;
    --不使用where 推荐使用,会修改所有的数据
    update t_test set name='我是'; 将t_test name字段全部设为 '我是'


--delete:删除表中的数据

    delete from t_test where id=1001;
    delete from t_test;//删除t_test表中全部数据;
    
 --保障数据的安全有效性:
 TCL事物控制语言commit,roolback,saveoption



二、外链接:



1、  按部门统计员工的数量但是这个查询没有包括人数为空的部门



2、右外连接把人数为空的部门包含进来如下



左外链接把行号3改成   where e.deptno=d.deptno(+)  即可


三、自连接:

通过别名,将同一张表视为多张表


  1、示例:查询员工姓名和员工的老板姓名


不加where 过滤,自连接产生笛卡儿积即13*13条记录



四、层次查询

层次查询本质上是一个单表查询,在一定程度上层次查询可以取代自连接。



1、执行这条语句(其中level是伪列,用leave升序排列):


注意:行号3  connect by 上一层的员工号=老板号


自连接层次查询优缺点:自连接不适合查询大表因为会产生笛卡尔积,层次查询查询结果不太直观。



五、子查询:


用于解决一步不能求解的情况下使用子查询

1、示例:查询工资比SCOTT高的员工信息,SCOTT大写

首先查询SCOTT工资:  select sal from emp whereename='SCOTT';

查询结果:

 

查询高于3000的人:select * fromemp where sal>3000;

然后通过子查询查薪水大于SCOTT的人:select * from emp where sal>(select * fromemp where ename=’SCOTT’);  执行结果如下:



子查询注意的问题:

1、子查询语法中的小括号(子查询要写在()内)

2、子查询的书写风格

select *

  from emp

  wheresal>(select sal

              fromemp

              whereename=’SCOTT’);       //清晰明了易于检查错误

3、可以使用子查询的位置:where,select,having,from


1、select后面的子查询  

执行:select empno,ename,sal,(select job from emp where empno=7839) 第四列  from emp;

select后面只能有一个元素

第四列即为员工的老板的职位

 select后面的查询必须是单行子查询

如: select empno,ename,sal,(select job from emp where

select后面只能有一个元素

2、在having后面的子查询:


3、在from后面的子查询:



4、不可以使用子查询的位置:group by



5、强调:from后面的子查询

6、主查询和子查询可以 不是同一张表

7、一般不在子查询中使用排序;但在Top-N分析问题中必须对子查询排序

8、一般先执行子查询,再执行主查询;但相关子查询例外

9、单行子查询只能使用单行操作符;多行子查询只能使用多行操作符

10、注意:子查询中是null值问题


注:部分截图来自慕课网oracle课程





1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:381次
    • 积分:26
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档