Oracle学习(二)SQL高级--表数据相关
SQL高级语句
top / limit / rownum / percent (前XXX条数据)
--top(SQL Server / MS Access)
select top 条数 from 表; --percent(SQL Server)
select top 20 percent * from 表 --选取前百分之20的数据 --limit(MySQL)
select * from 表 limit 条数 --rownum(Oracle)
select * from 表 where rownum <= 条数
like(模糊查询)
--查询列1值为G开头的数据
select * from 表 where 列1 like 'G%' ; --查询列1值为G结尾的数据
select * from 表 where 列1 like '%G' ; --查询列1值包含G的数据
select * from 表 where 列1 like '%G%' ; PS:在like 前面加上 not 可以实现反选
PS:%代替0个或多个字符 _代替1个通配字符
in(指定多个值)
select * from 表 where 列 in(值1,值2...);
between(两个值之间的范围,可以是数值,文本或者日期)
select * from 表 where 列 between 值1 and 值2
as(别名)
select 列 as 别名 from 表
join(连接)
- INNER JOIN:如果表中有至少一个匹配,则返回行
- LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
- RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
- FULL JOIN:只要其中一个表中存在匹配,则返回行
inner join(内连接)
--inner join 关键字在表中存在至少一个匹配时返回行。(取A、B交集)
PS:inner join 与 join 是相同的。 select 列 from 表1 inner join 表2 on 表1的列=表2的列; PS:在使用 join 时,on 和 where 条件的区别如下:
1、on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录。
2、where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left join 的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
详细讲解可以查看这篇文章:SQL JOIN 中 on 与 where 的区别PS:inner join on 1=1 时取得是笛卡尔积,总数据量相当于 表1数据总数 X 表2数据总数 (即每条数据都要与另一张表做一次关联)
left join(左连接)
--如果右表中没有匹配,则结果为 null。(取左表全部数据,不管此时右表能否对应上,左表可以存在一对多的情况)
PS:在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN。
PS:LEFT JOIN 关键字从左表(表1)返回所有的行,即使右表(表2)中没有匹配。 select 列 from 表1 left join 表2 on 表1的列=表2的列;
right join(右连接)
--如果左表中没有匹配,则结果为 null。(取右表全部数据,不管此时左表能否对应上,右表可以存在一对多的情况) PS:在某些数据库中,RIGHT JOIN 称为 RIGHT OUTER JOIN。
PS:RIGHT JOIN 关键字从左表(表2)返回所有的行,即使左表(表1)中没有匹配。 select 列 from 表1 right join 表2 on 表1的列=表2的列;
full outer join(外连接)
--full outer join 关键字只要左表(表1)和右表(表2)其中一个表中存在匹配,则返回行.(左右表数据全部返回)
PS: 没有匹配到时,无法对应的列返回null,有值的列正常显示
PS: MySQL中不支持 FULL OUTER JOIN。 select 列 from 表1 full outer join 表2 on 表1的列=表2的列;
union(合并结果集)
- UNION:用于合并两个或多个 SELECT 语句的结果集。
- UNION ALL:与UNION操作符类似,默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
PS:使用UNION时的前提条件:
- (1)相同列
- (2)列的数据类型要相似(比如同类型长度不同)
- (3)顺序也要相同
--UNION
SELECT 列1 FROM 表1 UNION SELECT 列2 FROM 表2; --UNION ALL
SELECT 列1 FROM 表1 UNION ALL SELECT 列2 FROM 表2; PS:结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
PS:只能在最后使用一个ORDER BY命令,是将两个查询结果合在一起之后,再进行排序!
select into(复制表数据)
PS:从一个表复制数据,然后把数据插入到另一个新表中,插入时自动创建新表。
--复制所有的列插入到新表中
SELECT * INTO 新表 FROM 旧表; --只复制希望的列插入到新表中
SELECT 列1,列2... INTO 新表 FROM 旧表; --复制多个表中的数据插入到新表中
SELECT 旧表1.列1, 旧表2.列1, 旧表2.列2
INTO 新表
FROM 旧表1 LEFT JOIN 旧表2 ON 连接条件; PS:MySQL 数据库不支持 SELECT INTO 语句,但支持 INSERT INTO SELECT 。
PS: 新表将会使用 SELECT 语句中定义的列名称和类型进行创建。我们可以使用 AS 子句来定义新表的列名称。
insert into select(复制表数据)
PS:从一个表复制数据,然后把数据插入到另一个已存在的表中。
--从一个表中复制所有的列插入到另一个已存在的表中
INSERT INTO 已存在的表2 SELECT * FROM 要复制数据的表1; --只复制希望的列插入到另一个已存在的表中
INSERT INTO 已存在的表2 (表2的列1,表2的列2...)
SELECT 列1,列2... FROM 要复制数据的表1; PS:两个表结构不一样时,也可以使用第二种方式复制指定列数据
Oracle学习(二)SQL高级--表数据相关的更多相关文章
- Oracle学习(四)SQL高级--表优化相关(序列、视图等)
INDEX(索引) 可以在表中创建索引,以便更加快速高效地查询数据. 用户无法看到索引,它们只能被用来加速搜索/查询. PS:更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引 ...
- Oracle学习(三)SQL高级--表结构相关(建表、约束)
一.建表语句 CREATE DATABASE(创建数据库) --创建数据库 create database 数据库名字; CREATE TABLE(创建表) --创建表 CREATE TABLE 表名 ...
- MySQL用sql复制表数据到新表的方法
用sqlyog无法直接复制出一个不同表名的表来,只能copy到其他库上同名的表. 在MySQL数据库中,应该如何用sql将表数据复制到新表中呢? 本人通过试验测试成功了,而且相当简单易懂,速度也非常快 ...
- 09Microsoft SQL Server 表数据插入,更新,删除
Microsoft SQL Server 表数据插入,更新,删除 向表中插入数据 INSERT INTO insert into tb1 values(0004,'张凤凤') insert into ...
- PL/SQL链接Oracle数据库 导出表结构和表数据
打开pl/sql客户端(导出数据表结构) 在左侧 点击tabales 2 Tools-->Export User Objects,导出sql格式的文件 3 红色1 是你要选择导出的表,红色2 是 ...
- oracle/ms sql 系统表
sql server系统表详细说明 sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库字符集与排序顺序 sysconfigures主数据库 配置选项 syscurco ...
- Oracle 跨库 查询 复制表数据 分布式查询
方法一: 在眼下绝大部分数据库有分布式查询的须要.以下简单的介绍怎样在oracle中配置实现跨库訪问. 比方如今有2个数据库服务器,安装了2个数据库.数据库server A和B.如今来实如今A库中訪问 ...
- Oracle 跨库 查询 复制表数据
在目前绝大部分数据库有分布式查询的需要.下面简单的介绍如何在oracle中配置实现跨库访问. 比如现在有2个数据库服务器,安装了2个数据库.数据库server A和B.现在来实现在A库中访问B的数据库 ...
- 数据分页处理系列之二:HBase表数据分页处理
HBase是Hadoop大数据生态技术圈中的一项关键技术,是一种用于分布式存储大数据的列式数据库,关于HBase更加详细的介绍和技术细节,朋友们可以在网络上进行搜寻,笔者本人在接下来的日子里也会写 ...
随机推荐
- Robot Framework(5)——自动化示例
上篇介绍了一些selenium2在robot framework中的一些关键字,这一篇主要来记录一下实际应用 一.安装并导入Selenium2Library 安装的工作一开始已经完成,可以用pip l ...
- 关于ACID,BASE和CAP定理的探究
前言 当我看到"根据CAP理论,由于分布式系统必须保证分区容错性,所以只能选择AP原则或者CP原则"这种结论时,我感到很疑惑: 什么是分区容错性? 为什么分布式系统必须保证分区容错 ...
- 第1篇 Scrum冲刺博客
一.Alpha阶段各成员任务 梁天龙 任务名称 预计工时 编辑历史记录 2 登陆按键设计 3 考勤记录页面 2 人数记录页面 2 学习课程页面 4 建议页面 2 黄岳康 任务名称 ...
- rlpyt(Deep Reinforcement Learning in PyTorch)
rlpyt: A Research Code Base for Deep Reinforcement Learning in PyTorch Github:https://github.com/ast ...
- 【译】ASP.NET Core updates in .NET 5 Preview 8
.NET 5 预览版 8 现在已经可以获取了,并且已经准备好接受评估.下面列出了本次发布的新特性: 使用 Microsoft.Identity.Web 进行 Azure Active Director ...
- Java实现的二叉堆以及堆排序详解
一.前言 二叉堆是一个特殊的堆,其本质是一棵完全二叉树,可用数组来存储数据,如果根节点在数组的下标位置为1,那么当前节点n的左子节点为2n,有子节点在数组中的下标位置为2n+1.二叉堆类型分为最大堆( ...
- AndroidStudio修改程序的包名,可以修改com.example.xxx之类的详解
转载请说明出处.原创作品. 首先说明一下,当时公司需要修改androidStudio 项目的包名 于是上网查了一下,只看到了修改后面的包名,而不可以修改 前缀的com.example.xxx.所以很无 ...
- Mac OSX上安装Nginx
1. 通过brew instal nginx安装 ==> Downloading https://homebrew.bintray.com/bottles/nginx-1.10.1.el_cap ...
- Sequence (矩阵快速幂+快速幂+费马小定理)
Holion August will eat every thing he has found. Now there are many foods,but he does not wa ...
- 如何使用Grep命令查找多个字符串
如何使用Grep 命令查找多个字符串 大家好,我是良许! 今天向大家介绍一个非常有用的技巧,那就是使用 grep 命令查找多个字符串. 简单介绍一下,grep 命令可以理解为是一个功能强大的命令行工具 ...