oracle笔记2

2011-08-24 sql

alter user scott account unlock 更改用户解锁
conn scott/tiger 从新以上述用户登陆session

select语句:ide

一、desc emp 描述emp表,列出表的基本信息。
二、数据类型:NUMBER(7,2) 7位的数字,2位小数函数

学习例子:
三张表分别为:emp 雇员表,dept 部门表,salgrade 工资等级表学习

三、select from dept ; 注意:每一个语句以;号结束
四、desc dual 空表 DUMMY 空表 空表用途
五、select sysdate from dual;
六、select ename,sal
12 from emp; 计算每一个人的年薪
select ename,sal12 anuual_sal from emp;
select ename,sal
12 "anuual sal" from emp; anuual sal 之间不能有空格,若是有空间需加双引号spa

七、select ename,sal*12 + comm from emp ; 任何空值的数学表达式都为空值
八、两字符链接起来表达(两个字段间链接):select ename||sal from emp ;
九、字段与字符链接:select ename || ‘abcde ’from emp;
若是出现字符串里有引号的状况,便可以用两个引号表示一个引号,如:select ename || 'abc''de' from emp ;
十、select distinct deptno from emp; distinct(关键字,去除部门字段中重复的部分)
十一、where 过虑条件,not like‘_A%’第二个字母不能为A;
十二、desc 描述 降序排列 asc 升序排列(默认)ci

1三、 lower() 函数 把大写变成小写 如:select lower(ename) from emp ; 所有转为大写函数:upper() ,用法与lower()相同;字符串

1四、substr()函数 如:select substr(ename,2,3) from emp;从第二个字符开始取3个字符。
1五、chr() 把数字转义为字符 如:select chr(65) from dual;
1六、ascii()把字符转义为数字 如:select ascii('A') from dual;
1七、select round(23.652) from dual; 四舍五入
select round(23.652,2) from dual; 四舍五入到小数点后两位 ,-1,若是是-1便是四舍五入到个位;
1八、to_char(sal,'$99,999.9999') 按指定格式输出,如:select to_char(sal,'$99,999.99999') from dual; 9表明一位数字,L表明本地货币,如:to_char(sal,'L99,999.9999') ,0表明一位数字,数字格式模型。
1九、转换日期格式:select to_char(hiredate,'yyyy-mm-dd hh:mi:ss') from emp;
20、to_date() 函数,把字串转为日期,如
select ename,hiredate from emp where hiredate > to_date('1981-8-23 12:23:44', 'yyyy-mm-dd hh:mi:ss');
2一、 to_number() 函数,把字符串转为数字;如:
select ename,sal12 from emp where sal12 > to_number('$123,3456.8997','$999,9999.9999');
2二、nvl() 处理空值函数;nvl(comm,0)表示若是comm里面的值为空则用0代替,若是不为空,则用原数表示
如:select ename,sal*12 +nvl(comm,0) from emp;
2三、组函数:
max()
min()
avg()
sun()
count()
2四、group by 分组函数的重要性,出如今select列表里的字段,若是没有出如今组函数里面,必须出如今group by函数里面,不然会出现错误:
如:select deptno,avg(sal) from emp group by deptno ; 求出各部门的平均薪水;
select deptno,job,max(sal) from emp group by deptno,job ;
以deptno job分组
2五、子查询应用:select ename,sal from emp where sal = (select max(sal) from emp ); 查找薪水最大的人的姓名;
2六、having语句 对分组进行限制
select avg(sal),deptno from emp group by deptno having avg(sal) > 2000; 求出平均薪水大于2000的部门;数学

2七、链接子查询:
select ename,sal from emp join (select max(sal) max_sal , deptno from emp group by deptno) t on (emp.sal = t.max_sal and emp.deptno =t.deptno );
求出每一个部门薪水最高的人的姓名,与薪水
2八、表的自链接:select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr=e2.empno;it

sql 99 新语法,where 只做过虑条件使用

十字链接:select dname,ename from emp cross join dept ;

2九、表链接的两个不一样方法:where 与 join …… on
如:select ename,dname from emp,dept where emp.deptno = dept.no;
select ename,dname from emp join dept on (emp.deptno = dept.deptno);

30、不等于链接
如:select ename,grade from emp e, salgrade s where e.sal between s.losal and s.hisal;
select ename,grade from emp e join salgrade s on (e.sal between s.losal and s.hisal) ;

3一、多表链接:
select ename,dname,grade from emp e
join dept d on (e.deptno = d.deptno)
join salgrade s on (e.sal between s.losal and s.hisal)
where ename not like '_A%'
order by e.sal desc;

3二、左外链接:
select e1.ename,e2.name from emp e1 left join emp e2 on (e1.mgr =e2.empno);
3二、右外链接:
select ename,dname from emp e right outer join dept d on (e.deptno = d.deptno);
3三、左右全链接 full
select ename,dname from emp e full join dept d on (e.deptno = d.deptno);

3四、求部门平均薪水等级:
select t.deptno,dname,grade from
(select deptno,avg(sal) from emp group by deptno) t
join dept d on t.deptno = d.deptno
join salgrade s on t.avg_sal between s.losal and s.hisal
order by t.avg_sal desc;

3五、用户受权:
conn sys/tiger as sysdba

建立视图:
create v$_dept_avg_sal_info as
select deptno,grade,avg_sal from
(select deptno,avg(sal) avg_sal from emp group by deptno ) t
join salgrade s on (t.avg_sal between s.losal and s.hisal)
;

grant create table ,create view to scott;
赋给用户scott 创建表,创建视图权限
删除用户:drop user scott cascade;(注:要以管理员身份才可执行)

3六、conn sys/tiger as sysdba; 以管理员身份登陆

3七、导出用户数据:
进入一个空目录下,创建一个空文件夹来存放导出来的数据:
c:\>cd temp
c:\temp>del .;
c:\temp>exp

3八、建立用户:creat user ming identified by tiger(密码) default tablespace users quota 10M on users;
grant create session,create table,create view to ming; 受权

3九、导入用户数据:
c:\temp>imp

40、DML 语句:
在dept插入一条数据:insert into dept values (50,'game','bj');
注:字符串数据要使用单引号
insert into dept (deptno,dname) values (60,'game2')
insert into dept select * from dept; 把整张表都插入到里面去

4一、rollback:撤消上一步的操做

4二、备份一张表:create table emp2 as select * from emp;

4三、rownumber 的使用

相关文章
相关标签/搜索