#登录数据库
sqlplus /nolog
conn scott/tiger;--重建emp表
DROP TABLE EMP;
CREATE TABLE EMP
(EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT);
--插入原来的14条数据
INSERT INTO EMP VALUES(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP VALUES(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP VALUES(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP VALUES(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP VALUES(7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP VALUES(7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMP VALUES(7788,'SCOTT','ANALYST',7566,to_date('13-JUL-1987')-85,3000,NULL,20);
INSERT INTO EMP VALUES(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES(7876,'ADAMS','CLERK',7788,to_date('13-JUL-87')-51,1100,NULL,20);
INSERT INTO EMP VALUES(7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMP VALUES(7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES(7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);
分组查询(group by)
分组查询:
select deptno,max(sal) from emp group by deptno;
2查询每个职位的平均工资
select deptno,avg(sal) from emp group by deptno;
3查询每个部门的人数
select deptno,count() from emp group by deptno;
4查询工资大于1000的员工,每个部门的最大工资
select deptno,max(sal) from emp where sal>1000 group by deptno;
多字段分组查询:group by 字段1,字段2;
1查询每个部门下每个主管的手下人数
select deptno, mgr, count() from emp where mgr is not null group by deptno,mgr;
2查询emp表中每个部门的编号,人数,工资总和,最后根据人数进行升序排序,如果人数一致,根据工资总和降序排序
select deptno,count(),sum(sal) from emp group by deptno order by count() asc,sum(sal) desc;
3查询工资在1000-3000之间的员工信息,每个部门的编号,平均工资,最低工资,最高工资,根据平均工资进行升序排序排列
select deptno,avg(sal),min(sal),max(sal) from emp where sal between 1000 and 3000 group by deptno order by avg(sal)
4查询含有上级领导的员工,每个职业的人数,工资的总和,平均工资,最低工资,最后根据人数进行降序排列,如果人数一致,根据平均工资进行升序排列
select job, count(),avg(sal),min(sal) from emp where mgr is not null group by job order by count() desc,avg(sal) asc;
各种关键字的顺序
select from 表名 where grouphaving order by limit
having(结合group by使用)
having一般要结合分组查询和聚合函数使用,用于给聚合函数的内容添加条件
聚合函数的条件不能写在where后面
普通字段的条件写在where后面,聚合函数的条件写在having后面
1查询每个部门的平均工资,要求平均工资大于2000(c是别名的用法)
select deptno,avg(sal) c from emp group by deptno having c >2000;
2查询每个分类的平均单价,要求平均单价低于100
select category_id ,avg(price) a from t_item group by category_id having a<100;
3查询category_id分类为238和917的两个分类的平均单价
select category_id,avg(price) from t_item where category_id in(238,917) group by category_id;
4查询emp表中每个部门的平均工资高于2000的部门编号,部门人数,平均工资,最后根据平均工资降序排列
select deptno,count(),avg(sal) a from emp group by deptno having a>2000 order by a desc;
5查询emp表中工资在1000-3000之间的员工,每个部门编号,工资总和,平均工资,过滤掉平均工资低于2000的部门,按照平均工资进行升序排序
select deptno,sum(sal), avg(sal) a from emp where sal between 1000 and 3000 group by deptno having a>=2000 order by a asc;
6查询emp表中每年入职的人数
select extract(year from hiredate) year,count() from emp group by year;
7查询每个部门的最高平均工资
select deptno,avg(sal) from emp group by deptno order by avg(sal) limit 0,1;
子查询(嵌套查询)
子查询可以写在where或having后面当做查询条件的值
写在from后面,当做一张新表(但是必须要有别名)
select ename from (select from emp where sal>1000) newtable;
写在创建表的时候
create table emp_20 as (select from emp where deptno=20);
1查询emp表中工资最高的员工信息
select from emp where sal=(select max(sal) from emp);
2查询emp表中工资大于平均工资的所有员工的信息
select from emp where sal>(select avg(sal) from emp);
3查询工资高于20号部门最大工资的员工信息
select from emp where sal>(select max(sal) from emp where deptno=20);
4查询工资高于20号部门最大工资的员工信息
select from emp where sal>(select avg(sal) from emp);
5查询和Jones相同工资的其他员工信息
select from emp where job=(select job from emp where ename='jones' and ename!='jones');
6查询工资最低的员工的同事们的信息(同事=相同job)
select from emp where job=(select job from emp where sal=(select min(sal) from emp)) and sal !=(select min(sal) from emp);
7查询最晚入职的员工信息
select from emp where hiredate=(select max(hiredate) from emp);
8查询名字为King的部门编号和部门名称(需要用到dept表)
select deptno,dname from dept where deptno=(select deptno from emp where ename='king');
9查询有员工的部门信息(编号和名称)
select deptno ,dname from dept where deptno in (select distinct deptno from emp);
10查询平均工资最高的部门信息
select from dept where deptno in (select deptno from emp group by deptno having avg(sal)=(select avg(sal) from emp group by deptno order by avg(sal) desc limit 0,1));
关联查询
同时查询多张表的数据称为关联查询
1查询每一个员工的名称和其对应的部门名称
select eename,ddname from emp e,dept d where edeptno=ddeptno;
2查询在new york工作的所有员工的信息
select e from emp e,dept d where edeptno=ddeptno and dloc='new york';
笛卡尔积
如果关联查询不写关联关系则查询到的数据是两张表的乘积,这个乘积称为笛卡尔积,笛卡尔是一种错误查询方式的结果,工作切记不要出现
等值连接和内连接
等值连接:
select from A,B where Ax=Bx and Aage=18;
内连接:
select from A join B on Ax=Bx where Aage=18;(将关联关系写在on后面)
1查询每个员工的名称和其对应的部门名称
select eename,ddname from emp e join dept d on edeptno=ddeptno;
外连接
使用外连接查询得到的数据层除了两张表的交集数据以外和另外一张主表的全部数据,哪个表为主表通过left/rigth控制, left以join左边表为主表 rigth以join右边表为主表
1查询所有员工的名称和其对应的部门名称
select eename,ddname from emp e left join dept d on edeptno=ddeptno;
数据库名称就是创建数据库时所命名的标识名字,数据库用户即使用和共享数据库资源的人。
database_name 数据库的名称。数据库名称在服务器中必须唯一,并且符合标识符的规则。database_name最多可以包含 128 个字符,除非没有为日志指定逻辑名。
在SQL语句中有部分对数据库的 *** 作都依赖数据库名来标识具体的数据库,如:创建数据库(Create DATABASE databasename)、删除数据库(drop database databasename)等,数据库名(databasename)都作为重要的参数。
数据库用户即使用和共享数据库资源的人,有在当前数据库中创建数据库对象及进行数据库备份的权限、用户对数据库表的 *** 作权限及执行存储过程的权限以及用户数据库中指定表字段的 *** 作权限三种权限。
扩展资料:
数据库用户的权限分类:
1、在当前数据库中创建数据库对象及进行数据库备份的权限,主要有:创建表、视图、存储过程、规则、默认值对象、函数的权限及执行存储过程的权限。
2、用户对数据库表的 *** 作权限及执行存储过程的权限,包括:SELECT、INSERT、UPDATE、DELETE等对数据库表的增删改查权限等。
3、用户数据库中指定表字段的 *** 作权限,主要有:SELECT:对表字段进行查询 *** 作的权限;UPDATE:对表字段进行更新 *** 作的权限。
参考资料来源:百度百科-Create Database
参考资料来源:百度百科-数据库用户
参考资料来源:百度百科-SQL语句大全
以上就是关于如果Oracle数据库中的scott下的emp表不见了该怎么办啊全部的内容,包括:如果Oracle数据库中的scott下的emp表不见了该怎么办啊、数据库高级查询2、数据库名称和用户是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)