--日期转换为字符串


SELECT DATE_HIRE, TO_CHAR(DATE_HIRE, 'Month dd yyyy') HIRE

  FROM EMPLOYEE_PAY_TBL;



SELECT EMPLOYEE_TBL.EMP_ID,

       EMPLOYEE_TBL.LAST_NAME,

       EMPLOYEE_PAY_TBL.POSITION

  FROM EMPLOYEE_TBL, EMPLOYEE_PAY_TBL

 WHERE EMPLOYEE_TBL.EMP_ID = EMPLOYEE_PAY_TBL.EMP_ID;


SELECT E.EMP_ID,EP.SALARY,EP.DATE_HIRE,E.LAST_NAME

FROM EMPLOYEE_TBL E,EMPLOYEE_PAY_TBL EP

WHERE E.EMP_ID = EP.EMP_ID

AND EP.SALARY > 20000;


SELECT E.EMP_ID,E.LAST_NAME,P.POSITION

FROM EMPLOYEE_TBL E,EMPLOYEE_PAY_TBL P

WHERE E.EMP_ID <> P.EMP_ID;


--外联结返回一个表里的全部记录,即使对应的记录在第二个表里不存在。


SELECT P.PROD_DESC, O.QTY

  FROM PRODUCTS_TBL P, ORDERS_TBL O

 WHERE P.PROD_ID = O.PROD_ID;

 

-- 显示全部的产品,不管它是否有订单


--ORACLE SQL语法

SELECT P.PROD_DESC, O.QTY

  FROM PRODUCTS_TBL P, ORDERS_TBL O

 WHERE P.PROD_ID = O.PROD_ID(+);         --具有‘+’号的表是没有匹配记录的表


--ANSI SQL语法

SELECT P.PROD_DESC, O.QTY

  FROM PRODUCTS_TBL P

  LEFT JOIN ORDERS_TBL O

    ON P.PROD_ID = O.PROD_ID;


--自联结

--当需要的数据在同一个表里,而我们又必须对记录进行一些比较时,就可以用自联结。


--列出雇员及其主管的姓名


SELECT E1.NAME,E2.NAME

FROM EMP E1,EMP E2

WHERE E1.MGR_ID = E2.EMP_ID


--E1表可以看做是保存雇员信息的表,E2表是保存主管信息的表。



--使用基表


SELECT C.CUST_NAME, P.PROD_DESC

  FROM CUSTOMER_TBL C, PRODUCTS_TBL P, ORDERS_TBL O

 WHERE C.CUST_ID = O.CUST_ID

   AND P.PROD_ID = O.PROD_ID;

   

   

SELECT E.CITY, AVG(EP.SALARY)

  FROM EMPLOYEE_TBL E, EMPLOYEE_PAY_TBL EP

 WHERE E.EMP_ID = EP.EMP_ID

 GROUP BY E.CITY;


SELECT E.EMP_ID, E.LAST_NAME, E.FIRST_NAME, EP.SALARY, EP.BONUS

  FROM EMPLOYEE_TBL E

  JOIN EMPLOYEE_PAY_TBL EP

    ON E.EMP_ID = EP.EMP_ID;