条件查询

语法:

select * from table_name where 条件;

运算符

算数运算符

Oracle中算数运算符有:+、-、*、/,其中‘/’得到的结果为浮点数

关系运算符

符号

>

>=

<=

<>或!=

意义

大于

大于等于

小于等于

不等于

逻辑运算符

Oracle中逻辑运算符有三个,分别是:and、or、not

举例:

查询数学成绩**或(or)** 者语文成绩在80-90(包含80、90)**且(and)** 不在(not)60-70的学生

select t.*
from student_gardes t
where ((t.math between 80 and 90) and not (t.math between 60 and 70)
    /*数学成绩在80-90 且 数学成绩 不在 70-70之间的学生*/
    or
       (t.chinese between 80 and 90) and not (t.chinese between 60 and 70));
    /*语文成绩在80-90 且 语文成绩 不在 70-70之间的学生*/

空值和非空限制

select * from table_name where table_column is null; --空值
select * from table_name where table_column is not null; --非空值

BETWEEN...AND...

查询两数值之前或者日期区间内的数据,例如查询出生日期在1997-01-01至2020-12-31年的用户数据:

select *
  from users
 where (to_date(birthday, 'yyyy-MM-dd') between '1997-01-01' and '2020-12-31';

这个就相当于

select *
  from users
 where (to_date(birthday, 'yyyy-MM-dd') >= '1997-01-01' and
       to_date(birthday, 'yyyy-MM-dd') <= '2020-12-31');

在Oracle数据库查询时,可以将'as' 省略,但是为了规范,建议还是添加为准。

select
	t.class  班级,
	t.name  姓名,
	t.id  学号,
	t.age  年龄,
	t.sex  性别
from
	students;

取完别名,如果要在where条件中使用该别名,该别名只有在查询之后才会生效,所有需要在select外面在嵌套一层,例如要查询三年级一班,学号为0301的学生信息:

select a.*
 from
	(select
			t.class as 班级,
			t.name as 姓名,
			t.id as 学号,
			t.age as 年龄,
			t.sex as 性别
		from
			students) a
where
	a.班级 = '三年级一班'
	and a.学号 = ‘ 0301 ’;

文章作者: zlinks
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZFS的成长之路
Oracle Oracle查询优化
喜欢就支持一下吧