Oracle学习笔记——第一天

oracle学习笔记——第一天

一.软件安装

二.软件介绍

1.现有文本文件存放数据缺陷

    1)程序复杂,效率低
    2)无法体现类型,无法做数据检查
    3)无法存储大量数据
    4)增删改查不方便

2. 数据库:是一个数据存储管理的软件,全称rdbms(关系数据库管理系统),简称数据库(db)

        常用数据软件:oracle  mysql   sqlsv   db2

3. 常见基本概念

   1)表(table):实际负责数据存储的单元,通常也叫做“实体集”
   2)行(row):存放了一组相关业务数据,通常叫做“实体”
   3)列(column):表示业务数据中的一个具体的属性,也成为“字段”
       主键(primary key):可以唯一标识一组业务数据,非空,唯一
       外键(foreign key):体现两张表数据关系的字段,值必须取自另一个表的主键,

可以为null,可以重复

4. Oracle工作方式

1)安装成功后,先解锁hr账户
 ① sqlplus sys as sysdba   
 ② 输入管理员密码
 ③ 解锁hr: alter user hr account unlock;
 ④ 设置hr的密码: alter user hr identified by 密码;
2) 工作方式

在这里插入图片描述

5. 命令区别

 1)sql命令 : 结构化的查询语言(重点),不可以缩写,不区分大小写,必须以;结尾
 2)plsql命令: oracle数据库方言
 3)sqlplus命令:工具自身的命令(可以缩写)
 start --- sqlplus命令,执行sql文件  
 desc --- 描述表结构

三.Sql命令 — 查询命令

在这里插入图片描述

— 请查询员工的编号,姓名,工资和所在部门编号
Select employee_id,last_name,salary,department_id from employees;

— 请查询员工的详细信息 (通过*表示所有字段)

    Select * from employees;

— 可以对查询的字段做数学运算
— 请查询员工的编号,姓名,以及年薪

  Select employee_id,last_name,salary*12 from employees;

— 注意:
1)数字类型±*/
2)字符串类型不能做任何数学运算
3)日期类型值可以加减,以“天”为单位

— 可以为结果里的字段定义“别名”
语法:紧跟在列之后空格接着写,如果含有特殊字符或者需要区分大小写,使用双
引号”

   select employee_id id, last_name, salary*12 “anual salary”from employees;

— 字符串连接操作 : ||
—请显示员工编号,姓名,以及完整邮箱地址

  Select employee_id,last_name,email||@zparkhr.com.cnfrom employees;
注意:如果在sql命令里使用到了字符串字面值或者日期字面值,需要使用单引号

— distinct 去除查询结果里的重复数据
— 请显示我们公司里所有的职位 job_id

  Select distinct job_id from employees;

四.排序 – order by

在这里插入图片描述
— 请打印员工详细信息,并按照工资排序

   Select * from employees order by salary ;

— 排序条件可以通过字段名,别名,或者下标指定

  Select employee_id,last_name,salary*12 from employees order by 3;

— 多个排序条件

   Select * from employees order by salary,department_id;  

先按工资升序,工资相同在按部门升序排列

    Select * from employees order by salary,department_id desc; 先升再降
    Select * from employees order by salary desc , department_id desc; 

— 关于null值 : oracle中null被认定为最大值

五.条件查询(where) — 逐行筛选

1.等值条件判断 = != 【重点】

— 请查询30部门的员工信息

   Select * from employees where department_id=30;

— 请查询last_name叫做‘King’的员工信息

  Select * from employees where last_name = ‘King’ ;

注意:字符串字面值区分大小写

2.逻辑判断 > >= < <= and or ! 【重点】

— 请查询工资介于5000到10000的员工信息

    Select * from employees where salary>=5000 and salary<=10000 ;
    select * from employees where last_name>=’King’;

3.多条件值查询(枚举) — in not in 【了解】

— 请查询30,50,70部门的员工信息

   Select * from employees where department_id=30 or department_id=50 orSelect * from employees where department_id in(30,50,70);

4.区间查询 — between …and not between…and 【了解】

— 请查询工资介于5000到10000的员工信息

   Select * from employees where salary between 5000 and 10000;  包括边界值

5.关于null值查询 is null is not null

— 请查询部门编号为null的员工信息

   Select * from employees where department_id is null;

6.模糊查询 ---- like not like

在这里插入图片描述
— 请查询last_name是以‘K’开头的员工信息

   Select * from employees where last_name like ‘K%;

— 请查询last_name是由四个字符组成的员工信息

   Select * from employees where last_name like ‘____’;

— 请查询last_name是以’S_’开头的员工信息
在这里插入图片描述
Escape 声明转义字符

六.oracle提供的函数(单行函数 组函数)

1.单行函数 : 作用于表里的一行数据,产生一个结果的函数

1)abs函数 — 计算一个数据的绝对值

   --- select abs(salary) from employees;    --- 107行
   --- select abs(-126) from employees;    ----107行

2)dual —哑表,oracle提供的单行单列表,为了维护select语句的完整性,里面的
数据没有任何意义,也不允许向里面存放数据

  --- select abs(-126) from dual;   --- 1行

3)sysdate — 获取db sv里的当前系统日期

    --- select sysdate from dual;
      --- 数据库默认日期格式  dd-mon-rr 

4)to_char( date日期值 ,‘格式字符串’) 【重点】
作用 : 将给定的日期值按照格式字符串的要求转换成字符串类型值
— 请显示详细的当前系统时间

   Select to_char(sysdate,’yyyy-mm-dd,day,hh24:mi:ss’) from dual;

— 请显示2005年入职的员工信息

   Select * from employees where hire_date like%05;
   Select * from employees where to_char( hire_date, ‘yyyy’)=2005;

— 按照入职月份升序的方式显示员工信息

  Select * from employees order by to_char(hire_date,’mm’);

5).to_date(string,’格式字符串’)
将给定的string按照格式字符串的要求变成数据库支持的日期值
— 请写一句sql命令,查询你出生的那天是星期几 1998-06-13

   to_char( to_date(1998-06-13,’yyyy-mm-dd’)  ,day)

2.组函数:作用于一组数据执行一次产生一个结果(表是一个超级大组)

1)max() , min() : 最大,最小值 , 适用于所有类型的数据
2)avg() : 求平均值 ,适用于数字类型字段
3)sum() : 求和, 适用于数字类型字段
4)count() : 统计数量
注意: 所有组函数在统计时,null值都不在统计范畴

    --- select max(salary),min(salary),avg(salary),sum(salary) from employees;
    --- select max(salary) from employees where department_id=30;
  --- count(字段名)  : 统计指定字段里非空值的数量
  --- count(*) : 统计结果中行的数量
  --- 统计30部门的人数
     Select count(*) from employees where department_id=30;

— 请统计公司里有多少种职位

     Select  count( distinct job_id)  from employees;

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值