diff --git a/boot-service/src/main/java/com/xwbing/demo/oracle/day02.sql b/boot-service/src/main/java/com/xwbing/demo/oracle/day02.sql index df509a3..2aa2ee9 100644 --- a/boot-service/src/main/java/com/xwbing/demo/oracle/day02.sql +++ b/boot-service/src/main/java/com/xwbing/demo/oracle/day02.sql @@ -1,12 +1,12 @@ SELECT语句 SELECT是用来查询数据的语句DQL -查询某张表中的所有字段的记录: -SELECT *FROM EMP_XWBING; -查看指定字段的值: +查询某张表中的所有字段的记录: +SELECT * FROM EMP_XWBING; +查看指定字段的值: SELECT ename,sal,job FROM EMP_XWBING; DQL必须包含的部分是SELECT子句与FROM子句 -SELCET用来确定查询的字段,可以使用的有:表的字段,函数,表达式FROM子句来确定查询的表 +SELCET用来确定查询的字段,可以使用的有:表的字段,函数,表达式FROM子句来确定查询的表 SELECT中使用表达式 查看每个员工的年薪 @@ -14,17 +14,17 @@ SELECT ename,sal*12 from emp_xwbing; 字符串函数 -1:concat(p1,p2) 连接字符串 +1:concat(p1,p2) 连接字符串 select concat(ename,sal) from emp_xwbing; -2:连接字符串简便方式:||,相当与java里的-+号,拼接作用 +2:连接字符串简便方式:||,相当与java里的-+号,拼接作用 select ename||':'||sal from emp_xwbing; -LENGTH(p)函数,获取字符串长度 +LENGTH(p)函数,获取字符串长度 SELECT ename,LENGTH(ename) FROM emp_xwbing; UPPER,LOWER,INITCAP -将字符串转换为全大写,全小写,首字母大写 -dual:伪表,当查询的内容与任何一张表中的数据无关时,可以查询伪表 +将字符串转换为全大写,全小写,首字母大写 +dual:伪表,当查询的内容与任何一张表中的数据无关时,可以查询伪表 SELECT UPPER('hello'),INITCAP('wo de') FROM dual; @@ -32,20 +32,20 @@ TRIM,LTRIM,RTRIM去除字符串两边指定字符 SELECT TRIM('E'FROM'EELRERE') FROM DUAL;去单 SELECT LTRIM('DSFRRA','SD')FROM DUAL;随便 -LPAD,RPAD补位函数,若补位小于原长度,一律从左往右截 -要求显示指定内容指定位数,若不足则补充若干指定字符以达到要显示的长度 +LPAD,RPAD补位函数,若补位小于原长度,一律从左往右截 +要求显示指定内容指定位数,若不足则补充若干指定字符以达到要显示的长度 SELECT ENAME,rPAD(SAL,5,'$') FROM EMP_XWBING; SUBSTR截取字符串 -截取给定字符串,从指定位置开始截取指定个字符,在数据库中,下标都是从1开始的!!! +截取给定字符串,从指定位置开始截取指定个字符,在数据库中,下标都是从1开始的!!! SELECT SUBSTR('think in java',5,3) from dual; SELECT SUBSTR('think in java',-4,3) from dual; INETR(char1,char2[,n[,m]]) 查找char2在char1中的位置 -n为从指定位置开始查找,可以不写, -m为第几次出现,可以不写 -n,m不写默认都是1 +n为从指定位置开始查找,可以不写, +m为第几次出现,可以不写 +n,m不写默认都是1 SELECT INSTR('think in java','in')from dual; SELECT INSTR('think in java','in',2,2)from dual; @@ -58,19 +58,19 @@ select ename,sal from emp_xwbing where substr(ename,1,1)='A'; 数字函数 -ROUND(n,[,m])对n进行四舍五入,保留到小数点后m位 -m可以不写的,不写默认值为0 -m为0则保留到整数位,-1为10位数,以此类推 +ROUND(n,[,m])对n进行四舍五入,保留到小数点后m位 +m可以不写的,不写默认值为0 +m为0则保留到整数位,-1为10位数,以此类推 SELECT ROUND(45.678,2) FROM DUAL; SELECT ROUND(45.678) FROM DUAL; SELECT ROUND(45.678,-1) FROM DUAL; -TRUNC(N[,M])用于截取,用法跟ROUND一样,只是不四舍五入 +TRUNC(N[,M])用于截取,用法跟ROUND一样,只是不四舍五入 SELECT TRUNC(45.678,2) FROM DUAL; SELECT TRUNC(45.678) FROM DUAL; SELECT TRUNC(45.678,-1) FROM DUAL; -MOD(m,n) 取余,返回m除以n后余数,n为0则直接返回m +MOD(m,n) 取余,返回m除以n后余数,n为0则直接返回m SELECT ename,sal,mod(sal,1000) from emp_xwbing; CEIL(N)和 FLOOR(N)向上取整和向下取整 @@ -79,12 +79,12 @@ SELECT FLOOR(44.5)FROM DUAL; 日期类型 -DATE:7个字节,保存世纪,年月日时分秒 -TIMESTAMP:时间戳,比DATE多4个字节,可以保存秒以下的精度,前7个字节与DATE一致 -关键字: -SYSDATE:对应一个内置函数,返回一个表示当前系统时间的DATE类型值 +DATE:7个字节,保存世纪,年月日时分秒 +TIMESTAMP:时间戳,比DATE多4个字节,可以保存秒以下的精度,前7个字节与DATE一致 +关键字: +SYSDATE:对应一个内置函数,返回一个表示当前系统时间的DATE类型值 DATE默认只显示'DD-MON-RR' -SYSTIMEATAMP:同样的,返回的是表示当前系统时间的时间戳类型的值 +SYSTIMEATAMP:同样的,返回的是表示当前系统时间的时间戳类型的值 select sysdate from dual; select systimestamp from dual; @@ -93,50 +93,50 @@ TO_DATE函数 SELECT TO_DATE('1992-9-1 23:22:11','yyyy-mm-dd hh24:mi:ss') from dual; SELECT TO_DATE('1992年9月1日 23:22:11','yyyy"年"mm"月"dd"日" hh24:mi:ss') from dual; -DATE是可以比较大小的,越晚的越大 -查看82年以后入职的员工? +DATE是可以比较大小的,越晚的越大 +查看82年以后入职的员工? select ename,hiredate from emp_xwbing where hiredate>to_date('1982-1-1','yyyy-mm-dd'); -DATE之间可以做减法,差为相差的天数 +DATE之间可以做减法,差为相差的天数 select ename,sysdate-hiredate from emp_xwbing; select trunc(sysdate-to_date('1990-5-11','yyyy-mm-dd')) from dual; -DATE可以和一个数字进行加减运算,相当与加减了指定的天数,返回值为对应的日期 -7天后是那天? +DATE可以和一个数字进行加减运算,相当与加减了指定的天数,返回值为对应的日期 +7天后是那天? SELECT SYSDATE+7 FROM DUAL; TO_CHAR -常用于转换日期,可以将日期按照指定的日期格式转换为字符串 +常用于转换日期,可以将日期按照指定的日期格式转换为字符串 SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL; SELECT TO_DATE('1992-9-1 23:22:11','RR-mm-dd hh24:mi:ss') from dual; SELECT TO_CHAR(TO_DATE('99-09-01','RR-MM-DD'),'YYYY-MM-DD') FROM DUAL; LAST_DAY(date) 该函数返回给定日期所在月的最后一天 -查看当月月底? +查看当月月底? SELECT LAST_DAY(SYSDATE) FROM DUAL; -查看每个员工入职所在月月底? +查看每个员工入职所在月月底? SELECT ENAME,LAST_DAY(HIREDATE) FROM EMP_XWBING; ADD_MONTHS(date,i) 返回日期加上i个月后的日期值 -查看每个员工入职20周年的纪念日? +查看每个员工入职20周年的纪念日? SELECT ENAME,ADD_MONTHS(HIREDATE,12*20) FROM EMP_XWBING; -MONTHS_BETWEEN(DATE1,DATE2) 计算两个日期之间相差的月,计算方式是使用date1-date2的结果换算的 -查看每个员工入职几个月? +MONTHS_BETWEEN(DATE1,DATE2) 计算两个日期之间相差的月,计算方式是使用date1-date2的结果换算的 +查看每个员工入职几个月? SELECT ENAME,TRUNC(MONTHS_BETWEEN(SYSDATE,HIREDATE)) FROM EMP_XWBING; NEXT_DAY(DATE,I) 返回给定日期之后一周内的周几,1代表星期天 SELECT NEXT_DAY(SYSDATE,1) FROM DUAL; -LEAST,GREATEST 求最大值和最小值, 这组函数的参数不限数量,两个以上即可 +LEAST,GREATEST 求最大值和最小值, 这组函数的参数不限数量,两个以上即可 SELECT LEAST(SYSDATE ,TO_DATE('2008-2-2','YYYY-MM-DD')) FROM DUAL; -查看82年以后入职员工的入职日期,若是82年以前的,则显示为:1982-01-01? +查看82年以后入职员工的入职日期,若是82年以前的,则显示为:1982-01-01? SELECT ENAME,GREATEST(HIREDATE,TO_DATE('1982-01-01','YYYY-MM-DD')) FROM EMP_XWBING; EXTRACT(date from datetime)提取指定日期指定时间分量的值 SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL; -查看81年入职的员工? +查看81年入职的员工? SELECT ENAME,HIREDATE FROM EMP_XWBING WHERE EXTRACT(YEAR FROM HIREDATE)=1981; CREATE TABLE STUDENT_XWBING(ID NUMBER(4),NAME CHAR(20),GENDER CHAR(1)); @@ -151,15 +151,15 @@ update student_xwbing set gender=null where gender='m'; NULL的运算 null与字符串连接等于什么都没做 null与数字运算结果还是null -查看每个员工的收入? +查看每个员工的收入? SELECT ENAME,SAL,COMM FROM EMP_XWBING; -NVL(P1,P1) 若p1为null,函数返回p2. 若不为null,函数返回p1自身。所以该函数的作用是将null替代换为非null值 -查看每个员工的收入? -SELECT ENAME,SAL,nvl(COMM,0) FROM EMP_XWBING; -SELECT ENAME,SAL,IFNULL(COMM,0) FROM EMP_XWBING;//MYSQL -NVL2(P1,P2,P3) 若p1不为null值为p2,p1为null值为p3 -查看每个员工的奖金情况? -SELECT ENAME,SAL,nvl2(COMM,'有奖金','无奖金') FROM EMP_XWBING; -SELECT ENAME,SAL,IF(ISNULL(COMM),'无奖金','有奖金') FROM EMP_XWBING;//MYSQL isnull(字段) true返回1 +NVL(P1,P1) 若p1为null,函数返回p2. 若不为null,函数返回p1自身.所以该函数的作用是将null替代换为非null值 +查看每个员工的收入? +SELECT ENAME,SAL,SAL+nvl(BOUNS,0) FROM EMP_XWBING; +SELECT ENAME,SAL,IFNULL(BOUNS,0) FROM EMP_XWBING;//MYSQL +NVL2(P1,P2,P3) 若p1不为null值为p2,p1为null值为p3 +查看每个员工的奖金情况? +SELECT ENAME,SAL,nvl2(BOUNS,'有奖金','无奖金') FROM EMP_XWBING; +SELECT ENAME,SAL,IF(ISNULL(BOUNS),'无奖金','有奖金') FROM EMP_XWBING;//MYSQL isnull(字段) true返回1 diff --git a/boot-service/src/main/java/com/xwbing/demo/oracle/day03.sql b/boot-service/src/main/java/com/xwbing/demo/oracle/day03.sql index 4e67218..23a3ca2 100644 --- a/boot-service/src/main/java/com/xwbing/demo/oracle/day03.sql +++ b/boot-service/src/main/java/com/xwbing/demo/oracle/day03.sql @@ -1,141 +1,144 @@ -select *from emp_xwbing; -select *from dept_xwbing; -select 子句中 可以对字段加别名,别名前加空格或as,若希望别名区分大小写或者包含空格,可以使用双引号将别名括起来 +SELECT 子句中 可以对字段加别名,别名前加空格或as,若希望别名区分大小写或者包含空格,可以使用双引号将别名括起来 SELECT ENAME,SAL*12 SAL FROM EMP_XWBING; -select ename,sal*12 "s al"from emp_xwbing; +SELECT ename,sal*12 AS "s al" FROM emp_xwbing; -select *from emp_xwbing where deptno=20; -select *from emp_xwbing where job='CLERK'; - -查询条件: +查询条件: <>不等于 -select ename,sal from emp_xwbing where sal<2000; -select * from emp_xwbing where deptno<>10; -select * from emp_xwbing where hiredate10; +SELECT * FROM emp_xwbing WHERE hiredate1000 and job='CLERK'; -SELECT *FROM emp_xwbing where sal>1000 OR job='CLERK'; -select *from emp_xwbing where sal>1000 and (job='CLERK' OR JOB='SALESMAN'); +SELECT * FROM emp_xwbing WHERE sal>1000 AND job='CLERK'; +SELECT * FROM emp_xwbing WHERE sal>1000 OR job='CLERK'; +SELECT * FROM emp_xwbing WHERE sal>1000 AND (job='CLERK' OR JOB='SALESMAN'); LIKE 模糊查询 -%:0到多个字符 +%:0到多个字符 _:表示单个字符 -select ename from emp_xwbing where ename like '_A%'; -select ename from emp_xwbing where ename like '_L_E%'; +SELECT ename FROM emp_xwbing WHERE ename LIKE '_A%'; +SELECT ename FROM emp_xwbing WHERE ename LIKE '_L_E%'; SELECT ENAME FROM EMP_XWBING WHERE ENAME LIKE '%E_'; IN(list), NOT IN(list) -判断是否在列表中,常用在子查询中 -SELECT *FROM EMP_XWBING WHERE JOB IN('CLERK','SALESMAN'); +判断是否在列表中,常用在子查询中 +SELECT * FROM EMP_XWBING WHERE JOB IN('CLERK','SALESMAN'); BETWEEN...AND...之间 -select sal from emp_xwbing where sal between 1500 and 3000; +SELECT sal FROM emp_xwbing WHERE sal BETWEEN 1500 AND 3000; -is null ,is not null +IS NULL ,IS NOT NULL ANY,ALL 需要配合> >= < <= 一个列表使用,常用于判断子查询的结果 -select *from emp_xwbing where sal>all(2800,3000,1800); +SELECT * FROM emp_xwbing WHERE sal>all(2800,3000,1800); -select *from emp_xwbing where comm is not null and sal>1300; -select *from emp_xwbing where hiredate>to_date('1981-1-1','yyyy-mm-dd') and sal*12>30000; +SELECT * FROM emp_xwbing WHERE comm IS NOT NULL AND sal>1300; +SELECT * FROM emp_xwbing WHERE hiredate>to_date('1981-1-1','yyyy-mm-dd') AND sal*12>30000; -DISTINCT 过滤重复,必须跟在select后面。可以对多列去重,去重原则是这些列的组合没有重复 -select distinct job from emp_xwbing; -select distinct job,deptno from emp_xwbing; - -排序: -order by子句,只能定义在select语句中的最后一个子句上。 -排序结果集,可以按照指定的字段进行升序或将序排列 -可以对多列进行排序,排序具有优先级,先按照第一个字段排序方式排序,当第一个字段有重复值时再按照第二个字段排序方式排序,以次类推 -若排序字段里含有null,null被视为最大值 -asc:升序,可以不写,默认为升序 -desc:降序 -select ename ,sal from emp_xwbing order by sal; -select ename ,sal,deptno from emp_xwbing order by deptno,sal desc; -select ename from emp_xwbing order by ename; -order by field(字段,'','');//mysql +DISTINCT 过滤重复,必须跟在SELECT后面.可以对多列去重,去重原则是这些列的组合没有重复 +SELECT DISTINCT job FROM emp_xwbing; +SELECT DISTINCT job,deptno FROM emp_xwbing; -聚合函数又称多行函数:用来统计结果的 -max,min 统计最大值,最小值 -查看最高工资? -select max(sal),min(sal) from emp_xwbing; + +排序: +ORDER BY 子句,只能定义在SELECT语句中的最后一个子句上. +排序结果集,可以按照指定的字段进行升序或将序排列 +可以对多列进行排序,排序具有优先级,先按照第一个字段排序方式排序,当第一个字段有重复值时再按照第二个字段排序方式排序,以次类推 +若排序字段里含有NULL,NULL被视为最大值 +ASC:升序,可以不写,默认为升序 +DESC:降序 +SELECT ename ,sal FROM emp_xwbing ORDER BY sal; +SELECT ename ,sal,deptno FROM emp_xwbing ORDER BY deptno,sal DESC; +SELECT ename FROM emp_xwbing ORDER BY ename; +ORDER BY field(字段,'','');//mysql + + + + +聚合函数又称多行函数:用来统计结果的 +max,min 统计最大值,最小值 +查看最高工资? +SELECT max(sal),min(sal) FROM emp_xwbing; avg,sum 统计平均值与总和 查看平均工资和工资总和 -select trunc(avg(sal)) avg,sum(sal) sum from emp_xwbing; +SELECT trunc(avg(sal)) avg,sum(sal) sum FROM emp_xwbing; -count 统计的是记录条数,而不关注具体该字段的取值, -查看公司员工人数? -select count(ename) from emp_xwbing; -统计表中记录数,常使用couont(*) -select count(*)from emp_xwbing; +count 统计的是记录条数,而不关注具体该字段的取值, +查看公司员工人数? +SELECT count(ename) FROM emp_xwbing; +统计表中记录数,常使用couont (*) +SELECT count(*) FROM emp_xwbing; -所有聚合函数忽略null值 -select avg(nvl(comm,0)),sum(comm) from emp_xwbing; - -分组: -GROUP BY子句 -GROUP BY子句允许将结果集按照给定的字段值相同的额记录看作一组,然后配合聚合函数对每组记录进行统计 -查看每个部门的最高工资? -select deptno from emp_xwbing group by deptno; -当select中含有聚合函数时,凡不在聚合函数中的单独字段都必须出现在GROUP BY子句中 -查看每个职位的平均工资和工资总和? -select avg(sal), sum(sal) from emp_xwbing group by job; -查看每个部门各有多少人? -select count(ename),deptno from emp_xwbing group by deptno; - - -查看每个部门的平均工资,前提是该部门平均工资高于2000? -select avg(sal),deptno from emp_xwbing where avg(sal)>2000 group by deptno; -where中不允许使用聚合函数作为过滤条件,原因在于过滤时机不同。where的过滤时机是在第一次从表中检索数据是添加过滤条件,用来确定那些数据可以被查出来,以确定结果集 -HAVING子句:having必须跟在group by 子句之后,可以使用聚合函数作为过滤条件。使之可以对分组进行过滤,将满足条件的分组保留,不满足的去掉 -select avg(sal),deptno from emp_xwbing group by deptno having avg(sal)>2000; +所有聚合函数忽略NULL值 +SELECT avg(nvl(comm,0)),sum(comm) FROM emp_xwbing; -关联查询: -查询的结果集中字段来自多张表,联合多张表查询数据就是关联查询,在关联查询中需要在过滤条件中添加两张表中记录之间对应关系,这样的条件称为连接条件 -n张表联合查询至少要有n-1个连接条件,不添加连接条件会产生迪卡尔积,除特殊情况下,该结果集通常是无意义的,并且由于数据量大,对系统资源消耗非常大。 -查看每个员工的名字以及所在部门的名字? -select ename,dname from emp_xwbing,dept_xwbing where emp_xwbing.deptno=dept_xwbing.deptno; + +分组: +GROUP BY 子句 +GROUP BY 子句允许将结果集按照给定的字段值相同的额记录看作一组,然后配合聚合函数对每组记录进行统计 +查看每个部门的最高工资? +SELECT deptno FROM emp_xwbing GROUP BY deptno; +当SELECT中含有聚合函数时,凡不在聚合函数中的单独字段都必须出现在GROUP BY子句中 +查看每个职位的平均工资和工资总和? +SELECT avg(sal), sum(sal) FROM emp_xwbing GROUP BY job; +查看每个部门各有多少人? +SELECT count(ename),deptno FROM emp_xwbing GROUP BY deptno; + + +查看每个部门的平均工资,前提是该部门平均工资高于2000? +SELECT avg(sal),deptno FROM emp_xwbing WHERE avg(sal)>2000 GROUP BY deptno; +WHERE中不允许使用聚合函数作为过滤条件,原因在于过滤时机不同.WHERE的过滤时机是在第一次从表中检索数据是添加过滤条件,用来确定那些数据可以被查出来,以确定结果集 +HAVING子句:having必须跟在 GROUP BY 子句之后,可以使用聚合函数作为过滤条件.使之可以对分组进行过滤,将满足条件的分组保留,不满足的去掉 +SELECT avg(sal),deptno FROM emp_xwbing GROUP BY deptno having avg(sal)>2000; + + + + + +关联查询: +查询的结果集中字段来自多张表,联合多张表查询数据就是关联查询,在关联查询中需要在过滤条件中添加两张表中记录之间对应关系,这样的条件称为连接条件 +n张表联合查询至少要有n-1个连接条件,不添加连接条件会产生迪卡尔积,除特殊情况下,该结果集通常是无意义的,并且由于数据量大,对系统资源消耗非常大. +查看每个员工的名字以及所在部门的名字? +SELECT ename,dname FROM emp_xwbing,dept_xwbing WHERE emp_xwbing.deptno=dept_xwbing.deptno; 在关联查询中的过滤条件应当与连接体条件同时成立 -查看sales部门的员工信息? -select ename,dname from emp_xwbing,dept_xwbing where emp_xwbing.deptno=dept_xwbing.deptno and dept_xwbing.dname='SALES'; +查看sales部门的员工信息? +SELECT ename,dname FROM emp_xwbing,dept_xwbing WHERE emp_xwbing.deptno=dept_xwbing.deptno AND dept_xwbing.dname='SALES'; -当查询过程中,出现字段在两张表中都有的情况时,必须明确该字段属于哪张表,表可以取别名 -select e.ename,e.deptno,d.dname from emp_xwbing e,dept_xwbing d where e.deptno=d.deptno; +当查询过程中,出现字段在两张表中都有的情况时,必须明确该字段属于哪张表,表可以取别名 +SELECT e.ename,e.deptno,d.dname FROM emp_xwbing e,dept_xwbing d WHERE e.deptno=d.deptno; -select e.ename ,d.dname from emp_xwbing e,dept_xwbing d where e.deptno=d.deptno and d.loc='NEW YORK'; -查看平均工资高于2000的部门所在地? -select avg(e.sal), d.loc ,d.dname from emp_xwbing e,dept_xwbing d where e.deptno=d.deptno group by d.dname,d.loc having avg(e.sal)>2000; +SELECT e.ename,d.dname FROM emp_xwbing e,dept_xwbing d WHERE e.deptno=d.deptno AND d.loc='NEW YORK'; +查看平均工资高于2000的部门所在地? +SELECT avg(e.sal), d.loc ,d.dname FROM emp_xwbing e,dept_xwbing d WHERE e.deptno=d.deptno GROUP BY d.dname,d.loc having avg(e.sal)>2000; - -内连接:关联查询的另一种写法 -查看sales部门员工信息? -select e.ename,d.dname from emp_xwbing e JOIN dept_xwbing d ON e.deptno=d.deptno where d.Dname='SALES'; +内连接:关联查询的另一种写法 +查看sales部门员工信息? +SELECT e.ename,d.dname FROM emp_xwbing e JOIN dept_xwbing d ON e.deptno=d.deptno WHERE d.dname='SALES'; 外连接 外连接在进行关联查询时可以将不满足条件的记录也查询出来 -外连接分为:左外连接,右外连接,全外连接 -左外连接:以join左侧表作为驱动表,该表中所有记录全部会列出来,那么当某条记录不满足连接条件时,该记录中来自右侧表中字段的值为null +外连接分为:左外连接,右外连接,全外连接 +左外连接:以join左侧表作为驱动表,该表中所有记录全部会列出来,那么当某条记录不满足连接条件时,该记录中来自右侧表中字段的值为NULL SELECT e.ename,d.dname FROM emp_xwbing e LEFT JOIN dept_xwbing d ON e.deptno=d.deptno; SELECT e.ename,d.dname FROM emp_xwbing e ,dept_xwbing d WHERE e.deptno=d.deptno(+); SELECT e.ename,d.dname FROM emp_xwbing e LEFT|RIGHT|FULL JOIN dept_xwbing d ON e.deptno=d.deptno; 自连接 -自连接指的是自己表中的记录对应自己表中的多条记录,建立的关联查询就是自连接 -自连接设计用于解决数据相同,但是存在上下级关系的树状结构使用。 -查看每个员工以及其上司的名字? +自连接指的是自己表中的记录对应自己表中的多条记录,建立的关联查询就是自连接 +自连接设计用于解决数据相同,但是存在上下级关系的树状结构使用. +查看每个员工以及其上司的名字? SELECT E.ENAME ,M.ENAME BOSS FROM EMP_XWBING E,EMP_XWBING M WHERE E.MGR=M.EMPNO(+); -JONES的手下? -SELECT E.ENAME FROM EMP_XWBING E,EMP_XWBING M WHERE E.MGR=M.EMPNO(+) and m.ename='JONES'; -查看每个领导有几个手下? -SELECT count(e.mgr),m.ename FROM EMP_XWBING E,EMP_XWBING M WHERE E.MGR=M.EMPNO group by m.ename; -查看JONES的上司在哪个城市? -SELECT d.loc FROM EMP_XWBING E,EMP_XWBING M , dept_xwbing d WHERE E.MGR=M.EMPNO and m.deptno=d.deptno and e.ename='JONES' ; +JONES的手下? +SELECT E.ENAME FROM EMP_XWBING E,EMP_XWBING M WHERE E.MGR=M.EMPNO(+) AND m.ename='JONES'; +查看每个领导有几个手下? +SELECT count(e.mgr),m.ename FROM EMP_XWBING E,EMP_XWBING M WHERE E.MGR=M.EMPNO GROUP BY m.ename; +查看JONES的上司在哪个城市? +SELECT d.loc FROM EMP_XWBING E,EMP_XWBING M , dept_xwbing d WHERE E.MGR=M.EMPNO AND m.deptno=d.deptno AND e.ename='JONES' ; diff --git a/boot-service/src/main/java/com/xwbing/service/DemoService.java b/boot-service/src/main/java/com/xwbing/service/DemoService.java index 2b32598..8e6de01 100644 --- a/boot-service/src/main/java/com/xwbing/service/DemoService.java +++ b/boot-service/src/main/java/com/xwbing/service/DemoService.java @@ -1,34 +1,4 @@ package com.xwbing.service; -import com.xwbing.util.RestMessage; -import org.apache.commons.lang3.StringUtils; - public class DemoService { - void setRemind(String id, String typeName, String remindDate, String type) { - RestMessage one = queryOne(id, typeName); - if (one != null) { - if (StringUtils.isNotEmpty(remindDate)) { - update(); - } else { - delete(); - } - } else { - if (StringUtils.isNotEmpty(remindDate)) { - save(); - } - } - } - - private RestMessage queryOne(String id, String typeName) { - return new RestMessage(); - } - - private void update() { - } - - private void delete() { - } - - private void save() { - } }