--日期转换为字符串
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;