Oracle必须要启动的服务有:
- OracleOraDb11g_homeTNSListener
- OracleServiceORCL
Oracle实现分页
select * from (select rownum no,a.* from emp a) where no between (pageNo-1)*pageSize+1 and pageNo*pageSize;
查看表结构
desc 表名;//SQL Plus中执行
空值
包含空值的算术表达式计算结果为空,
别名
//起别名时,可以加双引号使别名变得大小写敏感,例如:
select 1 as "userName" from dual;//as起别名,as可以省略不写
连接符 ||
select 'Hello' || ' ' || 'World' from dual;//Hello World
去除重复行 distinct
//对所有查询字段去重,两条结果所有查询字段值完全一致才去重
select distinct name,age from user;
日期
select * from employees where hire_date = '24-1月-2006';
//'24-1月-06',英文版Oracle'24-1Jan-2006'
select * from employees where hire_date like '%06';
between … and …
select * from employees where salary between 3300 and 3500
desc
//每个字段的排序规则都要单独声明
select * from employees order by salary desc,last_name desc
百分比
//不支持百分比运算,20% 要写成 0.2或.2或.20或0.20
函数
字符处理函数
CONCAT('Hello','World') HelloWorld //相当于连接符||
SUBSTR('HelloWorld',1(起始位置),5(截取长度)) Hello //字符串截取
SUBSTR('HelloWorld',-5(起始位置)) World //截到末尾
//包含开始和结束,从左往右截取,起始为负数则从右往左数第n个字符开始
LENGTH('HelloWorld') 10 //取字符串长度
INSTR('HelloWorld','W') 6 //返回字符出现的位置
INSTR('HelloWorld','l',1(起始位置),3(出现的次数)) // 没有出现那么多次数则返回0
LPAD('World',10(位数),'*') *****World //若不满足位数,则从左侧填充参数3
RPAD('Hello',10,'123') Hello12312 //从右侧填充
TRIM(both 'H' from 'HelloH') ello //去掉头尾两侧字符,默认是去头去尾both可以省略
TRIM(leading'H' from 'HelloH') elloH //去头
TRIM(trailing 'H' from 'HelloH') Hello //去尾
REPLACE(目标字符串,'旧字符串','新字符串')
大小写处理函数
LOWER('str') 全部转为小写
UPPER('str') 全部转为大写
INITCAP('str') 转为首字母大写其他小写
参数必须字符串,返回值为字符串
数字函数
ROUND(123.456,2(位数)) 123.47 四舍五入截取小数位数
ROUND(123.456,-2) 100 位数为负数则截取整数,小数点往左截
TRUNC(123.456,2) 123.45 直接舍弃多余小数
MOD(10,3) 1 取余数
日期函数
sysdate 返回当前数据库服务器的日期和时间
date - date 返回相差天数
date - number 减去天数,返回日期,0.5天等于12小时
MONTHS_BETWEEN(date,date) 返回两个日期之间的月数
ADD_MONTHS(date,number) 给日期添加月数
NEXT_DAY(date,'星期一') 返回下一个星期一的日期
NEXT_DAY(date,1) 返回下一个星期日的日期,1-7,周日到周六
LAST_DAY(date) 返回日期当月的最后一天
ROUND(date) 对日期四舍五入(默认对天截取)
ROUND(date,'yy') 对年截取,'mm'对月,'dd'对日
TRUNC(date) 不做四舍五入截取