美文网首页初见
20天BI数据分析学习第一天

20天BI数据分析学习第一天

作者: 小小苏兄 | 来源:发表于2020-05-29 00:43 被阅读0次

    -- 在数据库中创建用户 并设置密码

    -- 建用户 必须用 system 用户 ,普通用户没有权限

    CREATE  USER ZHOUPENG IDENTIFIED BY 123456;

    -- 给 ZHOUPENG 用户授权 ,让该用户可以访问 数据库 并且可以操作数据库中的资源

    GRANT

    CONNECT ,  -- 连接角色权限

    RESOURCE    -- 资源的权限,可以创建各种数据库的对象

    TO ZHOUPENG ;

    ----------------------------------    SQL 查询 -----------------------------------------

    SQL:结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,

    是一种数据库查询和 程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;

    同时也是数据库脚本文件的扩展名。

    -- 查询

    1 基本查询

    2 条件查询

    3 子查询

    4 关联查询

    --- SQL 查询的执行顺序

    语法结构                注释                      执行顺序

    SELECT              -- 查询所需的列/字段                        ⑤

    FROM                -- 从哪个表/哪些表中查询                  ①

    WHERE  .. AND ...  -- 过滤条件1 AND 过滤条件2       ②

    GROUP BY            -- 按条件1分组 ,按条件2分组        ③

    HAVING  .. AND ...  -- 分组以后的过滤条件3              ④

    ORDER BY            -- 按条件1排序 ,按条件2排序     ⑥

    1 基本查询

    SELECT *              -- SELECT 的意思是 查询/选择 要查询的列 ,  *  是通配符,表示所有(列)

    FROM EMP;          -- FROM 表示从哪个表查询 , EMP 是我们的员工表。

    -- 给EMP员工表的每个字段加个注释

    COMMENT ON COLUMN  EMP.empno IS '员工编号';

    COMMENT ON COLUMN  EMP.ENAME IS '员工姓名';

    COMMENT ON COLUMN  EMP.JOB IS '员工岗位';

    COMMENT ON COLUMN  EMP.MGR IS '员工领导的编号';

    COMMENT ON COLUMN  EMP.HIREDATE IS '员工入职时间';

    COMMENT ON COLUMN  EMP.SAL IS '员工基本工资';

    COMMENT ON COLUMN  EMP.COMM IS '员工奖金';

    COMMENT ON COLUMN  EMP.DEPTNO IS '员工的部门编号';

    -- 基本查询 之  表的别名

    SELECT E.empno,

          E.ename,

          E.job,

          E.mgr,

          E.hiredate,

          E.sal,

          E.comm,

          E.deptno

    FROM  EMP  E ;  -- E 是 EMP 表的别名 ,设置表的别名 E以后 ,查询或者过滤字段就可以用 E. 来关联出我们需要的列。

    -- 简单的单表查询 不需要加别名 ,但是多表查询 必须加 别名

    -- 基本查询 之 列的别名

    SELECT E.empno AS "员工编号",  -- 这种写法是 列设置别名的标准写法;

          E.ename AS  员工姓名 ,

          E.job "员工岗位"  ,

          E.mgr  员工领导编号    -- 这种是我们通常 简化的写法

    FROM  EMP E ;

    ----------- 条件查询 ----------- 

    oracle 中的常用数据类型

    字符串  VARCHAR2(X)  -- x  表示 字符串的最大长度。

    数字/数值 NUMBER(X,Y) -- X 是数字的最大长度,Y 是小数部分的长度, 比如 number(7,2) 整数部分最大5位,小数部分2位

    日期    DATE       

    针对上面的三种数据类型 ORACLE 提供了三种转换函数

    TO_CHAR(目标字段,输出格式化)

    TO_NUMBER()    -- 只能将 类似数字的字符 转换成 数值 ,比如 ‘1234’

    TO_DATE(目标字段,输出格式化)

    SELECT  '20200527' 字符串, 20200527  数字, TO_DATE('20200527','YYYY-MM-DD') 日期 FROM DUAL;

    --  对 字符串进行条件过滤

    --查出 SCOTT 员工的所有信息

    SELECT *

    FROM EMP

    WHERE ENAME = 'SCOTT';  -- SCOTT 是字符串 必须加 单引号

    -- 对 数值类的条件进行过滤

    查询出 部门10 中的所有员工

    SELECT *

    FROM EMP

    WHERE DEPTNO = 10 ;  -- 10 是数字 所以不用加单引号

    SELECT *

    FROM EMP

    WHERE DEPTNO = '10' ; -- 这里已经做了 隐式转换 ,写SQL的时候 尽量避免使用 隐式转换

    -- 对日期格式数据进行过滤

    比如查询1981年入职的所有员工

    SELECT *

    FROM EMP

    WHERE TO_CHAR(HIREDATE,'YYYY') = '1981'; ------如果查月份呢???

    SELECT *

    FROM EMP

    WHERE HIREDATE BETWEEN TO_DATE('19810101','YYYY-MM-DD') AND TO_DATE('19811231','YYYY-MM-DD') ;

    -- 条件查询之 范围查询  IN ()

      查询部门10和部门30中的员工

    SELECT *

    FROM EMP

    WHERE DEPTNO IN (10,30);

      查询 WARD 和 ALLEN 的详细信息

    SELECT *

    FROM EMP

    WHERE ENAME IN ('WARD','ALLEN');

    -- 条件查询之 范围查询  BETWEEN .. AND

    查询工资在1000到2000之间的所有员工

    SELECT *

    FROM EMP

    WHERE SAL BETWEEN 1000 AND 2000;  -- BETWEEN AND 中 ,AND前面必须放较小的数值,后面放较大的数值

    -- 条件查询之 NULL 值的判断  is NULL

    查询没有奖金的员工

    SELECT *

    FROM EMP

    WHERE COMM IS NULL;

      反之

    SELECT *

    FROM EMP

    WHERE COMM IS NOT  NULL;

    -- 模糊查询 / 模糊匹配 LIKE 

    查询出 名字第一个字母是A的员工

    SELECT *

    FROM EMP

    WHERE ENAME LIKE 'A%' ;--  % 是like中的通配符,表示匹配任意字符

    查询出 名字最后一个字母是S的员工

    SELECT *

    FROM EMP

    WHERE ENAME LIKE '%S' ;

    查询出 名字中包含字母 O 的员工

    SELECT *

    FROM EMP

    WHERE ENAME LIKE '%O%' ;

    查询名字是4个字的员工

    SELECT *

    FROM EMP

    WHERE ENAME LIKE '____';  -- 4个下划线

    查询名字是5个字,但是第二字母是 O 的员工

    SELECT *

    FROM EMP

    WHERE ENAME LIKE '_O%'

    AND ENAME LIKE '_____';

    SELECT *

    FROM EMP

    WHERE ENAME LIKE '_O___';

    相关文章

      网友评论

        本文标题:20天BI数据分析学习第一天

        本文链接:https://www.haomeiwen.com/subject/ycstzhtx.html