二、配置网路服务:D:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN 下的tnsnames.ora
三、使用system用户创建DEMO用户,并建立连接。
命令如下:CREATE USER DEMO IDENTIFIED BY DEMO_PASSWORD DEFAULT TABLESPACE USERS QUOTA 10M ON USERS TEMPORARY TABLESPACE temp;
授权:
常见的角色授权如下:
GRANT RESOURCE TO DEMO;
GRANT CONNECT TO DEMO;
如果需要级别更高的角色可以用下面的方式:
GRANT DBA TO DEMO;
四、用pl/sql软件登陆DEMO用户,输入密码DEMO_PASS进行登陆即可。
emp表的结构:
create table DEMO.EMP
(
empno NUMBER(4) not null,
ename VARCHAR2(10),
job VARCHAR2(9),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7,2),
comm NUMBER(7,2),
deptno NUMBER(2)
)
表数据如以上截图
练习语句:
1、选择在部门 30 中员工的所有信息
Select * from emp where deptno=30;
2、列出职位为(MANAGER)的员工的编号,姓名
Select empno,ename from emp where job ='MANAGER';
3、找出奖金高于工资的员工
Select * from emp where comm>sal;
4、找出每个员工奖金和工资的总和
Select ename,sal+NVL(comm,0) AS Total from emp;
5、找出部门 10 中的经理(MANAGER)和部门 20 中的普通员工(CLERK)
Select * from emp where (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK');
6、找出部门 10 中既不是经理也不是普通员工,而且工资大于等于 2000 的员工
Select * from emp where deptno=10 and job not in('MANAGER','CLERK') and sal>=2000;
7、找出有奖金的员工的不同工作
Select distinct job from emp where comm is not null and comm>0;
8、找出没有奖金或者奖金低于 500 的员工
Select * from emp where comm<500 or comm is null;
9、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面
select ename from emp order by hiredate ;
10、找出每个月倒数第三天受雇的员工(如:2009-5-29)
select * from emp where last_day(hiredate)-2=hiredate;
11、找出 25 年前雇的员工
select * from emp where hiredate<=add_months(sysdate,-25*12);
12、所有员工名字前加上 Dear ,并且名字首字母大写
select 'Dear ' || initcap(ename) from emp;
13、找出姓名为 5 个字母的员工
select * from emp where length(ename)=5;
14、找出姓名中不带 R 这个字母的员工
select * from emp where ename not like '%R%';
15、显示所有员工的姓名的第一个字
select substr(ename,0,1) from emp;
16、分组统计各部门下工资>500 的员工的平均工资、
Select avg(sal) from emp where sal>500 group by deptno ;
17、统计各部门下平均工资大于 500 的部门
select deptno,avg(sal) from emp group by deptno having avg(sal)>500 ;
18、算出部门 30 中得到最多奖金的员工奖金
Select max(comm) from emp where deptno = 30 ;
19、算出部门 30 中得到最多奖金的员工姓名
select ename from emp where comm = (select max(comm) from emp where deptno=30);
20、算出每个职位的员工数和最低工资
Select job,min(sal),count(*) from emp group by job;