马士兵大哥数据库教程1阶段

马士兵大哥数据库教程1阶段
知名的2款Oracle学习客户端:TOAD 蛤蟆;讨厌的家伙;PL/SQL
四大类:查询语句,DML语句(数据操作),DDL(数据定义),事务操作语句;
1,任何含有空值的数学表达式最后都是空值
2,DISTINTCT 字段1,字段2 表示字段组合去除重复;
3,字符串比较是比较ASCII码;
4,WHERE CONDITION BETWEEN 1 AND 2,包含1 和 2 ;
5,IS NULL,IS NOT NULL
6,in(cod1,cod2,cod3);
7,LIKE 中_代表一个字母,%代表0个或多个;
8,转译字符\或者使用ESCAPE:LIKE '%\%%'代表中间有一个%的字符

排序:ORDER BY CASE :FORM ? ORDER BY .ORDER BY A ASC,B ASC。 A升序,A相同时采用B升序。
ORDER BY 排在where之后。

常见SQL函数:
1,Lower()转换成小写;UPPER()大写。
2,SUBSTRING(对象,起始位置,长度)
3 chr(65)对应数字的字符;asci('a')对应字母的ascii码;
4 ROUND(2.234) = 2 ROUND(2.234,2) = 2.23 ROUND(23.234,-1) = 20
5,TO_CHAR(SAL,'$99,999.9999') 9代表数字,小数点之前有就显示,没有不现实,小数点时候签字显示0.'L开头'代表本地货币;
6,TO_DATE('1988-08-20 12:34:50','YYYY-MM-DD HH:MM:SS');
7,组函数:很多条记录合并产生一条输出     
     COUNT(*),sum(*),avg(*),max(*),min(*)
8,group by 根据部门分组求部门平均薪水,根据特定栏位求出该分组的平均值;找部门中最高薪资的过程中想要带出最高薪资的人,怎么办?SELECT ENAME,MAX(SALARY) FROM .。。MAX和这个无法匹配。需要使用子查询。这是无法一一匹配的原因。SELECCT ENMAE,SALARU FROM EEP WHERE SALARY = SELECT MAX(SALARY) FROM EEP
9,having。where对单条语句进行限制。使用having对分组数据进行限制。
总结:select * from where ...group by ...having ...order by
10,将子查询的结果看作是一张表:SELECT ENAME,SALARY FROM EMP JOIN (SELECT MAX(SALARY) MAX_SALARY,DEPNO FROM EMP GROUP BY EMPNO) T ON (T.MAX_SALARY = EEP.SALARY,EEP.NO = T.EMPNO)
     自连接将自己跟自己连接:
11,SLQ1999标准:旧语法将表连接和条件混在一起。SELECT ENAME,DNAME FORM EEP CROSS JOIN ..交叉连接。新语法:连接条件不写在连接条件中。from 表1 join 表2 on(连接条件)或者 on using (栏位).
     左外连接将2个表中左边一个不能产生连接的记录给拿出来;右外连接将是将右边表不能产生连接的记录给表现出来,full join 全外连接,全部不能产生连接的记录;
     SELECT DEPNO,AVG_SALARY,GRADE FROM (SELECT DEPNO,AVG(SALARY) AVG_SALARY GROUP BY DEPNO) T JOIN SALGRADE S ON (T.AVG_SAL BETWEEN S.LOSAL AND S.HISAL)
12.组函数嵌套最多嵌套2个;
13,conn sys/用户名 as sysdba 用超级管理员登录; Drop user 用户名 cascade;
增加用户名:backup scott(用户名)beifen 




posted @ 2015-01-16 20:14  hijushen  阅读(292)  评论(0编辑  收藏  举报