设为首页 收藏本站
查看: 1528|回复: 0

[经验分享] Linux系统中数据库启动和关闭&Basic SQL-Unix

[复制链接]

尚未签到

发表于 2018-10-24 06:51:14 | 显示全部楼层 |阅读模式
  第一步:使用oracle用户登录
  第二步:在oracle用户下输入sqlplus /nolog
  第三步:如需使用管理员权限,则输入connect /as sysdba
  第四步:启动和关闭
  startup
  startup nomount #只启动实例
  startup mount   #打开控制文件
  startup open    #打开数据文件和重做日志
  shutdown
  shutdown normal        #不接受新的连接,需要等待所有的用户断开连接
  shutdown immediate     #回滚未结束的事务关闭数据库
  shutdown transactional #等用户结束事务关闭数据库
  shutdown abort         #直接关闭数据库
  第五步:如果是启动服务,要开启监听
  退出sqlplus模式输入lsnrctl start
  [oracle@RHEL64 ~]$ sqlplus /nolog

  SQL*Plus:>  Copyright (c) 1982, 2009, Oracle.  All rights reserved.
  SQL> conn /as sysdba

  Connected to an>  SQL> startup
  ORACLE instance started.
  Total System Global Area  551165952 bytes

  Fixed>
  Variable>  Database Buffers          171966464 bytes
  Redo Buffers                3690496 bytes
  Database mounted.
  Database opened.
  SQL>
  解锁scott用户:

  SQL>>
  User>  SQL> commit;
  Commit complete.
  SQL> conn scott/tiger
  ERROR:
  ORA-28001: the password has expired
  Changing password for scott
  New password:
  Retype new password:
  Password changed
  Connected.
  显示当前用户:
  SQL> show user
  USER is "SCOTT"
  设置SQL*Plus的环境变量:linesize和pagesize
  SQL> set linesize 300
  SQL> set pagesize 3000
  计算一个查询花费的时间:
  SQL> set timing on
  SQL> select * from dept;
  DEPTNO DNAME          LOC
  ---------- -------------- -------------
  10 ACCOUNTING     NEW YORK
  20 RESEARCH       DALLAS
  30 SALES          CHICAGO
  40 OPERATIONS     BOSTON
  Elapsed: 00:00:00.07
  SQL>
  emp,dept,salgrade表结构如下:
  DEPT表:
DSC0000.jpg

  EMP表:
DSC0001.jpg

  salgrade表:
