添加列:
alter table tablename add columnName datatype (not null); -------需要注意一点的是在添加一列为非空的时候, 表必须是空表.
删除列:
alter table tablename drop column columnName
改变列的数据类型:
alter table tablename modify columnName datatype
改变列名:
alter table tablename rename column columnName to new_columnName
删除数据:
delete tablename;
truncate table tablename;
drop table tablename; --------删除表
常用的聚合函数:
取整函数
floor()-----向上取整
ceil()-----向下取整
trunc()-----取整
round()-----四舍五入取整
查询年龄的时候可以使用这个函数
select trunc(months_between(*,*)/12) from table-----------前者是未来的日期
或者
select trunc(sysdate-dataDate)/365 from table
trunc()聚合函数扩张使用的例子(格式化日期以及格式化数字)
TRUNC(TO_DATE('24-Nov-1999 08:00 pm','dd-mon-yyyy hh:mi am')='24-Nov-1999 12:00:00 am'
TRUNC(TO_DATE('24-Nov-1999 08:37 pm','dd-mon-yyyy hh:mi am'),'hh') ='24-Nov-1999 08:00:00 am'
trunc(sysdate,'yyyy') --返回当年第一天。
trunc(sysdate,'mm') --返回当月第一天。
trunc(sysdate,'d') --返回当前星期的第一天。
trunc(sysdate,'dd')--返回当前年月日
2.TRUNC(for number)
TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。
其具体的语法格式如下
TRUNC(number[,decimals])
其中:
number 待做截取处理的数值
decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分
下面是该函数的使用情况:
TRUNC(89.985,2)=89.98
TRUNC(89.985)=89
TRUNC(89.985,-1)=80
注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。与取整类似,比如参数为1即取整到十分位,如果是-1,则是取整到十位,以此类推。
months_between()返回的是差多少个月, 两个日期数据相减是差多少天
union和union all------------一个去除重复一个全部显示
case的用法
先上两种语法:
case when 字段名=... then ...(无限接) else ... end
case 字段名 when ... then ...(无限接) else ... end
不写 end 是猪, 忘了N+1次了
decode()函数
decode()函数有点类似于case...when的用法
decode(字段名,'值1','值1的对应值','值2','值2的对应值'...(无限接)...,'default')
vm_concat()函数
select sname,student.sno,wm_concat(cno) from student join score on student.sno=score.sno group by sname,student.sno order by student.sno
student表:
score表:
查询结果:
concat函数:
将两个查询结果连接到一起去, 最多两个
select concat(sname,sbirthday) from student
replace()函数:
replace(字段名,'值1',值2)
查询字段的内容, 如果他是'值1', 就替换成'值2'
nvl()和nvl2():
nvl(字段名,'值')
如果查询的这个字段的值为空(null), 就返回'值'
nvl2(字段名,'值1','值2')
如果查询结果不为空, 返回'值1', 如果为空返回'值2'