zoukankan      html  css  js  c++  java
  • oracle01

    01-基本的查询语句

    A:一些命令

    1. sqlplus sys/sys@192.168.22.220:1521/orcl as sysdba;
    2. conn scott/123456@192.168.22.210:1521/orcl; 从当前用户转换成scott用户
    3. show user; 显示当前用户
    4. show linesize; 显示
    5. set linesize 150; 设置行
    6. col ename for a8; col sal for 9999;设置列ename为字符长度为8长度;设置sal4位数字;
    7. c 命令字符替换如: c /form/from 或者c!form!from
    8. host cls;清屏幕
    9. spool d:/1.sql 将命令写入到1.sql文件中。spool off终止写入文件中。

    Bsql优化原则

    1. 查询的时候尽量使用列select ename,sal from emp; 
    2. 分组查询没有多行函数(聚合函数),如果使用过滤,考虑使用where还是having
    3. 子查询和多表查询之间选择,尽量使用多表查询
    4. 集合运算中,如果union 和union all都可以,考虑使用union all 。因为union需要去掉重复的。
    5. 能够不要使用集合运算就不要使用集合运算。

    注意掌握oracle的常规命令,在学习过程中总结一些优化原则

    02-空值和别名

    A:处理列值为null

    oracle中值为null做四则运算结果都为null。处理方法nvl(null,0) 

    B:判断列null

    oracle中判断一个值为null使用is null 或者is not null

    C给一个列取一个别名可以使用as 或者省略as

         select empno as “员工编号” , ename 员工姓名 from emp;

         注意:别名需要使用“”,或者不加“”。别名中间有空格的需要“”;

    不能使用单引号

    Ddistinct 取出后面的所有列唯一

    select distinct job,deptno from emp;这里distinct作用于后面的所有的列。

                select distinct(job) from emp;可以()

    E|| concat() 字符连接起来

    select concat(‘hello’,’world’) from dual;使用concat()后面需要加表。mysql并严格遵循sql1990标准

                select ‘hello’ || ‘world’ from dual;

             注意字符串使用单引号‘’,不能使用双引号“”,使用双引号的是别名

    dual是伪表

    03-SQL和iSQLPLUS

    Asqlsqlplusisqlplus区别

    1. sqlinsert update delete等常见的sql语句,关键词没有缩写。命令可以控制表中定义和数据;
    2. sqlplusdesc/ed/c/col/for等命令都是sqlplus命令,关键词有缩写,命令不能改变数据库中的数据;访问sqlplus服务端口是1158
    3. isqlplus:sqlplus是网页版本的sqlplus。可以执行脚本,也可以运行脚本;访问isqlplus服务需要访问5560端口

    04-过滤where

    Awhere 后面比较运算符(>,<,!=,>=,<=,between and ,in,like,not like,is null,is not null

    1. 后面=可以接数据或者字符串其中日期格式需要注意

        如果select * from emp where hiredate=’81-09-08’ 执行会出现错误;

     因为该日期字符串格式与oracle当前格式不一致,oralce无法处理日期类型。但是可以修改日期格式alter session|system set NLS_DATE_FORMATE=’yy-mm-dd’.select * from v$nls_parameters; 可以查看到系统的所有变量;

    1. between and (包括边界,小在前,大在后)
    2. in后面集合中可以null,not in()集合中不能有null
    3. 注意where 后面用于过滤或者连接其他表的条件,重点掌握常用>,<,!=,>=,<=,between and ,in,like,not like,is null,is not null操作

    05-逻辑运算符和排序

    Awhere 后面使用逻辑运算符(and ,or ,not)

    注意condition1 and condition2 condition2 and condition1区别;解析的顺序从右边到左边;explain plan for select * from emp where condition1 and condition2;

    B:查询排序(order by

    order by 列名/表达式/别名/序列. 且order by 后面可以接多个

    如果列中值为null,desc排序出现null值行在前null最大,为了解决该问题:

    select * from emp order by comm desc nulls last;

    注意order by 多个列参与排序的特殊性

     06-函数简介

    A:单行函数和多行函数

     注意:操作返回一行数据的函数叫单行函数,操作返回的多行数据函数叫多行函数;

    07-字符函数和数值函数

    A:字符函数

    1. 大小写控制

    B:数值函数

    1. round():四舍五入
    1. truncate():截断

    注意:重点掌握length(),substr(),instr(),round().

    08-日期函数

    A:日期函数

    Oracle中提供了很多和日期相关的函数,包括日期的加减,在日期加减时有一些规律

    日期 – 数字 = 日期

    日期 + 数字 = 日期

    日期 – 日期 = 数字

    09-转换函数

    Aoracle隐式转换(查百度)

    Bto_char():日期转换成字符串,数字转换成字符

    Cto_number():字符串转换成数字

    Dto_date():字符串转换成日期

    注意:掌握to_char(),to_number(),to_date() 3转换函数;

    10-通用函数和条件表达式

    A:通用函数

    1. nvl(expr1,expr2) 如果repr1是null则把expr1处理成expr2
    2. nvl2(expr1,expr2,expr3),如果repr1不为null,则值为expr2,null则返回expr3
    3. nullif(expr1,expr2),如果repr1=repr2则返回null,否则返回expr1
    4. coalesce(expr1,expr2….), 依次参考各参数表达式,遇到非null值即停止并返回该值。
      如果所有的表达式都是空值,最终将返回一个空值B条件表达式
      1. case  xx when xx then xx  when xxx  then xx else xx end;
      2. decode()

    注意nvl(),nvlif()2条件语句必须掌握。

    11-多行函数

    A:分组函数avg(),max(),min(),count(),sum()

    B:分组

           group by  having  order by

    注意多行函数在sql中的使用;

    有的内容是自己平日积累的与工作上遇到的,有的是摘抄其他博主的精彩好文(会附上作者),愿大家共同成长。
  • 相关阅读:
    ubuntu配置服务器环境
    discuz安装与学习资料
    前端面试题总结(一)
    css公共样式,初始化
    js的解析--预处理(三)
    sass的安装与基础
    移动开发学习笔记(一) 移动开发的注意事项
    移动前端一些常用的框架
    JavaScript的构造器与对象(二)
    JavaScript 中的Object的使用详解笔记(一)
  • 原文地址:https://www.cnblogs.com/PinkPink/p/7598580.html
Copyright © 2011-2022 走看看