DSC0002.jpg

  查询emp表中所有人的姓名:
  SQL> select ename from emp;
  ENAME
  ----------
  SMITH
  ALLEN
  WARD
  JONES
  MARTIN
  BLAKE
  CLARK
  SCOTT
  KING
  TURNER
  ADAMS
  JAMES
  FORD
  MILLER
  14 rows selected.
  SQL>
  把查询结果中ename改为中文“姓名”:
  SQL> select ename 姓名 from emp;
  查询emp表中不重复的部门:
  SQL> select distinct deptno from emp;
  DEPTNO
  ----------
  30
  20
  10
  SQL>
  查询emp表中工资大于2k的员工:
  SQL> select ename,sal from emp where sal>2000;
  ENAME             SAL
  ---------- ----------
  JONES            2975
  BLAKE            2850
  CLARK            2450
  SCOTT            3000
  KING             5000
  FORD             3000
  6 rows selected.
  SQL>
  查询emp表中工资3k到3k的员工:
  SQL> select ename,sal from emp where sal between 2000 and 3000;
  ENAME             SAL
  ---------- ----------
  JONES            2975
  BLAKE            2850
  CLARK            2450
  SCOTT            3000
  FORD             3000
  SQL>
  查询emp表中,ename列以A开头的员工:
  SQL> select ename from emp where ename like 'A%';
  ENAME
  ----------
  ALLEN
  ADAMS
  SQL>
  查询emp表中,ename列含有A的员工:
  SQL> select ename from emp where ename like '%A%';
  ENAME
  ----------
  ALLEN
  WARD
  MARTIN
  BLAKE
  CLARK
  ADAMS
  JAMES
  7 rows selected.
  SQL>
  查询没有员工的部门:
  SQL> select * from dept where deptno in (select deptno from emp group by deptno having count(*)
  查询有员工的部门:
  SQL> select * from dept where deptno in (select deptno from emp group by deptno having count(*)>1);
  DEPTNO DNAME          LOC
  ---------- -------------- -------------
  30 SALES          CHICAGO
  20 RESEARCH       DALLAS
  10 ACCOUNTING     NEW YORK
  SQL>
  查询emp表中姓名和工资额,按照工资降序排列:
  SQL> select ename,sal from emp order by sal desc;
  ENAME             SAL
  ---------- ----------
  KING             5000
  FORD             3000
  SCOTT            3000
  JONES            2975
  BLAKE            2850
  CLARK            2450
  ALLEN            1600
  TURNER           1500
  MILLER           1300
  WARD             1250
  MARTIN           1250
  ADAMS            1100
  JAMES             950
  SMITH             800
  14 rows selected.
  SQL>
  查询emp表中补贴为null的员工:
  SQL> select ename,comm from emp where comm is null;
  ENAME            COMM
  ---------- ----------
  SMITH
  JONES
  BLAKE
  CLARK
  SCOTT
  KING
  ADAMS
  JAMES
  FORD
  MILLER
  10 rows selected.
  SQL>
  使用to_char函数查询1981年入职的员工:
  SQL> select ename,hiredate from emp where to_char(hiredate,'yyyy')='1981';
  ENAME      HIREDATE
  ---------- ---------
  ALLEN      20-FEB-81
  WARD       22-FEB-81
  JONES      02-APR-81
  MARTIN     28-SEP-81
  BLAKE      01-MAY-81
  CLARK      09-JUN-81
  KING       17-NOV-81
  TURNER     08-SEP-81
  JAMES      03-DEC-81
  FORD       03-DEC-81
  10 rows selected.
  SQL>
  使用nvl函数查询每个人每个月的总收入,如果补贴为null,则视其为0:
  SQL> select ename,sal+nvl(comm,0),comm from emp;
  ENAME      SAL+NVL(COMM,0)       COMM
  ---------- --------------- ----------
  SMITH                  800
  ALLEN                 1900        300
  WARD                  1750        500
  JONES                 2975
  MARTIN                2650       1400
  BLAKE                 2850
  CLARK                 2450
  SCOTT                 3000
  KING                  5000
  TURNER                1500          0
  ADAMS                 1100
  ENAME      SAL+NVL(COMM,0)       COMM
  ---------- --------------- ----------
  JAMES                  950
  FORD                  3000
  MILLER                1300
  14 rows selected.
  SQL>
  查询emp表中哪些员工补贴比工资还高:
  SQL> select ename,sal,comm from emp where comm>sal;
  ENAME             SAL       COMM
  ---------- ---------- ----------
  MARTIN           1250       1400
  SQL>
  查询每个部门的最高工资:
  SQL> select deptno,max(sal) from emp group by deptno;
  DEPTNO   MAX(SAL)
  ---------- ----------
  30       2850
  20       3000
  10       5000
  SQL>
  查询每个部门是那个员工获得了部门的最高工资:
  SQL> select e1.ename,e1.sal,e1.deptno from emp e1,(select deptno,max(sal)最大值 from emp group by deptno) e2 where e1.deptno=e2.deptno and e1.sal=e2.最大值;
  ENAME             SAL     DEPTNO
  ---------- ---------- ----------
  BLAKE            2850         30
  SCOTT            3000         20
  KING             5000         10
  FORD             3000         20
  SQL>
  查询10号部门和20号部门平均工资的差异:
  SQL> select (select avg(sal) from emp where deptno=10)-(select avg(sal) from emp where deptno=20) distance from dual;
  DISTANCE
  ----------
  741.666667
  SQL>
  查询emp表每个员工和最高工资之间的差距:
  SQL> select ename,(select max(sal) from emp)-sal distan from emp;
  ENAME          DISTAN
  ---------- ----------
  SMITH            4200
  ALLEN            3400
  WARD             3750
  JONES            2025
  MARTIN           3750
  BLAKE            2150
  CLARK            2550
  SCOTT            2000
  KING                0
  TURNER           3500
  ADAMS            3900
  ENAME          DISTAN
  ---------- ----------
  JAMES            4050
  FORD             2000
  MILLER           3700
  14 rows selected.
  SQL>
  查询emp表中工资超过平均工资的员工:
  SQL> select ename,sal from emp where sal>(select avg(sal) from  emp);
  ENAME             SAL
  ---------- ----------
  JONES            2975
  BLAKE            2850
  CLARK            2450
  SCOTT            3000
  KING             5000
  FORD             3000
  6 rows selected.
  SQL>
  查询每个部门中工资超过平均工资的员工:
  SQL> select deptno,ename,sal from emp where sal>(select avg(sal) from  emp);
  DEPTNO ENAME             SAL
  ---------- ---------- ----------
  20 JONES            2975
  30 BLAKE            2850
  10 CLARK            2450
  20 SCOTT            3000
  10 KING             5000
  20 FORD             3000
  6 rows selected.
  SQL>
  列出所有部门的详细信息和部门人数:
  SQL> select a.*,(select count(*) from emp where deptno=a.deptno) total from dept a;
  DEPTNO DNAME          LOC                TOTAL
  ---------- -------------- ------------- ----------
  10 ACCOUNTING     NEW YORK               3
  20 RESEARCH       DALLAS                 5
  30 SALES          CHICAGO                6
  40 OPERATIONS     BOSTON                 0
  SQL>


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-625603-1-1.html 上篇帖子: 5. SQL Server数据库性能监控 - 当前请求 下篇帖子: MySQL sql 无法自动谓词推入
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表