Oracle学习记录 一 基本指令练习

        使用的是Oracle 11g

之前其实已经弄过几下,不过没有太多学习,现在开始重新好好的学习一下,包括SQL语句等。

先从安装后开始,

我安装了客户端sqldeveloper,但是进入后需要连接,这我都忘了怎么弄了,开始查看资料。

        点了新建连接后,弹出一个对话窗口,连接名我用的是sys,用户名也用的是sys,口令就是在安装数据库

的时候写的密码,然后在下面“角色”这改成了SYSDBA,下面“SID”填写的是orcl

这样就以数据库管理员身份登录了。

        因为我安装完数据库的时候没有解锁其它的用户,就像练习用的scott,这时候可以在这里去解锁了。

在下面找到其他用户,找到scott,右击选择“编辑用户”,把那几个勾去掉,然后设个新密码,这样就OK了,

再去新建个连接,用scott来登录,SID还是orcl这个是在安装的时候确定的应该。

下面开始使用SQL*plus来学习SQL命令:

sql*plus可以在开始菜单中找到,也可以在命令行直接输入sqlplus来使用


  1. select * from emp;        别忘了后面的分号,这个就列出了表emp中所有数据

  2. select job from emp;    这是取出表emp中job列所有数据

  3. select distinct job from emp;    这就取出表emp中job列不同的数据,也就是相同的数据只留一个

  4. select * from emp where sal > 2000;    这就是添加了条件,只显示sal大于2000的人员信息

  5. select ename from emp where sal > 2000;    这就是只显示sal大于2000的人名

  6. select ename from emp where sal > 3000 or (sal > 1000 and sal < 2000);    这是多个条件一起

  7. select * from emp where job in 'CLERK';    这是列出job是CLERK的人员信息

  8. select * from emp where job in ('CLERK','ANALYST');    这是列出job是CLERK和ANALYST的人员信息

  9. select * from emp where hiredate between '20-2月-81' and '03-12月-81';    这是列出日期在这个范围的人员

  10. select distinct job from emp where job like '%AN%';    这是列出job名带AN的job

  11. select sal from emp order by sal asc;    这是从小到大排列sal

  12. select sal, hiredate from emp order by sal asc, hiredate desc;    这是按sal排,如果相同再按hiredate从大到小排

  13. 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;

23. 现在让把BOSTON也显示出来,也就是外部链接,就在上面的改动一下就可以了

select t1.loc "LOCALADDR", sum(t2.sal) "SALS" from dept t1, emp t2 where t1.deptno=t2.deptno(+) group by t1.loc;

24. 把不同栏的内容连在一起,在Oracle中可以用concat也可以用||,不过concat最多两个元素,||可以多个

select concat(dname, loc) from dept;

select dname || loc "newname" from dept;    这里还用了别名,如果写成newname是会给自动变成大写的,加上“”就不会了

上面的结果中间没有东西分隔,如果要加上个分隔符,比如中间加上一个‘-’

select dname || '-' || loc from dept;

25. 取某个栏信息的一段字符串,substr

select substr(dname,3) from dept;    dname下的字符串从第三个字母开始到最后

select substr(dname,3,2) from dept;    dname下的字符串从第三个字母开始取两个字符

26. 去掉开头或结尾的某个字符,一般就是空格。我先用sqldeveloper客户端修改了一下emp表中JOB列的第一个,前面加了一个空格,然后使用下面命令显示

select job from emp;

select ltrim(job) from emp;

看看有什么不同。删除左侧的用ltrim,删除右侧的用rtrim









你可能感兴趣的:(Oracle学习记录 一 基本指令练习)