首页 > 代码库 > sqlplus登录方式,列出所有表,列出表结构,sqlplus行和列显示设置,别名,空值问题,连接符,DISTINCT

sqlplus登录方式,列出所有表,列出表结构,sqlplus行和列显示设置,别名,空值问题,连接符,DISTINCT



1 sqlplus登录方式:

        普通用户登录:

登录egC:\>sqlplusscott/11 (格式:sqlplus用户名/密码)

退出egquit退出

 

        超级用户登录

                  C:\>sqlplus/nolog

                  SQL*Plus:Release 10.1.0.2.0 - Pr

                  Copyright(c) 1982, 2004, Oracle.

                  SQL>connect /as sysdba   //操作用户登录方式

                  已连接。

                                    

2查看用户下有什么表,命令:

        SQL>select * from tab;  

taboracle中的一个关键字。

 

3 关于数据字典:

tab是数据字典:oracle超级管理员分配给普通用的资源....,tab关键字....

 

4 SQL>select * from dept; --查询表的所有记录

        

   DEPTNO(部门编号) DNAME部门名称       LOC 位置

                  ------------------------ -------------

                          10 ACCOUNTING     NEW YORK

                          20 RESEARCH       DALLAS

                          30 SALES          CHICAGO

                          40 OPERATIONS     BOSTON

 

5 SQL> desc dept; --查询表结构

        名称                                     是否为空?类型

        ------------------------------------------------- ----------------------------

        DEPTNO                                    NOT NULLNUMBER(2)

        DNAME                                            VARCHAR2(14)

        LOC                                               VARCHAR2(13)

                           

6 基本命令

        A  set linesize 150  设置行宽

        B  set pagesize 140 设置页大小

C 设置列宽

           SQL> col empno for 99999999999999999999

        D  给字符方式设置列宽:

           SQL> col ename for a20

        

                                              

E window下清屏

          SQL>host cls

F Linux下清贫

 SQL>host clear

                           

7 select语句(可以检索所有列、部分列、表达式、别名)

                   select * from emp;

             ---显示员工姓名员工编号工作 月薪年薪

             select ename, empno, job, sal , sal*12from emp;

8  别名

                  --1别名:可以省掉""as

                  --2有空格时,不能省掉""

 

SQL> select ename as "员工姓名" , empno"编号", job工作, sal "" , sal*12  年薪 from emp

 

                                    员工姓名        编号工作                年薪

                                    -------------------- --------- ---------- ----------

                                    SMITH            7369 CLERK           800       9600

                                    ALLEN            7499 SALESMAN       1600      19200

                                    WARD             7521 SALESMAN       1250      15000

                                    JONES            7566 MANAGER        2975      35700

                                    MARTIN           7654 SALESMAN       1250      15000

                                    BLAKE            7698 MANAGER        2850      34200

                                    CLARK            7782 MANAGER        2450      29400

                                    SCOTT            7788 ANALYST        3000     36000

                                    KING             7839 PRESIDENT      5000     60000

                                    TURNER           7844 SALESMAN       1500      18000

                                    ADAMS            7876 CLERK          1100      13200

                                    JAMES            7900 CLERK           950      11400

                                    FORD             7902 ANALYST        3000      36000

                                    MILLER           7934 CLERK          1300      15600

                                    

        ---显示员工姓名员工编号工作 月薪年收入(月薪*12+comm)

9空值问题:

        selectename, empno, job, sal , sal*12+comm from emp ; (有问题,因为commnull的)

        

空值问题注意:

                  1NULL空值任何数和null运算都为null   (null无穷大)

                  2空值不是空 null != null

        解决办法:

                  null滤空函数 nvl (a,b) --a是空的时候,返回b(其中 b可以是数字/字符串)

                  ---字符串和日期在sql语言用单引号扩起来...

        案例说明:

A  select ename, empno, job,sal , sal*12+ nvl(comm,0) 年收入from emp;

 

                           ENAME                     EMPNO JOB              SAL     年收入

                           ------------------------------ --------- ---------- ----------

                           SMITH                      7369 CLERK           800       9600

                           ALLEN                      7499 SALESMAN       1600      19500

                           WARD                       7521 SALESMAN       1250      15500

                           JONES                      7566 MANAGER        2975      35700

                           MARTIN                     7654 SALESMAN       1250      16400

                           BLAKE                      7698 MANAGER        2850      34200

                           CLARK                      7782 MANAGER        2450      29400

                           SCOTT                      7788 ANALYST        3000      36000

                           KING                       7839 PRESIDENT      5000     60000

                           TURNER                     7844 SALESMAN       1500      18000

                           ADAMS                      7876 CLERK          1100      13200

                           JAMES                      7900 CLERK           950      11400

                           FORD                       7902 ANALYST        3000      36000

                           MILLER                     7934 CLERK          1300      15600

                           

         B   查询奖金为空的员工

                           select* from emp where comm is null;

        结果:

                           EMPNOENAME      JOB              MGR HIREDATE              SAL       COMM    DEPTNO

                           -------------------- --------- ---------- -------------- ---------- ---------- ----------

                                 7369 SMITH      CLERK          7902 17-12-80           800                    20

                                 7566 JONES      MANAGER        7839 02-4 -81          2975                    20

                                 7698 BLAKE      MANAGER        7839 01-5 -81          2850                    30

                                 7782 CLARK      MANAGER        7839 09-6 -81          2450                    10

                                 7788 SCOTT      ANALYST        7566 19-4 -87          3000                    20

                                 7839 KING       PRESIDENT           17-11-81          5000                    10

                                 7876 ADAMS      CLERK          7788 23-5 -87          1100                    20

                                 7900 JAMES      CLERK          7698 03-12-81           950                    30

                                 7902 FORD       ANALYST        7566 03-12-81          3000                    20

                                 7934 MILLER     CLERK          7782 23-1 -82          1300                    10

        

         C  查询奖金不为空的员工

                      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

 

 

10连接符||

          select ‘hello‘ || ‘world‘ from emp;      

          select ‘hello‘ || ‘world‘ from dual; --伪表

 

dual是数据字典 (oracle超级管理员分配给普通用的资源....,tab关键字....)

         SQL> select sysdate from dual;

                                    SYSDATE

                                    --------------

                                    07-10-14

                                    

                                    SQL>

11:DISTINCT 

A 作用去除重复的行

         select DISTINCT deptno from emp;

                               DEPTNO

                                    ----------

                                        30

                                        20

                                   10

         B  DISTINCT修饰多个字段的时,当部门编号和工种都一样的时候,认为是重复的...

                                                                                                      否则不同行.

                                                       ====DISTINCT2个字段

                                    selectDISTINCT deptno, job from emp

                                    

 

sqlplus登录方式,列出所有表,列出表结构,sqlplus行和列显示设置,别名,空值问题,连接符,DISTINCT