Oracle(day2)数据库条件查找部分语句

上节回顾:
1、select 基本语法
select * (字段名,字段名...) from 表名;
2、字符串的拼接
|| ' ' || name name
3、非空函数NVL()
NVL(可能会有空值的字段名,值)
4、去除重复行
distinct
5、起别名
空格 + 字段

Oracle Day2

Order By 子句
Order By + 字段名,字段名,....
Order By + list列表值,list列表值,....
ASC 升序默认
DESC 降序

请用两种方式:
查询员工表中所有员工名字及员工工资并按从小到大的顺序排列
select first_name , salary from s_emp order by salary;
select first_name , salary from s_emp order by 2;

查询员工表中所有员工名字及员工工资并按从大到小的顺序排列
select first_name , salary from s_emp order by salary desc;
select first_name , salary from s_emp order by 2 desc;

查询员工表中所有员工名字及员工工资并按名字从大到小的顺序排列
select first_name , salary from s_emp order by first_name desc;
select first_name , salary from s_emp order by 1 desc;

查询员工表中所有员工名字及员工工资并按工资从小到大,名字从大到小的顺序排列
select first_name , salary from s_emp order by salary ,first_name desc;
select salary , first_name from s_emp order by 1,2 desc;

where 子句
比较运算符
= > >= < <=
不等于 != <> ^=

查询员工表中编号为41的员工(标题为Stock Clerk)
select * from s_emp where id =41;
select * from s_emp where id >41;
select * from s_emp where id <41;
select * from s_emp where id >=41;
select * from s_emp where id <=41;
select * from s_emp where id !=41;
select * from s_emp where id <>41;
select * from s_emp where id ^=41;

select * from s_emp where title = 'Stock Clerk';

SQL 运算符
BETWEEN ... AND... 查询*到*之间的记录
查询员工表中编号在12到24之间的记录
select * from s_emp where id between 12 and 24;
select * from s_emp where MANAGER_ID between 3 and 8;

IN(list) 查询指定个数的记录
查询员表中编号为1,3,8的记录
select * from s_emp where id in(1,3,8);

模糊查询
LIKE
通配符:% _

查询员工表中姓名包含a字母的员工信息
select * from s_emp where first_name like '%a%';


查询员工表中姓名第二个字母包含a字母的员工信息
select * from s_emp where first_name like '_a%';


IS NULL 是否为空值
查询员工表中提成为空的所有员工信息
select * from s_emp where commission_pct is null;

NOT BETWEEN
查询员工表中编号不在12到24之间的记录
select * from s_emp where id not between 12 and 24;

NOT IN
查询员表中编号不为1,3,8的记录
select * from s_emp where id not in(1,3,8);

NOT LIKE
查询员工表中姓名不包含a字母的员工信息
select * from s_emp where first_name not like '%a%';

IS NOT NULL
查询员工表中提成不为空的所有员工信息
select * from s_emp where commission_pct is not null;


逻辑运算符
AND
查询员工表中id为11并且工资为1400的记录
select * from s_emp where id =11 and salary =1400;
只要有一个条件不符合,查询不成功

OR
查询员工表中id为11或者工资为1400的记录
select * from s_emp where id =11 or salary =1400;
只要有一个条件符合,查询成功

NOT
查询员工表中id不为11的记录
select * from s_emp where not id =11;


逻辑运算符多个混合使用
SELECT* FROM s_emp WHEREsalary >= 1000 ANDdept_id = 44 ORdept_id = 42 ;

SELECT* FROM s_emp WHEREsalary >= 1000 AND(dept_id = 44 ORdept_id = 42);


函数之间的转换

经常用到的一些单函数大致可分为几下几类
跟字符串相关
跟数字相关
跟日期相关

内置函数

组函数

dual 哑表 ====> 专门用来做测试

LOWER转换为小写
select lower('ORACLE') from dual;

UPPER转换为大写
select upper('oracle') from dual;

INITCAP转换为首字母大写
select initcap('my oracle') from dual;

CONCAT字符串连接 ||
查询员工表中员工的姓名(用两种方式实现)
select first_name || last_name "姓名" from s_emp;
select CONCAT(first_name,last_name) from s_emp;

SUBSTR(原字符串,起始值,返回子串的长度)返回子串
"my oracle" "oracl"
select SUBSTR('my oracle',4,5) from dual;

LENGTH(字符串)返回长度
查询员工表中所有姓名的长度
select first_name , length(first_name) from s_emp;


ROUND四舍五入
select round(45.923, 2) from dual;

TRUNC截取
select trunc(45.923, 2) from dual;


日期函数
查看系统日期
select sysdate from dual;

查询当前时间五天后的日期
select sysdate+5 from dual;

MONTHS_BETWEEN 两个日期中做计算
select months_between(sysdate,sysdate+30) from dual;

ADD_MONTHS当前时间增加(按月增加)
select add_months(sysdate,1) from dual;


NEXT_DAY当前时间的下一个时间
select next_day(sysdate,'星期四') from dual;

LAST_DAY本月的最后一天
select last_day(sysdate) from dual;

嵌套
select last_day(add_months(sysdate+1,1)) from dual;


TO_CHAR 转换为字符串
select to_char(1234) from dual;
转换为固定格式
select to_char(123456,'fm$999,999,999') from dual;

TO_NUMBER 转换为数字
select to_number(1234) from dual;

TO_DATE 转换为日期
04-3月 -90
select to_date(04-3月 -90) from dual;


日期表现形式:

yyyy 2008 四位年
year 英文表示
mm 2位月份
month 英文表示
dy 缩写
day英文表示
dd06 数字表示
mi分钟 30
ss秒 两位数字表示
hh小时 两位小时
rr 年 (新类型)
yy年 (世纪年)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值