使用的是Oracle 11g
之前其实已经弄过几下,不过没有太多学习,现在开始重新好好的学习一下,包括SQL语句等。
先从安装后开始,
我安装了客户端sqldeveloper,但是进入后需要连接,这我都忘了怎么弄了,开始查看资料。
点了新建连接后,弹出一个对话窗口,连接名我用的是sys,用户名也用的是sys,口令就是在安装数据库
的时候写的密码,然后在下面“角色”这改成了SYSDBA,下面“SID”填写的是orcl
这样就以数据库管理员身份登录了。
因为我安装完数据库的时候没有解锁其它的用户,就像练习用的scott,这时候可以在这里去解锁了。
在下面找到其他用户,找到scott,右击选择“编辑用户”,把那几个勾去掉,然后设个新密码,这样就OK了,
再去新建个连接,用scott来登录,SID还是orcl这个是在安装的时候确定的应该。
下面开始使用SQL*plus来学习SQL命令:
- select * from emp; 别忘了后面的分号,这个就列出了表emp中所有数据
- select job from emp; 这是取出表emp中job列所有数据
- select distinct job from emp; 这就取出表emp中job列不同的数据,也就是相同的数据只留一个
- select * from emp where sal > 2000; 这就是添加了条件,只显示sal大于2000的人员信息
- select ename from emp where sal > 2000; 这就是只显示sal大于2000的人名
- select ename from emp where sal > 3000 or (sal > 1000 and sal < 2000); 这是多个条件一起
- select * from emp where job in ‘CLERK‘; 这是列出job是CLERK的人员信息
- select * from emp where job in (‘CLERK‘,‘ANALYST‘); 这是列出job是CLERK和ANALYST的人员信息
- select * from emp where hiredate between ‘20-2月-81‘ and ‘03-12月-81‘; 这是列出日期在这个范围的人员
- select distinct job from emp where job like ‘%AN%‘; 这是列出job名带AN的job
- select sal from emp order by sal asc; 这是从小到大排列sal
- select sal, hiredate from emp order by sal asc, hiredate desc; 这是按sal排,如果相同再按hiredate从大到小排
- select ename,job,sal from emp where sal > 2000 order by sal asc; 现在加上where条件
下面是函数的练习了:
AVG (平均)
COUNT (计数)
MAX (最大值)
MIN (最小值)
SUM (总合)
14. 现在求所有sal的和
select sum(sal) from emp;
15. 求有多少个人
select count(ename) from emp;
16. 求有多少种job,这就要去掉重复的job项
select count(distinct job) from emp;
17. 多少人有comm奖金
select count(ename) from emp where comm is not null;
18. 按岗位来求sal和
select job,sum(sal) from emp group by job;
19. 给函数设定条件用having,岗位sal和大于5000的岗位
select job,sum(sal) from emp group by job having sum(sal) > 5000;
20. 起别名,先给sum(sal)起名为SUM,别名的本身名中间一个空格
select sum(sal) "SUM" from emp;
21.给表也起个别名
select t.job "JOBS", sum(sal) "SUM" from emp t group by job;
下面是”表格链接“
用emp和dept这两个表来练习,这其实我有点糊涂
22. 显示每个地区的sal和,这显示结果中少了BOSTON是因为在emp中没有40这个deptno,这是内部链接
select t1.loc "LOCALADDR", sum(t2.sal) "SALS" from dept t1, emp t2 where t1.deptno=t2.deptno group by t1.loc;