Oracle数据库学习笔记(四)

查询语句

直接查询:select sname from student;

附带条件查询:select sname from student where sex='男';

查询全部信息,用*代替:select * from student where sex='男';

修改输出的列标题

例如:查询student表中sno和sname这两列,将输出的列标题对应的改为学号和姓名

select sno 学号,sname 姓名 from student;

带运算的查询语句

例如:查询王大明老师的年收入

select sal*12+nvl(bonus,0) 年收入 from teacher where tname='王大明';

between…and语句

查询79、80两年出生的女同学的姓名和出生日期

select sname,birth

from student

where birth between '1-1月-1979' and '31-12月-1980' and sex='女';

关系运算

查询79、80两年出生的女同学的姓名和出生日期

select sname,birth

from student

where birth>='1-1月-1979' and birth<='31-12月-1980' and sex='女';

查询中的空值

查询学号为2011121202的同学正在上的课程的课序号

select cno

from sc

where sno=2011121202 and grade is null;

in和not in

查询计算机系、外语系和中文系的电话号码,输出系名和电话

select dname,tel from dep where dname in('计算机系','外语系','中文系');

select dname,tel from dep where dname='计算机系' or dname='外语系' or dname='中文系';

查询计算机系、外语系和中文系之外的系的电话号码,输出系名和电话

select dname,tel from dep where dname not in('计算机系', '外语系', '中文系');

like查询

查询姓王的同学信息

select * from student where sname like '王%';

通配符%表示零个或者多个字符,通配符_表示一个字符。

查询王某明老师信息(比较下面两种写法的区别)

select * from teacher where tname like '王%明';

select * from teacher where tname like '王_明';

_代表占据一个字符,%可占据多个字符或不占据字符

去除查询结果的重复值

查询课程名,去掉重复值

select distinct cname from course;

排序输出

查询课序号为c01的成绩,并按成绩由高到低排序输出学号和成绩

SELECT sno,grade 

FROM sc

WHERE cno='c01' and grade IS NOT NULL --Oracle在排序时认为null是最大值

ORDER BY grade DESC; --排序输出的隐含顺序是升序(ASC),如果要求按列值降序输出,需在列名后指定DESC

查询教师姓名及年收入,查询结果按年收入升序排列

SELECT tname,sal*12+nvl(bonus,0)

FROM teacher

ORDER BY 2; --SQL语言支持用SELECT语句中输出项的顺序号排序,这对于有些列名不好指定的情况尤为实用

SELECT tname 姓名,sal*12+nvl(bonus,0) 年收入

FROM teacher

ORDER BY 年收入;--也支持用列标题作为排序的依据

常见函数

Trim()删除前后空格

用法:

SELECT *

FROM course

WHERE trim(cname)='大学英语'; --删除cname属性值的前后空格

To_char(birth,’yyyy-mon-dd’)获取出生年月日

用法:

SELECT sname, to_char(birth,'yyyy-mon-dd') 出生日期 --指定输出格式

FROM student;

Extract(year from sysdate)获取当前系统年份

用法:

SELECT extract(year from sysdate) FROM DUAL;--显示系统年份

Lower()转成小写

用法:

SELECT dno, lower(dname) FROM dep; --转成小写

Upper()转成大写

用法:

SELECT * FROM it_produce WHERE produce_name=upper('cdma'); --转成大写

Round()四舍五入

用法:

SELECT round(782.935,2) FROM DUAL; --四舍五入,结果为782.94

Trunc()不四舍五入

用法:

SELECT trunc(782.935,2) FROM DUAL; --不四舍五入,结果为782.93

Floor()小于或等于参数的整数

用法:

SELECT floor(782.934) FROM DUAL; --小于或等于参数的整数,结果为782

Ceil()大于或等于参数的最接近的整数

用法:

SELECT ceil(782.234) FROM DUAL; --大于或等于参数的最接近的整数,结果为783

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值