首页 > 代码库 > 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条件后面的每一个字段所表示的值都是区分大小写的

wKioL1SReQWhNvd-AAC5XnBQZHc391.jpg

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‘;

wKioL1SRhNSjXBjyAACVH7MhC1g373.jpg

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‘;

wKiom1SRlXDTL_fiAACdDLP-H74954.jpg

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;

wKiom1SRnyDRQabbAAB1QkqPl0Q797.jpg

详解:

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;

wKiom1SSKfiw9whLAACzfJjWPdU595.jpg

删除一条数据:删除开发部门

delete from dept where deptno=50;

commit;

select * from dept;

wKiom1SSKuuhJ4RdAABldeIIGGo139.jpg

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对表进行增删查改的操作,以及对用户的一些简单的操作