Oracle小记

Oracle学习笔记

SQL语言分类:

DML 语句(数据操作语言)Insert(into)修改、Update插入、 Delete删除、Merge
DDL 语句(数据定义语言)Create创建、Alter@?、 Drop删除、Truncate
DCL 语句(数据控制语言)Grant、Revoke
事务控制语句 Commit提交、Rollback回滚、Savepoint


简单的 Select 语句(理解)

select * from 表名

使用算术表达式 + - / *(理解)


连接运算符 ||(学习)

Oracle中使用||作为连接运算符,+只用于算数运算
select 1||2 from dual;

使用字段别名 as ,with as(不理解)

空值 is (not) null

(不)为空
where 字段 is (not) null

去除重复行 distinct

select distinct name, id from A
查询多个时,都相同才会去重

查询结果排序 order by asc(desc)

1、ORDER BY 中关于NULL的处理
缺省处理,Oracle在Order by 时认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前。
可以使用nulls first 或者nulls last 语法来控制NULL的位置。Nulls first和nulls last是Oracle Order by支持的语法
如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc 还是 desc)
如果Order by 中指定了表达式Nulls last则表示null值的记录将排在最后 (不管是asc 还是 desc)
使用语法如下:
--将nulls始终放在最前
select * from zl_cbqc order by cb_ld nulls first
--将nulls始终放在最后
select * from zl_cbqc order by cb_ld desc nulls last
2、几种排序的写法
单列升序:select<column_name> from <table_name> order by <column_name>; (默认升序,即使不写ASC)
单列降序:select <column_name> from <table_name> order by <column_name> desc; 
多列升序:select <column_one>, <column_two> from <table_name> order by <column_one>, <column_two>; 
多列降序:select <column_one>, <column_two> from <table_name> order by <column_one> desc, <column_two> desc; 
多列混合排序:select <column_one>, <column_two> from <table_name> order by <column_one> desc, <column_two> asc;
3.自定义排序
select * from tb order by decode(blogid,3,1,2), blogid;
blogid 值为3的排第一,(1,2)按顺序往下,排序方式是3第一,(1,2)为一组,按照blogid升序排序,加blogid则为降序排序

比较运算符 > < (!= or <>) between and

>大于
<小于
<>不等于  
!=不是标准语法,也表示不等于,在oracle中可用
between and 选取介于两个值之间的数据范围(慎用,不同数据库的范围不同)

in 操作 not in

in:确定给定的值是否与子查询或列表中的值相匹配(被包含,含于)
not in:表示不被包含,不含于

模糊查询 like

其中关于条件,SQL提供了四种匹配模式:


1,% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'

将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。

另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件
SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'

若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'
虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。

2,_ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:

比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;

再比如 SELECT * FROM [user] WHERE u_name LIKE '三__';
只找出“三脚猫”这样name为三个字且第一个字是“三”的;


3,[ ] :表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

比如 SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'
将找出“张三”、“李三”、“王三”(而不是“张李王三”);

如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
将找出“老1”、“老2”、……、“老9”;

4,[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

比如 SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'
将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;

SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';
将排除“老1”到“老4”,寻找“老5”、“老6”、……

逻辑运算符 or and not

执行顺序:NOT>AND>OR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值