Orancle的SQL语句之多表查询和组函数

一、SQL的多表查询:

1、左连接和右连接(不重要一方加(+))

SELECT e.empno,e.ename,d.deptno,d.dname,d.loc FROM emp e,dept d WHERE e.deptno(+)=d.deptno ;

(+)在等号左边是右连接,反之左连接。

2、交叉连接 (CROSS JOIN产生笛卡尔积)

SELECT * FROM emp CROSS JOIN dept ;

3、自然连接 (NATURAL JOIN)自动关联字段匹配

SELECT * FROM emp NATURAL JOIN dept ;

4、USING子句、直接关联操作列(不常用)

SELECT * FROM emp e JOIN dept d USING(deptno) WHERE deptno=30 ;

5、ON子句、用户自己规定连接条件

SELECT * FROM emp e JOIN dept d ON(e.deptno=d.deptno) WHERE deptno=30 ;

二、组函数:

1、常用:COUNT() MAX() MIN() AVG() SUM(),

使用条件,1、程序中存在GROUP BY,并且指定分组条件。2、单独使用分组函数除了相等条件分组函数使用HAVING条件。

公式:

SELECT {DISTINCT} 列 FROM表 {WHERE (s)} {GROUP BY {HAVING 分组条件}} {ORDER BY排序字段 ASC|DESC , 排序字段ACS | DESC ,…}

分组:一列上有重复内容,可以嵌套使用

=ANY 等于IN 比最大值要小、>ALL比最大值大、<ALL比最小值小

事务操作(执行以及回滚)

2、对表的操作

插入:CREATE TABLE myemp AS SELECT * FROM emp ;(创建备份表)

