一、
--练习:
-- 1:DB与DBMS的区别
-- DB:按照一定的数据结构存储数据的仓库
-- DBMS:使用SQL语言管理DB的数据库管理系统
-- 2:修改表中的某一字段名
-- alter table tname rename column oldname to newname
-- 3:向表中添加一个新的字段的格式
-- alter table tname add (colName type)
-- 4:修改表中某一字段类型的格式
-- alter table tname modify colName type
-- 5:查询emp表中的所有人的姓名,首字母大写
select initcap(ename) from emp;
-- 6:查看所有员工的职位,使之右对齐
select lpad(job,10,' ') from emp;
-- 7:查看所有员工的在职月份,保留整数位
select round(months_between(sysdate,to_date(to_char(hiredate,'yyyy-mm-dd'),'yyyy-mm-dd'))) from emp;
-- 8:查看自己40岁的日期
select add_months(to_date('1987-10-12','yyyy-mm-dd'),40*12) from dual;
--==========================================
二、日期函数(续)
1:next_day(date,num)
表示查看参数date的下一个周几的日期
date:某一日期
num:范围为1-7,表示周日到周六
2:least(p1,p2,p3,...)
多个参数比较,显示最小的数据
3.greatest(p1,p2,p3,………………)
多个参数比较,显示最大的数据
注意:
①要求:参数为同一类型,
②或者可以默认转换成第一个参数的类型。
③参数类型基于第一个参数类型,以第一个参数的类型为基准
④字符串类型比较大小:比较的字符的ascii码的大小。
4:extract( p1分 from p2):
表示从日期p2中提取分量p1
①日期的分量:
year
month
day
hour
minute
second
②日期类型关键字sysdate和systimestamp,表示当前系统时间
可以从sysdate中提取年月日
可以从systimestamp中提取年月日时分秒
三、空值操作:
null:表示空的意思。
1:表中的任何字段,默认情况下都可以为null值。
2:not null表示 非空,是一种约束,
3.设置为非空约束的字段,必须有有效值,不能为空
4:插入数据时,没有赋值的字段都是null值。
reg:
insert into emp (empno,ename) values(2001,'张三');
此记录中,没有赋值的字段都是null值。
reg:
insert into emp (empno,ename) values(2002,null);
此记录中,字段ename为null值。
5:修改数据时,
(1)当空值为条件时
update emp set ename='张三' where comm is null;
(2)当被设置为null时,
update emp set ename = null;
6:当空值参与计算时。
null:相当于无穷大
1+null为null
null也不等于null
reg:计算员工的月收入
select sal+comm from emp; 明显结果有问题。
四、空值操作函数:
1)nvl(p1,p2)
表示:如果p1这个字段的值为null,就使用p2
否则使用本身p1
(2)nvl2(p1,p2,p3)
表示:如果p1是null,就使用p2,
如果p2是null,使用p3