Oracle数据库基础
来源:互联网 发布:fedora25 yum 配置源 编辑:程序博客网 时间:2024/06/12 19:34
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 密码 agrant 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
执行: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课程
- 【Oracle数据库】Oracle数据库基础
- oracle数据库优化基础
- ORACLE数据库基础
- oracle 数据库 基础
- oracle数据库基础学习
- 第一章Oracle数据库基础
- Oracle数据库基础介绍
- Oracle数据库基础
- 数据库--基础--Oracle
- oracle 数据库基础
- oracle 数据库管理基础
- Oracle数据库基础
- Oracle数据库迁移-基础
- Oracle数据库基础
- Oracle数据库基础
- Oracle数据库基础(一)
- Oracle数据库基础
- Oracle数据库迁移-基础
- 计时器
- Delphi“尚未调用CoInitialize”解决方法
- IOS开发 强制横屏
- boost裁剪和编译
- 动态拆分时间段并插入数据到网格部件
- Oracle数据库基础
- CSS 绝对定位与相对定位
- 合并模拟器Framework与真机Framework
- 创建线程的两种方法
- mac 删除文件夹里所有的.svn文件
- Linux安装Redis
- int 转 string
- 一天一个linux命令(3):实用小工具
- mac mysql重置忘记密码