oracle常用命令----登陆,设置显示行页,编辑执行文件,表结构,类型

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

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

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

1 C:\Users\Administrator>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;具体结果我这边就不展示了

 

 



 

posted @ 2018-03-13 13:44  爱吃山楂果  阅读(677)  评论(0编辑  收藏  举报