oracle学习(一)

看书总结:

1、查看oracle 动态实例的状态

select status from v$instance;

2、关闭数据库

shutdown immediate;

3、启动数据库

startup

4、如何知道当前数据库的名称

show parameter db_name

show parameter :表示可以查看数据库中的各种参数值

db_name:表示oracle 数据库名称参数,查看该数据库可以知道具体的参数值

5、查询数据库中的某个用户的状态

select username,account_status from dba_users where username='SCOTT';

注意:“SQL查询oracle数据库时,oracle默认英文字母大小写都一样,即不区分大小写,但是在where 条件后面的每个字段表示的值是区分大小写的!!!”

6、如何得知数据表中都有哪些列?

desc user_tables;

7、对数据库用户进行解锁

alter user 数据库用户名 account unlock;

修改的用户状态更改为Expired,说明该用户已经解锁,但是目前处于到期状态,oracle 数据库默认该用户需要使用原来的密码重新登录,并设置新密码,即可解除到期状态。

8、查看当前的数据库用户

show user

9、用户连接语法

conn 用户名/密码


查看当前用户下拥有哪些表

select table_name from user_tables


插入一条新纪录

insert into dept (deptno,dname,loc) values(50,'Development','Beijing');

commit;//提交对数据库的修改操作。

如果没有commit ,则sql语句只存在计算机的内存中,操作的数据有可能不会存储在数据库中。


修改数据库表的数据

update dept set loc ='Shanghai' where deptno = 50;

commit;


删除数据库表的数据

delete from dept where deptno=50;

commit;


在oracle 的SQLPlus中,英文字符默认是左对齐、数字默认是右对齐。

设置查询数据的时间格式

alter session set nls_date_format ='YYYY-MM-DD';


查询当前数据库时间

select sysdate from dual;

dual 是oracle的一个虚表,在查询用到计算、常量表达式等时可以使用的dual虚表。

select ename,round((sysdate-hiredate)/365,0) from emp;

round(x,y)是oracle的一个四舍五入的函数,X表示这个数字需要进行四舍五入,Y则表示在哪位数进行四舍五入,如果Y=0,表示在个位数进行四舍五入,Y=2表示在小数点后两位进行四舍五入。


按照工作年数排序查询出每个员工的姓名及年数

select ename, round((sysdate-hiredate)/365,0) from emp order by 2;

oracle 默认是按照升序排序的,即把数字从小排到大,order by 2 中的2 表示按照第二列排序。

按年数倒叙排列数据

select ename,round((sysdate-hiredate)/365,0) from emp order by round((sysdate-hiredate)/365,0) desc

desc 表示排序使用降序来输出数据,即从大到小进行排序。


变成中文列名,本土化查询语句

select ename as "姓名" , round((sysdate-hiredate)/365,0) as "工作(年)" from emp order by "工作(年)" desc

as 是列别名的关键字,可以用英文双引号""里面的字符来表示该列的别名。在oracle数据库中,同时允许用列别名进行排序。

select ename|| '员工本月工资为:¥'||(sal+1500) as "公司员工本月工资表" from emp order by sal;
||两个竖杠是oracle的连接符,可以把查询出来的数据和其他字符串连接起来,可以对多个字符串,多个表的列值相连接。

''两个单引号里面的字符串,可以把里面的字符串输出。即表的列数据和字符串连接在一起输出结果。


过滤重复的数据

select distinct deptno from emp;

distinct 是去掉重复数据的SQL关键字。


按照薪水排序查询工资少于2000元的员工。

select ename,sal from emp where sal<=2000 order by sal;

where 是限制条件关键字,后面的条件如果是数字,可以进行运算,条件后面的值如果是数字,不用单引号,如果是字符串,则需要引号括起来。

order by 该关键字需要在where的后面,常用运算符有">",">=","<","<=","<>"和"!="(都是不等于),"="。


查看薪水在某个区间的员工

select ename,sal from emp where sal between 1500 and 2500 order by sal;

between ...and...用于条件where 之中,表示数值介于两个数值之间。


查询拿保底工资的销售人员

select empno ,ename,job,sal from emp where job='SALESMAN' and sal=1250;

这里where条件中的and 表示“而且”的意思。


查看没有奖金或者工资少于1500的员工

select empno ,ename,job,sal,comm from emp where comm is null or sal<1500;

or 表示或者的意思,

null在oracle数据库中是一个特殊的值,他既不表示0,也不表示空,是一个不能确定的未知数。


员工的工资加上提成,哪个员工的工资是最少的。

select empno ,ename,job,sal,comm,sal+nvl(comm,0) from emp where comm is null or sal<=1500 order by sal+nvl(comm,0);

nvl(X,Y)是数据库的一个内部函数,表示如果X有值,则返回X的值,如果X的值是null,则默认为Y。


查看名字开头为"M"的员工

select  ename,job,sal from emp where ename like 'M%';

like 是where 中模糊查询的关键字,后面的字符串需要单引号括起来,%在SQL语句中表示字符后面所有字符,其中M%表示以M开头的所有字符。


查找哪些员工属于销售人员、分析师、管理人员

select ename,job  from emp where job in('SALESMAN','ANALYST','MANAGER');

in 表示在某个列中存在多个值均符合,或者使用or代替也可。

select ename ,job from emp where job='SALESMAN' or job ='ANALYST' or

job='MANAGER';


统计公司每个岗位有多少个员工

select job ,count(*) from emp group by job;

group by 是oracle 数据库中的分组函数,可理解为按照工作职位进行分组,然后统计每个职位的个数。

count(*)是统计数量的一个函数,这里统计公司每个岗位有多少人。

统计公司每个岗位有多少员工,并按照数量进行排序。

select job ,count(*) from emp group by job order  by count(*);


统计每个部门有哪些员工,并按照部门号排序

select deptno,count(*) from emp group by deptno order by deptno;


求公司共支付员工的薪水

select sum(sal)+sum(nvl(comm,0)) from emp;

sum 是oracle 数据库内部的一个函数,即所有数值之和,这里是把每个员工的工资和提成相加起来。


统计公司员工的平均工资

select round(avg(sal),2) from emp;

ave是oracle数据库的求平均值函数,作用是把所有的数值相加起来然后统计平均值。


求出最高薪水和最低薪水及它们的差距是多少。

select max(sal),min(sal),max(sal)-min(sal) from emp;

max是oracle数据库内部函数,专门计算最大的数值

min是oracle数据库内部函数,专门计算最小的数值


列出平均工资大于2500的岗位

select job ,avg(sal) from emp having avg(sal)>2500 group by job;

having在使用group by 分组时,如果条件限制,需要使用having ,而不能使用where 即在group by 所对应的条件限制为having,上面的例子中,数据库首先使用group by进行岗位分组,在使用avg(sal)求出每个岗位的平均工资,最后平均工资大于2500由having进行限制。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值