Oracle数据库学习笔记——基本查询
分类:
文章
•
2024-03-12 19:36:44
- sql优化原则:
a.尽量使用列名查询
b.where的解析顺序是从右到左
- NULL值注意事项
a.NULL不为NULL(空)
b.含有NULL的算术表达式为NULL
c.在in集合中如果有NULL,不能使用 not in
d. 在order by排序中NULL当做最大值
- 率空函数
a.nvl(a,num):当a等于null时 返回num
eg:

- 查询某个东西的某项等于NULL时,语句中不能使用xxx=NULL,要使用xxx is null,如果是不等于就是 is not null
- 给查询的列换一个名字:列名 as “别名”,其中as可以省略,双引号也可以省略,但是如果省略了双引号后,别名不能有空格
- distinct 去掉重复的数据,并且作用于其后面所有的列,后面的列组合起来不重复,不是单个列不重复eg:

- 连接符||,连接函数concat(),连接函数的参数只能是两个 eg:

- sql条件和排序语句:select *|{[DISTINCT] column|expression [alias],…}from table[where conditions];
eg:
- 字符串大小写敏感,字符串和日期必须放在单引号内
- 日期格式敏感,查询时必须严格按照设定格式,比如上图的17-11月-81,修改时间格式设定 select * from v$nls_parameters;
NLS_DATE_FORMAT这个属性就是时间格式,然后输入指令:alter session set NLS_DATE_FORMAT=‘yyyy-mm-dd’;但是session只在本次会话中有用,关闭窗口就无效
- 条件为在什么之间使用between…and…,小值在前,大值在后,并且有边界eg: select * from emp where sal between 1000 and 2000;也可以用表达式组合;select * from emp where sal>=1000 and sal <=2000;
- in(a,b,c,…)查询条件为在集合中的,not in 不在集合中,但是需要注意如果集合中有Null,不能使用not in,eg:select * from emp where deptno in (10,20); select * from emp where deptno not in (10,20);之所以不能在包含null的集合中使用not in 是因为in 判断时集合中相当于or,只要有一条满足就会返回true,但是在not in中 集合内相当于and 必须每个条件都成立才能返回true但是null与任何表达式计算都是null,所以集合返回都是fase所以也就找不到任何数据信息。
- 模糊查询 like 下划线表示模糊一个字符,%百分号表示一些字符,转义字符设定 escape ’ xx’ eg:查询名字是4个字的 select * from emp where ename like '__’; 查询名字中带有下划线的: select * from emp where ename like '%/%’ escape ‘/’; 如果不加入转义字符,系统识别不了那是下划线,他会当成模糊查询中的一个字符。
- order by 排序(默认为升序,后面加上desc为降序),其后面可以加 列,表达式,别名,序号 eg:
列
表达式
别名
序号(序号是按照查询列名的顺序从1开始,比如empno是1,sal*12是4)
注意1:如果是多个列进行排序,则先按照第一个列再按照第二个列依次排序,如果第一个列没有重复,第二个列就不排序,desc 只作用于离他最近的列
注意2:当在排序中遇到null时,Null为最大值,这个时候可以采用nvl()来给NULL给一个值,或者在排序语句后加上nulls first 或者nulls last 将null值放到最前面或者最后面
- windowns下清屏指令 host cls,clear screen 或者是clea scre