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更加详细的介绍和技术细节,朋友们可以在网络上进行搜寻,笔者本人在接下来的日子里也会写 ...
随机推荐
- ClickHouse 参数配置
转载自:https://xw.qq.com/cmsid/20200806A0PQ7X00?ADTAG=amp 在 ClickHouse 进程中,CPU 的主频越高越好,通常建议使用 32 以上的机型, ...
- OVS DPDK VXLAN隧道处理
原文链接: OVS DPDK VXLAN隧道处理
- 洛谷p1052过河 路径压缩+dp
洛谷 P1052 过河 思路部分可以看这篇博客 我将在这里对其进行一些解释与补充 首先我们先看题 乍一看 这不是模板题吗 然后开开心心的敲了一个简单dp上去 #include<iostream& ...
- DevOps系列(2)-SonarQube之PostgreSQL
上一篇从整体上讲了下DevOps大概涉及到了哪些内容,以及主要工作流程,接下来我们将分步详细介绍各个部分的使用. 概览 首先从 SonarQube 开始说起,SonarQube 是一个可用于检测重复代 ...
- Arduboy基本用法(一)
Arduboy基本用法(一) 一.第一个Arduboy程序 在arduino中新建项目 示例代码 #include<Arduboy.h> Arduboy arduboy; void set ...
- Javascript逻辑运算认识
1 - 运算符(操作符) 1.1 运算符的分类 运算符(operator)也被称为操作符,是用于实现赋值.比较和执行算数运算等功能的符号. JavaScript中常用的运算符有: 算数运算符 递增和递 ...
- Angular 之我见
很久没有写过技术软文了,虽然 Angular 发布已有四年,得到了越来越多人的关注,但是仍然有很多人不分青红皂白的进行诋毁.我打算结合自己的经历从客观的角度说聊一聊我眼中的 Angular. 本人刚做 ...
- Linux文件描述符与重定向
文件描述符可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作. 当Linux启动的时候会默认打开三个文件描述符,分别是: 标 ...
- package_ios
PlistBuddy简单使用 https://www.jianshu.com/p/2167f755c47e xcodebuild 命令 https://www.jianshu.com/p/c32263 ...
- MySQL 数据库 查 续
MySQL 增删查改 必知必会 4.1.13 使用 like 关键字进行模糊查询 -- 说明:模糊查询,使用查询关键字like,like意思是类似于,像...的意思 -- 模糊查询,支持两种字符匹配符 ...