Oracle 数据库基础:数据查询与操作
SELECT uname FROM TUser WHERE uname=‘admin’
SELECT 字段名列表 FROM 表名 WHERE 条件;
在Oracle数据库中,对象是属于模式的,每个账户对应一个模式,模式的名称就是用户名称。在表名前面要添加模式的名字,在表的模式名和表名之间用“.”分隔。
我们以不同的账户登录数据库时,就进入了不同的模式,比如登录到STUDENT 账户,就进入了STUDENT模式。
而在STUDENT模式要查询属于SCOTT模式的表,就需要写成: SELECT * FROM SCOTT.EMP;但如果登录用户访问属于用户模式本身的表,那么可以省略表名前面的模式名称。 SELECT * FROM emp。
在查询语句中可以有算术表达式,它将形成一个新列,用于显示计算的结果,通常称为计算列。表达式中可以包含列名、算术运算符和括号。括号用来改变运算的优先次序。常用的算术运算符包括: * +:加法运算符。 * -:减法运算符。 * *:乘法运算符。 * /:除法运算符。
SELECT ename,sal,sal*(1+20/100) FROM emp;
我们可以为表的列起一个别名,它的好处是,可以改变表头的显示。特别是对于计算列,可以为它起一个简单的列别名以代替计算表达式在表头的显示。
SELECT ename AS 名称, sal 工资 FROM emp;
如果在显示结果中存在重复行,可以使用的关键字DISTINCT消除重复显示。
SELECT DISTINCT job FROM emp;
如果要在查询的同时排序显示结果,可以使用如下的语句: SELECT 字段列表 FROM 表名 WHERE 条件 ORDER BY 字段名1 [ASC|DESC][,字段名2 [ASC|DESC]...];
ORDER BY从句后跟要排序的列。ORDER BY 从句出现在SELECT语句的最后。 排序有升序和降序之分,ASC表示升序排序,DESC表示降序排序。如果不指明排序顺序,默认的排序顺序为升序。如果要降序,必须书写DESC关键字。若省略ASC和DESC,则默认为ASC,即升序排序
降序排序 :SELECT ename,hiredate FROM emp ORDER BY hiredate DESC;
多列排序:可以按多列进行排序,先按第一列,然后按第二列、第三列......。SELECT ename,deptno,hiredate FROM emp ORDER BY deptno,hiredate;
如果要对计算列排序,可以为计算列指定别名,然后按别名排序。select table_name t,tablespace_name s from user_tables order by t
运算的优先顺序是NOT,AND,OR。如果要改变优先顺序,可以使用括号。
相等连接有一个问题:如果某个雇员的部门还没有填写,即保留为空,那么该雇员在查询中就不会出现;或者某个部门还没有雇员,该部门在查询中也不会出现。 为了解决这个问题可以用外连,即除了显示满足相等连接条件的记录外,还显示那些不满足连接条件的行,不满足连接条件的行将显示在最后。外连操作符为(+),它可以出现在相等连接条件的左侧或右侧。出现在左侧或右侧的含义不同,这里用如下的例子予以说明。
显示雇员的名称、工资和所在的部门名称及没有任何雇员的部门。 执行以下查询: SELECT ename,sal,dname FROM emp,dept WHERE emp.deptno(+)=dept.deptno; left outer join 即左外连接方式:
SELECT ename,sal,dname FROM emp left outer join dept on emp.deptno=dept.deptno;
最后是一个自连接的训练实例,自连接就是一个表,同本身进行连接。对于自连接可以想像存在两个相同的表(表和表的副本),可以通过不同的别名区别两个相同的表。
子查询一般出现在SELECT语句的WHERE子句中,Oracle也支持在FROM或HAVING子句中出现子查询。 子查询比主查询先执行,结果作为主查询的条件,在书写上要用圆括号扩起来,并放在比较运算符的右侧。 子查询可以嵌套使用,最里层的查询最先执行
例子:
SELECT ename,sal FROM emp WHERE sal<(SELECT sal FROM emp WHERE empno=7788) AND deptno=(SELECT deptno FROM emp WHERE empno=7788);
如果子查询返回多行的结果,则我们称它为多行子查询。多行子查询要使用不同的比较运算符号,它们是IN、ANY和ALL。
例子:
SELECT * FROM emp WHERE sal < all (SELECT sal FROM emp WHERE job = 'MANAGER');
==SELECT * FROM emp WHERE sal < (select min(sal) from (SELECT sal FROM emp WHERE job = 'MANAGER'));
如果子查询返回多列,则对应的比较条件中也应该出现多列,这种查询称为多列子查询。
例子:
SELECT * FROM emp WHERE (job,deptno) =(SELECT job,deptno FROM emp WHERE empno=7788);
同于上面语句: SELECT * FROM emp WHERE job =(SELECT job FROM emp WHERE empno=7788) and deptno =(SELECT deptno FROM emp WHERE empno=7788) ;
Oracle 数据库基础:数据查询与操作的更多相关文章
- [转载]Oracle数据库基础--SQL查询经典例题
Oracle基础练习题,采用Oracle数据库自带的表,适合初学者,其中包括了一些简单的查询,已经具有Oracle自身特点的单行函数的应用 本文使用的实例表结构与表的数据如下: emp员工表结构如下: ...
- Oracle数据库基础--SQL查询经典例题
Oracle基础练习题,采用Oracle数据库自带的表,适合初学者,其中包括了一些简单的查询,已经具有Oracle自身特点的单行函数的应用 本文使用的实例表结构与表的数据如下: emp员工表结构如下: ...
- Oracle数据库基础知识_字符串操作相关2
6.LPAD,RPAD 作用:左/右边的字符串填充一些特定的字符语法: LPAD(string , n, [pad_String]) string:可是字符或者参数 ...
- Oracle数据库基础--建表语法+操作
语法 1.建表 create table 表名( 列名 数据类型, …… ); 2.删除表:drop table 表名; 3.添加列:alter table 表名 add(列名 数据类型); 4.修改 ...
- ASP.NET操作ORACLE数据库之模糊查询
ASP.NET操作ORACLE数据库之模糊查询 一.ASP.NET MVC利用OracleHelper辅助类操作ORACLE数据库 //连接Oracle数据库的连接字符串 string connect ...
- 第一章 oracle数据库基础
第一章 oracle数据库基础 1.oracle简介-->数据库管理系统 1.1:数据库 1.2:全局数据库名 1.3:数据库实例 1.4:表空间 1.5:数据 ...
- Oracle数据库基础入门《二》Oracle内存结构
Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...
- Oracle数据库基础入门《一》Oracle服务器的构成
Oracle数据库基础入门<一>Oracle服务器的构成 Oracle 服务器是一个具有高性能和高可靠性面向对象关系型数据库管理系统,也是一 个高效的 SQL 语句执行环境. Oracle ...
- 22 Oracle数据库基础入门
1.Oracle数据库的介绍 ORACLE 数据库系统是美国ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或 B/S 体 ...
- 对oracle数据库进行增删改更新操作,executeUpdate()执行卡住了
原因是:oracle数据库更新数据后需要commit,不然会堵塞,就会卡住 那么每次调用executeUpdate()完后,数据库要自动commit才可以. 我的基类加了一下,注意红色字体部分代码: ...
随机推荐
- Python_函数传参
关于函数中传递参数的相关知识 其中 万能参数 第一次听说 但感觉用处不大 后面用到再详细整理
- Python_深拷贝和浅拷贝
深拷贝与浅拷贝 import copy v = 123 v1 = copy.copy(v) #浅拷贝 v2 = copy.deepcopy(v) #深拷贝 **拷贝只拷贝可变数据类型,浅拷贝只拷贝第一 ...
- LInux下npm install 安装失败问题
现象: 今天公司自己动部署的Jenkins出现了问题,在执行npm install的时候,失败了,下载不到npm,在查阅了各种报错信息之后还是没有解决,发现用淘宝镜像进行安装时,也会有安装不成功的情况 ...
- ArcGIS Engine空间查询功能的实现(QueryFilterClass+SpatialFilterClass)
地图中包含大量的信息,为了快速地了解所需信息,必须借助为空间数据专门编写的空间查询功能. 空间查询主要有两种类型: 基于属性的查询,也称为属性查询. 基于空间位置的查询,也称为空间查询. 查询类的基本 ...
- PHP spl_autoload和class_exsits使用技能
本文章的PHP使用版本:5.4.7 PHP建议使用: spl_autoload_register 那么写了一种实现 文件路径 core core.php ChildrenClass.php Paren ...
- CPU爆满后的无助感
告警 晚七点刚好上地铁,握在手里的手机震动了好几下,根据震动这几下的手感已经判断出这是钉钉在告警了,十有八九就是线上的问题,通过Zabbix监控的一台线上服务器已经五分钟不可达,这应该不会是网络网络问 ...
- 委托事件(jQuery)
<div class="content"> <ul> <li>1</li> <li>2</li> <l ...
- Java网络编程(二)IP、URL和HTTP
一.IP InetAddress类有一些静态工厂方法,可以连接到DNS服务器来解析主机名. 示例1:InetAddress address = InetAddress.getByName(" ...
- unity发布ios高通AR的问题
1)缺少引用,无法找到vuforiaBehavior 原因:Windows下的工程,直接考到mac下,导致unity自带插件(2017)有问题 解决:首先在playerSettings-xrSetti ...
- FRP代理及其在数据库安全上的实践
1 代理 现如今的互联网世界里,代理服务已经十分常见,它通常作为一个第三方或者说中转站角色替代用户取得信息或者服务. 根据代理对象的不同,代理服务可以分为正向代理和反向代理. 1.1 正向代理 我们通 ...