查询语句
直接查询: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