首页 > 代码库 > oracle对表进行增删查改的操作,以及对用户的一些简单的操作
oracle对表进行增删查改的操作,以及对用户的一些简单的操作
1、验证数据库是否已经成功安装
select status from v$instance status会显示open
2、如何oracle数据库中退回到操作系统中
exit
3、登录oracle数据库一共有两种认证方式
操作系统认证:在默认情况下,如果在本机服务器登录oracle数据库,可以使用操作系统认证,不用输入数据库用户名及密码
用户密码认证:如果是远程链接数据库,则需要使用数据库用户名、密码进行认证
4、如何访问oracle数据库企业级管理器(OEM)
在IE浏览器中输入安装数据库的时候记录下来的OEM地址,就能打开oracle数据库企业管理器页面
5、动态表
oracle的动态表也是属于字典表,属于oracle内部的表,不能手工更改数据,动态表是因为表中的数据根据其他表的数据而变化,在oracle动态表,通常使用“v$”开头,v$instance是oracle动态表之一,该表记录了oracle数据库实例的各种信息
6、如何关闭oracle数据库
shutdown immidiate
7、如何启动oracle
startup
8、如何知道当前数据库名称
查看数据库的名称:show parameter db_name
show parameter:表示查看oracle数据库中的各种参数
db_name:表示oracle数据库的名称参数,查看该参数可以知道具体的参数值
9、查询数据库中一个用户是在什么状态可以查询数据库字典表dba_users来了解用户状态,dba_users存储着oracle数据库中的所有用户信息
10、字典表:是oracle数据库的内部表,换言之,是oracle数据库中不需要创建就存在的表,不能更改其信息
11、查询数据库默认用户SCOTT用户的状态
select username,account_status from dba_users where username=‘scott‘;结果查不出数据
分析原因:在sqlplus中使用sql语句查询oracle数据库中的数据的时候,oracle默认不区分英文的大小写,但是在where条件后面的每一个字段所表示的值都是区分大小写的
EXPIRED:表示该户用已到期
LOCKED:表示用户处于锁住状态,不能使用该数据库用户,若需要重新使用,open则表示用户处于正常状态,可以正常访问数据库中的数据
12、查询dba_users表中的列:desc dba_tables;
解释:desc是describe的缩写,后面跟着表名可以查询出表的结构,即由那些列构成,同时也可以用describe user_tables
13、如何对一个数据库用户进行解锁。
语法:alter user 数据库用户名 account unlock
eg:解锁SCOTT:alter user scott account unlock
查看SCOTT用户的状态:select username,account_status from dba_users where username=‘SCOTT‘;
scoot用户已经被解锁到时处于到期状态,用此用户的原来的密码重新登录,并且设置新密码即可解除到期状态
14、查看当前数据库用户:show user
15、在数据库中切换用户
语法:conn 用户名/密码
eg:conn scott/tiger 修改密码为cat
其他用户切换回sys用户:conn /as sysdba,查看scott用户状态
select username,account_status from dba_users where username=‘SCOTT‘;
OPEN表示此用户处于打开的状态
16、直接在操作系统中以scott用户登录数据库
sqlplus 用户名/密码
eg:sqlplus scott/cat
查看所有用户:select user#,name from user$
修改用户密码:alter user scott identified by scott
17、查看用户下面有那些表
在当前用户下输入select table_name from user_tables;
详解:
select:表示查询,后面跟着表中要查询的列,如果查询多个列值,可以使用逗号隔开
table_name:是user_tables中存储表明的字段;如果使用“*”,则表示表中的所有字段
from:SQL语句中的关键字,表示来自的意思,后面接表名
user_tables:指的是表名,即把表的列数据全部查询出来,踏实oracle数据库内部的表(也是数据字典)专门用来查询用户自己拥有那些表
分号(;):是查询语句的结束符号
18、增、删、查、改
查询表dept中都有那些列 desc dept
查询部分(查dept中的所有列):select * from dept
增加个部门(dept中插入raw):insert into dept( DEPTNO,DNAME, LOC) values (50,‘development‘,‘beijing‘) (列名可不大写、表名括号无空格,values括号空格不要求)
commit;提交
更新部门表数据(更改表数据):update dept set loc=‘shanghai‘ where deptno=50
commit;
select * from dept;
删除一条数据:删除开发部门
delete from dept where deptno=50;
commit;
select * from dept;
19、在oracle的sqlplus中,英文字符默认左对齐,而数字则是默认右对齐
20、更改视图
alter session set nls_date_format=‘yyyy-mm-dd‘;
详解:
alter:这是更改oracle数据库参数的SQL语句的关键字,魏宇SQL语句的开头,表示更改,一般在更改数据库各种参数的矢耦需要用到;
session:在计算机中表示一个会话,这里表示只更改当前会话的时间格式。其他人链接数据库则不会看到更改后的格式;
set:表示‘设置’参数的意思;
nls_date_format:这是oracle数据库的日期参数,日期虽然一样,但是可以有不一样的时间日期格式;
21、查询数据库当前的时间:select sysdate from dual;
详解:sysdate是数据库当前的日期,dual是oracle数据库的一个虚表,即不是真实存在的表,在查询用到计算,常量表达式等时可以使用的dual表。
22、查看员工目前的工作年数
select ename, round((sysdate-hiredate)/365.0) from emp;
详解:sysdate-hiredate,表示当前时间减去入职时间,计算出多少天
(sysdate-hiredate)/365.0:计算工作几年
round(X,Y):是oracle数据库的一个四舍五入的函数,X为需要进行四舍五入的数字,Y表示哪位需要进行四舍五入,例如Y=0,表示在各位进行,Y=2表是在小数点后两位进行
23、按照工作年数排序查询出每个员工的姓名及年岁
select ename, hiredate feom emp order by hiredate;
select ename, hiredate feom emp order by 2; 其中2表示第二列,就是hiredate
24、查询出每个员工的工作年数,按年数倒序排列数据
select ename, rount((sysdate-hiredate)/365,0) from emp order by rount((sysdate-hiredate)/365,0) desc;
25、改成中文列名
select ename as "姓名", rount((sysdate-hiredate)/365,0) as "工作(年)" from emp order by "工作(年)" desc;
解释:as是列别名的关键字,在oracle中也可以使用列的别名惊醒排序
26、临时多给每个员工发1500元的奖金
select ename, asl+1500 from emp order by sal;
对查询出来的员工薪水进行文字说明,这样更容易理解,
select ename|| ‘员工本月工资为 : ¥‘ || (sal+1500) as "公司员工本月工资表" order by sal;
解释:||:是oracle的连接符,可以把查询出来的数据和其他字符串链接起来,可以对多个字符、多个表的列值相连接
‘’:其中是字符串,可以把里面的字符串输出
27、查询的结果中只显示唯一的值,过滤掉重复的数据
select distinct deptno from emp;
28、查看工资少于2000的员工、并按照薪水排序
select ename, sal from emp where sal <=2000 order by sal;
解释:
where:限制条件的关键字
order by:排序
29、查看薪水在1500和2500元之间的员工信息
select ename, sal from emp where sal between 1500 and 2500 order by sal;
解释
between...and...:用于条件where之中,表示数字介于两个数值之间
30、查看拿保底工资的销售人员
select empno, ename, job, sal from emp where job="SALESMAN" and sal=1250 ;
查看没有奖金或者工资少于1500元的员工
select empno, ename, job,sal, comm from emp where comm= null or sal < 1500 ;
员工工资加上提成,哪个员工工资最少
select empno, ename, job, sal, comm, sal+nvl(comm,0) where comm = null or sal<1500 order by sal+nvl(comm,0);
nvl(X,Y)是数据库的一个内部的函数,如果X有值,则返回X的值,如果X为null,则返回Y值
31、模糊查询:查看名字中“M”开头的员工
select empno, ename, job, sal from emp where ename like "M%";
32、查找那些员工属于销售人员、分析师、管理人员
select empno, ename, job from emp where job in (‘SALESMAN‘,‘ANALYST‘,‘MANAGER‘);
同:select empno, ename, job from emp where job=‘SALESMAN‘ or job=‘ANALYST‘ or job =‘MANAGER‘;
解释:in,表示在某个列中存在多个指均符合,或者使用or 代替也可以
33、统计公司每个岗位有多少人,并排序
select job, count(*) from emp group by job order by count(*);
count(*)是一个统计数量的函数
34、共总共的支付给员工的薪水
select sum(sal)+sum(nvl(comm,0)) as "薪水总支出" from emp;
统计公司员工的平均工资
select round(avg(sal),2) from emp;
解释:avg:为oracle数据库求平均值的函数
34、查询员工工资中的最大值,最小值,以及差距
select max(sal), min(sal),max(sal)-min(sal) from emp;
max:是oracle数据库的内部函数,专门统计最大的数值
min:是oracle数据库的内部函数,专门统计最小的数值
35、查询平均工资大于2500的岗位
select job, avg(sal) from emp having avg(sal)>2500 group by job;
解释:having:在使用group by 分组时,如有条件限制需要使用having,而不是where,即在group by中所对应的条件限制为having
oracle对表进行增删查改的操作,以及对用户的一些简单的操作