Oracle学习笔记(二)----------union

趁热再整理一个关于数据库(Oracle)的关键字的用法

union关键字

union字面意思就是“联合”,通过该关键字可以将两个sql语句合并起来一起查询,以达到想要的查询结果。

举个例子

设有表如下:

学生表:

+----+------+------+---------+
| id | name | age  | classid |
+----+------+------+---------+
|  1 | 关羽  |  35  |  7班    |
|  2 | 张飞  |  33  |  5班    |
|  3 | 赵云  |  31  |  3班    |
|  4 | 马超  |  28  |  2班    |
|  5 | 黄忠  |  60  |  8班    |
+----+------+------+---------+

执行以下sql语句:

-- 通过union可以将两个sql语句合并起来

select * from student
where student.age >= 35
union
select * from student
where student.age < 30;

查询结果:

+----+-------+-------+---------+
| id | name  | age   | classid |
+----+-------+-------+---------+
|  1 |  关羽  |   35  |  7班    |
|  5 |  黄忠  |   60  |  8班    |
|  4 |  马超  |   28  |  2班    |
+----+--------+------+---------+

通过union关键字将两条sql语句合并一起查询,查询到结果一并显示出来。

再看另一条sql语句:

-- 通过union可以将两个sql语句合并起来

select * from student
where student.age >= 30
union
select * from student
where student.age < 35;

执行结果如下:

+----+------+------+---------+
| id | name | age  | classid |
+----+------+------+---------+
|  1 | 关羽  |  35  |  7班    |
|  2 | 张飞  |  33  |  5班    |
|  3 | 赵云  |  31  |  3班    |
|  5 | 黄忠  |  60  |  8班    |
|  4 | 马超  |  28  |  2班    |
+----+------+------+---------+

通过该sql语句查询到所有记录,可以看到union关键字相当于将两个where字句的条件用或(||、or)关联起来。注意union不会显示重复的记录。

与union关键字类似作用的就是union all关键字,两者的区别是union all关键字查询出来不会合并重复的记录,union all会显示查到的所有记录,相同记录可重复出现。

如上面的sql语句将关键字union换成union all,执行结果将会不一样

sql语句:

-- 通过union可以将两个sql语句合并起来

select * from student
where student.age >= 30
union all
select * from student
where student.age < 35;

union all执行结果:

+----+------+------+---------+
| id | name | age  | classid |
+----+------+------+---------+
|  1 | 关羽  |  35  |  7班    |
|  2 | 张飞  |  33  |  5班    |
|  3 | 赵云  |  31  |  3班    |
|  5 | 黄忠  |  60  |  8班    |
|  2 | 张飞  |  33  |  5班    |
|  3 | 赵云  |  31  |  3班    |
|  4 | 马超  |  28  |  2班    |
+----+------+------+---------+

可以看到,union all也将两条sql语句合并起来了,不同的是,每条sql查询出来的结果都会直接显示出来(前4条记录是第一个sql,后三条是第二个sql),它并没有将重复记录合并起来。

必须要注意的是,union和union all查询中,两个select语句的字段类型要匹配,字段个数也要一致。

union和union all可以不局限于同一张表,两个sql语句可以分别对应不同的表。

例如,还设有另一张表如下:

+------------+--------------+------+---------------+
| teacher_id | teacher_name | age  | teach_classid |
+------------+--------------+------+---------------+
|    a       |    张三       |  50  |    7班        |
|    b       |    李四       |  41  |    5班        |
|    c       |    王五       |  38  |    3班        |
+------------+--------------+------+---------------+

执行以下sql语句:

select * from student
where student.age >= 30
union
select * from teacher
where teacher.age < 50;

执行结果如下:

+----+------+------+---------+
| id | name | age  | classid |
+----+------+------+---------+
| 1  | 关羽  |  35  |   7班   |
| 2  | 张飞  |  33  |   5班   |
| 3  | 赵云  |  31  |   3班   |
| 5  | 黄忠  |  60  |   8班   |
| b  | 李四  |  41  |   5班   |
| c  | 王五  |  38  |   3班   |
+----+------+------+---------+

上面这个例子通过union关键字将两条分别查询不同表的sql语句合并起来了,注意合并之后的字段名称以第一条sql语句的字段名称来命名。

union all同样道理,只不过不会合并重复记录。

时间: 2024-07-29 14:02:18

Oracle学习笔记(二)----------union的相关文章

Oracle 学习笔记二

一.oracle通用函数vnl(a,b) 用于任何类型,如果a的值不为null返回a的值否则返回b的值 条件判断oracle中可以使用 case 字段 when 条件1 then 表达式1 when 条件2 then 表达式2 else 表达式n end 另一种,decode() 函数,可以算case when的增强(字段,条件1,表达式1,条件2,表达式2,..表达式n) 二.数据库中的引号 单引号出现的地方:1字符串,日期 .双引号出现的地方:列的别名 select ename "姓 名&q

