Oracle-简单的查询--排序查询--条件查询--查询当前系统的时间--日期处理函数

SQL(Structured Query Language - 称为结构化查询语言)

  1. 结构化查询语言简称SQL, 是一种专门设计用于操作关系型数据库的编程语言。
  2. 我们使用SQL的主要目的是对关系型数据库进行数据的查询、修改等管理性的操作 。SQL语言适用于所有的关系型数据库。
    在这里插入图片描述

简单的查询

语法: select 字段名1,字段名2… from 表名;
书写查询语句的思路:
首先明确查询哪张表,然后确定查询表的哪些字段的信息。
我们学习使用的表名: employees

  1. 查询多个字段
    例: 查询员工表的编号、员工名字、姓氏、员工工资
select 
	employee_id,first_name,last_name,salary 
from employees; 
  1. 查询所有的字段
    例: 查询员工表所有字段的信息
    第一种方式:显示的写出所有字段名。
select 
	employee_id,first_name,last_name,email,phone_number,hire_date,salary,job_id,commission_pct,manager_id,department_id
from employees;

第二种方式:使用通配符 * 代替所有字段

select * from employees;

注意: Oracle数据库在执行SQL语句的时候, 会将 * 进行一次字段实际内容的转换,然后再执行。所以 * 的方式不建议在开发中使用, 因为执行效率低。
SQL语句关键字的书写语法上不区分大小写, 但是Oracle数据库在执行的时候,会将关键字转成大写执行。

  1. 查询员工的编号、姓、名、员工的年薪 // 要对查询结果进行算数运算
select employee_id,first_name,last_name,salary*12 from employees;

注意: Oracle允许对数值类型的字段进行 + - * /的运算,不能做模运算(%),如果需要做模运算必须使用Oracle中的函数完成。 % 是Oracle中的特殊符号。
日期类型字段只能做+ -算数运算,单位是天。

  1. 给字段起别名
select 
employee_id as "员工编号",first_name as "名",last_name as "姓",salary*12 as "年薪"
from employees;

注意: 对于字段起别名的操作, 别名可以使用英文的双引号,也可以不使用双引号。 如果别名是英文字符,那么加上双引号严格区分大小写, 不加双引号则不区分大小写。 中文加不加都一样。

  1. 查询员工的编号、姓、名、工资 , 要求姓名展示为 Steven_King; Oracle 中的字符串拼接,Oracle中用 || 进行字符串拼接,拼接的其他内容使用英文的单引号。
select
employee_id,first_name||'_'||last_name,salary
from employees;

排序查询 - order by

语法: select 字段1,字段2… from 表名 order by 条件字段 排序规则;
说明:
条件字段: 是指根据哪个字段进行排序后展示。
排序规则: 升序/降序(asc【默认】/desc)
例:

  1. 查询员工表所有的信息,按照工资的升序展示
select * from employees order by salary asc;
  1. 查询员工表所有的信息,按照工资的降序展示
select * from employees order by salary desc;
  1. 查询员工表所有的信息,首先按照工资降序展示,如果工资相同按照编号的升序展示
select * from employees order by salary desc,employee_id asc;

**注意:**如果不书写排序规则关键字,默认升序。 在进行多字段排序时,排序规则的关键字作用域前面的字段。

条件查询 - where 【重点】

语法: select 字段1,字段2… from 表名 where 条件 order by …;
说明: 条件这里指定的是一个运算结果为boolean值的条件。

  1. 等值查询 : = !=(<>)

-查询工资是24000的员工信息

select * from employees where salary=24000;

-查询first_name是 Steven的员工信息

select * from employees where first_name=’Steven’; // 注意字符串条件值,

需要使用英文的单引号。条件的内容严格区分大小写。
-查询员工工资不是24000的人员信息

select * from employees where salary != 24000;

select * from employees where salary <> 24000;
  1. 关系比较运算查询 > >= < <=

查询工资大于8000的

select * from employees where salary<8000;
  1. 逻辑运算查询 and(并且) or(或者)

-查询工资大于8000 小于12000的员工信息

select * from employees where salary>8000 and salary<12000;

-查询工资大于等于8000 小于等于12000的员工信息

select * from employees where salary>=8000 and salary<=12000;

-查询工资为24000的员工或者first_name是peter 的员工信息

select * from employees where salary=24000 or first_name=’Peter’;
  1. 区间查询 between … and 【了解】
    语法: select 字段1,字段2… from 表名 where 字段名 between 值1 and 值2;

-查询工资大于等于8000 小于等于12000的员工信息

select * from employees where salary between 8000 and 12000;// 包含边界值

注意: 建议大家在做这种区间查询的时候优先选择 and 运算符方式。

  1. 枚举查询 in
    语法: select 字段1,字段2… from 表名 where 字段名 in (值1,值2…)

-查询工资是24000 、12000、8000的员工的信息

select * from employees where salary=24000 or salary=12000 or salary=8000;

用枚举查询实现:

select * from employees where salary in (24000,12000,8000) ;

注意: in 里面的值最多不能超过1000个。

  1. 模糊查询 【很重要】
    语法: **select 字段1,字段2… from 表名 where 字段 like 条件值 order by …; **
    说明:
    条件值里面有几个占位符: _ 匹配一个字符。 % 匹配0到n个字符

-查询first_name是由5个字符组成的人员信息

select * from employees
where first_name like ‘_____’;

-查询first_name是以大写的D 开头的人员信息

select * from employees
where first_name like ‘D%;

-查询first_name是以大写的D 开头并且由5个字符组成的人员信息

select * from employees
where first_name like ‘D____’;

-查询first_name中包含字母a 的人员信息

-查询first_name中不包含字母a 的人员信息

select * from employees where first_name not like%a%;
  1. Oracle中对null值的处理

-查询员工信息,按照提成的降序排列

select * from employees order by commission_pct desc;  

这条SQL语句语法没有问题,但是不能拿到我们想要的结果。 原因是Oracle中null值最大。

使用nvl函数解决上面的问题:
nvl函数类似于三元运算符的作用,比如:
nvl(值1,值2) 当值1为null的时候,返回值2。当值1不为null的时候,返回值1.

select * from employees order by nvl(commission_pct,0) desc; 

-查询没有提成的员工信息

select * from employees where commission_pct is null; 

查询当前系统的时间

在这里插入图片描述

单行函数 - 日期处理函数【掌握】

-查询今天是星期几

  1. to_char(…) : 将日期类型转换成指定的字符串格式展示。
    1.1 日期格式的字符
        yyyy - 年
        mm -月
        dd - 日
        hh - 时
        mi - 分
        ss - 秒
        day - 星期
    1.2 to_char的使用: to_char(日期类型参数, 代表日期格式的字符参数 )
    -查询今天是星期几
select to_char(sysdate,day)  from dual;
  1. to_date(…) : 将一个字符串转换成Oracle数据库的日期类型
    2.1 to_date的使用: to_date(一个日期字符串,代表日期格式的字符串)
  • 将一个字符串日期转换成oracle数据库的日期类型
select to_date(1949-10-1,’yyyy-mm-dd’) from dual; 
  • 查询1949年10月1日是星期几
select to_char(to_date(1949-10-1,’yyyy-mm-dd’),day) from dual;

注意: 函数之间可以嵌套使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值