Oracle数据库基础学习_01_happenning的博客-程序员资料

技术标签: Oracle数据库  

–创建表空间
create tablespace itheima;
DATAFILE ‘heima.dbf’
size 100m
autoextend on
next 10m;

–删除表空间
drop tablespace itheima;

–创建用户
create USEr itheima
IDENTIFIED by itheima
default tablespace itheima;

–给用户授权
–pracle数据库中常用角色
connect --连接角色,基本角色
RESOURCE --开发者角色
dba --超级管理员角色
–给 itheima 用户授予dba角色
grant dba to itheima;

– 创建表
create TABLE person(
pid number(3);
panme CHAR(3);
)

----- 修改表结构
–添加一列
alter table person add(gender number(1));
–修改列类型
alter table person modifygender char(1);
–修改列名称
alter table person rename column gender to sex;
–删除一列
alter table persom drop column sex;

–查询表中记录
select * from person;
–添加一条记录
insert into person (pid ,pname) values(1,‘小明’);
commit;
–修改一条记录
update person set pname=‘小马’ where pid = 1 ;
commit;

----- 三个删除
–删除表中全部记录
delete from person;
–删除表结构
drop table person;
–先删除表,再次创建空白表.效果等同于删除表中全部记录
–在数据量大的情况下,尤其在表中带有索引的情况下,该操作效率高.
–索引可以提高查询效率,但是会影响增删改的效率.
truncate table person

----- 序列不真的属于任何一张表,但是可以逻辑和表做绑定.
----- 序列: 默认从1开始,依次递增,主要用来给主键赋值使用.
----- dual: 虚表,姿势为了补全语法,没有任何意义.
----- 必须先执行nextval才有currval
create sequence s_person;
drop sequence s_person;
select s_person.currval from dual;
select s_person.nextval from dual;
insert into person (pid ,pname) values(s_person.nextval,‘小明’);

create user scott IDENTIFIED by tiger;
grant dba to scott;

----- scott用户,密码tiger.
–解锁 scott 用户
alter user scott account unlock;
–解锁 scott 用户的密码[也可以用来重置密码]
alter user scott identified by tiger;

–切换到scott用户下

---- 单行函数: 作用于一行,返回一个值
–字符函数
select UPPER(‘yes’) from dual;
select LOWER(‘YES’) from dual;
–数值函数
select ROUND(26.16,1) from dual; --四舍五入,后面的参数表示保留的位数
select trunc(26.16,1) from dual; --直接截取,不考虑后面的数字
select mod(10,3) from dual; --求余数
–日期函数
–查询出emp表中所有员工入住距离现在几天
select sysdate-e.hiredate from emp e;
–算出明天此刻
select sysdate+1 from dual;
–查询出emp表中所有员工入职距离现在几月
select MONTHS_BETWEEN(sysdate, e.hiredate) from emp e;
select ROUND(sysdate-e.hiredate)/7 from emp e;
select MONTHS_BETWEEN(sysdate, e.hiredate)/12 from emp e;
–转换函数
–日期转字符串
select TO_CHAR(sysdate,‘fm yyyy-mm–dd hh24:mi:ss’) from dual
–字符串转日期
select to_Date(‘2018-11–11 14:35:48’,‘fm yyyy-mm–dd hh24:mi:ss’) from dual
–通用函数
–算出emp表中所有员工的年薪
select e.sal*12+nvl(e.com,0) from emp e;

----- 条件表达式,mysql和oracle通用
–给emp表中员工起中文名
select e.eNAME,
case e.ename
when ‘smith’ then ‘曹贼’
WHEN ‘allen’ then ‘大耳贼’
when ‘ward’ then ‘诸葛小儿’
else ‘无名’
END
from emp e;
—判断emp表中员工工资,如果高于300显示高收入,如果高于1500低于300显示中等收入,其余显示低收入
select e.sal,
case
when e.sal>3000 then ‘高收入’
WHEN e.sal>1500 then ‘中收入’
else ‘低收入’
END
from emp e;

