-- 利用查询建表(只继承结构和数据,不继承约束)
create table sj_new as select * from sj;
-- 建一张空表
create table sj_new as select * from sj
where 1=0;
常用函数
-- 虚表 dual
--abs()绝对值
select abs(-19) 绝对值 from dual;
-- round(x,y)
将x精确到小数点后y位,y如果是0表示四舍五入
select round(99.12,2) 精确值 from dual;
-- truncate(x,y)
截断到小数点y位,之后清0
select truncate(99.12,2) 精确值 from dual;
-- substring(str,pos,length)
str操作的字符,pos是位置开始,length世截取的长度
-- 也不能截取时间
select substr('helloworld',1,3) from dual;
-- 查询姓名以S开头的员工信息
select * from emp where substr(ename,1,1) = 's';
-- length
查寻长度
select * from emp where length(ename) = 5;
涉及表是一张两上,两张表就会自动发生连接
连接规则:笛卡尔积,一张表所有记录与另一张记录全部匹配的情况
-- ①同名列必须加表名作为前缀。
-- ②涉及一张以上表,别丢下连接条件,否则笛卡尔积
-- ③表名也可以起别名,方便写前缀
-- join..in 连接用
select ename,dept.deptno,comm from emp
join dept
on emp.deptno = dept.deptno
where local = 'CHICAGO';
-- 自连接
select e.ename,m.ename,e.mgr,m.empno from emp e
join emp m
on e.mgr = m.empno;
日期函数
-- curdate()和current_date():获取当前日期函数
-- now():返回服务器的当前日期时间
select curdate(),current_date(),now() from dual;
-- date_format(date,format):日期格式化
-- %Y -- 年份
-- %m -- 月份
-- %d -- 日
-- %h -- 时
-- %i -- 分
-- %s -- 秒
select date_format(now(),'%Y-%m-%d %h:%i:%s') from dual;
-- datediff(大的日期,小的日期)
返回两个日期相减相差的天数
select hiredate,datediff(curdate(),hiredate) as 相差天数 from emp;
-- extract(year,from,年份)
提取时间 年月日
select hiredate,extract(year from hiredate) from emp;
-- timestampdiff(month,年份1,年份2)
按照(年或月或日)求差
流程控制函数
-- case..when .. then
-- 查询员工姓名,工资,部门编号,部门名称
select ename,sal,deptno,
(case deptno when 10 then '开发部'
when 20 then '实施部'
when 30 then '测试部'
else '小卖部' end) dname from emp;
网友评论