INSERT INTO 表名(字段)values(TO_DATE('2009-01-16','yyyy-mm-dd')

更新:UPDATE 表名SET sal=5000 WHERE empno=7899;

删除:DELETE FROM表名 WHERE条件;

DROP TABLE book CASCADE CONSTRAINT ;强制删除

总结

以上所述是小编给大家介绍的Orancle的SQL语句之多表查询和组函数 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • MySQL 多表查询实现分析

    我们继续使用前面的例子.前面建立的表中包含了员工的一些基本信息,如姓名.性别.出生日期.出生地.我们再创建一个表,该表用于描述员工所发表的文章,内容包括作者姓名.文章标题.发表日期. 1.查看第一个表 mytable 的内容: mysql> select * from mytable; +----------+------+------------+-----------+ | name | sex | birth | birthaddr | +----------+------+-------

  • SQL Server多表查询优化方案集锦

    SQL Server多表查询的优化方案是本文我们主要要介绍的内容,本文我们给出了优化方案和具体的优化实例,接下来就让我们一起来了解一下这部分内容. 1.执行路径 ORACLE的这个功能大大地提高了SQL的执行性能并节省了内存的使用:我们发现,单表数据的统计比多表统计的速度完全是两个概念.单表统计可能只要0.02秒,但是2张表联合统计就 可能要几十秒了.这是因为ORACLE只对简单的表提供高速缓冲(cache buffering) ,这个功能并不适用于多表连接查询..数据库管理员必须在init.o

  • 一个多表查询的SQL语句

    有 表1:如下内容 表2:   如下内容      id     info id value      1 a 1 10      2 b 2 30      3 c      4 d 想得到      id value      1 10 //表2中存在      2 20 //表2中存在      3 0 //表2中不存在      4 0 //表2中不存在      是否可以使用一条sql语句来解决,而不必先从表1中得到id,再在表2中查找是否有该条记录,如果有就直接读取出来,没有则赋值为

  • MySQL左联多表查询where条件写法示例

    复制代码 代码如下: select * from _test a left join _test b on a.id=b.id where a.level='20' and a.month='04' and b.level='20' and b.month='03'; select a.*,b.* from (select * from _test where level='20' and month='04') as a left join (select * from _test where

  • OraclePL/SQL单行函数和组函数详解

    正在看的ORACLE教程是:OraclePL/SQL单行函数和组函数详解. 1 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类:  2  3 单行函数  4  5 组函数   6  7 本文将讨论如何利用单行函数以及使用规则.  8  9 SQL中的单行函数 10 11 SQL和PL/SQL中自带很多类型的函数,有字符.数字.日期.转换.和混合型等多种函数用于处理单行数据,因此这些都可被统称

  • SQL重复记录查询 查询多个字段、多表查询、删除重复记录的方法

    SQL重复记录查询 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 例二:  select * from testtable where numeber in (select number from people group by numbe

  • sqlserver 多表查询不同数据库服务器上的表

    第一种方法: 复制代码 代码如下: /* 创建链接服务器 */ exec sp_addlinkedserver 'srv_lnk','','sqloledb','条码数据库IP地址' exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码' go /* 查询示例 */ SELECT A.ListCode FROM srv_lnk.条码数据库名.dbo.ME_ListCode A, IM_BarLend B WHERE A.ListCo

  • thinkphp中多表查询中防止数据重复的sql语句(必看)

    下面先来看看例子: table id name 1 a 2 b 3 c 4 c 5 b 库结构大概这样,这只是一个简单的例子,实际情况会复杂得多. select *, count(distinct name) from table group by name 结果: id name count(distinct name) 1 a 1 2 b 1 3 c 1 最后一 项是多余的,不用管就行了 tp2.0手册   搜索连贯操作 可看到相关的资料 SELECT cat_id, COUNT(*) AS

  • Orancle的SQL语句之多表查询和组函数

    一.SQL的多表查询: 1.左连接和右连接(不重要一方加(+)) SELECT e.empno,e.ename,d.deptno,d.dname,d.loc FROM emp e,dept d WHERE e.deptno(+)=d.deptno ; (+)在等号左边是右连接,反之左连接. 2.交叉连接 (CROSS JOIN产生笛卡尔积) SELECT * FROM emp CROSS JOIN dept ; 3.自然连接 (NATURAL JOIN)自动关联字段匹配 SELECT * FRO

  • SQL语句实现多表查询

    目录 基本sql语句 多表查询 例一:双表查询 例二:多表查询 基本sql语句 SELECT <目标字段> FROM <数据库表> WHERE <查询条件> GROUP BY <分组依据> ORDER BY <排列依据> 多表查询 内连接 :返回满足连接条件的数据 格式:SELECT <目标字段> FROM <INNER JOIN+表名+ON+连接条件> WHERE <查询条件> 注意:理清表与表之间的关系,从

  • SQL 列不同的表查询结果合并操作

    两个不同的表进行查询,需要把结果合并, 比如table1的列为 id, user_id, type_id,pro_id: table2的列为 id,user_id,collect_id:分别如下图所示 table1: table2: 将两个表的查询结果合并到一起的查询语句为 select *, null as collect_id from table1 where user_id = 527 union select id,user_id,null as type_id,null as pro

  • 教你使用SQL语句进行数据库复杂查询

    目录 前言 前言 本篇可当做例题练习, 1.查询比”林红”年纪大的男学生信息语句: select * from Student where Sex='男' and year(Birth)-(select year(Birth)from Student--这里是需要告诉查询的表名,相当于嵌套 where Sname='林红')<0 2.检索所有学生的选课信息,包括学号.姓名.课程名.成绩,性别.语句: select sc.sno,sname, course.Cno,Cname,Grade,Sex

  • 用非动态SQL Server SQL语句来对动态查询进行执行

    此文章主要向大家讲述的是非动态SQL ServerSQL语句执行动态查询,在实际操作中我尝试在一个存储过程中,来进行传递一系列以逗号划定界限的值,来对结果集进行限制.但是无论什么时候,我在IN子句中使用变量,都会得到错误信息. 是否存在一种不执行动态SQL语句也能完成查询的方式呢? 我尝试在一个存储过程中传递一系列以逗号划定界限的值,以限制结果集.但是无论什么时候,我在IN子句中使用变量,都会得到错误信息.是否存在一种不执行动态SQL ServerSQL语句也能完成查询的方式呢? 专家解答: 这

  • MySQL中使用SQL语句查看某个表的编码方法

    MySQL中,如何使用SQL语句来查看某个表的编码呢?我们使用show create table 这一SQL语句来解决这个问题. show create table可以查看创建这个表的SQL语句脚本,它的基本语法是: show create table <表名>; 我们用它看看test表的create脚本: mysql> show create table test; +-------+--------------------------------------------- -----

  • 通过SQL语句直接把表导出为XML格式

    首先建立一张表: 复制代码 代码如下: USE [ip] GO /****** 对象: Table [dbo].[SiteData] 脚本日期: 09/11/2010 17:41:11 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[SiteData]( [id] [int] IDENTITY(1,1) NOT NULL, [SiteName]

  • Oracle中sql语句如何执行日志查询

    目录 Oracle sql语句执行日志查询 Oracle查询某天sql执行记录 Oracle sql语句执行日志查询 在Oracle数据中,我们经常编写sql语句,有时我们会编写一些特别长的sql语句,而有一些意外导致sql消失,从而出现长时间写的sql,但是需要重新辨析,我们可以使用查询语句通过时间定位sql. 从而找到: select FIRST_LOAD_TIME,LENGTH(SQL_FULLTEXT),SQL_FULLTEXT from v$sql where SQL_FULLTEXT

  • SQL直接操作excel表(查询/导入/插入)

    复制代码 代码如下: --配置权限 EXEC sp_configure 'show advanced options', 1; GO RECONFIGURE; GO EXEC sp_configure 'Ad Hoc Distributed Queries', 1; GO RECONFIGURE; GO SQL SERVER 和EXCEL的数据导入导出 1.在SQL SERVER里查询Excel数据: -- ============================================

  • 一条SQL语句修改多表多字段的信息的具体实现

    之前修改两张及以上表的时候,总得需要用几次语句才修改,万一其中一条没修改上,又没事务机制的话,处理很麻烦,于是想到能不能一条语句完成呢? 结果是成功的~~ 多表多字段的时候,得用到表关联的方式修改信息: 复制代码 代码如下: UPDATE `user` join `binding` on `user`.`uid`=`binding`.`uid` SET `user`.`renren`="" ,`binding`.`renren_token`= "" , `bindi

随机推荐