zoukankan      html  css  js  c++  java
  • 20161122学习笔记

    《Oracle数据库讲义学习笔记》

    书写SQL 语句的原则
    大小写不敏感,但单引和双引内的大小写是敏感的。切记!
    关键字不能缩写
    可以分行书写,但关键字不能被跨行书写,单引内也不要跨行书写。
    一般每个子句独立占一行
    可以排版来增加可读性
    字符串用单引
    列的别名用双引。

    101:

    一般大写为关键字,小写为自己指定的名称

    select语句的作用,查询指定的行,查询指定的列,多张表联合查询

    查询一张表的所有行和所有列

    Select * from emp;

    解锁同时修改密码(权限)

    alter user scott account unlock identified by scott;

    连接到数据库的最高用户

    conn / as sysdba

    连接到本地的oracle 数据库的scott 用户

    conn scott/tiger

    102:

    查询指定的列

    select ename,sal from emp;

    103:

    查询的表的某系列,在列上使用表达式

    select ename,sal,sal+300 from emp;

    104:

    sqlplus 管理数据库最好,
    pl/sql developer 开发存储过程最好,

    --是注释当前行
    /* */是注释多行

    105:

    查看当前用户的所有表和视图,tab是数据字典

    select * from tab;

    查看表结构

    desc emp;

    106:

    Null 值不等于0,也不等于空格。Null 和已知的数值进行运算得到是null.
    Null 值是未赋值的值,不入一般的索引。(位图索引中包含null)
    NULL 是双刃剑,使用好了提高性能,你对它不了解,往往是错误的根源,切记!

    107:

    别名的使用原则
    1.区分同名列的名称
    2.非法的表达式合法化
    3.按照你的意愿显示列的名称
    4.特殊的别名要双引
    5.直接写列的后面,空格间隔
    6.使用as 增加可读性

    select sal as salary ,hiredate "上班日期",sal*12 as total_salary from emp;

    108:

    在显示的时候去掉重复的行

    select distinct deptno from emp;

    109:

     select deptno,ename from emp where deptno=10;

    select * from emp where ename='KING';//字符串要用单引

    select ename,sal from emp where sal between 1000 and 3000;

    select deptno,ename,sal from emp where deptno in (10,20);//in穷举

    110:

    Like 运算
    _ 下划线通配一个,仅匹配一个字符,
    % 百分号通配没有或多个字符

    select ename,deptno from emp where ename like 'J%';

    select ename,deptno from emp where ename like '_A%';

    当你想查询_,%特殊字符时,请用escape.
    Select ename from emp where ename like ‘%s_%’ escape ‘s ’;
    我们并不想查找s 后必须有一个字符以上的员工,而是要剔除s,s 出现的目的就是转义,
    将_转义了,这里的_不是通配符,而是实际意义的_。
    Select ename from emp where ename like ‘%/_%’ escape ‘/’;
    一般我们使用/来转义,以免产生歧异。

    查询null值:

    select ename,comm from emp where comm is null;

    select ename ,deptno,sal from emp where deptno =30 and sal>1200;

    select ename ,deptno,sal from emp where deptno =30 or sal>1200;

     select ename,deptno,sal from emp where ename not like 'T%';

    优先级
    1.算术运算
    2.连接运算
    3.关系运算
    4. IS [NOT] NULL, LIKE, [NOT] IN
    5.Between
    6.not
    7.and

    111:排序

    不指明的都是二进制排序;

    select ename,sal from emp order by sal;//默认升序

    select ename,sal from emp order by sal asc;//升

    select ename,sal from emp order by sal desc;//降序

    select ename from emp order by sal;//隐式排序

    select sal*12 salary from emp order by salary;//别名排序

    select sal*12 salary from emp order by salary*12;//表达式排序

    select ename,sal from emp order by 2;//位置排序

    select deptno,job,ename,sal from emp order by deptno ,job;//多列排序

    练习:

    1.查询30 号部门的员工,显示名称和工资。

    elect ename,sal from emp where deptno=30;
    2.查询第三个字母为A 的员工。

    select * from emp where ename like '__A%';
    3.查询员工的名称和上班日期,日期反序排列。

    select ename hiredate from emp order by hiredate desc;

    112:字符串函数

    select lower(ename),upper(ename),initcap(ename) from emp;//lower小写,upper大写,initcap首字母大写

     SQL> select lower('mf TR'),upper('mf TR'),initcap('mf TR') from dual;
    LOWER('MFTR') UPPER('MFTR') INITCAP('MFTR')
    ------------- ------------- ---------------
    mf tr         MF TR         Mf Tr

    Dual 是虚表,让我们用表的形式来访问函数的值。

    select ename,job,concat(ename,job) from emp;//拼接字符串

    113:操作数字的函数

    ROUND是四舍五入,

    TRUNC是截断全部舍弃。

    ceil是取整上进位

    abs取绝对值

    mod取余数

    114:日期函数

     select sysdate from dual;//数据库当前时间

    SQL> select ename,to_char(hiredate,'yyyy/mm/dd') from emp;//日期转化为字符串,请说明字符串的格式。

    to_date()      to_number()

    115:

    116:分支函数

    117:分组统计函数

    avg平均

    sum求和

    max最大

    min最小

    count统计

    SQL> select sum(sal),min(sal),max(sal),avg(sal),count(sal) from emp;

    select deptno,sum(sal) from emp group by deptno;//按部门号码分组

    SQL> select deptno,job,sum(sal) from emp group by deptno,job;//在有组函数的SELECT 中,不是组函数的列,一定要放在GROUP BY 子句中。多列分组,每列都一样的才放到一起进行统计

    SQL> select job,avg(sal) from emp group by job having avg(sal)>2000;//Having 是在结果中再次筛选。Having 一定得出现在group by 子句得后面。不能独立存在。

    select deptno,avg(sal) from emp where job='CLERK' group by deptno having avg(sal)>1000;
    Where 和having
    可以同时出现再一句话中,起作用的时间不同。

    WHERE是条件,having是过滤是在结果中再次筛选

    博客收录内容大部分是网上自己找的,非原创。
  • 相关阅读:
    「UVA12293」 Box Game
    「CF803C」 Maximal GCD
    「CF525D」Arthur and Walls
    「CF442C」 Artem and Array
    LeetCode lcci 16.03 交点
    LeetCode 1305 两棵二叉搜索树中的所有元素
    LeetCode 1040 移动石子直到连续 II
    LeetCode 664 奇怪的打印机
    iOS UIPageViewController系统方法崩溃修复
    LeetCode 334 递增的三元子序列
  • 原文地址:https://www.cnblogs.com/zero1224/p/6089540.html
Copyright © 2011-2022 走看看