1. 软件架构 C/S=client/server B/S=browser/server
2. Upper(字段),将字段整列转换成大写
Select * from person where upper(name) = ‘TOM’;
3. Avg(字段),求整列平均
Select avg(salary) from person;
4. 函数分类:单行函数,多行函数(组函数)
5. 字符函数:大小写转换
请以大写/小写/首字母大写的格式列出所有人的姓名
Select upper(name) from person;
Select lower(name) from person;
Select initcap(name) from person; //所有单词的首字母均大写
6. 字符函数:字符处理
请列出所有人名字的长度
Select length(name) from employees;//一个中英文长度均认为是1
请列出名字的第一个字(字符串截取)
Select substr(name,1,1) from employees;//第二个参数:截取的起始位置 第三个参数:截取的长度
如果name中有’abc’,则将其替换成java显示
Select replace(name,’abc’,’java’) from employees;
7. 数字函数
请列出所有人的工资,精确到小数点后2位(四舍五入)
Select round(salary,2) from employees;
Select round(salary) from employees;
请列出所有人的工资,精确到小数点后2位(直接截取)
Select trunc(salary,2) from employees;
Select trunc(salary) from employees;
8. 日期函数
请列出所有人的入职月数
Select months_between(sysdate,hireday) from employees;
请列出所有人入职的天数
Select sysdate-hireday from employees;
9. 日期函数截取
Round(’25-JUL-95’,’month’);à01-AUG-95
Round(’25-JUL-95’,’year’);à01-JAN-96
trunc(’25-JUL-95’,’month’);à01-JUL-95
trunc(’25-JUL-95’,’year’);à01-JAN-95
10. 转换函数
To_date(sysdate,’YYYY-MM-DD HH24-MI-SS’);
To_char(‘YYYY/MM/DD DAY’);//日期类型 DAY是指星期几
To_char(‘YYYY/MM/DD HH24:MI:SS’);//日期类型
Ex:
Select to_char(hireday,’YYYY”年”MM”月”DD”日” DAY’) from employees;
11. 其它函数
NVL(expr1,expr2);将空值转换为实际的值,数据格式可以是日期,字符,数字,但数据类型必须匹配
如
NVL(comm,0)
NVL(hireday,’01-5月-08’)
NVl(name,’名字未知’)
Select NVL(name, ’名字未知’) fromemployees;
NVL2(expr,expr1,expr2);如果expr不为空,返回expr1,为空,返回expr2,expr可以为任何数据类型
如:
Insert into employees values(‘009’,’null’,’ 长春’,’24-1月-2009’,6000);
Select NVL2(name,’有名字’,’未知名字’) fromemployees;
练习:
/*
droptable employees;
createtable employees
(
id varchar2(4),
name varchar2(10),
addr varchar2(20),
hireday date,
salary number(10,3)
);
insertinto employees values('001','ABVdef','北京','06-12月-1999',2000.234);
insertinto employees values('002','BBBadAA','哈尔滨','06-12月-1999',7600.345);
insertinto employees values('003','Tom','大连','06-3月-2008',7600.345);
insertinto employees values('004','刘德华','上海','06-3月-2008',1500.456);
insertinto employees values('005','黎明','大庆','06-3月-2008',2500.678);
insertinto employees values('006','张学友','海南','06-3月-2008',3000.789);
insertinto employees values('007','郭富城','福建','06-3月-2008',8000.876);
insertinto employees values('008','老刘','郑州','06-3月-2008',7000);
commit;
*/
--selectupper(name),salary from employees;
--selectname,salary,length(name) from employees;
--selectreplace(lower(name),'bad','good') from employees;
--selectreplace(lower(name),'bad','') from employees;
--insertinto employees values('013','rihana','北京',sysdate,7000);
--commit;
--selectto_char(hireday,'YYYY"年"-MM"月"-DD#DAY') from employees;
--6.求100天之后的日期
--selectsysdate+100 from employees;
--7.员工入职多少天了
--selectround(sysdate-hireday) from employees;
--8.员工入职多少个月了
--selecttrunc(months_between(sysdate,hireday)) from employees;
--9.昨天入职的人
--select* from employees whereto_char(sysdate-1,'YYYY-MM-DD')=to_char(hireday,'YYYY-MM-DD');
--select* from employees;
--updateemployees set id='010' where hireday = to_date('14-4-8','YYYY-MM-DD');
--commit;
--10.去年入职的人
--select* from employees where to_char(sysdate,'YYYY')-1=to_char(hireday,'YYYY');
--11.今年入职的人
--select* from employees where to_char(sysdate,'YYYY')=to_char(hireday,'YYYY');
--11.1 在2005年到2009年之间入职的人
--select* from employees where to_char(hireday,'YYYY') between 2005 and 2009;
--12.2008年和2014年入职的人
--select* from employees where to_char(hireday,'YYYY') IN(2008,2014);
--select* from employees where to_char(hireday,'YYYY')=2008 ORto_char(hireday,'YYYY')=2014;
--13.今天和昨天入职的并且姓张的人
/*
select *from employees where to_char(hireday,'YYYY-MM-DD')
IN(to_char(sysdate-1,'YYYY-MM-DD'),to_char(sysdate,'YYYY-MM-DD'))
AND
name LIKE'张%';
*/
--14.2008年3月份雇佣的人
--select* from employees where to_char(hireday,'YYYY-MM')='2008-03';
--15.今天早上6点以后入职的人员名字和入职的精确时间(格式匹配一定要注意)
selectname,to_char(hireday,'YYYY-MM-DD HH24:MI:SS') from employees
whereto_date(hireday,'YYYY-MM-DD HH24') > to_date(to_char(sysdate,'YYYY-MM-DD')||'06','YYYY-MM-DDHH24');
--select to_char(hireday,'YYYY-MM-DD HH24:MI:SS') fromemployees;