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是过滤是在结果中再次筛选

    博客收录内容大部分是网上自己找的,非原创。
  • 相关阅读:
    03、Jenkins相关概念
    02、Jenkins安装部署
    01、Jenkins简介
    10.ansible 利用playbook部署LAMP环境
    09.ansilbe利用playbook部署LNMP环境
    08.编译安装httpd
    python入门到放弃(五)-基本数据类型之list列表
    python入门到放弃(四)-基本数据类型之str字符串
    python入门到放弃(三)-基本数据类型之int整数和bool值
    CentOS7.5源码编译安装mysql5.7.29
  • 原文地址:https://www.cnblogs.com/zero1224/p/6089540.html
Copyright © 2011-2022 走看看