简单查询
语法结构: select 列名,列名,列名 from 表;
关键词:
from: 明确数据来源的表.
select: 选择数据获取的列.
查询部分列
--查询员工表中所有员工的工号,名字,薪资信息? 步骤: 1. 确定数据来源的表. from 2. 选择要获取的数据的列. selectselect employee_id,first_name,salary from employees;
查询所有列
--查询员工表中所有员工的所有信息? 方式1: select employee_id,first_name,last_name,email,phone_number,manager_id,salary,job_id,department_id from employees; 方式2: select * from employees; 实际开发应用: 1. 实际工程项目中,不会总是查询所有信息!!! 2. 开发角度, 方式1的可读性最好.
查询结果的列起别名[查询结果显示的列起名字]
select 列名1 as 别名 ,列名2 from 表; --查询员工表中所有员工的工号,名字,薪资信息, 显示查询结果列名工号,名字,薪资 select employee_id as 工号,first_name as 名字,salary as 薪资 from employees; 注意: as可以省略.
查询结果的字符串拼接 || [相当于java中的字符串中的 “+” 拼接]
--查询员工表中所有员工的工号,姓名(名字+姓),薪资信息? select employee_id,first_name || last_name,salary from employees; 注意:Oracle 表示数据字符串使用单引号 ' 字符串 '
查询结果做算术运算: + - * /
--查询员工工号,名字,年薪? select employee_id,first_name,salary*13 from employees; --解释: oracle执行过程中,每行数据都要执行算术运算,将结果展示在查询结果中.
去重
查询结果重复数据: 查询结果中,有两行数据完全一样.
去重: 关键词 distinct
语法结构: select distinct 列名,列名,列名 from 表
--查询员工表中,所有领导的工号信息?
select distinct manager_id
from employees;
排序
关键词: order by 列名1 asc|desc, 列名2 asc|desc
备注: asc: 升序
desc: 降序
作用: 作用在左边列上.
语法结构: select .... from ... order by 排序所依据的字段 asc|desc{排序规则}
-- 查询员工工号,名字,薪资信息,按照salary 升序排序展示?
select employee_id,first_name,salary
from employees
order by salary asc;
-- 查询员工工号,名字,薪资信息,按照salary升序排序,如果salary一样,按照工号降序展示?
select employee_id,first_name,salary
from employees
order by salary asc,employee_id desc;
条件查询
关键词: where 条件
语法结构: select.... from ... where 条件 order by 排序字段 desc|asc;
作用: 对每个查询的数据进行条件判断,将符合条件的存放入查询的结果中.
-
等值查询 -- 查询薪资为17000的员工工号,名字,薪资信息? select employee_id,first_name,salary from employees where salary=17000;
-
多条件
where 条件1 or|and 条件2
关键词: or: 或
and: 且
--查询薪资为2500,且部门编号为30的员工信息(工号,名字,薪资,部门id) select employee_id,first_name,salary,department_id from employees where salary=2500 and department_id=30;
-
不等值查询
逻辑判断符号: > < >= <= !=[<>]
--查询薪资大于10000的员工信息(工号,名字,薪资) select employee_id,first_name,salary from employees where salary>10000;
-
区间查询
关键词: 判断字段 between 起始值 and 结束值.
特点: 闭区间 {字段>=起始值 and 字段<=结束值}
--查询薪资在10000到12000之间的员工信息(员工工号,名字,薪资) 方式1: select employee_id,first_name,salary from employees where salary>10000 and salary<12000; --查询薪资在10000到12000之间的员工信息,包含10000和12000薪资信息(员工工号,名字,薪资) 方式2: select employee_id,first_name,salary from employees where salary between 10000 and 12000;
-
null
语法: where 字段 is [not] null;
--将员工表中,没有提成(commission_pct)的员工薪资展示(工号,名字,薪资,佣金比率); select employee_id,first_name,salary,commission_pct from employees where commission_pct is null;
-
枚举查询
关键词: 字段(列名) in (值1,值2,值3);
作用:
--查询60,70,80号部门的员工信息(工号,名字,薪资,部门编号)? 方法1: select employee_id,first_name,salary,department_id from employees where department_id = 60 or department_id = 70 or department_id = 80; 方法2: select employee_id,first_name,salary,department_id from employees where department_id in (60,70,80);
-
模糊查询
关键词: where 列名 like '模糊匹配语法';
模糊匹配语法:
_ : 任意1个字符
%: 任意0~n个字符
-- 查询员工中姓以K开头的员工信息(工号,名字,姓,薪资)? select employee_id,first_name,last_name,salary from employees where last_name like 'K%'; -- 查询员工的姓长度为4(姓是4个字母)的员工信息? select employee_id,first_name,last_name,salary from employees where last_name like '____';
特殊关键词
dual: 虚表. 一行一列的表.
说明:
站在数据的角度,没有意义.
维护Oracle的sql语句语法完成性.
sysdate: 当前系统时间
时间: 年 月 日 时 分 秒
systimestamp: [时间戳] 当前系统时间
时间: 年 月 日 时 分 秒 毫秒
--查询当前系统时间? select sysdate from dual;