Académique Documents
Professionnel Documents
Culture Documents
4
CHAPTER 1: Define and Understand the Basics of the RDBMS...............................................................................................................5
SECTION 1.03.........................................................................................................................................................................................5
CHAPTER 2 : Using DDL Statements to Create and Manage Tables........................................................................................................6
SECTION 2.02.........................................................................................................................................................................................6
SECTION 2.03.........................................................................................................................................................................................7
SECTION 2.04.........................................................................................................................................................................................8
SECTION 2.05.........................................................................................................................................................................................8
CHAPTER 3: Manipulating Data..............................................................................................................................................................14
SECTION 3.02.......................................................................................................................................................................................14
SECTION 3.03.......................................................................................................................................................................................16
SECTION 3.04.......................................................................................................................................................................................16
SECTION 3.05.......................................................................................................................................................................................17
CHAPTER 4: Retrieving Data Using the SQL SELECT Statement.........................................................................................................19
SECTION 4.01.......................................................................................................................................................................................19
SECTION 4.02.......................................................................................................................................................................................19
CHAPTER 5: Restricting and Sorting Data...............................................................................................................................................21
SECTION 5.01.......................................................................................................................................................................................21
SECTION 5.02.......................................................................................................................................................................................25
CHAPTER 6: Using Single-Row Functions to Customize Output...........................................................................................................28
SECTION 6.01.......................................................................................................................................................................................28
SECTION 6.02.......................................................................................................................................................................................28
SECTION 6.03.......................................................................................................................................................................................33
SECTION 6.04.......................................................................................................................................................................................36
CHAPTER 7: Reporting Aggregated Data Using the Group Functions....................................................................................................39
SECTION 7.02.......................................................................................................................................................................................39
SECTION 7.03.......................................................................................................................................................................................41
SECTION 7.04.......................................................................................................................................................................................44
CHAPTER 8: Displaying Data from Multiple Tables...............................................................................................................................45
SECTION 8.01.......................................................................................................................................................................................45
SECTION 8.02.......................................................................................................................................................................................48
SECTION 8.03.......................................................................................................................................................................................48
CHAPTER 9: Retrieving Data Using Subqueries.....................................................................................................................................50
SECTION 9.04.......................................................................................................................................................................................50
SECTION 9.05.......................................................................................................................................................................................52
SECTION 9.06.......................................................................................................................................................................................52
SECTION 9.07.......................................................................................................................................................................................53
SECTION 9.08.......................................................................................................................................................................................53
SECTION 9.09.......................................................................................................................................................................................54
SECTION 9.10.......................................................................................................................................................................................55
CHAPTER 10: Creating Other Schema Objects.......................................................................................................................................56
SECTION 10.01.....................................................................................................................................................................................56
SECTION 10.02.....................................................................................................................................................................................59
SECTION 10.03.....................................................................................................................................................................................60
SECTION 10.04.....................................................................................................................................................................................62
CHAPTER 11: Managing Schema Objects...............................................................................................................................................64
SECTION 11.01.....................................................................................................................................................................................64
SECTION 11.02.....................................................................................................................................................................................66
SECTION 11.03.....................................................................................................................................................................................67
SECTION 11.04.....................................................................................................................................................................................70
SECTION 11.05.....................................................................................................................................................................................72
SECTION 11.06.....................................................................................................................................................................................73
SECTION 11.07.....................................................................................................................................................................................75
CHAPTER 12: Using the Set Operators....................................................................................................................................................77
SECTION 12.02.....................................................................................................................................................................................77
SECTION 12.03.....................................................................................................................................................................................79
CHAPTER 13: Generating Reports by Grouping Related Data................................................................................................................81
SECTION 13.01.....................................................................................................................................................................................81
SECTION 13.02.....................................................................................................................................................................................82
SECTION 13.03.....................................................................................................................................................................................82
SECTION 13.04.....................................................................................................................................................................................83
CHAPTER 14: Managing Objects with Data Dictionary Views...............................................................................................................84
SECTION 14.01.....................................................................................................................................................................................84
SECTION 14.02.....................................................................................................................................................................................85
CHAPTER 15: Manipulating Large Data Sets..........................................................................................................................................88
SECTION 15.01.....................................................................................................................................................................................88
SECTION 15.03.....................................................................................................................................................................................90
SECTION 15.04.....................................................................................................................................................................................94
SECTION 15.05.....................................................................................................................................................................................95
CHAPTER 16: Hierarchical Retrieval.......................................................................................................................................................99
SECTION 16.01.....................................................................................................................................................................................99
SECTION 16.02.....................................................................................................................................................................................99
SECTION 16.03...................................................................................................................................................................................101
CHAPTER 17: Regular Expression Support...........................................................................................................................................102
SECTION 17.02...................................................................................................................................................................................102
SECTION 17.03...................................................................................................................................................................................105
SECTION 17.04...................................................................................................................................................................................107
CHAPTER 18: Controlling User Access.................................................................................................................................................108
SECTION 18.01...................................................................................................................................................................................108
SECTION 18.02...................................................................................................................................................................................109
SECTION 18.03...................................................................................................................................................................................111
SECTION 18.04...................................................................................................................................................................................111
SECTION 18.05...................................................................................................................................................................................112
Introduction
This document includes code listings from the book OCA Oracle Database SQL Expert Certification Exam Guide. It includes code
listings of all SQL scripts featured in the book. The purpose of this electronic copy of the code listings is to allow readers of the book
to copy-and-paste the code if they wish to experiment with the SQL code.
This code is not a single script intended to create a single working database. That is not how the book is written. Instead, the book is
intended to assist those who are studying to take the Oracle SQL Expert Certification Exam, 1Z0-047. The code listings here are
study guides, and intended to assist the knowledgeable reader of the book in their study efforts.
NUMBER,
VARCHAR2(20),
NUMBER,
NUMBER );
SECTION 2.03
CREATE TABLE cruises
( cruise_id
cruise_type_id
cruise_name
captain_id
start_date
end_date
status
CONSTRAINT cruise_pk
NUMBER,
NUMBER,
VARCHAR2(20),
NUMBER NOT NULL,
DATE,
DATE,
VARCHAR2(5) DEFAULT 'DOCK',
PRIMARY KEY (cruise_id) );
DESC cruises
SECTION 2.04
CREATE TABLE CRUISE_NOTES
(CRUISE_NOTES_ID NUMBER,
CRUISE_NOTES
CLOB);
SECTION 2.05
CREATE TABLE positions
( position_id
NUMBER
, position
VARCHAR2(20)
, exempt
CHAR(1)
, CONSTRAINT positions_pk PRIMARY KEY (position_id)
);
CREATE TABLE PORTS
(PORT_ID
NUMBER PRIMARY KEY,
PORT_NAME VARCHAR2(20));
CREATE TABLE PORTS
(PORT_ID
NUMBER CONSTRAINT PORT_ID_PK PRIMARY KEY,
PORT_NAME VARCHAR2(20));
CREATE TABLE VENDORS
(VENDOR_ID
NUMBER,
VENDOR_NAME VARCHAR2(20),
STATUS
NUMBER(1) NOT NULL,
CATEGORY
VARCHAR2(5));
CREATE TABLE
(VENDOR_ID
VENDOR_NAME
STATUS
CATEGORY
VENDORS
NUMBER,
VARCHAR2(20),
NUMBER(1) CONSTRAINT STATUS_NN NOT NULL,
VARCHAR2(5));
CREATE TABLE
(VENDOR_ID
VENDOR_NAME
STATUS
CATEGORY
VENDORS
NUMBER PRIMARY KEY,
VARCHAR2(20),
NUMBER(1) CONSTRAINT STATUS_NN NOT NULL,
VARCHAR2(5));
CREATE TABLE
(PORT_ID
PORT_NAME
PRIMARY KEY
PORTS
NUMBER,
VARCHAR2(20),
(PORT_ID) );
(PORT_ID
NUMBER,
PORT_NAME VARCHAR2(20),
CONSTRAINT PORT_ID_PK PRIMARY KEY (PORT_ID) );
ALTER TABLE PORTS
ADD NOT NULL (PORT_NAME);
ALTER TABLE PORTS
ADD CONSTRAINT PORT_NAME_NN NOT NULL (PORT_NAME);
ALTER TABLE PORTS
MODIFY PORT_NAME NOT NULL;
ALTER TABLE PORTS
MODIFY PORT_NAME CONSTRAINT PORT_NAME_NN NOT NULL;
CREATE TABLE CUSTOMERS
( FIRST_NAME VARCHAR2(20),
MIDDLE_NAME VARCHAR2(20),
LAST_NAME
VARCHAR2(30));
CREATE TABLE employees
( employee_id
NUMBER
, ship_id
NUMBER
, first_name
VARCHAR2(20)
, last_name
VARCHAR2(30)
, position_id
NUMBER
, CONSTRAINT employees_pk PRIMARY KEY (employee_id));
CREATE TABLE HelpDesk
( HD_Category NUMBER,
HD_Year
HD_Ticket_No
HD_Title
CONSTRAINT
NUMBER,
NUMBER,
VARCHAR2(30),
HelpDesk_PK PRIMARY KEY (HD_Category, HD_Year, HD_Ticket_No));
(CRUISE_ID, CAPTAIN_ID)
SECTION 3.03
UPDATE CRUISES
SET CRUISE_NAME = 'Bahamas',
START_DATE = '01-DEC-11'
WHERE CRUISE_ID = 1;
UPDATE COMPENSATION
SET SALARY = SALARY * 1.03,
LAST_CHANGED_DATE = SYSDATE
WHERE EMPLOYEE_NUMBER = 83;
CREATE TABLE PROJECTS
( PROJECT_ID
NUMBER PRIMARY KEY
, PROJECT_NAME VARCHAR2(40)
, COST
NUMBER
, CONSTRAINT CK_COST CHECK (COST < 1000000));
INSERT INTO PROJECTS (PROJECT_ID, PROJECT_NAME, COST)
VALUES
(1,'Hull Cleaning', 340000);
INSERT INTO PROJECTS (PROJECT_ID, PROJECT_NAME, COST)
VALUES
(2,'Deck Resurfacing', 964000);
INSERT INTO PROJECTS (PROJECT_ID, PROJECT_NAME, COST)
VALUES
(3,'Lifeboat Inspection', 12000);
SECTION 3.04
DELETE FROM PROJECT_LISTING
WHERE CONSTRUCTION_ID = 12;
DELETE PROJECT_LISTING
WHERE CONSTRUCTION_ID = 12;
SECTION 3.05
INSERT INTO POSITIONS (POSITION_ID, POSITION_NAME)
VALUES (100, 'Manager');
SELECT POSITION_ID, POSITION_NAME
FROM POSITIONS;
COMMIT;
UPDATE SHIPS SET HOME_PORT_ID = 12 WHERE SHIP_ID = 31;
ALTER TABLE PORTS ADD AUTHORITY_NOTE VARCHAR2(75);
UPDATE SHIPS SET HOME_PORT_ID = 12 WHERE SHIP_ID = 31;
COMMIT;
COMMIT;
INSERT INTO PORTS (PORT_ID, PORT_NAME) VALUES (701, 'Chicago');
DELETE FROM SHIPS;
ROLLBACK;
COMMIT;
UPDATE SHIPS SET HOME_PORT_ID = 21 WHERE SHIP_ID = 12;
SAVEPOINT SP_1;
UPDATE SHIPS SET HOME_PORT_ID = 22 WHERE SHIP_ID = 12;
ROLLBACK WORK TO SP_1;
COMMIT;
COMMIT;
UPDATE SHIPS SET HOME_PORT_ID = 21 WHERE SHIP_ID = 12;
SAVEPOINT MARK_01;
UPDATE SHIPS SET HOME_PORT_ID = 22 WHERE SHIP_ID = 12;
SAVEPOINT MARK_02;
UPDATE SHIPS SET HOME_PORT_ID = 23 WHERE SHIP_ID = 12;
ROLLBACK TO MARK_02;
COMMIT;
COMMIT;
UPDATE SHIPS SET HOME_PORT_ID = 21 WHERE SHIP_ID = 12;
SAVEPOINT MARK_01;
COMMIT;
ROLLBACK TO MARK_01;
SECTION 4.02
SELECT SHIP_ID, SHIP_NAME
FROM
SHIPS;
SELECT SHIP_NAME, SHIP_ID
FROM
SHIPS;
SELECT PORT_NAME
FROM
PORTS
WHERE PORT_NAME LIKE 'San%';
SELECT PORT_NAME
FROM
PORTS
WHERE PORT_NAME LIKE '_o%';
SELECT PORT_NAME
FROM
PORTS
WHERE 'G_and%' LIKE PORT_NAME;
SELECT PORT_NAME
FROM
PORTS
WHERE PORT_NAME LIKE 'G_and%';
SELECT EMPLOYEE_ID
FROM
WORK_HISTORY
WHERE SHIP_ID = 3
AND
STATUS = 'Pending';
SELECT EMPLOYEE_ID
FROM
WORK_HISTORY
WHERE SHIP_ID = 3
AND
NOT STATUS = 'Pending';
SELECT EMPLOYEE_ID
FROM
WORK_HISTORY
WHERE NOT SHIP_ID = 3;
SELECT
FROM
WHERE
OR
AND
ROOM_NUMBER
SHIP_CABINS
STYLE = 'Suite'
STYLE = 'Stateroom'
WINDOW = 'Ocean';
SELECT
FROM
WHERE
OR
AND
ROOM_NUMBER
SHIP_CABINS
(STYLE = 'Suite'
STYLE = 'Stateroom')
WINDOW = 'Ocean';
SELECT PORT_NAME
FROM
PORTS
WHERE COUNTRY = 'UK' OR COUNTRY = 'USA' OR COUNTRY = 'Bahamas';
SELECT PORT_NAME
FROM
PORTS
WHERE COUNTRY IN ('UK', 'USA', 'Bahamas');
SELECT PORT_NAME
FROM
PORTS
WHERE COUNTRY NOT IN ('UK', 'USA', 'Bahamas');
SELECT PORT_NAME
FROM
PORTS
WHERE CAPACITY BETWEEN 3 AND 4;
SELECT
FROM
WHERE
AND
PORT_NAME
PORTS
CAPACITY >= 3
CAPACITY <= 4;
SELECT PORT_NAME
FROM
PORTS
WHERE CAPACITY NOT BETWEEN 3 AND 4;
SELECT PORT_NAME
FROM
PORTS
WHERE NOT CAPACITY BETWEEN 3 AND 4;
SELECT PORT_NAME
FROM
PORTS
WHERE CAPACITY = NULL;
SELECT PORT_NAME
FROM
PORTS
WHERE CAPACITY IS NULL;
SELECT PORT_NAME
FROM
PORTS
WHERE CAPACITY IS NOT NULL;
SECTION 5.02
SELECT
ADDRESS_ID, STREET_ADDRESS, CITY, STATE, COUNTRY
FROM
ADDRESSES
ORDER BY STATE;
SELECT
ADDRESS_ID, STREET_ADDRESS, CITY, STATE, COUNTRY
FROM
ADDRESSES
ORDER BY STATE, CITY;
SELECT
STATE, CITY, ADDRESS_ID, STREET_ADDRESS, COUNTRY
FROM
ADDRESSES
ORDER BY STATE, CITY;
SELECT
ADDRESS_ID, STREET_ADDRESS, COUNTRY
FROM
ADDRESSES
ORDER BY STATE, CITY;
SELECT
SHIP_ID, PROJECT_COST, PROJECT_NAME, DAYS
FROM
PROJECTS
ORDER BY SHIP_ID ASC;
SELECT
SHIP_ID, PROJECT_COST, PROJECT_NAME, DAYS
FROM
PROJECTS
ORDER BY SHIP_ID ASC, PROJECT_COST DESC;
SELECT
*
FROM
PROJECTS
ORDER BY PROJECT_COST / DAYS;
SELECT
PROJECT_ID, PROJECT_NAME, PROJECT_COST, DAYS, PROJECT_COST/DAYS
FROM
PROJECTS
ORDER BY PROJECT_COST/DAYS;
SELECT
PROJECT_ID, PROJECT_NAME, PROJECT_COST, DAYS, PROJECT_COST/DAYS
FROM
PROJECTS
ORDER BY PROJECT_COST/DAYS;
SELECT
SECTION 6.02
SELECT SYSDATE FROM DUAL;
SELECT EMPLOYEE_ID
FROM
EMPLOYEES
WHERE UPPER(LAST_NAME) = 'MCGILLICUTTY';
SELECT INITCAP('napoleon'), INITCAP('RED O''BRIEN'), INITCAP('McDonald''s')
FROM
DUAL;
SELECT CONCAT('Hello, ', 'world!')
FROM
DUAL;
SELECT 'Hello, ' || 'world!'
FROM
DUAL;
FROM
DUAL;
SELECT INSTR('Mississippi','is',1,2)
FROM
DUAL;
SELECT SUBSTR('Name: MARK KENNEDY', 7)
FROM
DUAL;
SELECT SOUNDEX('Worthington'), SOUNDEX('Worthen')
FROM
DUAL;
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME
FROM
EMPLOYEES
WHERE SOUNDEX(LAST_NAME) = SOUNDEX('Worthen');
SELECT ROUND(12.355143, 2), ROUND(259.99,-1)
FROM
DUAL;
SELECT TRUNC(12.355143, 2), TRUNC(259.99,-1)
FROM
DUAL;
SELECT REMAINDER(9,3), REMAINDER(10,3), REMAINDER(11,3)
FROM
DUAL;
SELECT MONTHS_BETWEEN('12-JUN-14','03-OCT-13')
FROM
DUAL;
SELECT NUMTOYMINTERVAL(27,'MONTH')
FROM
DUAL;
SELECT NUMTODSINTERVAL(36,'HOUR')
FROM
DUAL;
SELECT NVL(NULL,0) FIRST_ANSWER,
14+NULL-4 SECOND_ANSWER,
14+NVL(NULL,0)-4 THIRD_ANSWER
FROM
DUAL;
SELECT SQ_FT + NVL(BALCONY_SQ_FT,0)
FROM
SHIP_CABINS;
SELECT STATE, DECODE(STATE,'CA','California','IL','Illinois','Other')
FROM
ADDRESSES;
SELECT CASE 'option1'
WHEN 'option1' THEN 'found it'
WHEN 'option2' THEN 'did not find it'
FROM
END AS "Answer"
DUAL;
SELECT SHIP_NAME,
CAPACITY,
CASE CAPACITY WHEN 2052 THEN 'MEDIUM' WHEN 2974 THEN 'LARGE' END AS "SIZE"
FROM
SHIPS
WHERE SHIP_ID <= 4;
SELECT TEST_SCORE,
UPDATED_TEST_SCORE,
NULLIF(UPDATED_TEST_SCORE,TEST_SCORE) REVISION_ONLY
FROM
SCORES;
SECTION 6.03
INSERT INTO CALLS (CALL_ID, CALL_DATE_TZ)
VALUES
(1, '24-MAY-12 10:15:30');
INSERT INTO CALLS (CALL_ID, CALL_DATE_TZ)
VALUES
(1, TO_TIMESTAMP_TZ('24-MAY-12 10:15:30',
'DD-MON-RR HH24:MI:SS')
SELECT TO_NUMBER('$17,000.23','$999,999.99')
FROM
DUAL;
);
SELECT TO_NUMBER('17.000,23',
'999G999D99',
'nls_numeric_characters='',.'' ') REFORMATTED_NUMBER
FROM
DUAL;
SELECT TO_CHAR('Hello') FROM DUAL;
SELECT TO_CHAR(198,'$999.99') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DAY, "THE" DD "OF" MONTH, RRRR')
FROM DUAL;
SELECT TO_CHAR(SYSDATE,'FMDAY, "THE" DD "OF" MONTH, RRRR')
FROM DUAL;
SELECT TO_CHAR(SYSDATE,'FMDay, "the" Dd "of" Month, RRRR')
FROM DUAL;
SELECT TO_CHAR(SYSDATE,'FMDay, "the" Ddth "of" Month, RRRR')
FROM DUAL;
SELECT TO_CHAR(SYSDATE,'HH24:MI:SS AM') FROM DUAL;
SECTION 6.04
SELECT DBTIMEZONE, SESSIONTIMEZONE
FROM
DUAL;
ALTER DATABASE SET TIME_ZONE = 'Europe/Zurich';
ALTER SESSION SET TIME_ZONE = 'America/Los_Angeles';
SELECT
FROM
WHERE
ORDER BY
SELECT
TZABBREV, TZNAME
FROM
V$TIMEZONE_NAMES
ORDER BY TZABBREV, TZNAME;
SELECT DBTIMEZONE FROM DUAL;
SELECT SESSIONTIMEZONE FROM DUAL;
SELECT CURRENT_DATE, CURRENT_TIMESTAMP
FROM
DUAL;
DUAL;
SECTION 7.02
SELECT VENDOR_NAME, STATUS, CATEGORY
FROM
VENDORS;
SELECT COUNT(VENDOR_NAME), COUNT(STATUS), COUNT(CATEGORY)
FROM
VENDORS;
SELECT COUNT(*)
FROM
VENDORS;
SELECT COUNT(*), COUNT(VENDOR_NAME)
FROM
VENDORS;
SELECT COUNT(DISTINCT LAST_NAME), COUNT(ALL LAST_NAME)
FROM EMPLOYEES;
SELECT SUM(SUBTOTAL)
FROM
ORDERS;
SELECT SUM(SUBTOTAL)
FROM
ORDERS
WHERE ORDER_DATE = SYSDATE;
SELECT MIN(LAST_NAME), MAX(LAST_NAME) FROM EMPLOYEES;
SELECT PAY_HISTORY_ID, SALARY FROM PAY_HISTORY;
SELECT AVG(SALARY) FROM PAY_HISTORY;
SELECT ROUND(AVG(SALARY),2) FROM PAY_HISTORY;
SELECT TO_CHAR(ROUND(AVG(SALARY),2),'$999,999.99') FROM PAY_HISTORY;
CREATE
INSERT
INSERT
INSERT
SELECT
SELECT
FROM
SELECT
FROM
SECTION 7.03
SELECT
FROM
WHERE
SELECT
FROM
WHERE
ROUND(AVG(SQ_FT),2)
SHIP_CABINS
SHIP_ID = 1;
SELECT
FROM
WHERE
ROUND(AVG(SQ_FT),2)
SHIP_CABINS
SHIP_ID = 1 AND ROOM_STYLE = 'Stateroom';
SELECT
FROM
WHERE
ROUND(AVG(SQ_FT),2)
SHIP_CABINS
SHIP_ID = 1 AND ROOM_STYLE = 'Suite';
SELECT
FROM
WHERE
GROUP BY
ROOM_STYLE, ROUND(AVG(SQ_FT),2)
SHIP_CABINS
SHIP_ID = 1
ROOM_STYLE;
SELECT
ROOM_STYLE,
ROUND(AVG(SQ_FT),2) "Average SQ FT",
MIN(GUESTS) "Minimum # of Guests",
COUNT(SHIP_CABIN_ID) "Total # of cabins"
FROM
SHIP_CABINS
WHERE
SHIP_ID = 1
GROUP BY ROOM_STYLE;
SELECT
ROOM_TYPE,
TO_CHAR(ROUND(AVG(SQ_FT),2),'999,999.99') "Average SQ FT",
MAX(GUESTS) "Maximum # of Guests",
COUNT(SHIP_CABIN_ID) "Total # of cabins"
FROM
SHIP_CABINS
WHERE
SHIP_ID = 1
GROUP BY ROOM_TYPE
ORDER BY 2 DESC;
SELECT
SELECT
ROOM_STYLE,
ROOM_TYPE,
TO_CHAR(MIN(SQ_FT),'9,999') "Min",
TO_CHAR(MAX(SQ_FT),'9,999') "Max",
TO_CHAR(MIN(SQ_FT)-MAX(SQ_FT),'9,999') "Diff"
FROM
SHIP_CABINS
WHERE
SHIP_ID = 1
GROUP BY ROOM_STYLE, ROOM_TYPE
ORDER BY 3;
SELECT TO_CHAR(MEDIAN(SQ_FT),'999.99') FROM SHIP_CABINS;
SELECT
FROM
WHERE
GROUP BY
SELECT
FROM
WHERE
GROUP BY
SELECT
FROM
WHERE
AVG(MAX(SQ_FT))
SHIP_CABINS
SHIP_ID = 1
COUNT(AVG(MAX(SQ_FT)))
SHIP_CABINS
SHIP_ID = 1
ROOM_STYLE, ROOM_TYPE;
SELECT
FROM
WHERE
GROUP BY
ROUND(AVG(MAX(SQ_FT)))
SHIP_CABINS
SHIP_ID = 1
ROOM_STYLE, ROOM_TYPE;
SECTION 7.04
SELECT
ROOM_STYLE,
ROOM_TYPE,
TO_CHAR(MIN(SQ_FT),'9,999') "Min"
FROM
SHIP_CABINS
WHERE
SHIP_ID = 1
GROUP BY ROOM_STYLE, ROOM_TYPE
HAVING
ROOM_TYPE IN ('Standard', 'Large')
OR
MIN(SQ_FT) > 1200
ORDER BY 3;
SECTION 8.01
SELECT
FROM
ON
ORDER BY
SELECT
FROM
ON
ORDER BY
SELECT
FROM
ON
WHERE
ORDER BY
SELECT
FROM
WHERE
ORDER BY
SELECT
FROM
WHERE
AND
ORDER BY
SELECT
FROM
ON
ORDER BY
SELECT
FROM
ON
ORDER BY
SELECT
FROM
ON
ORDER BY
SELECT
FROM
ON
ORDER BY
SELECT
FROM
WHERE
ORDER BY
SELECT
FROM
ON
SELECT
FROM
ON
SELECT
FROM
ON
SELECT
FROM
SELECT
FROM
SELECT
FROM
SECTION 8.02
ALTER TABLE POSITIONS
ADD CONSTRAINT FK_PO_PO FOREIGN KEY (REPORTS_TO)
REFERENCES POSITIONS (POSITION_ID);
SELECT
FROM
ON
ORDER BY
SECTION 8.03
SELECT *
FROM
VENDORS, ONLINE_SUBSCRIBERS;
SECTION 9.04
SELECT SHIP_ID
FROM
EMPLOYEES
WHERE LAST_NAME = 'Smith' AND
SELECT
FROM
WHERE
AND
FIRST_NAME = 'Al';
WHERE
AND
SECTION 9.05
SELECT EMPLOYEE_ID
FROM
EMPLOYEES
WHERE (FIRST_NAME, LAST_NAME) IN
(SELECT FIRST_NAME, LAST_NAME
FROM CRUISE_CUSTOMERS)
AND SHIP_ID = 1;
SELECT INVOICE_ID
FROM
INVOICES
WHERE (INVOICE_DATE,
(SELECT
FROM
WHERE
TOTAL_PRICE) =
START_DATE, SALARY
PAY_HISTORY
PAY_HISTORY_ID = 4);
SECTION 9.06
SELECT
VENDOR_NAME,
(SELECT TERMS_OF_DISCOUNT FROM INVOICES WHERE INVOICE_ID = 1) AS DISCOUNT
FROM
VENDORS
ORDER BY VENDOR_NAME;
INSERT INTO EMPLOYEES
(
EMPLOYEE_ID,
SHIP_ID)
VALUES
(
SEQ_EMPLOYEE_ID.NEXTVAL,
(SELECT SHIP_ID FROM SHIPS WHERE SHIP_NAME = 'Codd Champion')
);
SECTION 9.07
SELECT
FROM
WHERE
SECTION 9.08
UPDATE INVOICES INV
SET TERMS_OF_DISCOUNT = '10 PCT'
WHERE TOTAL_PRICE = (SELECT MAX(TOTAL_PRICE)
FROM
WHERE
INVOICES
TO_CHAR(INVOICE_DATE, 'RRRR-Q') =
TO_CHAR(INV.INVOICE_DATE, 'RRRR-Q'));
UPDATE PORTS P
SET
CAPACITY = (SELECT COUNT(*)
FROM SHIPS
WHERE HOME_PORT_ID = P.PORT_ID)
WHERE EXISTS (SELECT *
FROM SHIPS
WHERE HOME_PORT_ID = P.PORT_ID);
DELETE FROM SHIP_CABINS S1
WHERE S1.BALCONY_SQ_FT =
(SELECT MIN(BALCONY_SQ_FT)
FROM
SHIP_CABINS S2
WHERE S1.ROOM_TYPE = S2.ROOM_TYPE
AND S1.ROOM_STYLE = S2.ROOM_STYLE);
SECTION 9.09
SELECT PORT_ID, PORT_NAME
FROM
PORTS P1
WHERE EXISTS (SELECT *
FROM
SHIPS S1
WHERE P1.PORT_ID = S1.HOME_PORT_ID);
SECTION 9.10
WITH
PORT_BOOKINGS AS (
SELECT P.PORT_ID, P.PORT_NAME, COUNT(S.SHIP_ID) CT
FROM
PORTS P, SHIPS S
WHERE P.PORT_ID = S.HOME_PORT_ID
GROUP BY P.PORT_ID, P.PORT_NAME
),
DENSEST_PORT AS (
SELECT MAX(CT) MAX_CT
FROM
PORT_BOOKINGS
)
SELECT PORT_NAME
FROM
PORT_BOOKINGS
WHERE CT = (SELECT MAX_CT FROM DENSEST_PORT);
SECTION 10.01
CREATE VIEW VW_EMPLOYEES AS
SELECT EMPLOYEE_ID, LAST_NAME, FIRST_NAME, PRIMARY_PHONE
FROM
EMPLOYEES;
DESC VW_EMPLOYEES;
SELECT * FROM VW_EMPLOYEES;
SELECT
FIRST_NAME || ' ' || LAST_NAME "Employee"
FROM
VW_EMPLOYEES
ORDER BY PRIMARY_PHONE;
CREATE OR REPLACE VIEW VW_EMPLOYEES AS
SELECT EMPLOYEE_ID,
LAST_NAME || ', ' || FIRST_NAME,
PRIMARY_PHONE
FROM
EMPLOYEES;
UPDATE
SET
WHERE
AND
EMP_PHONE_BOOK
PRIMARY_PHONE = '202-555-1212'
LAST_NAME = 'Hoddlestein'
FIRST_NAME = 'Howard';
ON
FROM
SHIP_CABINS
GROUP BY SHIP_ID) A
JOIN
(SELECT
SHIP_ID, COUNT(CRUISE_ORDER_ID) COUNT_CRUISES
FROM
CRUISE_ORDERS
GROUP BY SHIP_ID) B
A.SHIP_ID = B.SHIP_ID;
SECTION 10.02
CREATE SEQUENCE SEQ_ORDER_ID;
CREATE SEQUENCE SEQ_ORDER_ID START WITH 1 INCREMENT BY 1;
CREATE SEQUENCE SEQ_ORDER_ID START WITH 10 INCREMENT BY 5;
SECTION 10.03
CREATE TABLE SEMINARS
(SEMINAR_ID
SEMINAR_NAME
NUMBER(11)
PRIMARY KEY,
VARCHAR2(30) UNIQUE);
SECTION 10.04
CREATE OR REPLACE SYNONYM CO FOR CRUISE_ORDERS;
SELECT * FROM CO;
CREATE PUBLIC SYNONYM WH FOR WORK_HISTORY;
GRANT SELECT ON PORTS TO LARRY;
SELECT * FROM CODD.PORTS;
CREATE PUBLIC SYNONYM PORTS FOR CODD.PORTS;
SELECT * FROM PORTS;
SECTION 11.01
CREATE TABLE CRUISE_ORDERS
(CRUISE_ORDER_ID NUMBER,
SALES_REP_ID
NUMBER);
ALTER TABLE CRUISE_ORDERS ADD (ORDER_DATE VARCHAR2(20));
ALTER TABLE CRUISE_ORDERS
ADD (WEATHER_CODE DEFAULT 0 NUMBER(2));
ALTER TABLE CRUISE_ORDERS
ADD (WEATHER_CODE NUMBER(2) DEFAULT 0);
ALTER TABLE CRUISE_ORDERS
ADD (WEATHER_CODE NUMBER(2) DEFAULT 0,
TRAVEL_AGENCY VARCHAR2(27) NOT NULL);
ALTER TABLE CRUISE_ORDERS
ADD
FIRST_TIME_CUSTOMER VARCHAR2(5)
NOT NULL;
SECTION 11.02
ALTER TABLE ORDER_RETURNS DROP COLUMN CRUISE_ORDER_DATE;
ALTER TABLE ORDER_RETURNS DROP (CRUISE_ORDER_DATE);
ALTER TABLE ORDER_RETURNS
DROP (CRUISE_ORDER_DATE, FORM_TYPE, NAME_SUFFIX);
CREATE TABLE CRUISE_ORDERS
(CRUISE_ORDER_ID
NUMBER,
ORDER_DATE
DATE,
CONSTRAINT PK_CO PRIMARY KEY (CRUISE_ORDER_ID, ORDER_DATE));
CREATE TABLE ORDER_RETURNS
(ORDER_RETURN_ID
NUMBER,
CRUISE_ORDER_ID
NUMBER,
CRUISE_ORDER_DATE DATE,
CONSTRAINT PK_OR PRIMARY KEY (ORDER_RETURN_ID),
CONSTRAINT FK_OR_CO FOREIGN KEY
(CRUISE_ORDER_ID, CRUISE_ORDER_DATE)
REFERENCES CRUISE_ORDERS (CRUISE_ORDER_ID, ORDER_DATE));
SECTION 11.03
CREATE TABLE CRUISE_ORDERS
(CRUISE_ORDER_ID
NUMBER,
SALES_AGENT_ID
NUMBER,
ORDER_DATE
DATE,
CONFIRMATION_DATE DATE);
KEY (PORT_ID));
KEY (SHIP_ID),
KEY (HOME_PORT_ID) REFERENCES PORTS (PORT_ID));
'Jacksonville');
'New Orleans');
'Codd Royale', 50);
WHERE
TABLE_NAME = 'SHIPS';
SECTION 11.04
CREATE TABLE INVOICES (INVOICE_ID
NUMBER(11) PRIMARY KEY,
INVOICE_DATE DATE);
SELECT INDEX_NAME
FROM
WHERE
USER_INDEXES
TABLE_NAME = 'INVOICES';
INVOICE_DATE DATE,
CONSTRAINT
UN_INVOICES_INVOICE_ID UNIQUE (INVOICE_ID, INVOICE_DATE)
USING INDEX (CREATE INDEX IX_INVOICES
ON INVOICES(INVOICE_ID, INVOICE_DATE)),
CONSTRAINT
UN_INVOICES_INVOICE_DATE UNIQUE (INVOICE_DATE, INVOICE_ID)
USING INDEX IX_INVOICES
);
SECTION 11.05
CREATE TABLE CUSTOMERS
(CUSTOMER_ID
NUMBER(11) PRIMARY KEY,
LAST_NAME
VARCHAR2(30));
CREATE INDEX IX_CUSTOMERS_LAST_NAME ON CUSTOMERS (UPPER(LAST_NAME));
SELECT * FROM CUSTOMERS WHERE UPPER(LAST_NAME) = 'SMITH';
CREATE TABLE GAS_TANKS (GAS_TANK_ID NUMBER(7), TANK_GALLONS NUMBER(9), MILEAGE NUMBER(9));
CREATE INDEX IX_GAS_TANKS_001 ON GAS_TANKS (TANK_GALLONS * MILEAGE);
SELECT * FROM GAS_TANKS WHERE MILEAGE*TANK_GALLONS > 750;
SECTION 11.06
CREATE TABLE HOUDINI (VOILA VARCHAR2(30));
INSERT INTO HOUDINI (VOILA) VALUES ('Now you see it.');
COMMIT;
DROP
TABLE HOUDINI;
FLASHBACK TABLE HOUDINI TO BEFORE DROP;
SELECT * FROM HOUDINI;
SELECT * FROM USER_RECYCLEBIN;
SELECT * FROM RECYCLEBIN;
ALTER SESSION SET recyclebin = ON;
ALTER SESSION SET recyclebin = OFF;
PURGE TABLE HOUDINI;
CREATE TABLE HOUDINI (VOILA VARCHAR2(30));
INSERT INTO HOUDINI (VOILA) VALUES ('Now you see it.');
COMMIT;
EXECUTE DBMS_LOCK.SLEEP(15);
DELETE FROM HOUDINI;
COMMIT;
EXECUTE DBMS_LOCK.SLEEP(15);
SECTION 11.07
CREATE OR REPLACE DIRECTORY BANK_FILES AS 'F:\bnk_files\trnsfr';
CREATE DIRECTORY INVOICE_FILES AS '\LOAD_INVOICES';
CREATE TABLE INVOICES_EXTERNAL
( INVOICE_ID
CHAR(3),
INVOICE_DATE
CHAR(9),
ACCOUNT_NUMBER CHAR(13)
)
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER
DEFAULT DIRECTORY INVOICE_FILES
ACCESS PARAMETERS
(RECORDS DELIMITED BY NEWLINE
SKIP 2
FIELDS (INVOICE_ID
CHAR(3),
INVOICE_DATE
CHAR(9),
ACCOUNT_NUMBER CHAR(13))
)
LOCATION ('INVOICE_DATA.TXT')
);
SELECT * FROM INVOICES_EXTERNAL;
SELECT TO_NUMBER(INVOICE_ID),
TO_DATE(INVOICE_DATE,'MM/DD/RR') INVOICE_DATE,
LTRIM(ACCOUNT_NUMBER,' ') ACCOUNT_NUMBER
FROM
INVOICES_EXTERNAL;
SECTION 12.02
SELECT CONTACT_EMAIL_ID, STATUS, EMAIL_ADDRESS
FROM
CONTACT_EMAILS;
SELECT ONLINE_SUBSCRIBER_ID, EMAIL
FROM
ONLINE_SUBSCRIBERS;
SELECT
FROM
WHERE
UNION
SELECT
FROM
CONTACT_EMAIL_ID, EMAIL_ADDRESS
CONTACT_EMAILS
STATUS = 'Valid'
SELECT
FROM
WHERE
UNION
SELECT
FROM
EMAIL_ADDRESS
CONTACT_EMAILS
STATUS = 'Valid'
ONLINE_SUBSCRIBER_ID, EMAIL
ONLINE_SUBSCRIBERS;
EMAIL
ONLINE_SUBSCRIBERS;
SELECT EMAIL_ADDRESS
FROM
CONTACT_EMAILS
WHERE STATUS = 'Valid'
UNION ALL
SELECT EMAIL
FROM
ONLINE_SUBSCRIBERS;
SELECT EMAIL_ADDRESS
FROM
CONTACT_EMAILS
WHERE STATUS = 'Valid'
INTERSECT
SELECT EMAIL
FROM
ONLINE_SUBSCRIBERS;
SELECT
FROM
WHERE
MINUS
SELECT
FROM
EMAIL_ADDRESS
CONTACT_EMAILS
STATUS = 'Valid'
SELECT
FROM
MINUS
SELECT
FROM
EMAIL
ONLINE_SUBSCRIBERS
EMAIL
ONLINE_SUBSCRIBERS;
EMAIL_ADDRESS
CONTACT_EMAILS
WHERE
STATUS = 'Valid';
SECTION 12.03
SELECT 'Individual',
LAST_NAME || ', ' || FIRST_NAME
FROM
CRUISE_CUSTOMERS
UNION
SELECT CATEGORY,
VENDOR_NAME
FROM
VENDORS;
SELECT 'Individual',
LAST_NAME || ', ' || FIRST_NAME
FROM
CRUISE_CUSTOMERS
UNION
SELECT CATEGORY,
VENDOR_NAME
FROM
VENDORS
ORDER BY 2;
SELECT
FROM
UNION
SELECT
'Individual' CONTACT_CATEGORY,
LAST_NAME || ', ' || FIRST_NAME POINT_OF_CONTACT
CRUISE_CUSTOMERS
CATEGORY,
VENDOR_NAME
FROM
VENDORS
ORDER BY POINT_OF_CONTACT;
SECTION 13.01
SELECT
FROM
WHERE
GROUP BY
ORDER BY
SELECT
FROM
WHERE
GROUP BY
ORDER BY
SELECT
FROM
WHERE
GROUP BY
ORDER BY
SECTION 13.02
SELECT
FROM
WHERE
GROUP BY
ORDER BY
SECTION 13.03
SELECT
GROUPING(ROOM_TYPE), ROOM_STYLE,
ROOM_TYPE, ROUND(SUM(SQ_FT),2) SUM_SQ_FT
FROM
SHIP_CABINS
WHERE
SHIP_ID = 1
GROUP BY ROLLUP (ROOM_STYLE, ROOM_TYPE)
ORDER BY ROOM_STYLE, ROOM_TYPE;
SELECT
NVL(
DECODE(GROUPING(ROOM_TYPE),1,UPPER(ROOM_STYLE),
INITCAP(ROOM_STYLE)),
'GRAND TOTAL') ROOM_STYLE_FORMATTED,
ROOM_TYPE,
ROUND(SUM(SQ_FT),2) SUM_SQ_FT
FROM
SHIP_CABINS
WHERE
SHIP_ID = 1
GROUP BY ROLLUP (ROOM_STYLE, ROOM_TYPE)
SECTION 13.04
SELECT
FROM
WHERE
GROUP BY
ORDER BY
SELECT
FROM
WHERE
GROUP BY
ORDER BY
SECTION 14.01
SELECT
FROM
WHERE
AND
UNION
SELECT
FROM
WHERE
AND
SELECT COMMENTS
FROM
USER_TAB_COMMENTS
WHERE TABLE_NAME = 'PORTS';
COMMENT ON COLUMN PORTS.CAPACITY
COMMENT ON TABLE PORTS IS '';
SECTION 14.02
DESC DICTIONARY;
SELECT
TABLE_NAME, COMMENTS
FROM
DICTIONARY
ORDER BY TABLE_NAME;
SELECT
FROM
WHERE
ORDER BY
SELECT
FROM
WHERE
AND
TABLE_NAME, COMMENTS
DICTIONARY
UPPER(COMMENTS) LIKE '%INDEX%'
TABLE_NAME;
COLUMN_NAME, COMMENTS
ALL_COL_COMMENTS
OWNER = 'SYS'
TABLE_NAME = 'USER_DEPENDENCIES';
DATA_TYPE,
'DATE'
, DATA_TYPE ,
'NUMBER' , DATA_TYPE || DECODE(DATA_SCALE,
NULL,
NULL,
'(' || DATA_PRECISION || ',' || DATA_SCALE || ')'),
'VARCHAR2', DATA_TYPE || '(' || DATA_LENGTH || ')', NULL)
DATA_TYPE
FROM
USER_TAB_COLUMNS
WHERE TABLE_NAME = 'INVOICES';
SELECT
FROM
WHERE
ORDER BY
SELECT TEXT
FROM
USER_VIEWS
WHERE VIEW_NAME = 'VW_EMPLOYEES';
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, R_CONSTRAINT_NAME, STATUS
FROM
USER_CONSTRAINTS
WHERE TABLE_NAME = 'CRUISES';
SELECT SEARCH_CONDITION
FROM
USER_CONSTRAINTS
WHERE CONSTRAINT_NAME = 'CK_PROJECT_COST'
SECTION 15.01
CREATE TABLE INVOICES_ARCHIVED AS
SELECT *
FROM
INVOICES
WHERE SHIPPING_DATE < (ADD_MONTHS(SYSDATE,-12));
DESC INVOICES_ARCHIVED
CREATE TABLE ROOM_SUMMARY AS
SELECT
A.SHIP_ID,
A.SHIP_NAME,
B.ROOM_NUMBER,
B.SQ_FT + NVL(B.BALCONY_SQ_FT,0) TOT_SQ_FT
FROM
SHIPS A JOIN SHIP_CABINS B
ON
A.SHIP_ID = B.SHIP_ID;
CREATE TABLE ROOM_SUMMARY (SHIP_ID, SHIP_NAME, ROOM_NUMBER, TOT_SQ_FT)
AS
SELECT
A.SHIP_ID,
A.SHIP_NAME,
FROM
ON
B.ROOM_NUMBER,
B.SQ_FT + NVL(B.BALCONY_SQ_FT,0)
SHIPS A JOIN SHIP_CABINS B
A.SHIP_ID = B.SHIP_ID;
DESC ROOM_SUMMARY
INSERT INTO CRUISE_CUSTOMERS
(CRUISE_CUSTOMER_ID, FIRST_NAME, LAST_NAME)
SELECT SEQ_CRUISE_CUSTOMER_ID.NEXTVAL,
EMP.FIRST_NAME,
EMP.LAST_NAME
FROM
EMPLOYEES EMP;
SELECT
HOME_PORT_ID,
COUNT(SHIP_ID) TOTAL_SHIPS,
SUM(CAPACITY) TOTAL_SHIP_CAPACITY
FROM
SHIPS
GROUP BY HOME_PORT_ID
ORDER BY HOME_PORT_ID;
UPDATE PORTS PT
SET (TOT_SHIPS_ASSIGNED, TOT_SHIPS_ASGN_CAP) =
(SELECT
COUNT(S.SHIP_ID) TOTAL_SHIPS,
SUM(S.CAPACITY) TOTAL_SHIP_CAPACITY
FROM
SHIPS S
WHERE
S.HOME_PORT_ID = PT.PORT_ID
GROUP BY S.HOME_PORT_ID);
SECTION 15.03
INSERT ALL
INTO CO_2008
(CRUISE_ORDER_ID, ORDER_DATE,
CRUISE_CUSTOMER_ID, SHIP_ID)
VALUES
(CRUISE_ORDER_ID, ORDER_DATE,
CRUISE_CUSTOMER_ID, SHIP_ID)
INTO CO_ELCARO
(CRUISE_ORDER_ID, ORDER_DATE,
CRUISE_CUSTOMER_ID, SHIP_ID)
VALUES
(CRUISE_ORDER_ID, ORDER_DATE,
CRUISE_CUSTOMER_ID, SHIP_ID)
INTO CO_ARCHIVED (CRUISE_ORDER_ID, ORDER_DATE,
CRUISE_CUSTOMER_ID, SHIP_ID)
VALUES
(CRUISE_ORDER_ID, ORDER_DATE,
CRUISE_CUSTOMER_ID, SHIP_ID)
SELECT CRUISE_ORDER_ID, ORDER_DATE, CRUISE_CUSTOMER_ID, SHIP_ID
FROM
CRUISE_ORDERS;
INSERT ALL
INTO CO_2008
(CRUISE_ORDER_ID, ORDER_DATE,
CRUISE_CUSTOMER_ID, SHIP_ID)
VALUES
(CRUISE_ORDER_ID, SYSDATE, 14, 1)
INTO CO_ELCARO
(CRUISE_ORDER_ID, ORDER_DATE,
CRUISE_CUSTOMER_ID, SHIP_ID)
VALUES
(CRUISE_ORDER_ID, ORDER_DATE+30, 15, 1)
INTO CO_ARCHIVED (CRUISE_ORDER_ID, ORDER_DATE,
CRUISE_CUSTOMER_ID, SHIP_ID)
(CRUISE_ORDER_ID, ORDER_DATE,
CRUISE_CUSTOMER_ID, SHIP_ID)
SELECT CRUISE_ORDER_ID, ORDER_DATE, CRUISE_CUSTOMER_ID, SHIP_ID
FROM
CRUISE_ORDERS;
VALUES
INSERT FIRST
WHEN (DATE_SHIPPED < (ADD_MONTHS(SYSDATE,-12))) THEN
INTO INVOICES_ARCHIVED (INVOICE_ID, INVOICE_DATE,
SHIPPING_DATE, ACCOUNT_NUMBER)
VALUES (INV_NO, DATE_ENTERED, DATE_SHIPPED, CUST_ACCT)
ELSE
INTO INVOICES (INVOICE_ID, INVOICE_DATE,
SHIPPING_DATE, ACCOUNT_NUMBER)
VALUES (INV_NO, DATE_ENTERED, DATE_SHIPPED, CUST_ACCT)
SELECT INV_NO, DATE_ENTERED, DATE_SHIPPED, CUST_ACCT
FROM
WO_INV;
INSERT
WHEN (TO_CHAR(DATE_SHIPPED,'RRRR') <= '2009') THEN
INTO INVOICES_THRU_2009 (INVOICE_ID, INVOICE_DATE,
SHIPPING_DATE, ACCOUNT_NUMBER)
VALUES (INV_NO, DATE_ENTERED, DATE_SHIPPED, CUST_ACCT)
WHEN (TO_CHAR(DATE_SHIPPED,'RRRR') <= '2008') THEN
INTO INVOICES_THRU_2008 (INVOICE_ID, INVOICE_DATE,
SHIPPING_DATE, ACCOUNT_NUMBER)
VALUES (INV_NO, DATE_ENTERED, DATE_SHIPPED, CUST_ACCT)
WHEN (TO_CHAR(DATE_SHIPPED,'RRRR') <= '2007') THEN
INTO INVOICES_THRU_2007 (INVOICE_ID, INVOICE_DATE,
SHIPPING_DATE, ACCOUNT_NUMBER)
VALUES (INV_NO, DATE_ENTERED, DATE_SHIPPED, CUST_ACCT)
SELECT INV_NO, DATE_ENTERED, DATE_SHIPPED, CUST_ACCT
FROM
WO_INV;
INSERT
WHEN (TO_CHAR(DATE_SHIPPED,'RRRR') <= '2009') THEN
INTO INVOICES_THRU_2009 (INVOICE_ID, INVOICE_DATE,
SHIPPING_DATE, ACCOUNT_NUMBER)
VALUES (INV_NO, DATE_ENTERED, DATE_SHIPPED, CUST_ACCT)
WHEN (TO_CHAR(DATE_SHIPPED,'RRRR') <= '2008') THEN
INTO INVOICES_THRU_2008 (INVOICE_ID, INVOICE_DATE,
SHIPPING_DATE, ACCOUNT_NUMBER)
VALUES (INV_NO, DATE_ENTERED, DATE_SHIPPED, CUST_ACCT)
INTO INVOICES_CLOSED
(INVOICE_ID, INVOICE_DATE,
SHIPPING_DATE, ACCOUNT_NUMBER)
VALUES (INV_NO, DATE_ENTERED, DATE_SHIPPED, CUST_ACCT)
WHEN (TO_CHAR(DATE_SHIPPED,'RRRR') <= '2007') THEN
INTO INVOICES_THRU_2007 (INVOICE_ID, INVOICE_DATE,
SHIPPING_DATE, ACCOUNT_NUMBER)
VALUES (INV_NO, DATE_ENTERED, DATE_SHIPPED, CUST_ACCT)
SELECT INV_NO, DATE_ENTERED, DATE_SHIPPED, CUST_ACCT
FROM
WO_INV;
INSERT
WHEN (B.MAX_SALARY-A.MAX_SALARY < 10000) THEN
INTO SALARY_CHART (EMP_TITLE, SUPERIOR,
EMP_INCOME, SUP_INCOME)
VALUES
(A.POSITION, B.POSITION,
A.MAX_SALARY, B.MAX_SALARY)
SELECT A.POSITION,
B.POSITION,
A.MAX_SALARY,
B.MAX_SALARY
FROM
POSITIONS A JOIN POSITIONS B
ON
A.REPORTS_TO = B.POSITION_ID
WHERE A.MAX_SALARY > 100000;
INSERT
WHEN (BOSS_SALARY-EMPLOYEE_SALARY < 10000) THEN
INTO SALARY_CHART (EMP_TITLE, SUPERIOR, EMP_INCOME,
SUP_INCOME)
VALUES
(EMPLOYEE, BOSS,
EMPLOYEE_SALARY, BOSS_SALARY)
SELECT A.POSITION
EMPLOYEE,
B.POSITION
BOSS,
A.MAX_SALARY EMPLOYEE_SALARY,
B.MAX_SALARY BOSS_SALARY
FROM
POSITIONS A JOIN POSITIONS B
ON
A.REPORTS_TO = B.POSITION_ID
WHERE A.MAX_SALARY > 100000;
INSERT
WHEN (TO_CHAR(DATE_ENTERED,'RRRR') <= '2009') THEN
INTO INVOICES_ARCHIVED (INVOICE_ID, INVOICE_DATE)
VALUES (SEQ_INV_NUM.NEXTVAL, DATE_ENTERED)
SELECT INV_NO, DATE_ENTERED FROM
WO_INV;
INSERT ALL
SECTION 15.04
MERGE INTO WWA_INVOICES WWA
USING ONTARIO_ORDERS ONT
ON
(WWA.CUST_PO = ONT.PO_NUM)
WHEN MATCHED THEN UPDATE SET
WWA.NOTES = ONT.SALES_REP
WHEN NOT MATCHED THEN INSERT
(WWA.INV_ID, WWA.CUST_PO, WWA.INV_DATE, WWA.NOTES)
VALUES
(SEQ_INV_ID.NEXTVAL,
SECTION 15.05
CREATE TABLE CHAT
(CHAT_ID
NUMBER(11) PRIMARY KEY,
CHAT_USER VARCHAR2(9),
YACKING
VARCHAR2(40));
CHAT
CHAT
CHAT
CHAT
VALUES
VALUES
VALUES
VALUES
(SEQ_CHAT_ID.NEXTVAL,
(SEQ_CHAT_ID.NEXTVAL,
(SEQ_CHAT_ID.NEXTVAL,
(SEQ_CHAT_ID.NEXTVAL,
USER,
USER,
USER,
USER,
'Hi there.');
'Welcome to our chat room.');
'Online order form is up.');
'Over and out.');
SECTION 16.01
CREATE TABLE EMPLOYEE_CHART
( EMPLOYEE_ID NUMBER(7) PRIMARY KEY,
TITLE
VARCHAR2(20),
REPORTS_TO
NUMBER(7));
ALTER TABLE EMPLOYEE_CHART
ADD CONSTRAINT FK_EM_EM
FOREIGN KEY (REPORTS_TO)
REFERENCES EMPLOYEE_CHART (EMPLOYEE_ID);
SECTION 16.02
SELECT
FROM
START WITH
CONNECT BY
SELECT
FROM
START WITH
CONNECT BY
SELECT
FROM
START WITH
CONNECT BY
SELECT
LEVEL, EMPLOYEE_ID, LPAD(' ', LEVEL*2) || TITLE TITLE_FORMATTED
FROM
EMPLOYEE_CHART
START WITH EMPLOYEE_ID = 1
CONNECT BY REPORTS_TO = PRIOR EMPLOYEE_ID
ORDER BY TITLE;
SELECT
LEVEL, EMPLOYEE_ID, LPAD(' ', LEVEL*2) || TITLE TITLE_FORMATTED
FROM
EMPLOYEE_CHART
START WITH EMPLOYEE_ID = 1
CONNECT BY REPORTS_TO = PRIOR EMPLOYEE_ID
ORDER SIBLINGS BY TITLE;
SELECT
FROM
START WITH
CONNECT BY
SELECT
FROM
START WITH
CONNECT BY
SECTION 16.03
SELECT
FROM
START WITH
CONNECT BY
AND
SELECT
FROM
START WITH
CONNECT BY
AND
SELECT
FROM
WHERE
START WITH
CONNECT BY
AND
SECTION 17.02
SELECT REGEXP_SUBSTR('123 Maple Avenue', '[a-z]') ADDRESS
FROM
DUAL;
SELECT REGEXP_SUBSTR('123 Maple Avenue', '[A-Za-z]') ADDRESS
FROM
DUAL;
SELECT REGEXP_SUBSTR('123 Maple Avenue', '[A-Za-z]+') ADDRESS
FROM
DUAL;
SELECT REGEXP_SUBSTR('123 Maple Avenue', '[[:alpha:]]+') ADDRESS
FROM
DUAL;
SELECT REGEXP_SUBSTR('123 Maple Avenue', '[:alpha:]+') ADDRESS
FROM
DUAL;
SELECT REGEXP_SUBSTR('123 Maple Avenue', '[[:alpha:]]+', 1, 2) ADDRESS
FROM
DUAL;
SECTION 17.03
SELECT REGEXP_REPLACE('Chapter 1 ......................... I Am Born',
'[.]+','-') TOC
FROM
DUAL;
SELECT REGEXP_REPLACE('And then he said *&% so I replied with $@($*@',
'[!@#$%^&*()]','-') PRIME_TIME
FROM
DUAL;
SELECT REGEXP_REPLACE('And then he said *&% so I replied with $@($*@',
'[!@#$%^&*()]+','-') PRIME_TIME
FROM
DUAL;
SELECT REGEXP_REPLACE('and
in
conclusion,
'( ){2,}', ' ') TEXT_LINE
FROM
DUAL;
2/3rds
of our
revenue ',
SELECT ADDRESS2,
REGEXP_REPLACE(ADDRESS2, '(^[[:alpha:]]+)', 'CITY') THE_STRING
FROM
ORDER_ADDRESSES
WHERE
ROWNUM <= 5;
SELECT ADDRESS2,
REGEXP_REPLACE(ADDRESS2, '(^[[:alpha:] ]+)', 'CITY') THE_STRING
FROM
ORDER_ADDRESSES
WHERE ROWNUM <= 5;
SELECT ADDRESS2,
REGEXP_REPLACE(ADDRESS2,
'(^[[:alpha:] ]+), ([[:alpha:]]{2}) ([[:digit:]]{5})',
'\3 \2 \1') THE_STRING
FROM
ORDER_ADDRESSES
WHERE ROWNUM <= 5;
SELECT ADDRESS2,
REGEXP_REPLACE(ADDRESS2,
'(^[[:alpha:] ,]+) ([[:alpha:]]{2}) ([[:digit:]]{5})',
'\3 \2 \1') THE_STRING
FROM
ORDER_ADDRESSES
WHERE ROWNUM <= 5;
SELECT ADDRESS2,
REGEXP_REPLACE(ADDRESS2,
'(^[[:alpha:] ]+), ([[:alpha:]]{2}) ([[:digit:]]{5})',
'\3 \2-"\1"') THE_STRING
FROM
ORDER_ADDRESSES
WHERE ROWNUM <= 5;
SECTION 17.04
CREATE TABLE EMAIL_LIST
( EMAIL_LIST_ID
NUMBER(7) PRIMARY KEY,
EMAIL1
VARCHAR2(120),
CONSTRAINT CK_EL_EMAIL1
CHECK (
REGEXP_LIKE (EMAIL1,
'^([[:alnum:]]+)@[[:alnum:]]+.(com|net|org|edu|gov|mil)$'
)
)
);
INSERT INTO EMAIL_LIST VALUES (1, 'someone@corbinian.com');
INSERT INTO EMAIL_LIST VALUES (2, 'lellison@oracle.omc');
SECTION 18.01
CREATE USER JOAN IDENTIFIED BY OFARC;
ALTER USER JOAN IDENTIFIED BY HAWAII;
CONNECT JOAN/HAWAII
CONNECT SYSTEM/MANAGER
CREATE USER HAROLD IDENTIFIED BY LLOYD;
GRANT CREATE SESSION TO HAROLD;
GRANT UNLIMITED TABLESPACE TO HAROLD;
GRANT CREATE TABLE TO HAROLD;
CONNECT HAROLD/LLOYD
CREATE TABLE CLOCKTOWER (CLOCK_ID NUMBER(11));
CREATE SEQUENCE SEQ_CLOCK_ID;
CONNECT SYSTEM/MANAGER
SECTION 18.02
SECTION 18.03
SELECT
PRIVILEGE, ADMIN_OPTION
FROM
USER_SYS_PRIVS
ORDER BY PRIVILEGE;
SELECT
GRANTOR, OWNER, GRANTEE, TABLE_NAME, PRIVILEGE, GRANTABLE
FROM
USER_TAB_PRIVS
ORDER BY GRANTOR, OWNER, GRANTEE, TABLE_NAME, PRIVILEGE;
SECTION 18.04
CONNECT EFCODD/FOUNDER
SECTION 18.05
REVOKE CRUISE_ANALYST FROM HENRY;
GRANT SELECT ON INVOICES TO HENRY;
CREATE ROLE CRUISE_ACCOUNTANT;
GRANT SELECT ON INVOICES TO CRUISE_ACCOUNTANT;
GRANT CRUISE_ACCOUNTANT TO HENRY;
REVOKE CRUISE_ACCOUNTANT FROM HENRY;