Oracle学习(一):基本操作和基本查询语句(一)

2014-11-24 16:53:56 · 作者: · 浏览: 0

文中以"--"开头的语句为注释,即为绿色部分

1.知识点:可以对照下面的录屏进行阅读

SQL> --录屏工具spool,开始录制,并指定保存路径为c:\基本查询.txt 
SQL>spool c:\基本查询.txt 

SQL> --清屏
SQL> host cls

SQL> --查看当前用户
SQL> show user
USER 为 "SCOTT"

SQL> --查询当前用户下的表
SQL> select * from tab;

SQL> -- tab数据字典(管理员提供的表)
SQL> desc emp

SQL> --查询所有员工的所有信息
SQL> select * from emp;

SQL> --设置行宽,只用于使显示表看的更直观
SQL> set linesize 120

SQL> --设置列宽,只用于使显示表看的更直观
SQL> col ename for a8  --设置ename为8个字符的长度
SQL> col sal for 9999  --设置sal为4个数字的单位

SQL> --执行上条SQL语句
SQL> /  

SQL> --通过列名查询
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno
  2  from emp;	--数字2为第二行,好的sql语句应该有清晰的分行

SQL> --SQL优化: 1. 尽量使用列名代替*,Oracle 9i之后,可以认为是一样 
SQL> --修改错误的两种方法:
SQL> --第一种方法:c命令(全称change),用来修改sql语句
SQL> 2			-- 定位要修改的位置为上一条SQL语句的第二行 
  2* fomr emp	--显示定位的SQL语句 
SQL> c /fomr/from 	--将fomr改为from
  2* from emp	-- 修改后的SQL语句 
SQL> /		--执行修改后的SQL语句 

SQL> --第二种方法:ed命令直接进入记事本编辑SQL语句页面
SQL> ed		--进入记事本编辑SQL语句页面
已写入 file afiedt.buf   --直接在这个记事本上修改,完了关闭记事本,记事本的内容自动写到sqlplus窗口

  1  select empno as "员工号",ename "姓名",sal 月薪,sal*12 年   薪 --此行和下一行是关闭记事本后,自动写到窗口的内容
  2* from emp		--带*号为在记事本中修改过的内容

SQL> --SQL语句中如果别名中有空格或关键字必须加双引号
SQL> select empno as "员工号",ename "姓名",sal 月薪,sal*12  年   薪    --报错,别名有空格 
SQL> select empno as "员工号",ename "姓名",sal 月薪,sal*12  “年   薪”  -- 正确,别名有空格 ,但使用了双引号


SQL>--SQL中null值:1. 包含null的表达式都为null;2. SQL中,null != null 
SQL>--1.包含null的表达式都为null,当comm为空时,不管sal是否有值都为空
SQL> select empno,ename,sal,sal*12 年薪,comm 奖金,sal*12+comm 年收入
SQL> --2. SQL中,null != null,查询奖金(comm)为null的员工,但实现结果为“未选定行”,即没有结果
SQL> select *
  2  from emp
  3  where comm=null;
SQL> --将2中的SQL语句改为comm is null后正常显示结果
SQL> ed
已写入 file afiedt.buf

  1  select *
  2  from emp
  3* where comm is null
SQL> --空值是无效的,未指定的,未知的或不可预知的值。
SQL> --空值不是空格或者0.

SQL> --DISTINCT:1、去掉重复的记录;2、作用于后面所有的列
SQL> select DISTINCT deptno,job from emp;

SQL> --concat 连接字符串
SQL> select concat('Hello',' World') from emp;

SQL> --dual表: 伪表,当查询目标不是一个具体表时,from都写dual
SQL> select 3+2 from dual;

SQL> --连接符” || ”,用来拼接字符串
SQL> --查询员工信息:  ****的薪水是****
SQL> select ename||'的薪水是'||sal  
  2  from emp;

SQL>
--保存上一条SQL语句到指定路径 SQL> save c:\a.sql 已创建 file c:\a.sql SQL>--从指定路径加载sql语句,并执行,如果只加载不执行使用load SQL> @c:\a.sql SQL>--录屏工具:spool off 结束录制,并保存到之前指定的路径”c:\基本查询.txt ” SQL> spool off
2.在Sqlplus下实际执行的结果录屏:
SQL> --清屏
SQL> host cls

SQL> --查看当前用户
SQL> show user
USER 为 "SCOTT"
SQL> 
SQL> 
SQL> --当前用户下的表
SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID                               
------------------------------ ------- ----------                               
DEPT                           TABLE                                            
EMP                            TABLE                                            
BONUS                          TABLE                                            
SALGRADE                       TABLE                                            

SQL> -- tab数据字典(管理员提供的表)
SQL> desc emp
 名称                                      是否为空  类型
 ----------------------------------------- -------- ----------------------------
 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)

SQL> --查询所有员工的所有信息
SQL> select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM 
---------- ---------- --------- ---------- -------------- ---------- ---------- 
    DEPTNO                                                                      
----------                                                                      
      7369 SMITH      CLERK           7902 17-12月-80            800            
        20                                                                      
                                                                                
      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300 
        30                                                                      
                                                                                
      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500 
        30                                                                      
                                                                                

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM 
---------- ---------- --------- --------