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

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

-- 建用户 必须用 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数据分析学习第一天)