Oracle SQL 语言基础
数据库oracle基础知识
数据库oracle基础知识数据库Oracle是一款企业级关系数据库管理系统,被广泛应用于大型企业和政府机构。
为了从事Oracle数据库开发工作,需要掌握以下基础知识。
1. SQL语言SQL语言是Oracle数据库最常用的查询和管理语言。
它可以用于创建、修改和删除表格、存储过程和函数等对象。
SQL语言可以通过命令行工具或GUI工具(如Oracle SQL Developer)使用。
2. 数据类型Oracle数据库支持多种数据类型,包括字符型、数值型、日期型和布尔型等。
掌握各种数据类型的特点和使用方法对于正确存储数据非常重要。
3. 约束在Oracle数据库中,约束是定义表列或表之间关系的规则。
包括主键、外键、唯一约束和检查约束等。
理解和正确使用约束可以有效维护数据完整性。
4. 触发器触发器是一种在表上执行的操作,例如在插入、更新和删除时。
掌握触发器的创建和使用可以帮助开发者增强数据的一致性和完整性。
5. 存储过程和函数存储过程和函数是一些预定义的SQL语句,封装起来方便被调用。
存储过程和函数类似,但存储过程是没有返回值的,而函数则需要返回一个值。
掌握存储过程和函数的使用可以提高数据库的性能和效率。
6. 高可用性Oracle数据库提供了许多机制,确保在故障时保持数据库高可用性。
这包括了备份和恢复、灾备等方案。
掌握这些机制可以帮助开发者保障数据可靠性和业务连续性。
通过学习以上基础知识,可以使Oracle数据库开发者理解Oracle数据库的基本原理和概念。
并且可以使用这些知识来开发高效、高可用性、可扩展的Oracle数据库应用程序。
ORACLE SQL基础
ORACLE SQL基础培训资料第一章标准SQL简述 (1)1.1SQL简史 (1)1.2SQL的特点和作用 (2)1.3 SQL语句的分类 (3)第二章数据操纵语言 (3)2.1查询语句 (3)2.2插入语句 (4)2.3修改语句 (5)2.4删除语句 (5)第三章数据定义语言 (5)3.1创建数据库对象的语句 (6)3.2修改数据库对象语句 (6)3.3删除据库对象语句 (6)3.4授予用户权限语句 (7)3.5收回用户权限的语句 (7)第一章标准SQL简述SQL(Structured Query Language)是一种对关系数据库管理系统进行操作的结构化语言。
它用来设置、使用和维护关系数据库。
该语言使定义和管理关系数据库的操作规范化。
在Oracle中,对数据库的操作都要通过SQL 来完成。
应用程序和Oracle工具通常为用户提供了一种操作界面,使用户访问数据库时不必直接使用SQL,但从运行机理上讲,这些应用程序和工具内部都是通过SQL来满足用户请求的。
1.1 SQL简史最早提出SQL的是E﹒F﹒Codd博士,他开发的关系数据库模型,证时关系代数的逻辑操作能够从关系数据库中提取出任何数据,并且完成这一任务不需要任何过程代码。
ANSI的X3H2数据库标准委员会从1981年就开始了有关关系语言的标准制定工作。
直到1986年,标准委员会推出了第一个SQL语言的标准SQL-86,随后该标准被SQL-89代声价代替。
当前的执行标准是SQL-92。
目前大多数数据库厂商的数据库都积极地把SQL-92的标准结合了他们的数据库中。
1979年,Relational Software 公司(Oracle公司的前身)首先向市场推出了SQL执行工具。
现如今,SQL已成为标准的关系数据库操作语言。
1.2 SQL的特点和作用SQL的功能强大,应用程序开发人员、数据库管理人员和最终用户等所有用户都可以能过SQL语言来对数据库进行操作。
Oracle数据库应用技术7 SQL语言基础
第七章
SQL语言基础
主讲内容:SQL语法结构、SQL查询
本节课内容
一.SQL语言基础知识 二.使用SQL语言查询数据 三.综合练习
第3 页
一. SQL语言基础知识
• SQL(Structure Query Language),是关系型数据库管理 系统中最流行的数据查询和更新语言;
第 41 页
例1,查看部门为10的职工的最高工资; Select max(sal) 最高工资 From scott.emp Where deptno=10;
第 42 页
• 例2,显示所有职工的最高工资、最低工资和平均工 资; Select max(sal) 最高工资, min(sal) 最低工资, avg(sal) 平均工资 From scott.emp;
第8 页
• 数据输入到数据库中后,就可以用SELECT命令进行各类查 询,使得输出结果符合用户的要求;
• 简单语法格式: SELECT * FROM tablename [WHERE condition] [GROUP BY field1,……fieldn [ HAVING condition] ] [ORDER BY field1 [asc|desc] ,……] [COMPUTE clause]
第5 页
(2)PL/SQL语句的编写规则
• SQL关键字、对象名、列名不区分大小写; • 字符值和日期值区分大小写; • 在SQL*Plus中SQL语句要以分号结束;
– 如单行语句文本: • SQL> select ename,sal from emp;
– 多行语句文本: • SQL> select ename from emp where deptno=10 ;
ORACLESQL培训资料
规定:多表查询的条件是 至少不能少于 表的 个数-1 才能排除笛卡尔集 (如果有N张表联合查询,必须得有N-1个条件, 才能避免笛卡尔集合) SELECT e.ename, e.sal, d.dname FROM dengxianglei_emp e, dengxianglei_dept d WHERE e.deptno = d.deptno;
1、sql概念与分类 2、数据定义语言(DDL) 3、DML(Data Manipulation Language,数据
操作语言) 4、数据查询语言(DQL:Data Query Language) 5、函数 6、约束与索引
系统环境
Oracle数据库9i或以上版本 安装PL/SQL Developer数据库集成开发工具,建议使用英文 版
Union \union all\Intersect\Minus select * from dengxianglei_EMP t where t.empno = 5 intersect select * from dengxianglei_EMP t where t.empno = 6;
select * from dengxianglei_EMP t where t.empno = 5 union select * from dengxianglei_EMP t where t.empno = 5;
select * from dengxianglei_EMP t where t.empno = 5 union all select * from dengxianglei_EMP t where t.empno = 5;
跟我学Oracle从入门到精通培训教程——SQL语句及CRUD操作
4、标准的SQL语言中的语句分类 SQL语言是集数据查询(Data Query )、数据操纵 (Data Manipulation)、数据定义(Data Definition)和数 据控制(Data Control)等功能于一体。 (1)DQL语句(数据查询语言) DQL语句中主要的代表是SELECT语句,它既可以完成 简单的单一数据库表的查询,也可以完成复杂的多表如连 接查询和嵌套子查询。 (2)DML语句(Data Manipulation Language,数据操作 语言) DML语句中主要包括如Insert、Update和Delete 等语句。 (3)DDL语句(Data Definition Language,数据定义语 言) DDL语句中主要包括如Create、Alter和Drop等语句。
二、查询数据的select 语句
1、SQL中的select 语句的主要功能 (1)数据库的作用不仅是存储数据,它还需要根据用户的 应用要求显示和管理数据 Select语句可根据用户的具体要求从数据库表中检索 出所需的数据,它是SQL语言中使用频率最高的语句。 查询(Query)操作主要包括选择( Select)、投影 (Project)、连 接(Join)、除(Divide)、并(Union)、 交(Intersection)、差(Difference)等类型。 (2)列选择(也就是投影Projection查询操作) 投影操作是从数据库数据列的角度所进行的运算 但由于投影操作之后不仅取消了原关系中的某些数据 列,而且还可能取消某些数据行--因为取消了某些属 性列的数据后,就可能会出现重复的数据行。
1、结构化查询语言SQL (Structured Query Language) (1)SQL语言是1974 由Hoyce和Chamberlin 提出的 1986年10月ANSI的数据库委员会X3H2同年公布了SQL 标准文本(简称SQL-86) 。 1987年ISO也通过了这一标准,并于1989年公布了 SQL-89标准。 1992年又公布了SQL-92标准。 ANSI于1999年公布了新的标准SQL-99,亦称SQL3。 (2)SQL语言是操作和检索关系型数据库的标准语言 它是用户和数据库系统之间进行信息交流的接口, SQL语言具有如下的主要技术特性: 标准化 非过程化的 可优化的 面向集合操作
SQL语言入门教程oracle
SQL语言入门教程第一课简介SQL是英文Structured Query Language的缩写,意思为结构化查询语言。
SQL语言的主要功能就是同各种数据库建立联系,进行沟通。
按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准。
SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。
目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。
虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select, Insert, Update, Delete, Create, 以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。
下面,我们就来详细介绍一下SQL语言的基本知识。
一个典型的关系型数据库通常由一个或多个被称作表格的对象组成。
数据库中的所有数据或信息都被保存在这些数据库表格中。
数据库中的每一个表格都具有自己唯一的表格名称,都是由行和列组成,其中每一列包括了该列名称,数据类型,以及列的其它属性等信息,而行则具体包含某一列的记录或数据。
以下,是一个名为太平洋网络学院的数据库表格的实该表格中“栏目”,“用户群”就是两个不同的列,而表格中的每一行则包含了具体的表格数据。
1. 创建表格2. 数据查询3. 向表格中添加、更新、删除记录4. 删除数据库表格第二课创建表格SQL语言中的create table语句被用来建立新的数据库表格。
create table语句的使用格式如下:create table tablename(column1 data type,column2 data type,column3 data type);如果用户希望在建立新表格时规定列的限制条件,可以使用可选的条件选项:create table tablename(column1 data type [constraint],column2 data type [constraint],column3 data type [constraint]);举例如下:create table employee(firstname varchar(15),lastname varchar(20),age number(3),address varchar(30),city varchar(20));简单来说,创建新表格时,在关键词create table后面加入所要建立的表格的名称,然后在括号内顺次设定各列的名称,数据类型,以及可选的限制条件等。
oracle基础SQL语句多表查询子查询分页查询合并查询分组查询groupbyhaving。。。
oracle基础SQL语句多表查询⼦查询分页查询合并查询分组查询groupbyhaving。
select语句学习. 创建表create table user(user varchar2(20), id int);. 查看执⾏某条命令花费的时间set timing on;. 查看表的结构desc 表名;. 查询所有列select * from 表名;. 查询指定列select 某列名1,某列名2 from 表名;. 取消重复⾏select distinct 某列名1,某列名2 from 表名;其中distinct作⽤在后⾯多列,只有每⾏完全相同才会被滤去. 给某列或者某个表取别名select 某列名 as 其他名 from 表名 as 其他名;. 如何处理null值nvl函数的使⽤:select nvl(某列名,0) from 表名当此列为null时将值置为0. 对时间类型的数据的处理select 某列1,某列2 from 表名 where 列名='1-1⽉-1982';oracle默认的时间格式如上like%表⽰0到多个字符_表⽰单个字符select 某列名 from 表名 where 列名 like G%;返回⾸字母为G的列inselect 某列名 from 表名 where 列名 in(条件a,条件b,条件c);等同于 select 某列名 from 表名 where 列名 = 条件a,列名 = 条件b,列名 = 条件c;null的处理select 某列名 from 表名 where 列名 is null;不是⽤等号也不能将null写成''order byselect 某列名 from 表名 order by 列名 asc;从低到⾼asc可省略select 某列名 from 表名 order by 列名 desc;从⾼到低select 某列名 from 表名 order by 列名1 asc,列名2 desc;其中列1和列2之间的逻辑要正确select 某列名*2 as 别名 from 表名 order by 表名 asc;使⽤别名排序达到⼀个很好的效果max分组函数:在没有使⽤order by的时候select后要么全是分组函数,要么就是没有分组函数select max(列名) from emp;select 列名1 from 表名 where 列名2=(select max(列名2) from 表名);select 列名1, max(列名2) from 表名;错误,min avg sum count 使⽤类似group by 和 having的使⽤group by⽤于对查询的结果进⾏分组统计having ⽤于限制分组显⽰的结果select avg(列名),max(列名) ,列名x from 表名 group by 列名x;select avg(列名),max(列名) ,列名x,列名y from 表名 group by 列名x,列名y;先按列名x分组再按列名y分组select avg(列名),max(列名) ,列名x from 表名 group by 列名x having avg(列名)>2000;显⽰ >2000 的组1 分组函数只能出现选择列表、having、order by⼦句中2 如果在select语句中同时包含有group by ,having,order by那么他们的顺序是group by ,having,orderby3 在选择列中如果有列、表达式、和分组函数,那么这些列和表达式必须有⼀个出现在group by⼦句中,否则会出错select 列名1,avg(列名2),max(列名3) from 表名 group by 列名1 having avg(列名2)<2000;其中列名1就⼀定要出现在group by 中多表查询将表取个别名就⾏了对多张表多表查询:使⽤select时:第⼀步:select ?,?,? from talbe1 a1,table2 a2 where a1.x between a2.x and a2.y;第⼀步:select a1.x,a2.y,a1.z from talbe1 a1,table2 a2 where a1.x between a2.x and a2.y;实现的功能是:显⽰表1的x、表2的y、表1的z,条件是表1的x在表2的x和y之间;对⼀张表进⾏“多表查询”(⾃连接):将⼀张表取多个别名进⾏操作:select ?,?,? from talbe1 a1,table1 a2 where a1.x between a2.x and a2.y;数据库在执⾏每个⼦句sql是从左到右执⾏的,⼦句与⼦句先执⾏后⾯的。
Oracle-SQL语言基础
Oracle_SQL语言基础一、Oracle的数据类型、字符数据类型HAR(n) n的取值范围是1-2000字节ARCHAR2(n) n的取值范围是1-4000字节ONG、数字数据类型UMBER(m,n) m是所有有效数字的位数,n是小数点以后的位数如:number(5,2) 则这个字段的最大值是99 999,如果数值超出了位数限制就会截取多余的位数。
、日期数据类型ATE、大对象数据类型racle的大对象类型对象主要有3种:它们分别是:BLOB、CLOB、NCLOB种大型对象(LOB),用来保存较大的图形文件或带格式的文本文件,如Misrosoft Word文档、以及音频、视频等本文件,最大长度是4GB。
、其他数据类型AW(n) 可变长二进制数据,用来可在较小的图形文件或带格式的文本文件。
如Misrosoft Word文档。
N的取值范围-2000。
ONG ROW 可变长二进制数据,最大长度是2GB,用来保存较大的图形文件或带格式的文本文件,如Misrosoft Wo 档、以及音频、视频等非文本文件。
在同一表中不能同时有LONG类型和LONG ROW。
二、SQL基本语法、数字运算符和比较运算符SQL*PLUS工具下面是一些SQL*PLUS窗口环境设置命令:、@运行指定的命令文件。
如运行C:\Script.sql,只需在执行:@C:\Script.txt。
、符号“/”执行SQL命令或PL/SQL块。
用来执行缓冲区的SQL语句。
、Append将指定的文本增加到缓冲区内当前行的末尾。
、Change 修改缓冲区当前行的文本。
、Clear 重新设置或删除指定选项的当前值。
使用CLEAR SCREEN可以清除屏幕。
、Connect 用给出的用户名连接到Oracle。
、Define 指定一个用户变量并分配给它一个char值,或者显示变量的定义。
、del删除缓冲区的行。
、describe 显示指定表、视图或同义词的列定义,或者指定函数或过程的说明。
Oracle第13章SQL语言基础
2020/11/3
Oracle第13章SQL语言基础
本章内容
p SQL语句分类 p 数据查询(SELECT) p 数据操纵(INSERT、UPDATE、DELETE) p 事务控制 p SQL函数
Oracle第13章SQL语言基础
本章要求
p 掌握数据查询的各种应用 p 掌握数据操纵的各种应用 p 掌握事务处理 p 了解SQL函数应用
n SELECT empno,ename,sal FROM emp ORDER BY sal*12;
p 使用别名排序
n 可以使用目标列或表达式的别名进行排序。
n SELECT empno,sal*12 salary FROM emp ORDER BY salary;
p 使用列位置编号排序
n 如果列名或表达式名称很长,那么使用位置排序可以缩短 排序语句的长度。
n SELECT * FROM emp WHERE sal BETWEEN 1000 AND 2000;
Oracle第13章SQL语言基础
(3)查询排序
p 升序、降序排序
n ASC: 升序 (缺省);DESC: 降序
n SELECT empno,ename,sal FROM emp ORDER BY sal; n SELECT empno,ename,sal FROM emp ORDER BY sal
Oracle第13章SQL语言基础
13.2.2 基本查询
p 无条件查询 p 有条件查询 p 查询排序 p 查询统计
Oracle第13章SQL语言基础
(1)无条件查询
p 查询所有列
n SELECT * FROM emp;
ORACLE数据库之SQL语言基础
ORACLE数据库之SQL语⾔基础1、SQL语⾔基础SQL是Structured Query Language(结构化查询语⾔)的简称,是⽤户与数据库交流所需要的标准语⾔。
1.1 SQL语⾔简介1.1.1 SQL语⾔特点1)综合统⼀2)集合性3)统⼀性4)⾼度⾮过程化5)语⾔简单6)以同⼀种语⾔结构提供两种使⽤⽅式(交互式应答使⽤、预编译SQL进⾏执⾏)7)是所有关系数据库的公共语⾔。
1.1.2 SQL语⾔分类1)数据定义(DDL):create、drop、alter2)数据操纵(DML):select、insert、update、delete3)数据控制(DCL):grant、revoke1.1.3 SQL语⾔编写规则1)SQL关键字不区分⼤⼩写2)对象名和列名不区分⼤⼩写3)字符值区分⼤⼩写4)在SQL*Plus环境编写SQL语⾔时,如果SQL语⾔较短,则可以将语⾔放在⼀⾏上显⽰;如果SQL语⾔很长,为了便于⽤户阅读,则可以将语⾔分开显⽰(并且Oracle会在除第⼀⾏外的每⼀⾏前⾯⾃动加上⾏号),当SQL输⼊完毕,要以分号作为结束符。
2、⽤户模式某个⽤户所创建的数据库对象就都属于该⽤户模式。
2.1 模式与模式对象模式是⼀个数据库对象的集合。
模式为⼀个数据库对象所有,并且具有与该⽤户相同的名称。
如SCOTT模式。
在⼀个模式内部不可以直接访问其他模式的数据库对象,即使具有访问权限情况下也需要指定模式名称才可以访问其他模式的数据库对象。
模式对象是由⽤户创建的逻辑结构,⽤于存储或者引⽤数据。
如表、索引等。
模式与模式对象之间是拥有和被拥有的关系,即模式拥有模式对象,⽽模式对象被模式拥有。
⽰例:SCOTT模式下所拥有的模式对象#通过检索user_tables表来显⽰SCOTT模式所拥有的4个数据表connect scottselect table_name from user_tables#在system模式下,通过检索dba_tables表来显⽰SCOTT模式所拥有的4个数据表connect systemselect table_name from bda_tables where owner='SCOTT'3、检索数据检索数据可以通过select语句来实现。
Oracle数据库Sql语句详解大全
事务处理和并发控制
DML语句对事务处理的影响:DML语句可以导致事务的提交或回滚,从而影响数据的 一致性和完整性。
并发控制机制:Oracle数据库提供了多种并发控制机制,如锁机制和多版本并发控制, 以解决多个用户同时访问数据库时可能出现的问题。
ALTER语句的用法和技巧
ALTER语句用于修改数据库中的对象,如添加、修改或删除列。 ALTER语句可以修改表的结构,例如添加或删除约束、索引或触发器。
使用ALTER语句时需要注意权限问题,只有具有相应权限的用户才能执行ALTER语句。
ALTER语句在执行时可能会锁定表,需要注意对其他操作的影响。
INSERT语句的用法和技巧
插入单条记录:使用INSERT INTO语句,指定表名和要插入的列名及对应值
插入多条记录:使用INSERT INTO语句,一次插入多条记录,每条记录使用VALUES关 键字分隔 插入其他表的数据:使用INSERT INTO语句,SELECT子句指定要插入数据的表和列
插入默认值:在列名和对应值之间使用DEFAULT关键字,表示该列的值为默认值
04
2000年代:Oracle数据库10g版本发布, 推出网格计算等新特性
Oracle数据库的特点和优势
强大的数据存储和处 理能力
高可用性和可靠性
全面的数据安全保障
灵活的可扩展性
Oracle数据库的应用场景
企业级应用:Oracle数据库广泛应用于各类企业级应用,如ERP、CRM、HR等。 金融行业:Oracle数据库在金融行业中的应用非常广泛,如银行、证券、保险等。 政府机构:Oracle数据库在政府机构中的应用也非常广泛,如税务、公安、社保等。 科研领域:Oracle数据库在科研领域中也有广泛应用,如生物信息学、基因组学等。
ORACLE-SQL语句学习教程
目录概述 (2)第一章SQL*PLUS 工具软件的使用 (5)第二章基本查询 (9)第三章条件查询 (13)第四章单行函数 (16)第五章多表查询 (20)第六章组函数 (23)第七章子查询 (25)第八章运行期间指定变量 (29)第九章创建基表 (31)第十章ORACLE数据字典 (36)第十一章操纵数据 (38)第十二章修改基表及其约束 (42)第十三章创建序列 (45)第十四章创建视图 (47)第十五章创建索引 (50)概述20世纪70年代初,E.F.Codd 在计算机学会(Association of Computer Machinery, 简写为ACM)期刊Communications of the ACM(ACM 通讯)发表了题为”A Relational Model of Data for Large Shared Data Banks”(大型共享数据库的数据关系模型)的论文,该论文提出的关系数据库模型成为今天最为权威的关系型数据库管理模型。
IBM公司首先使用该模型开发出了结构化英语查询语言SEQUEL(Structured English Query Language),作为其关系数据库原型System R的操作语言,实现对关系数据库的信息检索。
SEQUEL后来简写为SQL,即Structured Query Language(结构化查询语言)的缩写。
ORACLE公司于1997年推出了第一个商业应用的SQL软件。
20世纪80年代初,美国国家标准化组织(ANSI)开始着手制订SQL标准,最早的ANSI标准于1986年颁布,它也被称为SQL-86。
标准的出台使SQL作为标准的关系数据库语言的地位得到加强。
SQL标准几经修改和完善,目前SQL语言方面新的ANSI标准是1992年制定的ANSI X3.135-1992,“Database Language SQL”。
此标准也被国际电工委员会(International Electro technical Commission, 即IEC)所属的国际标准化组织(International Standards Organization, 即ISO)所接受,并将它命名为ISO/IEC9075:1992, “Database Language SQL”。
Oracle教程03.SQL语言基础
INSERT语句用于向数据库或者视图中加入一行数据 语法: INSERT [INTO] { talbe_name |view_name} {[(column_list)] {values ({default |NULL |expression } [,…n])}
使用UPDATE语句更新数据
Update { table_name |view_name } [from {<table_soource>}[,…n] SET column_name={expression |default |NULL}[,…] [where search_condition]
DELETE语句用于删除数据库表中的数据 语法: DELETE [FROM ] {table_name |view_name } [ WHERE <search_condtion> ]
用来控制用户对数据库对象操作的权限 语法: grant|revoke 对象权限|all on 数据库对象 to 数据库用户
[WITH GRANT OPTION]
介绍DDL、DML、DCL应用
欢迎访问我们的官方网站
DROP 删除基本表语法 DROP TABLE <表名>
SELECT语句的语法形式如下: SELECT select_list FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
查询数据
SELECT 语句的语法格式如下: SELECT [DISTINCT select_list FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ] 其中: DISTINCT :用于删除结果集中重复的行。 select_list 指明要查询的选择列表。列表可以包括若干个列名或表达式,列名或表 达式之间用逗号隔开,用来指示应该返回哪些数据。表达式可以是列名、函数或常 数的列表。 FROM table_source 指定所查询的表或视图的名称。 WHERE search_condition 指明查询所要满足的条件。 GROUP BY group_by_expression 根据指定列中的值对结果集进行分组。 select deptno,job,avg(sal),max(sal) from emp group by deptno,job; HAVING search_condition 对用 FROM、WHERE 或 GROUP BY 子句创建的中间结果集 进行的筛选。它通常与 GROUP BY 子句一起使用。 显示平均工资高于 2000 元的部门编号、平均工资和最高工资。 select deptno,avg(sal),max(sal) from emp group by deptno having avg(sal)>2000; [ORDER BY order_expression [ ASC | DESC ] ] 对查询结果集中的行重新排序。ASC 和 DESC 关键字分别用于指定按升序或降序排序。如果省略 ASC 或 DESC,则系统默认 为升序。 以部门编号降序及姓名升序来查询工资在 2000-3000 元的员工信息。 select * from emp where sal between 2000 and 3000 order by deptno desc,ename;
Where 子句查询条件
比较运算符:=(等于) 、>(大于) 、>=(大于等于) 、<(小于) 、<=(小于等于) 、<> (不等于) select * from emp where deptno<>20 and job='CLERK'; 范围说明:between A and B, not between A and B select * from emp where sal between 2500 and 3500 and hiredate between ‘01-1 月-81’ and ‘31-12 月-81’; 可选值列表:IN,NOT IN select * from emp where deptno in(20,30); 等价于 select * from emp where deptno=20 or deptno=30; 模式匹配:LIKE,NOT LIKE select * from emp where ename like 'A%' or ename like '_A%'; 是否空值:IS NULL,IS NOT NULL select * from emp where comm is null; 上述条件的逻辑组合:NOT(非) 、AND(与) 、OR(或)
使用字段别名: Select deptno as 部门编号,dname as 部门名称 from dept; 使用算术表达式: select empno, ename,sal, sal*12 from emp; 连接运算符: select empno,ename||'''s annual salary is'|| sal*12 from emp where deptno=20;
子查询
单行子查询: select * from emp where sal=(select max(sal) from emp); ( =,>,<,>=,<=,<> ) 多行子查询: select * from emp where job in(select distinct job from emp where deptno=20); ( IN,NOT IN,EXISTS,NOT EXISTS,ALL,ANY ) 显示高于部门编号为 20 的所有员工工资的员工信息。 select * from emp where sal>all(select sal from emp where deptno=20); 显示高于部门编号为 20 的任意员工的工资的员工信息。 select * from emp where sal>any(select sal from emp where deptno=20);
内连接 外连接empno,ename,a.deptno,dname,loc from emp a,dept b where a.deptno=b.deptno and a.deptno=20;
不等连接: select a.ename,a.sal,b.grade from emp a,salgrade b where a.sal between b.losal and b.hisal and a.deptno=20;
*外连接
在外连接中,某些不满足条件的列也会显示出来,也就是说,只限制其中一个表的 行,而不限制另外一个表中的行。 这种连接形式在许多情况下是非常有用的。 外连接分为左外连接、右外连接和全外连接。 对于外连接,oracle 中可以使用“(+)”来表示 ,语法格式如下: select table1.column, table2.column from table1, table2 where table1.column1(+) = table2.column2
1、左外连接 左外连接对连接条件中左边的表不加限制。 返回结果集中将包括左表中所有的记录, 而不仅 仅是连接字段所匹配的记录 。如果左表中的某条记录在右表中没有匹配的记录,则结果集 相应记录的有关右表的所有字段将为空值。 select ename,a.deptno,sal,dname from emp a,dept b where a.deptno=b.deptno(+) and sal between 2500 and 3000; 等价于 select ename,a.deptno,sal,dname from emp a left outer join dept b on a.deptno=b.deptno where sal between 2500 and 3000; 2.右外连接 右外联接对右边的表不加限制。 返回结果集中将包括右表中所有的记录, 而不仅仅是连接字 段所匹配的记录 。如果右表中的某条记录在左表中没有匹配的记录,则结果集相应记录的 有关左表的所有字段将为空值。 select ename,a.deptno,sal,b.deptno,dname from emp a,dept b where a.deptno(+)=b.deptno; 等价于:select ename,a.deptno,sal,b.deptno,dname from emp a right outer join dept b on a.deptno=b.deptno; 3、全外连接 全外连接对两个表都不加限制, 所有两个表中的行都会包括在结果集中。 结果集将包含两个 数据表中的所有记录, 当某条记录在另一个数据表中没有匹配记录时, 则将另一个数据表的 选择列表字段指定为空值。 select ename,a.deptno,sal,b.deptno,dname from emp a full outer join dept b on a.deptno=b.deptno; 4、自连接(Self Join) 自连接就是一个表与它自身的不同行进行连接。 因为表名要在 FROM 子句中出现两次, 所以 需要对表指定两个别名,使之在逻辑上成为两张表。在 SELECT 子句中引用的列名也要使用 表的别名进行限定。 select empno,ename,mgr from emp where deptno=30; select a.ename 雇员,b.ename 经理 from emp a,emp b where a.mgr=b.empno and a.deptno=30;
组处理函数
把查询出的数据组的值进行汇总运算,返回单值的函数。 常用的组处理函数: 平均值:AVG 总和:SUM 最小值:MIN 最大值:MAX 计数:COUNT ( COUNT(*)、COUNT(DISTINCT…) ) select avg(sal) as arg1,avg(distinct sal) as arg2,max(sal) as max,min(sal) as min,sum(sal) as sum,count(*) as cnt1,count(sal) as cnt2,count(distinct sal) as cint3,count(comm) as cnt4 from emp where deptno=20;
在 DDL 中使用子查询 1. 在 CREATE TABLE 语句中使用子查询 通过在 CREATE TABLE 语句中使用子查询,可以在创建新表的同时插入表中的数据。 create table dept1(deptno,dname,loc) as select deptno,dname,loc from dept; create table emp1 as select * from emp; 2. 在 create view 中使用子查询 create or replace view dept_20 as select * from emp1 where deptno=20 order by empno; 在 DML 中使用子查询 1. 在 UPDATE 语句中使用子查询 将与 WARD 岗位相同的员工的工资、 补贴更新为与 WARD 完全相同。 然后确认更新的结果。 update emp1 set(sal,comm)=(select sal,comm from emp1 where ename='WARD')where job=(select job from emp1 where ename='WARD'); select ename,job,sal,comm from emp1 where job=(select job from emp1 where ename='WARD'); 2. 在 DELETE 子句中使用子查询 删除 ACCOUNTIBG 部门的员工信息。然后确认删除的结果。 delete from emp1 where deptno=(select deptno from dept1 where dname='ACCOUNTING'); select ename,job,deptno from emp1 where deptno=(select deptno from dept1 where dname='ACCOUNTING'); 3.在 INSERT 子句中使用子查询。 将 emp 表中 ACCOUNTING 部门的雇员信息插入到 emp 表中,然后确认插入的结果。 insert into emp1 select * from emp where deptno=(select deptno from dept where dname='ACCOUNTING'); select * from emp1 where deptno=(select deptno from dept1 where dname='ACCOUNTING');