----- 条件表达式,oracle专用
–oracle中除了起别名,都用单引号.
select e.eNAME,
decode( e.ename
‘smith’ , ‘曹贼’,
‘allen’ , ‘大耳贼’,
‘ward’ , ‘诸葛小儿’,
else ‘无名’) “中文名”
from emp e;

---- 多行函数: 作用于多行,返回一个值
select count(1) from emp;
select max(sal) from emp;
select sum(sal) from emp;
select min(sal) from emp;
select avg(sal) from emp;

------ oracle查询
— 分组查询
– 分组查询中,出现在 group by 后面的原始列,才能出现在 select 后面
–查询出每个部门的平均工资
select e.deptno,avg(e.sal).
from emp e
group by e.deptno;
–查询出平均工资高于200的部门信息
–所有条件都不能使用别名来判断
select e.deptno,avg(e.sal)
from emp e
group by e.deptno
having avg(e.sal)>2000;
—查询出每个部门工资高于800的员工的平均工资
select e.deptno,avg(e.sal).
from emp e
where e.sal > 800
group by e.deptno;
— where 所过滤分组前的数据,having是过滤分组后的数据.

----- oracle 专用外链接
– 加号在左,右边全部显示,加号在右,左边全部显示
select *
from emp e , dept d
where
e.deptno(+) = d.deptno;

— 查询出员工姓名,员工领导姓名
– 自连接: 自连接其实就是站在不同的角度把一张表看成多张表
SELECT e1.ename,e2.ENAME
from emp e1,emp e2
WHERE e1.MGR = e2.empno

— 查询出员工姓名,员工部门名称,员工领导姓名,员工领导部门名称
SELECT e1.ename,d1.dname,e2.ENAME,d2.dname
from emp e1,emp e2,dept d1,dept d2
WHERE e1.MGR = e2.empno
AND e1.DEPTNO = d1.DEPTNO
AND e2.DEPTNO = d2.deptno

----- 子查询
— 子查询返回一个值
– 查询出工资和scoot一样的员工信息
SELECT * from emp where sal in (select sal from emp where ename = ‘scott’);
— 子查询返回一个集合
SELECT * from emp where sal in (select sal from emp where deptno = 10);
— 子查询返回一张表
–查询出每个部门最低工资,和最低工资员工姓名,以及该员工所在部门名称
select t.DEPTNO, t.msal, e.ename, d.dname
from (
select deptno, min(sal) msal from emp GROUP BY DEPTNO
) t, emp e, dept d
where t.DEPTNO = e.deptno
and t.msal = e.sal
AND e.deptno = d.deptno;

----- 分页查询
— rownum 行号 : 当我们做select操作的时候,每页查询出一行记录,
–就会在改行上加上一个行号,行号从1开始,依次递增,不能跳着走,不能使用 表名.rownum 这个写法调用
– emp表工资倒叙排列后,每页无条记录,查询第二页.
SELECT * from(
SELECT rownum rn,e.* from
( SELECT * from emp order by sal desc)
e where ROWNUM < 11
) where rn > 5;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/terstdfhuc/article/details/83962684

智能推荐

MySQL_编码utf8_bin和utf8_general_ci的区别_Bobyte的博客-程序员资料

