oracle2

上节回顾:
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 WHERE    salary >= 1000 AND    dept_id = 44  OR    dept_id = 42 ;

SELECT    * FROM     s_emp WHERE    salary >= 1000 AND    (dept_id = 44  OR    dept_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        英文表示
dd        06  数字表示
mi        分钟   30
ss        秒   两位数字表示
hh        小时  两位小时
rr            年   (新类型)
yy        年    (世纪年)


计算机病毒2000


作业:
1、今天课堂练习;
2、练习题






























 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值