Oracle数据库的简单查询
查询语句语法结构:
select 列名1,列名2,列名3,…
from 表;
在Oracle数据库下有一个employees员工表,有一个department部门表,一下操作均基于这两张表:
主要字段有;
Employees:员工表
Employee_id:员工编号,
First_name:员工名
Last_name:员工姓
Email:邮箱
Phone_number:电话
Hire_date:入职时间
Job_id:工种。
Salary:薪资
Manager_id:领导编号
Commission_pct:奖金百分比。
Department_id:部门编号。
Departments:部门表:
Department_id:部门编号
Department_name:部门名称
Manager_id:部门经理的编号
Location_id:部门地址编号
需要注意的有:
1.关键字不区分大小写。表名,字段名也是,select,from
2.Sql脚本里面的标点符号都是英文符号。
3.查询的最后可以跟上分号,多条sql可以同时执行。
- 查询部分列
查询员工的姓名和薪资:
Select first_name,last_name,salary from employees;
运行时需要选中sql脚本
查询所有列
3.对列进行数学运算
给列取别名
字符串拼接
数据去重
语法:
Select distinct 字段名 from 表名;
查询所有领导的编号
Select distinct manager_id from employees;
注意事项:
Distinct后面一般情况下是跟一个字段名。
如果跟两个字段名,表示两个字段的值都相同的数据才算重复数据。
- case when
- 当前时间
sysdate
条件查询(也叫where查询)
语法结构:
select 列名1,列名2,...
from 表
where 条件;
- 比较查询 > >= < <= != =
等值查询=
查询出first_name为King的数据。
sql:
select * from employees where first_name = ‘King’;
不等值查询
,<,>=,<=,!=(不等),<>(不等)
空值查询
select * from employees where department_id = null;--------------错误的。
select * from employees where department_id is null;----对的。
查询不为空的数据:
select * from employees where department_id is not null;
多条件查询 and or
区间查询
枚举查询
模糊查询 【重点】
语法结构: like ‘匹配模式’
匹配模式特殊字符:
% 任意多个字符
_ 一个字符
补充:. SQL单行注释 – 单行注释,相当于Java中//
排序
语法结构 order by 列名 [asc(升序,默认)|desc(降序)]
1.简单排序
select *
from employees
where department_id = 50
order by salary desc;
当排序的字段的值相同的情况下,想按着另外的顺序进行排序:
order by salary desc,first_name asc;---首先按着薪资降序排,当多个人的薪资相同了,这些相同的人员信息按着first_name的字母的字典顺序进行升序排列。
函数 实现了一个特定的功能
- 单行函数
作用于每一行数据,每一行数据得出一个结果
a) 取余函数 mod(m,n) 等价于m%n
b) 字符串长度 length(字符串)
c) to_date(‘字符串日期’,’日期格式’)
d)to_char(日期,’日期格式’)
2. 多行函数(组函数)
作用于一组数据,得出一个结果,默认把表中所有行当做1组。
max(列) 求一列最大值
min(列) 求一列最小值
avg(列) 求一列平均值
sum(列) 求一列值得和
count(列) 求该列有值的行数