文中以"--"开头的语句为注释,即为绿色部分
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>2.在Sqlplus下实际执行的结果录屏:--保存上一条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
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
---------- ---------- --------- --------