编码区别在mysql中存在着各种utf8编码格式,如下(新建数据库时一般选用utf8_general_ci就可以):**utf8_bin:**将字符串中的每一个字符用二进制数据存储,区分大小写(在二进制中 ,小写字母 和大写字母 不相等.即 a !=A)。**utf8_genera_ci:**不区分大小写,ci为case insensitive的缩写(insensitive ; 中文解释: ...

/deep/ 深度作用选择器作用及使用_/deep/ .el-dialog__title_joe0235的博客-程序员资料

之前在开发中遇到一个问题,vue项目结合 element ui 使用。但是 element ui 的样式不一定符合我们的需求,这时我们就需要改变它的样式。比如博主使用到了element ui 的对话框,我想要改变这个对话框标题的颜色,所以我需要在页面中审查元素找到对应的标签。但是当我找到并且复制,然后试图去改变它的样式时,怎么都没办法改变。我以为是权重的问题,所以我加 ! important,但是也毫无作用。当我审查元素发现此样式就没有作用到,就相当于它没有找到这个元素,所以也就不存在改

JSP - WEB组件关系(请求转发/重定向/包含)_锤石是种信仰吗的博客-程序员资料

Web组件之间存在三种关联关系(转发,重定向,包含)请求转发:定义:请求转发允许把请求转发给同已应用程序的其他WEB组件。实现:Servlet类使用 javax.servlet.RequestDispathcer.forward()方法来转发它所收到的HTTP请求。转发目标组件将处理该请求并生 成响应结果,或者将请求继续转发到另一个组件。最初请求的ServletRequest和Serv

vue 打印qrcode动态生成的二维码_前端 vue打印单个或者多个二维码_韩同学叫阿静的博客-程序员资料

&lt;!-- 打印区域 --&gt; &lt;div class="QR-code" id="QR-code"&gt; &lt;div id="qrcode" ref="qrCodeDiv" class="qrCode" style="margin:0 auto"&gt;&lt;/div&gt; &lt;/div&gt; &lt;div class="btn-content"&gt; &lt;a class="btn btn-right" v-on:click

pip freeze requirements.txt命令迁移模块_通幽通明的博客-程序员资料

转自 我不喜欢这个世界 的《python下使用pip freeze &amp;gt;requirements.txt命令迁移模块》https://blog.csdn.net/m0_38124502/article/details/78090902当我们开发项目的时候,会用virtualenv创建 很多python独立环境,这时候就会出现在不同环境下安装相同的模块的时候, 为了避免我们通过联网下载所需模块,...

随便推点

技术难题_L_change0628的博客-程序员资料

32位微处理器采用32位指令地址  程序计数器和指令寄存器需要多少位???

NodeJS基础知识之1_hzulwy的博客-程序员资料

简介Node.js是一个能够在服务器端运行JavaScript代码的跨平台JavaScript运行环境。Node大部分模块都是用JavaScript编写。在Node出现之前,JS通常作为客户端程序设计语言使用,以JS写出的程序常在用户的浏览器上运行。Node.js可以理解成一个已经实现好功能的服务器,它通过命令行的形式将程序员实现好功能的js代码导入服务器中运行进而得到结果。程序员也可以...

格子刷油漆_weixin_34081595的博客-程序员资料

问题描述  X国的一段古城墙的顶端可以看成 2*N个格子组成的矩形(如下图所示),现需要把这些格子刷上保护漆。  你可以从任意一个格子刷起,刷完一格,可以移动到和它相邻的格子(对角相邻也算数),但不能移动到较远的格子(因为油漆未干不能踩!)  比如:a d b c e f 就是合格的刷漆顺序。  c e f d a b 是另一种合适的方案。  当已知 N 时,求总的方案数。当N较大时,结果会迅...

RAID10与RAID01比较_weixin_30553777的博客-程序员资料

RAID10与RAID01比较RAID10是先做镜象,然后再做条带。 RAID01则是先做条带,然后再做镜象。 比如以6个盘为例,RAID10就是先将盘分成3组镜象,然后再对这3个RAID1做条带。RAID01则是先利用3块盘做RAID0,然后将另外3块盘做为RAID0的镜象。 下面以4块盘为例来介绍安全性方面的差别: 1、RAID10的情况 这种情况中,我们假设当...

ImportError: unable to find Qt5Core.dll on PATH_小白爱吃饭的博客-程序员资料

用pyinstaller打包python程序,执行exe时,程序闪退,第一反映肯定是有问题了,但是闪退没法跟踪问题,于是在命令行窗口执行exe,显示如下:D:\&gt;"D:\python project\demo\dist\demo.exe"Traceback (most recent call last): File "demo.py", line 3, in &lt;module&gt; File "d:\python project\demo\venv\lib\site-packages

【python 爬虫】识别网站所用技术_东华果汁哥的博客-程序员资料

有一个十分有用的工具可以检查网站构建的技术类型——builtwith 模块(只支持python2环境,python3环境报错)。pip install builtwith该模块将 URL 作为参数,下载该 URL 并对其进行分析,然后返回该网站使用的技术。举个例子:>>> import builtwith>>> builtwith.parse('http://xxxxxxxxxxxxxxxxxx'

推荐文章

热门文章

相关标签