一、多表查询所有的连接分析,参考之前随笔:http://www.cnblogs.com/jiangbei/p/7420136.html1.笛卡尔积select last_name, department_name
from employees, departments产生无效的笛卡尔积可以通过where进行过滤 连接查询: 2.等值连接select e.last_name, d.department_name
from employees e, departments d
where e.department_id = d.department_id 3.外连接SQL99的连接语法如下:SELECT table1.column, table2.co...
1.知识点:能够对比以下的录屏进行阅读SQL> --等值连接
SQL> --查询员工信息: 员工号 姓名 月薪 部门名称
SQL> select empno,ename,sal,dname2 from emp,dept3 where emp.deptno=dept.deptno;SQL> --不等值连接
SQL> --查询员工信息: 姓名 月薪 工资级别
SQL> select ename,sal,grade2 from emp e,salgrade s3 where e.sal between s.losal and s.hisal;SQL> --外连接
SQL> -- 外连接解决的问题:当条件不成立时。任然希望在...
SQL> ed
已写入 file afiedt.buf 1 select empno,ename,sal,dname,deptno
2 from emp,dept
3* where emp.deptno=dept.deptno
SQL> /
select empno,ename,sal,dname,deptno
*
第 1 行出现错误:
ORA-00918: 未明确定义列 SQL> ed
已写入 file afiedt.buf 1 select e.empno,e.ename,e.sal,d.dname,d.deptno
2 from emp e,dept d
3* where emp.deptno=dept.deptno
SQL> /
where emp.deptn...
笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join)。所有连接方式都会先生成临时笛卡尔积表,笛卡尔积是关系代数里的一个概念,表示两个表中的每一行数据任意组合。-- 笛卡尔积
select * from emp, dept;-- 使用公共字段,去掉笛卡尔积
select * from emp, dept where emp.deptno = dept.deptno;-- 查询出每个雇员的姓名,工作,雇员的直接上级领导的姓名
-- 在emp表中的MGR表示一个雇员的上级领导的编号,如果现在要想查询一个...
?使用等值和不等值连接在SELECT语句中查询多个表中的数据。
?使用自连接。
使用外连接查询不满足连接条件的数据Oracle连接等值连接:使用连接在多个表中查询数据。SELECT table1.column, table2.columnFROM table1, table2WHERE table1.column1= table2.column2;
?在 WHERE 子句中写入连接条件。
?在表中有相同列时,在列名之前加上表名前缀两个表的连接
select e.employee_id,e.last_name,d.department_id
from employees e,de...
笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join)。全部连接方式都会先生成暂时笛卡尔积表。笛卡尔积是关系代数里的一个概念,表示两个表中的每一行数据随意组合。-- 笛卡尔积
select * from emp, dept;-- 使用公共字段,去掉笛卡尔积
select * from emp, dept where emp.deptno = dept.deptno;-- 查询出每一个雇员的姓名,工作,雇员的直接上级领导的姓名
-- 在emp表中的MGR表示一个雇员的上级领导的编号。假设如今要想查询一...
1.注意点
在查询过程中,不确定数据库表中的数据量,先查询数据量,数据量较大,则不能直接查询(select * from emp),如果数据量较大,直接查询容易造成死机或者数据读取较慢,如果较小可以查询。
查询数据量 count(*)
select count(*) from emp; 从emp表中查询数据量(也就是数据记录数量)
2.表别名
访问表字段时通常会使用“表名.字段”的显示方法,假设表名很长时,可以给表名起一个别名,用别名.字段名表示。
select * f...
,.varchar2 把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节,VARCHAR2把空串等同于null处理,而varchar仍按照空串处理;建议在oracle中使用varchar2Number(7,2) 数值类型整数位占5位,小数位占2位,一共7位。
Date 时间类型7.Scott用户下的表结构
8. sql
1.sql简介
结构化查询语言(Structured Query Language)简称SQL(发音:/??s kju? ??l/ "...
1、sum(字段名) :求总和 2、avg(字段名) :求平均值3、max(字段名) :求最大值4、min(字段名) :求最小值5、count(字段名、*) :统计行数 ----2、按部门编号,查询平均薪水 ,并且平均薪水<1300的不显示,结果按降序排序
select empno,avg(sal) as avgsal
from scott.emp
group by empno
having avg(sal)>=1300
order by avgsal desc;说明:SQL语句的执行顺序:一定是从上到下的!group by 执...
(只能使用=号),显示员工的编号,姓名,部门名,使用表别名简化select emp.empno,emp.ename,dept.dname,dept.deptno
from emp,dept
where emp.deptno = dept.deptno;使用非等值连接(不能使用=号,其它符号可以,例如:>=,<=,<>,betwen and等),显示员工的编号,姓名,月薪,工资级别select e.empno,e.ename,e.sal,s.grade
from emp e,salgrade s
where e.sal between s.losal and s.hisal;内连接查询:只能查询出符合条件的...
: N*M
l 使用关联字段消除笛卡尔积的多余数据:SELECT EMP.*,DEPT.DNAME,DEPT.LOC FROM EMP, DEPT
WHERE EMP.DEPTNO=DEPT.DEPTNO;
l 多表查询一定要有关联字段SELECT
E.ENAME,E.JOB,E.HIREDATE,D.DEPTNO,D.LOC
FROM EMP E ,DEPT D
WHERE E.DEPTNO = D.DEPTNO;
l UNION-集合操作
UNION将两个或两个以上的查询结果合并到一个结果中,查询结果中会剔除所有重复记录。SELECT * FROM EMP
UNION
SELECT * FROM EMP WHERE DEPTNO=10 ...
SELECT [DISTINCT] * | 字段 [别名] [,字段 [别名] ,…]FROM 表名称 [别名], [表名称 [别名] ,…][WHERE 条件(S)][ORDER BY 排序字段 [ASC|DESC] [,排序字段 [ASC|DESC] ,…]];但是如果要进行多表查询之前,首先必须先查询出几个数据 —— 雇员表和部门表中的数据量,这个操作可以通过COUNT()函数完成。
范例:查询emp表中的数据量 ——返回了14条记录
SELECT COUNT(*) FROM emp;
范例:查询dept表中的数据量 ——4条记录
SELECT C...
SELECT [DISTINCT] *|分组字段1 [别名] [,分组字段2 [别名] ,…] | 统计函数FROM 表名称 [别名], [表名称 [别名] ,…][WHERE 条件(s)][GROUP BY 分组字段1 [,分组字段2 ,…]][ORDER BY 排序字段 ASC | DESC [,排序字段 ASC | DESC]];范例:按照部门编号分组,求出每个部门的人数,平均工资
SELECT deptno, COUNT(empno), AVG(sal)FROM empGROUP BY deptno;
范例:按照职位分组,求出每个职位的最高和最低工资
SELECT job, MAX(sal)...
select to_char(SIGNDATE,‘yyyy-MM-dd HH24:mi‘) ,count(*) from ( SELECT * FROM (select ID,CODE,SIGNDATE FROM table1 WHERE SIGNDATE >= TO_DATE(‘2017-04-01 00:00:00‘,‘yyyy-MM-dd HH24:mi:ss‘) AND SIGNDATE <= TO_DATE(‘2017-04-30 23:59:59‘,‘yyyy-MM-dd HH24:mi:ss‘) AND DELETED=0 AND ISPRINT=1 UNION ...
SQL> --等值连接
SQL> --查询员工信息: 员工号 姓名 月薪 部门名称
SQL> select empno,ename,sal,dname2 from emp,dept3 where emp.deptno=dept.deptno;SQL> --不等值连接
SQL> --查询员工信息: 姓名 月薪 工资级别
SQL> select ename,sal,grade2 from emp e,salgrade s3 where e.sal between s.losal and s.hisal;SQL> --外连接
SQL> -- 外连接解决的问题:当条件不成立时。任然希望在结果中包括不成立的记录
SQL> -- 左外...