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可以同时执行。
1.查询部分列
查询员工的姓名和薪资: Select first_name,last_name,salary from employees; 运行时需要选中sql脚本
2.查询所有列
3.对列进行数学运算
4.给列取别名
5.字符串拼接
6.数据去重
语法: Select distinct 字段名 from 表名; 查询所有领导的编号 Select distinct manager_id from employees; 注意事项: Distinct后面一般情况下是跟一个字段名。 如果跟两个字段名,表示两个字段的值都相同的数据才算重复数据。
7.case when
8.当前时间
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(列) 求该列有值的行数