-
ORACLE 查询
2019-04-04 16:22:24查询作为SQL语言中作重要的组成部分,其作用也是巨大的。一个完整的select语句由select … from …组成。而这个基础的语句可以扩充为: Select … From … Where … (Group by) … Having(where) … Order by… ...查询作为SQL语言中作重要的组成部分,其作用也是巨大的。一个完整的select语句由
select … from …
组成。而这个基础的语句可以扩充为:Select … From … Where … (Group by) … Having(where) … Order by…
下面举个最简单的例子:
得到的查询结果:
可以将
通配符*
换成student表中你需要的字段,如SNO,SNAME,从而得到自己想要的结果。可有时候我们需要的数据不仅仅来源于一张表,这个时候就要进行连表查询。而表格的连接方式又分为很多种:- 等值连接(也称为内连接,以两边中相同的字段作为连接条件
- 非等值连接(范围筛选连接条件)
- 外连接(使用外连接来查询不满足连接条件的数据)
- 自连接(本表与本表存在相关联的字段)
- 叉集(笛卡尔积)
- 自然连接(以两个表中具有相同名字的列为条件创建等值连接。)
在表格的连接过程中可能会出现很多问题,首先就是
笛卡尔积
。笛卡尔积的形成是由于在连表的时候未写连接条件,而导致两表的数据进行一对多随意连接,造成大量甚至是巨量的数据冗余,从而对数据库带来极大的负担。所以在进行连表时一定要注意连接条件的使用,尽量避免笛卡尔积的出现。连表时可以使用
where
来建立连接条件:也可以使用
on
来建立连接条件:有些表名冗长难写,这个时候就可以使用别名来简化查询。在不同表中具有相同列名的列可以用
表的别名
加以区分。使用表名前缀可以提高执行效率。有时候我们需要的数据不满足表的连接条件,就得不到想要的结果,例如上面查询的结果为:
有四名同学的信息,可我们又想查询到所有学生,就算没有成绩也可以,这个时候就需要用到外连接,外连接同样针对
where
和on
各有各的写法:Oracle SQL语法(where):
SQL 1999语法(on):
外连接的表格会查询出该表的所有数据,就算不满足连接条件也会查询出来,而不满足的其他表的列值为空。这个时候得到的查询结果为:
Oracle SQL语法与SQL 1999语法都是可用的,不必过分纠结两者的区别,灵活运用也可以提高查询效率。
为了满足更复杂的要求,在写查询语句的时候可以运用
子查询
来满足需求,并且简化查询。在查询语句中如果有子查询的存在,那么SQL语句会先执行子查询,再执行外查询,这也印证了“子查询的结果作为外查询的条件”
。如题:查询张三所在班级的所有学生信息。那我们需要先查询出“张三”所在的班级:
然后再根据班级来查询该班的学生信息:
这样要写两个查询语句才能得到结果,但是我们可以发现,第一个查询语句的结果,就是第二个查询语句的条件,那么我们就可以使用
子查询
来简化它:
这样写得到的结果与前面分两个查询语句写是相同的。
除了连表以外,还有一个需就是函数的使用。函数可以根据函数本身的功能来对数据进行操作,也可以对数据的类型进行转换。而函数之间也是可以嵌套使用的,就相当于外查询嵌套子查询,内部的函数结果作为外部函数的参数。
最后得到的结果就是将first_name和last_name转换成大写后拼接起来:
函数的使用中还需要注意的就是分组函数,分组函数能处理多条数据并且返回一个值,需要使用
group by子句
进行分组以及having子句
进行筛选。
当我们在最终的查询结果出来之后,就可以对其进行排序的操作,这个时候就引入了一个新的语法——
ROWNUM(伪列)
。顾名思义,伪列就是一个虚拟的列,它可以为当前数据进行标号,效果如下:
有伪列之后就可以通过为例进行数据的筛选和排序,但有一点要注意的是,
由于Oracle的执行顺序中order by 子句是最后执行的,而伪列是在select 子句中执行,所以在使用伪列的同时又使用了order by 子句,那么伪列原本的顺序将会被打乱
,这个时候再使用where 子句对伪列进行数据筛选的时候得到的结果就是错误的:
所以我们在使用伪列的过程中一定要注意Oracle的执行顺序,上面的问题可以使用子查询来解决为:
那么得到的结果就是正确的:
Oracle SQL语句的执行顺序为:
1. from 语句
2. where/on 语句(连接条件)
3. where
4. group by 语句
5. having 语句
6. select 语句
7. union、minus、intersect等
8. order by -
oracle查询和Mysql查询
2016-08-26 11:48:36oracle查询 to_char把查询出来的数字类型结果转换为字符串类型 select * from CHK_YWCFSC where ywglsxh=( select to_char(dyzlsxh ) from yz_dyzl where grsxh='462323' ) 在Oracle使用sql语句中如何插入日期...oracle查询
to_char把查询出来的数字类型结果转换为字符串类型
select * from CHK_YWCFSC where ywglsxh=( select to_char(dyzlsxh ) from yz_dyzl where grsxh='462323' )
在Oracle使用sql语句中如何插入日期格式的数据
update yz_shiyeryzl set jbrq=to_date('2014-7-12','yyyy-mm-dd') where grsxh='251456'
oracle限制查询条数-rownum对于大于某值的查询条件
select * from(select rownum no ,id,name from student) where no>2;
oracle使用“||”来拼接字符串:
select '拼接'||'字符串' as Str from student;
Mysql查询
mysql中Date和String的互相转换
1.Date ——> String
使用的函数:DATE_FORMAT(date,format) date:需要转换的日期 format:格式化的样式
format样式整理:
年: %Y 显示四位 : 2015 %y 只显示后两位 :15
月: %M 月份的英文显示:October %m 月份的阿拉伯显示:01-12 %b 月份的英文缩略显示:Oct %c 月份的阿拉伯显示:1-12
日: %d 阿拉伯显示:00-31 %D 带有英文后缀:1st-31th %e 阿拉伯显示:1-31 %j 年的天:001-366
时: %H :00-23 %h:01-12 %I:01-12 %k:0-23 %l:1-12
分: %i:00-59
秒: %S:00-59 %s:00-59
微妙: %f
AM/PM:%p
12小时制时间:%r: 02:02:44 PM
24小时制时间: %T: 14:02:44
周: %W:周的英文显示 %w 周的阿拉伯显示 :0(星期日)-6(星期六) %a 周的英文缩略显示:Mon-eg:DATE_FORMAT(now(),"%Y-%m-%d %T") 2015-09-01 17:10:52
DATE_FORMAT(now(),"%Y-%m-%d %H:%i:%s %p") 2015-09-01 17:10:52 PM2.String ——>Date
使用的函数:STR_TO_DATE(str,format) str:字符形式的日期 format:格式化样式eg: STR_TO_DATE('1992-04-12',"%Y-%m-%d") 输出:1992-04-12(日期形式)
insert into special_task(name,insert_time,start_time) VALUES('周南',now(),STR_TO_DATE('20190401000000',"%Y%m%d%H%i%s"));
-
Oracle查询所有序列
2019-02-11 14:23:58Oracle查询所有序列--查看当前用户的所有序列select SEQUENCE_OWNER,SEQUENCE_NAME from dba_sequences where sequence_owner='用户名';--查询当前用户的序列总数select count(*) from dba_sequences where sequence_owner='用户名';--示例:select SEQUENCE_OWNER,SEQUENCE_NAME from dba_sequences where sequence_owner=’WGB;select count(*) from dba_sequences where sequence_owner=’ WGB’;SQL> select SEQUENCE_OWNER,SEQUENCE_NAME from dba_sequences 2 where sequence_owner='WGB';SEQUENCE_OWNER SEQUENCE_NAME------------------------------ ------------------------------WGB SEQ_FOR_TESTWGB SEQ_WGB_ADMINWGB SEQ_WGB_COMMONWGB SEQ_WGB_COMMONSWGB SEQ_WGB_CONTACTORWGB SEQ_WGB_FACESWGB SEQ_WGB_MEMBERWGB SEQ_WGB_MESSAGEWGB SEQ_WGB_MONEY_USER已选择9行。SQL> select count(*) from dba_sequences where sequence_owner='WGB'; COUNT(*)---------- 9
注意事项:
1. 必须以管理员身份登录;
2. sequence_owner必须为大写,不管你的用户名是否大写。只有大写才能识别。
参考资料:
http://zhidao.baidu.com/question/140904731
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
-
Oracle查询CLOB
2018-11-29 09:55:54Oracle查询CLOB类型字段的内容: (1)数据长度<4000时,查询CLOB类型的数据: select dbms_lob.substr(字段名) as 别名 from 表名----别名必须写 或者 select to_char(字段名) as 别名 from 表名-----别名...Oracle查询CLOB类型字段的内容:
(1)数据长度<4000时,查询CLOB类型的数据:
select dbms_lob.substr(字段名) as 别名 from 表名
----别名必须写
或者select to_char(字段名) as 别名 from 表名
-----别名必须写,作为函数的结果
(2)数据长度>4000时,查询CLOB类型的数据:<resultMap type="com.cnpc.oms2.mobile.server.pojo.news.RuleRegulationMobile" id="viewResultMap"> <result column="KEY_WORD" property="keyWord" jdbcType="VARCHAR" /> <result column="CONTRIBUTE_PERSON" property="contributePerson" jdbcType="VARCHAR" /> <result column="ISSUED_NUMBER" property="issuedNumber" jdbcType="VARCHAR" /> <result column="ATTACHMENT_PATH" property="attachmentPath" jdbcType="VARCHAR" /> </resultMap> <select id="selectOne" resultMap="viewResultMap" parameterType="hashmap"> select KEY_WORD, CONTRIBUTE_PERSON, ISSUED_NUMBER, ATTACHMENT_PATH, CONTENT <!-- content是clob类型 --> from 表名 </select>
-
Oracle查询语句
2019-04-08 08:21:51Oracle查询语句 Select 选择哪一个列,from 列在哪一个表 例如:我要查员工姓名(last_name),员工姓名在employees表里,实现代码以及输出截图: Select last_name from employees; 如果要查询两个列的话要用... -
oracle查询字段信息
2019-04-11 20:54:49oracle查询字段信息 select A.COLUMN_NAME, A.DATA_TYPE, A.data_length , A.nullable, A.tablespace_name, from user_tab_columns A where table_name = ‘T_EMPLOYEE’; 表名称必须大写 所有table的注释 select * ... -
个人总结-oracle查询锁表、解锁语句
2018-11-29 16:59:10–oracle查询锁表解锁语句 –首先要用dba权限的用户登录,建议用system,然后直接看sql吧 1. 如下语句 查询锁定的表. SELECT L.SESSION_ID SID, S.SERIAL#, L.LOCKED_MODE, L.ORACLE_USERNAME, L.OS_... -
Oracle 查询死锁语句
2016-06-16 21:00:04Oracle 查询死锁语句:select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode, SESS.machine from v$locked_object lo, dba_objects ao, -
oracle查询数据顺序问题
2018-12-29 15:41:37oracle查询数据顺序问题 [问题点数:20分,结帖人gingkoc] 收藏帖子 回复 gingkoc 结帖率 50% 在不动表数据的情况下,同一句sql每次查询的数据顺序是否是一致的? 问题点数:20分 0 2016-08-31 11:21:... -
python下连接Oracle查询乱码
2016-08-31 17:40:54Python连接Oracle查询乱码 -
Oracle查询用户所有表
2015-03-25 09:24:33Oracle查询用户所有表 ...下面为您介绍的语句用于实现Oracle查询用户所有表,如果您对oracle 查询方面感兴趣的话,不妨一看。 www.2cto.com select * from all_tab_comments -- -
Oracle查询客户端编码集
2015-12-13 12:06:51Oracle查询客户端编码集SQL> select userenv('language') from dual; USERENV('LANGUAGE') ---------------------------------------------------- AMERICAN_AMERICA.ZHS16GBK -
Oracle查询所有序列;[oracle中如何创建表的自增ID(通过序列);oracle sql语句大全
2019-07-04 19:42:59Oracle查询所有序列 oracle sql语句大全 oracle中如何创建表的自增ID(通过序列) -
ORACLE 查询BLOB字段转换字符串格式
2018-12-26 16:53:16ORACLE 查询BLOB字段转换字符串格式@ORACLE 查询BLOB字段转换字符串格式 ORACLE 查询BLOB字段转换字符串格式 脑壳疼,BLOB字段怎么能够直接查询出来呀! 废话不多说,直接上代码… select utl_raw.cast_to_varchar2... -
Oracle 查询时间段的数据
2016-11-16 02:46:42Oracle 查询时间段的数据。页面传来的一个开始时间和一个结束时间, 要和数据库中一个开始时间字段和一个结束时间字段比较, 找出符合这个时间段的数据。 -
oracle查询对某个字段进行去重处理
2019-08-21 10:10:21oracle查询对某个字段进行去重处理需要使用distinct函数 比如从A表查询aa字段和bb字段,然后对aa字段进行去重,查询语句如下: SELECT distinct(a.aa) as aa,a.bb as bb FROM A a 提示:去重的字段必须放在第一... -
[亲测]Oracle查询--子查询,分页查询(二)
2019-01-11 15:04:23ORACLE查询(子查询,分页查询) 一、子查询 (一)单行子查询 ( 只返回一条记录 ) 1 .查询 2012 年 1 月用水量大于平均值的台账记录 select * from t_account where usenum &amp;amp;amp;gt; (select avg... -
oracle查询字段是否含有中文
2018-11-12 09:58:571、 SELECT distinct F_HTZZRQ FROM HR_USERS_COMMON WHERE F_HTZZRQ LIKE '%[吖-座]%' 2、首字 SELECT distinct F_HTZZRQ FROM HR_USERS_COMMON WHERE ascii(F_...sql-oracle查询某字段中不包含汉字的记录? ... -
oracle查询sql执行时间
2017-05-26 10:30:47oracle查询sql执行时间 描述:在性能优化方面有时间需要得到不同sql语句执行的时间,来进行执行时间的定量对比。 方法: SQL> set timing on SQL> select * from tab; TNAME TABTYPE CLUSTERID ---------------... -
Oracle查询前多少条记录的方法
2017-11-20 09:53:48Oracle查询前几条数据 -
【oracle】oracle 查询某用户某段时间内历史SQL
2018-08-10 09:35:53oracle 查询某用户某段时间内历史SQL --如查询test用户2018年8月6号18~20点之间执行过的SQL with his as ( select sql_id, sql_exec_start,user_id from dba_hist_active_sess_history t where user_id = ... -
Oracle 查询数据库有多少张表
2017-12-08 15:34:37这个查询的需求很大可能是进行了Oracle数据库导入导出操作,买了新的服务器,你的上司老板叫程序猿们,数据库换个环境,移植到新的服务器上。为了验证导入进去的表有没有少,我们需要查询当前用户下的总表个数。登录... -
Oracle查询数据库中所有表的记录数
2018-12-05 15:31:31Oracle查询数据库中所有表的记录数 查询库中的表名和表中记录数: SELECT T.TABLE_NAME, T.NUM_ROWS FROM USER_TABLES T; 查询库中记录总数: SELECT SUM(A.NUM_ROWS) FROM (SELECT T.TABLE_NAME, T.NUM_ROWS ... -
Oracle查询定时器、触发器相关操作
2018-09-25 21:46:27Oracle查询定时器、触发器相关操作 --查看定时任务 字段含义:--查看定时任务 total_time 是次数 broken N表示未中断 what执行任务(只能是存储过程 ,存储过程在Oracle中的Procedures下) interval 间隔 ... -
oracle查询多列时对单列去重
2019-04-11 17:45:30oracle查询多列时对单列去重 最近有一个查询,需要针对查询结果中的某一列进行去重,而又要得到想要的其他列。一开始就想到distinct去重,但是distinct去重的话针对查询结果为单列时有效,如果查询的结果包括多列... -
Oracle 查询表注释以及字段注释
2019-05-14 15:12:00Oracle 查询表注释以及字段注释 --表字段信息 select * from all_tab_columns a where a.TABLE_NAME='T_X27_USER'; --表注释信息 select * from user_tab_comments a where a.table_name='T_X27_USER'; ... -
oracle查询所有大于女生最大年龄的男生信息
2016-03-08 08:14:24oracle查询所有大于女生最大年龄的男生信息,sql怎么做啊,求大神,oracle查询所有大于女生最大年龄的男生信息 -
Oracle查询某一列的重复部分
2017-03-17 09:46:36Oracle 查询某一列的重复部分 -
Oracle 查询视图
2019-03-18 21:48:18视图的查询:视图创建成果后,可以从视图中检索数据,这点和从表中检索数据一样。 还可以查询视图的全部信息和指定的数据行和列。 SELECT * FROM salvu50; desc 视图名称 查询表结构与视图结构写法一致,如下所示: ... -
Oracle 查询日期显示年月日时分秒格式
2017-05-02 20:49:22Oracle 查询日期显示年月日时分秒格式
-
数字图像模式识别技术及工程实践(源码).zip
-
剑指 Offer 16. 数值的整数次方
-
转行做IT-第2章 HTML入门及高级应用
-
word出现正在更新office,无法启动
-
google_play_services_4323030_r16.zip
-
google_play_services_5077000_r18.zip
-
AE插件包2 适用于cs cc
-
有趣的辞职信
-
android笔试面试和实战课程
-
STM32仿三菱PLC FX1N开源代码+电路图V3.8.zip
-
第3章 入门程序、常量、变量
-
【数据分析-随到随学】数据分析建模和预测
-
计算机网络基础
-
计算机网络题库
-
每日程序C语言12-统计字符个数
-
GLOGUI 一个可与HGE游戏引擎结合的GUI
-
ProBuilder快速原型开发技术
-
【数据分析-随到随学】Python数据获取
-
《令人心动的offer2》--你心动了吗?
-
解决React中setState异步问题