---********----一些常用命令----********-----
SQL> --清屏
SQL> host cls
SQL> --当前用户
SQL> show user
USER 为 "SCOTT"
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)
---********----sqlplus的设置----********-----
SQL> --设置行宽
SQL> set linesize 120
SQL> --设置一页显示的数目
SQL> set pagesize 20
SQL> --设置列宽
SQL> col ename for a8 --字符,长度为8的字符
SQL> col sal for 9999 --长度为4位的数字
SQL> /
----别名规则:注意点:
--别名写在字段的后面,空一格,如果是 字符(中文字符,英文字符) 就可以直接写,不需要单引号或者双引号
--如果别名是数字,不能直接写,一定要加上双引号。
--而表达式中的字符要用单引号''表示,而不能用双引号"" 比如case when 中的要比较的字符就要用单引号
SQL> /*
SQL> --SQL优化:
SQL> --工具的介绍:检测SQL语句的执行效率,可以使用set timing on ,相当于打开计时开关。这样就能看到每条语句的执行时间
SQL> --可以执行set timing off 来关闭计时开关,默认开关是关的
SQL> --1. 尽量使用列名(Orale9i之后,*和列名是一样的 )
SQL> --2. where条件,执行顺序为 从右 --> 左
SQL> --如果用and连接两个条件,就要将false几率大一些的条件放在右边,
SQL> --如果为false,就不必判断左边的条件
SQL> --如果用or连接两个条件,就要将true几率大一些的条件放在右边。
SQL> --3.Having 和 Where的功能相似,都是过滤条件,但是where中不能使用组函数(avg,count, max ,min, sum)
SQL> --如果两个都能实现,尽量使用where语句,因为where是先筛选,可能再分组
SQL> --having是先进行分组,在筛选,因此效率要低一些
SQL> --4.理论上,使用多表查询比使用子查询效率高
SQL> --5.尽量不要使用集合运算(union,union all ,intersect, minus)
SQL> */
SQL> host cls
SQL> ---********----nvl函数的应用----********-----
SQL> /*
SQL> SQL语句中的null值
SQL> 1. 包含null的表达式都为null
SQL> 2. null!=null,所以查询字段为空,不能comm == null ,而是comm is null
SQL> */
SQL> select empno,ename,sal,sal*12,comm,sal*12+nvl(comm,0)
2 from emp;
---********----修改sql语句----********-----
SQL> select *
2 form emp;
form emp* 第 2 行出现错误: ORA-00923: 未找到要求的 FROM 关键字
SQL> --c 命令(使用方法:先定位到具体的行数,再用c(change)命令修改)
SQL> 2
2* form emp
SQL> c /form/from --(注意:不要有空格)
2* from emp
SQL> / --(斜杠表示执行命令)
SQL> --第二种方法 ed命令 edit
SQL> --(输入之后会弹出记事本,改好后直接关掉记事本,改好的内容会自动输入到dos中,/执行)
SQL> ed
已写入 file afiedt.buf
1 select empno,ename,sal,job
2* from emp
SQL> /--第三种方法 主要针对在后面添加一些条件 a命令 append
SQL> select *
2 from emp
3 order by sal;
SQL> a desc (一定要注意: a后面要>2个空格,如果一个空格 就会变成saldesc)
3* order by sal desc
SQL> /
---********----连接符----********-----
SQL> select concat('Hello',' World') from dual;
CONCAT('HELL
------------
Hello World
SQL> --dual:伪表
SQL> select 3+2 from dual;
3+2
----------
5
SQL> select 'Hello'||' World' 一列 from dual;
一列
------------
Hello World
SQL> --查询员工信息:***的薪水是****
SQL> select ename||'的薪水是'||sal 所有人的薪水 2 from emp;
所有人的薪水
----------------------------------------------------------
SMITH的薪水是800
ALLEN的薪水是1600
WARD的薪水是1250
JONES的薪水是2975
---********----保存和执行一个文件----********-----
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------- --------- ---------- -------------- ----- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
SQL> save c:\a.sql
--(保存上一条的语句)
已创建 file c:\a.sql
SQL> @c:\a.sql --(执行一个文件)
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------- --------- ---------- -------------- ----- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
---********----保存dos中数据到文件----********-----
spool 路径
--内容
spool off
--创智播客oracle视频
oracle备忘录(一)---基础知识
最新推荐文章于 2022-08-03 23:24:32 发布