oracle学习笔记(二)

1. Oracle字符串操作 1.1. 字符串类型 1.1.1. CHAR和VARCHAR2类型 CHAR和VARCHAR2类型都是用来表示字符串数据类型,用来在表中存放字符串信息, 比如姓名.职业.地址等. CHAR存放定长字符,如果数据存不满定长长度,则补齐空格: VARCHAR2存放变长字符,实际数据有多少长度则占用多少. 如保存字符串'HELLOWORLD',共10个英文字母: CHAR(100): 10个字母,补齐90个空格,实际占用100个字节. VARCHAR2(100) :10个

oracle 学习笔记(二)

1.清屏 windows:host cls; linux:host clear; 2.对日期的处理 1)系统默认的类型: select sysdate from  dual;-->注:sysdate 是系统的当前时间 系统默认格式为:日-月-年 2)to_char()的用法 语法:TO_CHAR(date,'format_model') 格式: 日期格式的元素 格式 说明 举例 YYYY Full year in numbers 2011 YEAR Year spelled out(年的英文全称

Oracle学习笔记二——DBMS

数据库管理系统 数据库管理系统(Database Management System,DBMS),有时也被称为数据库管理器(Database Manager) 什么是数据库管理系统 数据库管理系统(Database Management System,DBMS)是一种操纵和管理数据库的大型软件,是用于建立.使用和维护数据库.它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性.用户通过dbms访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作.它提供多种功能,可使多个应用

Oracle学习笔记章(一)

Oracle学习笔记一 权限分为sysdba,nomal等,系统自带有两个用户,起始密码为空. 用户为:SYSTEM,SYS. 登录SYSTEM的时候要使用sysdba权限来登录,如果忘记了密码,则打开命令行 输入:1.echo %ORACLE_SID% 2.set ORACLE_SID = orcl(orcl为所要登录数据的实例,可以自己修改) 3.sqlpuls / as sysdba  (即可采用sysdba权限进入oracle系统) 4.alter user system identif

oracle学习笔记(二)

设置归档模式(mount状态) ALTER database ARCHIVELOG; //关闭数据库 shutdown immediate //启动数据库到mount状态 startup mount alter database archivelog; //查看归档状态 archive log list; SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 1 下一个存档日志序列

【我的Oracle学习笔记(二)】----- select语句补充

一.多表查询 多表查询是指从多个有关联的表中查询数据,其语法与单表查询类似.一般来说,多表查询的表要用连接联系起来,如果没连接,则查询结果是这多个查询表的笛卡尔积(注释1). 模拟查询雇员姓名和所在部门名称: select [雇员姓名],[部门名称] from [雇员表] a,scott,[部门表] b where a.[部门编号]=b.[部门编号]; 上例中,为每一个查询表指定了别名,便于SQL语句的书写. 模拟查询在”sales“部门工作的雇员其雇员姓名 select [雇员姓名] from

Oracle学习笔记三 SQL命令

SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)               下面是这四种SQL语言的详细笔记: Oracle学习笔记三 SQL命令(二):SQL操作语言类别 Oracle数据类型 创建表时,必须为各个列指定数据类型 以下是 Oracle 数据类型的类别: 字符数据类型 CHAR类型 当需要固定长度的字符串时,使用 CHAR 数据类型. CHAR 数据类型存储字母数字值. CH

oracle学习笔记 存储及raid技术概述

oracle学习笔记 存储及raid技术概述 本课以oracle数据库所运行的环境,讲一下存储和raid技术. 一)oralce生产环境里的结构 先说一下oracle所在的环境. 有一种结构: 两个服务器.两个光纤存储交换机.两个存储, 它们通过网线相互连接在一起. 每个服务器接两个交换机, 每个交换机连两个服务器同时连两个存储, 每个存储和两个交换机有连接. 这是oracle数据库相对比较典型的正规的运行环境. 每个服务器上都装Linux和oracle数据库软件, oracle数据库建在存储上

oracle学习笔记 SQL语句执行过程剖析讲课

oracle学习笔记 SQL语句执行过程剖析讲课 这节课通过讲述一条SQL语句进入数据库 和其在数据库中的整个的执行过程 把数据库里面的体系结构串一下. 让大家再进一步了解oracle数据库里面的各个进程.存储结构以及内存结构的关联关系. 首先来讲整个体系中有客户端.实例和数据库 数据库里有三类文件 控制文件ctl.数据文件dbf.日志文件log 实例中SGA有六大池子 第一大内存区shared pool即共享池 第二大内存区buffer cache 第三块是redo log 我们主要讲上面的三