zoukankan      html  css  js  c++  java
  • oracle常用命令----登陆,设置显示行页,编辑执行文件,表结构,类型

    oracle可以通过sqlplus工具连接,也可以通过本地客户端界面进行访问,其他访问方式后续更新。

    以下主要记录一些简单的操作:

    oracle登陆,通过sqlplus /nolog无用户方式登陆:

    1 C:UsersAdministrator>sqlplus /nolog
    2 SQL*Plus: Release 11.2.0.1.0 Production on 星期二 3月 13 10:08:51 2018
    3 Copyright (c) 1982, 2010, Oracle.  All rights reserved.
    4 SQL>

    无用户登陆过后通过conn 用户名/密码 连接到用户对应的数据库

     SQL> conn scott/password 已连接。 SQL> 

    如果是sys用户需要如下连接

    conn sys/password as sysdba 连接sys用户

    查看正在连接的用户方式:

     SQL> show user; USER 为 "SCOTT" 

    命令行界面设置显示格式:

    1 SQL> set linesize 300;设置每行显示300个字节
    2 SQL> set pagesize 30;设置每页显示30行

    编辑文件:

    SQL> ed a.sql    #编辑a.sql文件

    执行a.sql文件,以下仅截出一行内容做参考:

    SQL> @a.sql
    
         EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
    ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
          7369 SMITH      CLERK           7902 17-12月-80            800                    20

    当然也可以通过sql>@文件路径来执行

    查看当前用户所有表的信息:

    1 SQL> select * from tab;
    2 
    3 TNAME                          TABTYPE  CLUSTERID
    4 ------------------------------ ------- ----------
    5 BONUS                          TABLE
    6 DEPT                           TABLE
    7 EMP                            TABLE
    8 SALGRADE                       TABLE

    查看scott用户下的emp表完整结构,如果此用户包含这个表,也可以通过desc emp直接查看:

     1 SQL> desc scott.emp
     2  名称                                                                                                      是否为空? 类型
     3  ----------------------------------------------------------------------------------------------------------------- -------- ----------
     4 
     5  EMPNO                                                                                                     NOT NULL NUMBER(4)
     6  ENAME                                                                                                              VARCHAR2(10)
     7  JOB                                                                                                                VARCHAR2(9)
     8  MGR                                                                                                                NUMBER(4)
     9  HIREDATE                                                                                                           DATE
    10  SAL                                                                                                                NUMBER(7,2)
    11  COMM                                                                                                               NUMBER(7,2)
    12  DEPTNO                                                                                                             NUMBER(2)

    以上数据类型:number表示数字类型,长度为4;varchar2表示是字符串类型,容纳长度为10;date表示日期;number(7,2),其中7表示整个数字长度为7,其中小数占两位,整数占5位。

    对于和我一样的初学用户,建议了解scott用户下面表的所有类型即可。

    查询语句:

    语法:Select * |具体的列 别名 from 表名称;

    消重查询语法:

    语法:Select {distinct} * | 具体的列 别名   from 表名称;
    # 大括号表示可选操作。但是在消除重复列的过程中,如果查询多行必须保证所有列都重复才能消除掉
     1 SQL> select empno 编号 from emp;
     2 
     3       编号
     4 ----------
     5       7369
     6       7499
     7       7521
     8       7566
     9       7654
    10       7698
    11       7782
    12       7788
    13       7839
    14       7844
    15       7876
    16       7900
    17       7902
    18       7934
    19 
    20 已选择14行。

    查询雇员编号,工作,显示自己想要的格式:

    实现这种功能,可以使用字符串连接操作,使用"||"表示。如果加入一些显示信息的话,所有其他的固定信息使用”单引号“括起来。如下所示:

     1 SQL> select '编号是' || empno || '的雇员,姓名是:'|| ename ||',工作是:' ||job from emp;
     2 
     3 '编号是'||EMPNO||'的雇员,姓名是:'||ENAME||',工作是:'||JOB
     4 --------------------------------------------------------------------------------
     5 编号是7369的雇员,姓名是:SMITH,工作是:CLERK
     6 编号是7499的雇员,姓名是:ALLEN,工作是:SALESMAN
     7 编号是7521的雇员,姓名是:WARD,工作是:SALESMAN
     8 编号是7566的雇员,姓名是:JONES,工作是:MANAGER
     9 编号是7654的雇员,姓名是:MARTIN,工作是:SALESMAN
    10 编号是7698的雇员,姓名是:BLAKE,工作是:MANAGER
    11 编号是7782的雇员,姓名是:CLARK,工作是:MANAGER
    12 编号是7788的雇员,姓名是:SCOTT,工作是:ANALYST
    13 编号是7839的雇员,姓名是:KING,工作是:PRESIDENT
    14 编号是7844的雇员,姓名是:TURNER,工作是:SALESMAN
    15 编号是7876的雇员,姓名是:ADAMS,工作是:CLERK
    16 
    17 '编号是'||EMPNO||'的雇员,姓名是:'||ENAME||',工作是:'||JOB
    18 --------------------------------------------------------------------------------
    19 编号是7900的雇员,姓名是:JAMES,工作是:CLERK
    20 编号是7902的雇员,姓名是:FORD,工作是:ANALYST
    21 编号是7934的雇员,姓名是:MILLER,工作是:CLERK
    22 
    23 已选择14行。

    查询过程中使用四则运算,例如输入每个雇员的姓名以及年薪:

     1 SQL> select ename,sal*12 from emp;
     2 
     3 ENAME          SAL*12
     4 ---------- ----------
     5 SMITH            9600
     6 ALLEN           19200
     7 WARD            15000
     8 JONES           35700
     9 MARTIN          15000
    10 BLAKE           34200
    11 CLARK           29400
    12 SCOTT           36000
    13 KING            60000
    14 TURNER          18000
    15 ADAMS           13200
    16 
    17 ENAME          SAL*12
    18 ---------- ----------
    19 JAMES           11400
    20 FORD            36000
    21 MILLER          15600
    22 
    23 已选择14行。
     1 SQL> select '姓名是:'|| ename||':年薪:'||sal*12  from emp;
     2 
     3 '姓名是:'||ENAME||':年薪:'||SAL*12
     4 ----------------------------------------------------------------
     5 姓名是:SMITH:年薪:9600
     6 姓名是:ALLEN:年薪:19200
     7 姓名是:WARD:年薪:15000
     8 姓名是:JONES:年薪:35700
     9 姓名是:MARTIN:年薪:15000
    10 姓名是:BLAKE:年薪:34200
    11 姓名是:CLARK:年薪:29400
    12 姓名是:SCOTT:年薪:36000
    13 姓名是:KING:年薪:60000
    14 姓名是:TURNER:年薪:18000
    15 姓名是:ADAMS:年薪:13200
    16 
    17 '姓名是:'||ENAME||':年薪:'||SAL*12
    18 ----------------------------------------------------------------
    19 姓名是:JAMES:年薪:11400
    20 姓名是:FORD:年薪:36000
    21 姓名是:MILLER:年薪:15600
    22 
    23 已选择14行。

    条件查询:

    语法:Select {distinct} | 具体的列 别名 from 表名称 {where 条件()}

    范例:查询每月可以得到奖金的雇员信息,comm字段非空即可,这里使用is not null表示
    SQL> select * from emp where comm is not null;
    EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
    ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
    7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
    7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
    7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
    7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
    1 当要查询同事满足两个要求的查询需要使用运算符。or,and等
    2 范例:查询员工工资大于1500,并且获取奖金的雇员信息
    3 SQL> select * from emp where comm is not null and sal>1500;
    4 
    5 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
    6 ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
    7 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30

    sql语法中between...and...的用法:

    注意:between...and...不仅支持数字,同时还支持日期

     1 查找emp表中工资大于1500且小于3000所有员工的所有信息
     2 SQL> select * from emp where sal between 1500 and 3000;
     3 
     4      EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
     5     DEPTNO
     6 ---------- ---------- --------- ---------- -------------- ---------- ----------
     7 ----------
     8       7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300
     9         30
    10       7566 JONES      MANAGER         7839 02-4月 -81           2975
    11         20
    12       7698 BLAKE      MANAGER         7839 01-5月 -81           2850
    13         30
    14       7782 CLARK      MANAGER         7839 09-6月 -81           2450
    15         10
    16       7788 SCOTT      ANALYST         7566 19-4月 -87           3000
    17         20
    18       7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0
    19         30
    20       7902 FORD       ANALYST         7566 03-12月-81           3000

    查找日期在81年1月1日到81年12月31日入职员工信息

     1 SQL> set linesize 260
     2 SQL> select * from emp where hiredate between '1-1月-81'and '31-12月-81';
     3 
     4      EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
     5     DEPTNO
     6 ---------- ---------- --------- ---------- -------------- ---------- ----------
     7 ----------
     8       7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300
     9         30
    10       7521 WARD       SALESMAN        7698 22-2月 -81           1250        500
    11         30
    12       7566 JONES      MANAGER         7839 02-4月 -81           2975
    13         20
    14       7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400
    15         30
    16       7698 BLAKE      MANAGER         7839 01-5月 -81           2850
    17         30
    18       7782 CLARK      MANAGER         7839 09-6月 -81           2450
    19         10
    20       7839 KING       PRESIDENT            17-11月-81           5000
    21         10
    22       7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0
    23         30
    24       7900 JAMES      CLERK           7698 03-12月-81            950
    25         30
    26       7902 FORD       ANALYST         7566 03-12月-81           3000
    27         20

    范例:查找出姓名是smith的雇员信息

    1 SQL> select * from emp where ename='SMITH';
    2 
    3      EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
    4     DEPTNO
    5 ---------- ---------- --------- ---------- -------------- ---------- ----------
    6 ----------
    7       7369 SMITH      CLERK           7902 17-12月-80            800
    8         20

    范例:查出雇员编号是7369,7499,7521雇员的具体信息

     1 SQL> select * from emp where empno=7369 or empno=7499 or empno=7521;
     2 
     3      EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
     4     DEPTNO
     5 ---------- ---------- --------- ---------- -------------- ---------- ----------
     6 ----------
     7       7369 SMITH      CLERK           7902 17-12月-80            800
     8         20
     9       7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300
    10         30
    11       7521 WARD       SALESMAN        7698 22-2月 -81           1250        500
    12         30

    以上对于制定了查询的范围,特别是针对具体的某一个值的时候,可以使用in操作符来完成

    语法格式:字段 in ( 值1,值2,...,值n),同样此语句也可以做非运算 。语法格式:字段 not  in ( 值1,值2,...,值n)。这里面的值同样适用于字符串操作,但是要注意,字符串操作的时候需要使用单引号('str')标识。

    select * from emp where empno in(7369,7499,7521);  //此查询语句结果同于上面语句的执行结果

    模糊查找:在sql中主要使用like来提供模糊查找功能,想深入了解的话可以参考正则表达式部分,后续会补充更新:

    like语句使用的过程中,通常使用以下两种通配符(”%“,可以匹配任意长度内容;”_“,可以匹配一个长度内容)

    范例:要求查询姓名中第二个字母是m的所有员工信息。

    1 SQL> select * from emp where ename like '_M%';
    2 
    3      EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
    4     DEPTNO
    5 ---------- ---------- --------- ---------- -------------- ---------- ----------
    6 ----------
    7       7369 SMITH      CLERK           7902 17-12月-80            800
    8         20

    要求查询出雇员信息中包含字母M的雇员信息,此时表示可以在任意位置出现字母m。

    Select * from emp where ename like ‘%M%;

    但是要提醒大家的是:如果在使用like过程中,没有指定查询关键字,则表示查询全部。

    同样,通配符也适合日期的查找功能:

    范例,查出1981年入职的雇员信息:

     1 SQL> select * from emp where hiredate like '%81%';
     2 
     3      EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
     4     DEPTNO
     5 ---------- ---------- --------- ---------- -------------- ---------- ----------
     6 ----------
     7       7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300
     8         30
     9       7521 WARD       SALESMAN        7698 22-2月 -81           1250        500
    10         30
    11       7566 JONES      MANAGER         7839 02-4月 -81           2975
    12         20
    13       7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400
    14         30
    15       7698 BLAKE      MANAGER         7839 01-5月 -81           2850
    16         30
    17       7782 CLARK      MANAGER         7839 09-6月 -81           2450
    18         10
    19       7839 KING       PRESIDENT            17-11月-81           5000
    20         10
    21       7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0
    22         30
    23       7900 JAMES      CLERK           7698 03-12月-81            950
    24         30
    25       7902 FORD       ANALYST         7566 03-12月-81           3000
    26         20
    27 
    28 已选择10行。

    运算符:不等于在sql中可以使用”<>“,“!=”表示,在python中也是这两种表示方式,其他的开发语言里面通常只有"!="形式

    sql中排序操作:使用order by来对相应表中具体的行进行排序:

    语法格式:
    Select {distinct} * | 具体的列 别名   from 表名称   {where 条件($)} { order by 排序的字段1,排序的字段2 asc|desc}

    范例,将emp表中员工的薪资按照从低到高进行排序:

     1 SQL> select * from emp order by sal;
     2 
     3      EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
     4     DEPTNO
     5 ---------- ---------- --------- ---------- -------------- ---------- ----------
     6 ----------
     7       7369 SMITH      CLERK           7902 17-12月-80            800
     8         20
     9       7900 JAMES      CLERK           7698 03-12月-81            950
    10         30
    11       7876 ADAMS      CLERK           7788 23-5月 -87           1100
    12         20
    13       7521 WARD       SALESMAN        7698 22-2月 -81           1250        500
    14         30
    15       7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400
    16         30
    17       7934 MILLER     CLERK           7782 23-1月 -82           1300
    18         10
    19       7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0
    20         30
    21       7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300
    22         30
    23       7782 CLARK      MANAGER         7839 09-6月 -81           2450
    24         10
    25       7698 BLAKE      MANAGER         7839 01-5月 -81           2850
    26         30
    27       7566 JONES      MANAGER         7839 02-4月 -81           2975
    28         20
    29 
    30      EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
    31     DEPTNO
    32 ---------- ---------- --------- ---------- -------------- ---------- ----------
    33 ----------
    34       7788 SCOTT      ANALYST         7566 19-4月 -87           3000
    35         20
    36       7902 FORD       ANALYST         7566 03-12月-81           3000
    37         20
    38       7839 KING       PRESIDENT            17-11月-81           5000
    39         10

    从高到低排序的话可以在后面加上desc,如select * from emp order by sal desc;具体结果我这边就不展示了

     



  • 相关阅读:
    linux 进程
    VFS dup ,dup2
    文件操作 之 各类函数
    文件系统之 stat与access
    xml文件
    Java学习笔记42(数据库连接池 druid连接池)
    java学习笔记41(数据库连接池 C3p0连接池)
    java学习笔记39(sql事物)
    java学习笔记38(sql注入攻击及解决方法)
    java学习笔记37(sql工具类:JDBCUtils)
  • 原文地址:https://www.cnblogs.com/hongjinping/p/8556205.html
Copyright © 2011-2022 走看看