oracle备忘录(一)---基础知识

---********----一些常用命令----********-----
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视频

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值