Sql基础篇
数据库语言:
- 数据库操作语言:DML(data manipulation language) select ,insert ,update ,delete ,merge
- 数据定义语言:DDL(data definition language) create alter drop truncate
- 事务控制语言:TCL(transation control language) commit rollback savepoint
- 数据控制语言:DCL(data control language) grant revoke
数据类型
常用的数据类型转换
常见转换:date char number 三者之间的转换
- select TO_DATE(‘2015-08-19’,’YYYY-MM-DD’) AS A_DAY FROM DUAL;
- select TO_CHAR(SYSDATE,’YYYY-MM-DD’) AS A_DAY FROM DUAL;
- select TO_TIMESTAMP(‘2015-08-19 17:40:32.11’,’YYYY-MM-DD HH24:MI:SS.FF’) AS A_DAY FROM DUAL;
- select TO_CHAR(SYSTIMESTAMP,’YYYY-MM-DD HH24:MI:SS.FF’) AS A_DAY FROM DUAL;
- select TO_NUMBER(REPLACE(TO_CHAR(SYSDATE,’YYYY-MM-DD’),’-‘)) AS A_DAY FROM DUAL;
常用函数
decode函数 select deptno,decode(deptno,10,’部门1’,20,’部门2’,’部门3’) from emp;
case表达式 `
select deptno,case when deptno=10 then 部门1’ when deptno=20 then ‘部门2’else’部门3’ end)from emp`;
学习使用函数:
trunc,add_months,month_between,last_day,replace,substr,从cat,abs,round
分组
组函数 sum min max avg count
分组特性 group by ....having ## 集合查询操作 ##
- 交叉连接(笛卡尔积)
- 等值,非等值连接
- 内连接
- 外连接(左外,右外,全连接)
- 自然连接
- 集合运算
- union(求合集,重复记录只显示一次)
- union all (求合集,显示所有记录)
- intersect(求交集,显示公共的数据部分)
- minus(集合相减,那个表在前就以那个表为主)
子查询
非关联子查询:主查询和子查询是相对独立的,唯一的,子查询查询结果和主查询进行比较 select a.ename,a.sal from emp a where a.deptno=(select b.deptno from dept b where b.loc=’new york’) 关联子查询:主查询和子查询是产生关联关系的,主查询的一个列字段代入到子查询中进行比较 select a.deptno,(select b.loc from dept b where b.deptno=a.deptno) from emp a; in和exists ,in是做全表扫描,exists是做是否存在,非全表扫描。
ROWNUM使用
使用ROWNUM需要注意:使用”<”可以查询结果,使用”>”没有结果,必须使用别名的形式查询,”>”才能有结果
select * from emp where rownum <5 select * from(select rownum no ,id,name from student) where no>2;
