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更加详细的介绍和技术细节,朋友们可以在网络上进行搜寻,笔者本人在接下来的日子里也会写 ...
随机推荐
- 12c RAC 用Rman 恢复到异机单实例
准备工作 原服务器软件部署:Redhat 6.6 + Oracle 12.2.0.1 rac Oracle12c单实例安装 1.创建恢复服务器,设置大于原库数据大小的磁盘容量.设置相同的服务器主机名参 ...
- sge的简单的应用
1.sge提交脚本qsub 1.qsub work.sh work.sh 不能以数字开头 2.qsub work.sh 默认工作路径为/home/username 3.qsub -cwd work. ...
- cinder-volume服务上报自己的状态给cinder-scheduler的rpc通信代码分析
以juno版本为基础,主要从消息的生产者-消费者模型及rpc client/server模型来分析cinder-volume是如何跟cinder-scheduler服务进行rpc通信的 1.cinde ...
- Git仓库由HTTPS切换成ssh秘钥连接
Git关联远程仓库可以使用https协议或者ssh协议. [特点/优缺点] ssh: 一般使用22端口: 通过先在本地生成SSH密钥对再把公钥上传到服务器: 速度较慢点 https: 一般使用443端 ...
- 宝塔,一个免费好用的 Linux/Windows 服务器管理面板
宝塔面板是什么? 宝塔面板是一款服务器管理软件,支持windows和linux系统,可以通过Web端轻松管理服务器,提升运维效率.例如:创建管理网站.FTP.数据库,拥有可视化文件管理器,可视化软件管 ...
- ARM开发板挂载Ubuntu18.04主机的NFS共享文件夹
环境 ubuntu主机环境:Window10 下装VMWare下装的 ubuntu18.04LTS x64 IP 192.168.10.119 Window10下配置192.168.10该网段 开发板 ...
- OpenCV(Open Source Computer Vision Library)计算机视觉库
OpenCV(最基本的滤波到高级的物体检测皆有涵盖) 简介: OpenCV 是跨平台的,可以在 Windows.Linux.Mac OS.Android.iOS 等操作系统上运行. OpenCV 的 ...
- 【小白学PyTorch】4 构建模型三要素与权重初始化
文章目录: 目录 1 模型三要素 2 参数初始化 3 完整运行代码 4 尺寸计算与参数计算 1 模型三要素 三要素其实很简单 必须要继承nn.Module这个类,要让PyTorch知道这个类是一个Mo ...
- 初学WebGL引擎-BabylonJS:第6篇-碰撞交错与挑选
[playground]-collisions(碰撞) 先贴官方源码(机器翻译版本) var createScene = function () { var scene = new BABYLON.S ...
- nginx server_name 多个
nginx server_name 多个 nginx server_name 多个的话,空格隔开就行 server_name baidu.com baidu.me; 如果很多的话可以用正则,我的需求, ...