设为首页 收藏本站
查看: 573|回复: 0

[经验分享] Oracle(day2)数据库条件查找部分语句

[复制链接]
YunVN网友  发表于 2016-8-15 07:33:17 |阅读模式
  上节回顾:
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年 (世纪年)
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-257997-1-1.html 上篇帖子: 手工Oracle注入某足彩在线网站 下篇帖子: 导出oracle数据库所有表结构到excel中
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表