oracle运算符种类

oracle运算符包括算数运算符、关系运算符、逻辑运算符

  • 算术运算符包括+、-、*、/四个,其中/获得的结果是浮点数。
  • 关系运算符在where条件语句当中经常使用到,=,>,<,<> 或!= ,>= ,<=
  • 逻辑运算符有三个:AND、OR、NOT

字符串连接符||

oracle中利用字符串连接符 “||” 来链接查询结果。

例:

  1. select '姓名:' || c.stuname || ', 课程:' || b.coursename || ', 成绩:' || a.score || '分。' as sxcj
  2. from score a, course b, stuinfo c
  3. where a.courseid = b.courseid
  4. and a.stuid = c.stuid

结果:

e条件查询时经常使用=、IN、LIKE、BETWEEN…AND来作为条件查询的操作符。

LIKE模糊查询
  • %:表示零个或者多个任意字符。
  • _:代表一个任意字符。
  • \:指转义字符,“\%”在字符串中表示一个字符“%”。
  1. select * from STUINFO t where t.stuname like '张%';
BETWEEN。。。AND

在 WHERE 子句中,可以使用 BETWEEN…AND 操作符来查询列值包含在指定区间内的查询结果 。

  1. select t.stuid,
  2. t.courseid,
  3. t.score,
  4. b.stuname,
  5. b.sex,
  6. b.age,
  7. b.classno,
  8. b.grade
  9. from score t, stuinfo b
  10. where t.stuid = b.stuid
  11. and t.courseid = 'R20180101'
  12. and t.score between '70' and '95'

Oracle集合运算

  • INTERSECT(交集),返回两个查询共有的记录。
  • UNION ALL(并集重复),返回各个查询的所有记录,包括重复记录。
  • UNION(并集不重复),返回各个查询的所有记录,不包括重复记录 (重复的记录只取一条)。
  • MINUS(补集),返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录。

Oracle连接查询

Oracle连接查询,包含内关联(inner jion )和外关联(outer join),其中外关联又分为左外关联(left outer join)、右外关联(right outer join)和全外关联(full outer join)其中外关联可以使用(+)来表示。

内连接

Oracle内连接:两张表通过某个字段进行内关联,查询结果是通过该字段按关系运算符匹配出的数据行。其中可以包括:

1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列。
2、不等连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值,这些关系运算符包括>、>=、<=、!>、!<、<>。
例:

  1. select a.stuid,
  2. a.stuname,
  3. a.classno,
  4. b.classno,
  5. b.classname,
  6. b.monitorid,
  7. b.monitorname,
  8. b.classaddress
  9. from stuinfo a, class b
  10. where a.classno = b.classno;
外连接

外连接,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接或左连接))、右表(右外连接或右连接)或两个边接表(全外连接)中的所有数据行。

  • left join(左联接)等价于(left outer join)返回包括左表中的所有记录和右表中联结字段相等的记录。
  • right join(右联接)等价于(right outer join)返回包括右表中的所有记录和左表中联结字段相等的记录。
  • full join (全连接)等价于(full outer join)查询结果等于左外连接和右外连接的和。

例:

  1. --左外连接(stuinfo表中数据都存在,stuinfo_2018不在stuinfo中存在的学生相关字段为null值)
  2. select a.*, b.stuid, b.stuname from stuinfo a left join stuinfo_2018 b on a.stuid = b.stuid;
  3. --左外连接(利用(+)在右边)另外一种写法
  4. select a.*, b.stuid, b.stuname from stuinfo a,stuinfo_2018 b where a.stuid=b.stuid(+);
  1. --(全外连接(stuinfostuinfo_2018表中数据都存在,
  2. --stuinfo不在stuinfo_2018存在的学生相关字段为null值,
  3. --stuinfo_2018不在stuinfo存在的学生相关字段为null值)
  4. select a.*, b.stuid, b.stuname from stuinfo a full join stuinfo_2018 b on a.stuid = b.stuid;
文档更新时间: 2020-10-20 10:23   作者:张尚