mysql进阶oracle

14 篇文章 0 订阅
13 篇文章 0 订阅

有了mysql的SQL经验,学习起oracle感觉得心应手,下面是对于我了解到的语法的一些小见解:

一、单表查询

(一)简单条件查询 (SQL通用语言)

1.精确查询  
2.模糊查询
	select * from 表名 where 字段名 like '%刘%'
3.and运算符(并且)
	select * from 表名 where 条件1 and 条件2
4.or运算符()
	select * from 表名 where 条件1 and 条件2
5.and 与or运算符混合使用
6.范围查询
	select * from 表名 where usenum>=10000 and usenum<=20000
	select * from 表名 where usenum between 10000 and 20000
7.空值查询
	select * from 表名 where 字段 is null
	select * from 表名 where 字段 is not null

(二)去掉重复记录

--写法一
select distinct addressid from T_OWNERS ;
--写法二
select distinct(addressid) from t_owners;

(三)排序查询

order by 字段 asc/desc

(四)基于伪列的查询

伪列是oracle中独有的,伪列也是真实存在的列,也是可以用来进行查询操作的,伪列只能用来查,不能做增删改操作
ROWID:物理文件上唯一区别这条记录的唯一标识
ROWNUM为结果集中每一行编号

(五)聚合统计

Sum/avg/count/max/min

二、连接查询

1.内连接
select * from1 inner join 表2 on 连接条件;
2.左外连接
SELECT * FROM 左表 left join 右表 on 连接条件;
SELECT * FROM 左表,右表 WHERE ow.id=ac.owneruuid(+)  -----------左连接(+)写在右表条件上
3.右外连接(与左外链接反之)
4.全外连接(自行了解)

三、子查询

(一)单行子查询
select * from 表名 where 条件 in( select 字段 from 表名 where 条件)
(二)多行子查询
	1in 运算符		符合里边一个条件
	2、all运算符		符合所有条件
	3、any运算符		符合任意一个条件
(三)嵌套子查询
(四)标量子查询
标量子查询实现:dual,oracle中独有的,是虚表,专门用来帮忙显示数据的
(五)相关子查询

四、分页查询(借助rownum,需要用到子查询)

select * from (select rownum r,t.* from 表名 t where rownum<=20) where r>10

五、单行函数–PL/SQL

(一)字符函数
函数用途举例
CONCAT拼接两个字符串select concat(stuname,age) 只能拼接两个字段 from student
LENGTH以字符给出字符串的长度select length(stuname),stuname from student
REPLACE执行字符串搜索和替换select replace(‘helloworld’,‘e’,‘zz’) from dual
(二)数值函数
函数用途
ABS(value)绝对值
CEIL(value)大于或等于value的最小整数
FLOOR(value)小于或等于value的最大整数
MOD(value,divisor)求模
POWER(value,exponent)value的exponent次幂
ROUND(value,precision)按precision 精度4舍5入
SQRT(value)value 的平方根
(三)日期函数
函数用途
ADD_MONTHS在日期date上增加count个月
LAST_DAY( date ))返回日期date 所在月的最后一天
MONTHS_BETWEEN(date2,date1))给出 Date2 - date1 的月数(可以是小数)
NEXT_DAY( date,’day’)给出日期date之后下一天的日期,这里的day为星期
ROUND(date,’format’)ROUND函数判断时间的区间
NEXT_DAY( date,’day’)给出日期date之后下一天的日期,这里的day为星期
(四)转换函数
函数用途
TO_CHAR转换日期格式到字符串
TO_DATE按照指定的格式将字符串转换到日期型
TO_NUMBER将数字字串转换到数字
(五)其它函数
函数用途举例
NVL(检测的值,如果为null的值)空值处理函数select NVL(age,0) from student
NVL2(检测的值,如果不为null的值,如果为null的值)空值处理函数select NVL2(age,0,1) from student
decode根据条件返回相应值decode(条件,值1,翻译值1,值2,翻译值2,…值n,翻译值n,缺省值)

六、分析函数

函数用途
RANK相同的值排名相同,排名跳跃
DENSE_RANK相同的值排名相同,排名连续
ROW_NUMBER返回连续的排名,无论值是否相等

七、集合运算

函数用途
UNION ALL(并集)返回各个查询的所有记录,包括重复记录
UNION(并集)返回各个查询的所有记录,不包括重复记录
INTERSECT(交集)返回两个查询共有的记录
MINUS(差集)返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录

八、视图

(一)什么是视图
视图是基于 SQL 语句的结果集的可视化的表,,视图包含行和列,表是物理存在的,视图是虚拟的内存表。
视图本身并不包含任何数据,它只包含映射到基表的一个查询语句,当基表数据发生变化,视图数据也随之变化。
(二)创建或替换视图语法
CREATE OR REPLACE FORCE VIEW view_name AS subquery  
[WITH CHECK OPTION ]  :	插入或修改的数据行必须满足视图定义的约束;
[WITH READ ONLY] : 该视图上不能进行任何DML操作。
(三)删除视图语法
DROP VIEW view_name 

九、序列

(一)什么是序列
序列是ORACLE提供的用于产生一系列唯一数字的数据库对象
(二)创建与使用序列
CREATE  SEQUENCE  序列名 [START WITH  起始数] [INCREMENT BY  增长量]
		[MAXVALUE  最大值] [MINVALUE  最小值]
		提取下一个值 :	select 序列名称.nextval from dual
		提取当前值	:	select 序列名称.currval from dual

十、同义词

十一、索引

(一)什么是索引
索引是一种独立于表的数据库对象,可以存储在于表不同的磁盘中间或表空间;
索引相当于字典的目录,作用在于提升查询效率,降低磁盘读写,提升数据库性能。
(二)普通索引
create index 索引名称 on 表名(列名);
(三)唯一索引
	create unique index 索引名称 on 表名(列名);
(四)复合索引
create index 索引名称 on 表名(列名,列名.....);

到这里大概就结束了,以后有涉及到新学会继续分享的,(* ̄︶ ̄)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值