
整个查询分为子查询和父查询,(select ename from emp where empno in(a.mgr))为子查询,emp a指的是员工表,a为这个查询为emp表指定的别名,知道了a
代表什么,a.mgr就好理解了,a.mgr其实就是emp.mgr,表示emp员工表中的mgr(上级编号)字段,emp表中记录了员工及员工上级的信息,a.mgr就用来指明员工
的上级的编号,然后输出员工姓名及他上级姓名。
6.虽然dname和ename在不同的两张表中,但是通过语句where deptno in(a.deptno)将两张表的信息关联上了,这样就能得到员工姓名及该员工所在的部门名称。
14.a.deptno,b.deptno分别代表部门表中的部门编号字段和员工表中的部门编号字段,它们的作用是将独立的部门表和员工表中的信息关联起来,令两个表的信息
一一对应起来,emp b用来输出ename,sal字段,b为emp表在查询中的别名,可以任意命名,因为a这个名称已经赋予给dept这个表,若再将a赋予emp表,则会造成
数据库无法识别a代表的是dept表还是emp表,所以此处命名为b而不是a。
16.group by有分类作用,此处表示,安装job的类型将查询结果分为几类,每一类工作中包含很多不同的工资,然后用min函数从里面选出最小的工资,当需要对
查询结果进行聚合时,便可使用group by语句,其后紧跟聚合函数外的所有字段,比如此处的job字段。
这题考的是大数据去重,数据量大于内存,即无法直接在内存中去重,那么有两个方案:1、内存外去重
也就是将数据存入数据库,然后利用数据库进行排序并去重。
优缺点:
1)优点:简单直接
2)缺点:消耗大
2、算法去重
题目中说明是20G数据,假设每行数据是1k,则数据行数是20M(如果每行数据是512字节,则数据行数是40M),可使用MD5对每行数据进行映射,获得16字节映射吗,即总共需要内存空间320M(或640M),满足内存内去重的需求。
优缺点:
1)优点:在内存内进行处理,速度明显比内存为要快。
2)缺点:需要进行额外的编码,程序复杂度和效率要求较高。
a)select pname as '商品名',avg(qty) as 平均销售量 from s,p,m where m.city='上海' and s.mno=m.mno and p.pno=s.pno,select p.Pno,p.pname,sum(s.qty)from s left join p on s.pno=p.pno left join m on p.Mno=m.Mno
where m.city='上海市'
group by p.Pno,p.pname,p.city,p.color
b)、先删除Sale表的外键PNO,再删除gds表。
c)联系:视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系
区别:1、视图是已经编译好的sql语句。而表不是
2、视图没有实际的物理记录。而表有。
3、表是内容,视图是窗口
4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四对它进行修改,但视图只能有创建的语句来修改
5、表是内模式,视图是外模式
6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
8、视图的建立和删除只影响视图本身,不影响对应的基本表。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)