michellc 发表于 2018-9-10 10:30:35

ORACLE SQL练习(五)

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

页: [1]
查看完整版本: ORACLE SQL练习(五)