436 lines
50 KiB
Plaintext
436 lines
50 KiB
Plaintext
|
|
SQL> -- ORACLE SQL DML: SCHEMA C##ART
|
||
|
|
SQL> SET ECHO ON;
|
||
|
|
SQL> SET SERVEROUTPUT ON;
|
||
|
|
SQL> SET PAGESIZE 30;
|
||
|
|
SQL> SET HEADING ON;
|
||
|
|
SQL>
|
||
|
|
SQL> -- 20 Queries
|
||
|
|
SQL> -- Q1: Select all columns and all rows from one table
|
||
|
|
SQL> SELECT * FROM ROLE;
|
||
|
|
|
||
|
|
ROLE_ID ROLENAME
|
||
|
|
---------- ----------------
|
||
|
|
100 SYSTEM
|
||
|
|
200 SUPPLIER
|
||
|
|
300 STAFF
|
||
|
|
400 CUSTOMER
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q2: Select five columns and all rows from one table
|
||
|
|
SQL> SELECT CONTACT_ID, FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL FROM CONTACT;
|
||
|
|
|
||
|
|
CONTACT_ID FIRST_NAME LAST_NAME PHONE_NO EMAIL
|
||
|
|
---------- ---------------- ---------------- ------------ ----------------------------------------------------------------
|
||
|
|
1 ART SYSTEM 000-1234 arts@art.com
|
||
|
|
2 Alice Johnson 650-555-9012 alice.johnson@art.com
|
||
|
|
3 Karen Park 206-555-0110 karen.park@art.com
|
||
|
|
4 Jeese Taylor 713-555-0106 grace.taylor@art.com
|
||
|
|
5 James Lee 206-555-0109 james.lee@art.com
|
||
|
|
6 Stephen Alec 424-546-9312 salec@eizel.com
|
||
|
|
7 Henry Martinez 602-555-0107 henry@artsupply.com
|
||
|
|
8 Carol White 212-555-0102 carol.white@mail.com
|
||
|
|
9 Bob Smith 212-555-0101 bob.smith@mail.com
|
||
|
|
10 David Brown 312-555-0103 david.brown@mail.com
|
||
|
|
11 Emma Davis 312-555-0104 emma.davis@mail.com
|
||
|
|
12 Frank Wilson 713-555-0105 frank.wilson@mail.com
|
||
|
|
|
||
|
|
12 rows selected.
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q3: Select all columns from all rows from one view
|
||
|
|
SQL> SELECT * FROM VIEW_AVAILABLE_INVENTORY;
|
||
|
|
no rows selected
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q4: Using a join on 2 tables, select all columns and all rows from the tables without the use of a Cartesian product
|
||
|
|
SQL> SELECT * FROM CONTACT ct
|
||
|
|
2 JOIN ADDRESS ad ON ad.FK_CONTACT_ID=ct.CONTACT_ID;
|
||
|
|
|
||
|
|
CONTACT_ID FIRST_NAME LAST_NAME PHONE_NO EMAIL MODIFIED_BY CREATED_DT MODIFIED_DT ZIP FK_CONTACT_ID STREET
|
||
|
|
---------- ---------------- ---------------- ------------ ---------------------------------------------------------------- ----------- ------------------------------- ------------------------------- ----- ------------- --------------------------------
|
||
|
|
1 ART SYSTEM 000-1234 arts@art.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 94027 1 789 Oak St, suite 10
|
||
|
|
2 Alice Johnson 650-555-9012 alice.johnson@art.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 94027 2 789 Oak St, suite 15
|
||
|
|
3 Karen Park 206-555-0110 karen.park@art.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 94027 3 789 Oak St, suite 1
|
||
|
|
4 Jeese Taylor 713-555-0106 grace.taylor@art.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 94027 4 789 Oak St, suite 5
|
||
|
|
5 James Lee 206-555-0109 james.lee@art.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 94027 5 789 Oak St, suite 15
|
||
|
|
6 Stephen Alec 424-546-9312 salec@eizel.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 90210 6 890 Venue Rd
|
||
|
|
7 Henry Martinez 602-555-0107 henry@artsupply.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 90210 7 200 Sunset Blvd
|
||
|
|
8 Carol White 212-555-0102 carol.white@mail.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 10001 8 100 Broadway
|
||
|
|
9 Bob Smith 212-555-0101 bob.smith@mail.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 60601 9 300 Michigan Ave
|
||
|
|
10 David Brown 312-555-0103 david.brown@mail.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 77001 10 400 Main St
|
||
|
|
11 Emma Davis 312-555-0104 emma.davis@mail.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 85001 11 500 Central Ave
|
||
|
|
12 Frank Wilson 713-555-0105 frank.wilson@mail.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 98101 12 600 Pike St
|
||
|
|
|
||
|
|
12 rows selected.
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q5: 5: Select and order data retrieved from one table
|
||
|
|
SQL> SELECT * FROM ZIP ORDER BY 1;
|
||
|
|
|
||
|
|
ZIP CITY ST
|
||
|
|
----- ---------------- --
|
||
|
|
02101 Boston MA
|
||
|
|
10001 New York NY
|
||
|
|
33101 Miami FL
|
||
|
|
60601 Chicago IL
|
||
|
|
77001 Houston TX
|
||
|
|
85001 Phoenix AZ
|
||
|
|
90210 Beverly Hills CA
|
||
|
|
90211 Los Angeles CA
|
||
|
|
94027 Atherton CA
|
||
|
|
98101 Seattle WA
|
||
|
|
|
||
|
|
10 rows selected.
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q6: Using a join on 3 tables, select 5 columns from the 3 tables. Use syntax that would limit the output to 10 rows
|
||
|
|
SQL> SELECT iv.SKU, iv.PRODUCT_NAME,iv.BASE_PRICE,iv.LEAD_TIME_DAYS, iv.QUANTITY_AVAILABLE,
|
||
|
|
2 au.AUTHORIZATION_STATUS, au.EXPIRATION_DATE, au.AUTHORIZATION_DATE, c.*, au.FK_DOCUMENT_ID
|
||
|
|
3 FROM INVENTORY iv
|
||
|
|
4 JOIN "AUTHORIZATION" au ON au.AUTHORIZATION_ID = iv.AUTHORIZATION_ID
|
||
|
|
5 join CONTACT c ON c.CONTACT_ID= iv.FK_CONTACT_ID
|
||
|
|
6 FETCH FIRST 10 ROWS ONLY;
|
||
|
|
|
||
|
|
SKU PRODUCT_NAME BASE_PRICE LEAD_TIME_DAYS QUANTITY_AVAILABLE AUTHORIZATION_ST EXPIRATION_DATE AUTHORIZATION_DATE CONTACT_ID FIRST_NAME LAST_NAME PHONE_NO EMAIL MODIFIED_BY CREATED_DT MODIFIED_DT FK_DOCUMENT_ID
|
||
|
|
---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- ---------- -------------- ------------------ ---------------- ------------------------------- ------------------------------- ---------- ---------------- ---------------- ------------ ---------------------------------------------------------------- ----------- ------------------------------- ------------------------------- --------------
|
||
|
|
ART-S-001 Crimson Horizon 1200 7 5 approved 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 Stephen Alec 424-546-9312 salec@eizel.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 2
|
||
|
|
ART-S-002 Misty Valley 700 5 5 approved 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 Stephen Alec 424-546-9312 salec@eizel.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 3
|
||
|
|
ART-S-003 Twisted Form 2200 14 5 pending 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 Stephen Alec 424-546-9312 salec@eizel.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 4
|
||
|
|
ART-H-001 Urban Solitude 1500 3 10 approved 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 Stephen Alec 424-546-9312 salec@eizel.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7
|
||
|
|
ART-H-004 Neon Dreams 1100 5 6 approved 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 Stephen Alec 424-546-9312 salec@eizel.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7
|
||
|
|
ART-H-005 Woven Stories 850 14 5 approved 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 Stephen Alec 424-546-9312 salec@eizel.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 8
|
||
|
|
ART-S-004 Blue Symmetry 950 7 5 approved 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7 Henry Martinez 602-555-0107 henry@artsupply.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 2
|
||
|
|
ART-S-005 Urban Collage 550 5 6 approved 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7 Henry Martinez 602-555-0107 henry@artsupply.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 3
|
||
|
|
ART-H-002 Earth Vessel 420 10 8 approved 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7 Henry Martinez 602-555-0107 henry@artsupply.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 8
|
||
|
|
ART-H-003 Quiet Reflection 500 7 4 pending 24-SEP-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7 Henry Martinez 602-555-0107 henry@artsupply.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7
|
||
|
|
|
||
|
|
10 rows selected.
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> --Q7: Select distinct rows using joins on 3 tables
|
||
|
|
SQL> SELECT DISTINCT iv.SKU, iv.PRODUCT_NAME,iv.BASE_PRICE,iv.LEAD_TIME_DAYS, iv.QUANTITY_AVAILABLE,
|
||
|
|
2 au.AUTHORIZATION_STATUS, au.EXPIRATION_DATE, au.AUTHORIZATION_DATE, au.FK_CONTACT_ID, au.FK_DOCUMENT_ID,
|
||
|
|
3 oi.ORDER_ITEM_ID, oi.QUANTITY, oi.UNIT_PRICE, oi.TRANSACTION_ID, oi.LINE_TOTAL
|
||
|
|
4 FROM INVENTORY iv
|
||
|
|
5 JOIN "AUTHORIZATION" au ON au.AUTHORIZATION_ID = iv.AUTHORIZATION_ID
|
||
|
|
6 JOIN ORDER_ITEMS oi ON oi.FK_INVENTORY_ID = iv.INVENTORY_ID;
|
||
|
|
no rows selected
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q8: Use GROUP BY and HAVING in a select statement using one or more tables
|
||
|
|
SQL> SELECT iv.SKU
|
||
|
|
2 FROM INVENTORY iv
|
||
|
|
3 JOIN "AUTHORIZATION" au ON au.AUTHORIZATION_ID = iv.AUTHORIZATION_ID
|
||
|
|
4 JOIN ORDER_ITEMS oi ON oi.FK_INVENTORY_ID = iv.INVENTORY_ID
|
||
|
|
5 GROUP BY iv.SKU, iv.QUANTITY_AVAILABLE HAVING iv.QUANTITY_AVAILABLE > 0;
|
||
|
|
no rows selected
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q9: Use IN clause to select data from one or more tables
|
||
|
|
SQL> SELECT * FROM PROFILE pf JOIN USERROLE ur ON pf.PROFILE_ID = ur.FK_PROFILE_ID WHERE ur.FK_ROLE_ID IN (100, 200, 300);
|
||
|
|
|
||
|
|
PROFILE_ID FK_CONTACT_ID ACTIV MODIFIED_BY CREATED_DT MODIFIED_DT FK_PROFILE_ID FK_ROLE_ID PASSWORDHASH
|
||
|
|
---------- ------------- ----- ----------- ------------------------------- ------------------------------- ------------- ---------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
1 1 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 1 100
|
||
|
|
2 2 true 2 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 2 300
|
||
|
|
3 3 true 3 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 3 300
|
||
|
|
4 4 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 4 300
|
||
|
|
5 5 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 5 300
|
||
|
|
6 6 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 200
|
||
|
|
7 7 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7 200
|
||
|
|
|
||
|
|
7 rows selected.
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q10: Select length of one column from one table (use LENGTH function)
|
||
|
|
SQL> SELECT LENGTH(ROLENAME) FROM ROLE;
|
||
|
|
|
||
|
|
LENGTH(ROLENAME)
|
||
|
|
----------------
|
||
|
|
6
|
||
|
|
8
|
||
|
|
5
|
||
|
|
8
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q11: Delete one record from one table. ROLLBACK afterwards so that the data will not be physically removed.
|
||
|
|
SQL> SAVEPOINT sp1;
|
||
|
|
|
||
|
|
Savepoint created.
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> SELECT * FROM PROFILE pf JOIN USERROLE ur ON pf.PROFILE_ID = ur.FK_PROFILE_ID WHERE ur.FK_ROLE_ID IN (100, 200, 300);
|
||
|
|
|
||
|
|
PROFILE_ID FK_CONTACT_ID ACTIV MODIFIED_BY CREATED_DT MODIFIED_DT FK_PROFILE_ID FK_ROLE_ID PASSWORDHASH
|
||
|
|
---------- ------------- ----- ----------- ------------------------------- ------------------------------- ------------- ---------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
1 1 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 1 100
|
||
|
|
2 2 true 2 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 2 300
|
||
|
|
3 3 true 3 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 3 300
|
||
|
|
4 4 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 4 300
|
||
|
|
5 5 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 5 300
|
||
|
|
6 6 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 200
|
||
|
|
7 7 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7 200
|
||
|
|
|
||
|
|
7 rows selected.
|
||
|
|
|
||
|
|
SQL> DELETE USERROLE WHERE FK_PROFILE_ID=3 AND FK_ROLE_ID=300;
|
||
|
|
|
||
|
|
1 row deleted.
|
||
|
|
|
||
|
|
SQL> SELECT * FROM PROFILE pf JOIN USERROLE ur ON pf.PROFILE_ID = ur.FK_PROFILE_ID WHERE ur.FK_ROLE_ID IN (100, 200, 300);
|
||
|
|
|
||
|
|
PROFILE_ID FK_CONTACT_ID ACTIV MODIFIED_BY CREATED_DT MODIFIED_DT FK_PROFILE_ID FK_ROLE_ID PASSWORDHASH
|
||
|
|
---------- ------------- ----- ----------- ------------------------------- ------------------------------- ------------- ---------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
1 1 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 1 100
|
||
|
|
2 2 true 2 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 2 300
|
||
|
|
4 4 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 4 300
|
||
|
|
5 5 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 5 300
|
||
|
|
6 6 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 200
|
||
|
|
7 7 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7 200
|
||
|
|
|
||
|
|
6 rows selected.
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> ROLLBACK TO SAVEPOINT sp1;
|
||
|
|
|
||
|
|
Rollback complete.
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q12: Update one record from one table. demonstrate table contents before and after the UPDATE.
|
||
|
|
SQL> SELECT * FROM PROFILE WHERE PROFILE_ID=3;
|
||
|
|
|
||
|
|
PROFILE_ID FK_CONTACT_ID ACTIV MODIFIED_BY CREATED_DT MODIFIED_DT
|
||
|
|
---------- ------------- ----- ----------- ------------------------------- -------------------------------
|
||
|
|
3 3 true 3 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM
|
||
|
|
|
||
|
|
SQL> UPDATE PROFILE SET ACTIVE = FALSE WHERE PROFILE_ID=3;
|
||
|
|
|
||
|
|
1 row updated.
|
||
|
|
|
||
|
|
SQL> SELECT * FROM PROFILE WHERE PROFILE_ID=3;
|
||
|
|
|
||
|
|
PROFILE_ID FK_CONTACT_ID ACTIV MODIFIED_BY CREATED_DT MODIFIED_DT
|
||
|
|
---------- ------------- ----- ----------- ------------------------------- -------------------------------
|
||
|
|
3 3 false 3 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> ROLLBACK TO SAVEPOINT sp1;
|
||
|
|
|
||
|
|
Rollback complete.
|
||
|
|
|
||
|
|
SQL> COMMIT;
|
||
|
|
|
||
|
|
Commit complete.
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q13: Plans show
|
||
|
|
SQL> SELECT * FROM PLAN pl
|
||
|
|
2 LEFT OUTER JOIN DOCUMENT doc ON pl.FK_DOCUMENT_ID = doc.DOCUMENT_ID;
|
||
|
|
|
||
|
|
PLAN_ID DESCRIPTION FK_DOCUMENT_ID DURATION PRICE MODIFIED_BY CREATED_DT MODIFIED_DT DOCUMENT_ID DOCUMENT_URL
|
||
|
|
---------- -------------------------------- -------------- ---------- ---------- ----------- ------------------------------- ------------------------------- ----------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
1 Spring Gala Preview 9 4 75 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 9 https://art.com/docs/plan-spring-gala-2025.pdf
|
||
|
|
2 Spring Gala Standard 9 8 120 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 9 https://art.com/docs/plan-spring-gala-2025.pdf
|
||
|
|
3 Spring Gala VIP 9 12 250 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 9 https://art.com/docs/plan-spring-gala-2025.pdf
|
||
|
|
4 Summer Exhibit Basic 10 4 50 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 10 https://art.com/docs/plan-summer-exhibit-2025.pdf
|
||
|
|
5 Summer Exhibit Plus 10 8 100 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 10 https://art.com/docs/plan-summer-exhibit-2025.pdf
|
||
|
|
6 Summer Exhibit Premium 10 16 200 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 10 https://art.com/docs/plan-summer-exhibit-2025.pdf
|
||
|
|
7 Fall Exhibition Access 11 4 60 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 11 https://art.com/docs/plan-fall-exhibition-2025.pdf
|
||
|
|
8 Fall Exhibition Full Day 11 8 110 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 11 https://art.com/docs/plan-fall-exhibition-2025.pdf
|
||
|
|
9 Fall Exhibition Weekend 11 24 180 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 11 https://art.com/docs/plan-fall-exhibition-2025.pdf
|
||
|
|
10 Annual Patron Pass 11 200 500 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 11 https://art.com/docs/plan-fall-exhibition-2025.pdf
|
||
|
|
|
||
|
|
10 rows selected.
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q14: show authorized suppliers whose expiration date is greater than 30 days from now.
|
||
|
|
SQL> SELECT * FROM VIEW_SUPPLIER vsu
|
||
|
|
2 LEFT OUTER JOIN AUTHORIZATION aut ON aut.FK_CONTACT_ID = vsu.FK_CONTACT_ID
|
||
|
|
3 WHERE aut.AUTHORIZATION_STATUS='approved' AND aut.EXPIRATION_DATE > SYSDATE+30;
|
||
|
|
|
||
|
|
FK_PROFILE_ID FK_CONTACT_ID ROLENAME ACTIV FIRST_NAME LAST_NAME AUTHORIZATION_ID FK_CONTACT_ID AUTHORIZATION_ST AUTHORIZATION_DATE EXPIRATION_DATE FK_DOCUMENT_ID MODIFIED_BY CREATED_DT MODIFIED_DT
|
||
|
|
------------- ------------- ---------------- ----- ---------------- ---------------- ---------------- ------------- ---------------- ------------------------------- ------------------------------- -------------- ----------- ------------------------------- -------------------------------
|
||
|
|
6 6 SUPPLIER true Stephen Alec 1 6 approved 28-MAR-26 02.36.34.000000000 AM 28-MAR-27 02.36.34.000000000 AM 2 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM
|
||
|
|
6 6 SUPPLIER true Stephen Alec 2 6 approved 28-MAR-26 02.36.34.000000000 AM 28-MAR-27 02.36.34.000000000 AM 3 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM
|
||
|
|
7 7 SUPPLIER true Henry Martinez 5 7 approved 28-MAR-26 02.36.34.000000000 AM 28-MAR-27 02.36.34.000000000 AM 6 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM
|
||
|
|
7 7 SUPPLIER true Henry Martinez 6 7 approved 28-MAR-26 02.36.34.000000000 AM 28-MAR-27 02.36.34.000000000 AM 7 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM
|
||
|
|
7 7 SUPPLIER true Henry Martinez 7 7 approved 28-MAR-26 02.36.34.000000000 AM 28-MAR-27 02.36.34.000000000 AM 8 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q15:
|
||
|
|
SQL> SELECT r.ROLENAME, ct.FIRST_NAME, ct.LAST_NAME, pl.DESCRIPTION FROM SUBSCRIPTION srp
|
||
|
|
2 LEFT OUTER JOIN CONTACT ct ON srp.FK_CONTACT_ID = ct.CONTACT_ID
|
||
|
|
3 LEFT OUTER JOIN PROFILE pf ON pf.FK_CONTACT_ID = ct.CONTACT_ID
|
||
|
|
4 LEFT OUTER JOIN USERROLE ur ON ur.FK_PROFILE_ID = pf.PROFILE_ID
|
||
|
|
5 LEFT OUTER JOIN ROLE r ON r.ROLE_ID = ur.FK_ROLE_ID
|
||
|
|
6 LEFT OUTER JOIN PLAN pl ON srp.FK_PLAN_ID = pl.PLAN_ID;
|
||
|
|
|
||
|
|
ROLENAME FIRST_NAME LAST_NAME DESCRIPTION
|
||
|
|
---------------- ---------------- ---------------- --------------------------------
|
||
|
|
CUSTOMER Bob Smith Spring Gala Preview
|
||
|
|
CUSTOMER Bob Smith Summer Exhibit Plus
|
||
|
|
CUSTOMER Bob Smith Fall Exhibition Weekend
|
||
|
|
CUSTOMER David Brown Spring Gala Standard
|
||
|
|
CUSTOMER David Brown Summer Exhibit Premium
|
||
|
|
CUSTOMER David Brown Annual Patron Pass
|
||
|
|
CUSTOMER Emma Davis Spring Gala VIP
|
||
|
|
CUSTOMER Emma Davis Fall Exhibition Access
|
||
|
|
CUSTOMER Frank Wilson Summer Exhibit Basic
|
||
|
|
CUSTOMER Frank Wilson Fall Exhibition Full Day
|
||
|
|
|
||
|
|
10 rows selected.
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q16:
|
||
|
|
SQL> SELECT ct.FIRST_NAME, ct.LAST_NAME, adr.STREET, z.CITY, z.STATE, z.ZIP
|
||
|
|
2 FROM ADDRESS adr
|
||
|
|
3 LEFT OUTER JOIN CONTACT ct ON adr.FK_CONTACT_ID = ct.CONTACT_ID
|
||
|
|
4 LEFT OUTER JOIN ZIP z ON adr.ZIP = z.ZIP;
|
||
|
|
|
||
|
|
FIRST_NAME LAST_NAME STREET CITY ST ZIP
|
||
|
|
---------------- ---------------- -------------------------------- ---------------- -- -----
|
||
|
|
ART SYSTEM 789 Oak St, suite 10 Atherton CA 94027
|
||
|
|
Alice Johnson 789 Oak St, suite 15 Atherton CA 94027
|
||
|
|
Karen Park 789 Oak St, suite 1 Atherton CA 94027
|
||
|
|
Jeese Taylor 789 Oak St, suite 5 Atherton CA 94027
|
||
|
|
James Lee 789 Oak St, suite 15 Atherton CA 94027
|
||
|
|
Stephen Alec 890 Venue Rd Beverly Hills CA 90210
|
||
|
|
Henry Martinez 200 Sunset Blvd Beverly Hills CA 90210
|
||
|
|
Carol White 100 Broadway New York NY 10001
|
||
|
|
Bob Smith 300 Michigan Ave Chicago IL 60601
|
||
|
|
David Brown 400 Main St Houston TX 77001
|
||
|
|
Emma Davis 500 Central Ave Phoenix AZ 85001
|
||
|
|
Frank Wilson 600 Pike St Seattle WA 98101
|
||
|
|
|
||
|
|
12 rows selected.
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q17:
|
||
|
|
SQL> SELECT COALESCE(vws.ROLENAME, vwsp.ROLENAME, vwc.ROLENAME, vwsys.ROLENAME) AS ROLENAME,
|
||
|
|
2 COALESCE(vws.ACTIVE, vwsp.ACTIVE, vwc.ACTIVE, vwsys.ACTIVE) AS ACTIVE,
|
||
|
|
3 ct.FIRST_NAME, ct.LAST_NAME, adr.STREET, z.CITY, z.STATE, z.ZIP
|
||
|
|
4 FROM ADDRESS adr
|
||
|
|
5 LEFT OUTER JOIN CONTACT ct ON adr.FK_CONTACT_ID = ct.CONTACT_ID
|
||
|
|
6 LEFT OUTER JOIN ZIP z ON adr.ZIP = z.ZIP
|
||
|
|
7 LEFT OUTER JOIN VIEW_STAFF vws ON vws.FK_CONTACT_ID = ct.CONTACT_ID
|
||
|
|
8 LEFT OUTER JOIN VIEW_SUPPLIER vwsp ON vwsp.FK_CONTACT_ID = ct.CONTACT_ID
|
||
|
|
9 LEFT OUTER JOIN VIEW_CUSTOMER vwc ON vwc.FK_CONTACT_ID = ct.CONTACT_ID
|
||
|
|
10 LEFT OUTER JOIN VIEW_SYSTEMROLE vwsys ON vwsys.FK_CONTACT_ID = ct.CONTACT_ID;
|
||
|
|
|
||
|
|
ROLENAME ACTIV FIRST_NAME LAST_NAME STREET CITY ST ZIP
|
||
|
|
---------------- ----- ---------------- ---------------- -------------------------------- ---------------- -- -----
|
||
|
|
CUSTOMER false Carol White 100 Broadway New York NY 10001
|
||
|
|
CUSTOMER true Bob Smith 300 Michigan Ave Chicago IL 60601
|
||
|
|
CUSTOMER true David Brown 400 Main St Houston TX 77001
|
||
|
|
CUSTOMER true Emma Davis 500 Central Ave Phoenix AZ 85001
|
||
|
|
CUSTOMER true Frank Wilson 600 Pike St Seattle WA 98101
|
||
|
|
SUPPLIER true Stephen Alec 890 Venue Rd Beverly Hills CA 90210
|
||
|
|
SUPPLIER true Henry Martinez 200 Sunset Blvd Beverly Hills CA 90210
|
||
|
|
SYSTEM true ART SYSTEM 789 Oak St, suite 10 Atherton CA 94027
|
||
|
|
STAFF true Alice Johnson 789 Oak St, suite 15 Atherton CA 94027
|
||
|
|
STAFF true Jeese Taylor 789 Oak St, suite 5 Atherton CA 94027
|
||
|
|
STAFF true James Lee 789 Oak St, suite 15 Atherton CA 94027
|
||
|
|
STAFF true Karen Park 789 Oak St, suite 1 Atherton CA 94027
|
||
|
|
|
||
|
|
12 rows selected.
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q18: Verify rows in tables
|
||
|
|
SQL> SELECT 'CONTACT' AS TABLE_NAME, COUNT(*) AS ROW_COUNT FROM CONTACT UNION ALL
|
||
|
|
2 SELECT 'ZIP', COUNT(*) FROM ZIP UNION ALL
|
||
|
|
3 SELECT 'ADDRESS', COUNT(*) FROM ADDRESS UNION ALL
|
||
|
|
4 SELECT 'ROLE', COUNT(*) FROM ROLE UNION ALL
|
||
|
|
5 SELECT 'PROFILE', COUNT(*) FROM PROFILE UNION ALL
|
||
|
|
6 SELECT 'USERROLE', COUNT(*) FROM USERROLE UNION ALL
|
||
|
|
7 SELECT 'STAFF', COUNT(*) FROM STAFF UNION ALL
|
||
|
|
8 SELECT 'DOCUMENT', COUNT(*) FROM DOCUMENT UNION ALL
|
||
|
|
9 SELECT 'AUTHORIZATION', COUNT(*) FROM AUTHORIZATION UNION ALL
|
||
|
|
10 SELECT 'PLAN', COUNT(*) FROM PLAN UNION ALL
|
||
|
|
11 SELECT 'INVENTORY', COUNT(*) FROM INVENTORY UNION ALL
|
||
|
|
12 SELECT 'EXHIBIT', COUNT(*) FROM EXHIBIT UNION ALL
|
||
|
|
13 SELECT 'ORDER_ITEMS', COUNT(*) FROM ORDER_ITEMS UNION ALL
|
||
|
|
14 SELECT 'INVOICE', COUNT(*) FROM INVOICE UNION ALL
|
||
|
|
15 SELECT 'SUBSCRIPTION', COUNT(*) FROM SUBSCRIPTION UNION ALL
|
||
|
|
16 SELECT 'TASK_HISTORY', COUNT(*) FROM TASK_HISTORY
|
||
|
|
17 ORDER BY TABLE_NAME;
|
||
|
|
|
||
|
|
TABLE_NAME ROW_COUNT
|
||
|
|
------------- ----------
|
||
|
|
ADDRESS 12
|
||
|
|
AUTHORIZATION 9
|
||
|
|
CONTACT 12
|
||
|
|
DOCUMENT 10
|
||
|
|
EXHIBIT 10
|
||
|
|
INVENTORY 10
|
||
|
|
INVOICE 10
|
||
|
|
ORDER_ITEMS 0
|
||
|
|
PLAN 10
|
||
|
|
PROFILE 12
|
||
|
|
ROLE 4
|
||
|
|
STAFF 4
|
||
|
|
SUBSCRIPTION 10
|
||
|
|
TASK_HISTORY 0
|
||
|
|
USERROLE 12
|
||
|
|
ZIP 10
|
||
|
|
|
||
|
|
16 rows selected.
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q19: rough check uniqueness: across tables columns
|
||
|
|
SQL> SELECT RPAD(idx.TABLE_NAME,15,' '), COUNT( col.column_name ), COUNT( col.TABLE_NAME )
|
||
|
|
2 FROM user_indexes idx
|
||
|
|
3 JOIN user_ind_columns col ON ( col.index_name = idx.index_name )
|
||
|
|
4 WHERE idx.uniqueness = 'UNIQUE'
|
||
|
|
5 GROUP BY idx.TABLE_NAME;
|
||
|
|
|
||
|
|
RPAD(IDX.TABLE_ COUNT(COL.COLUMN_NAME) COUNT(COL.TABLE_NAME)
|
||
|
|
--------------- ---------------------- ---------------------
|
||
|
|
CONTACT 1 1
|
||
|
|
ZIP 1 1
|
||
|
|
ADDRESS 2 2
|
||
|
|
ROLE 1 1
|
||
|
|
PROFILE 1 1
|
||
|
|
USERROLE 2 2
|
||
|
|
STAFF 1 1
|
||
|
|
DOCUMENT 1 1
|
||
|
|
PLAN 1 1
|
||
|
|
SUBSCRIPTION 2 2
|
||
|
|
INVOICE 1 1
|
||
|
|
AUTHORIZATION 1 1
|
||
|
|
INVENTORY 3 3
|
||
|
|
EXHIBIT 1 1
|
||
|
|
ORDER_ITEMS 1 1
|
||
|
|
TASK_HISTORY 1 1
|
||
|
|
|
||
|
|
16 rows selected.
|
||
|
|
|
||
|
|
SQL>
|
||
|
|
SQL> -- Q20: Likely weak entity tables;
|
||
|
|
SQL> SELECT pk.table_name
|
||
|
|
2 -- LISTAGG(pk.column_name, ', ') WITHIN GROUP (ORDER BY pk.position) AS primary_key_columns,
|
||
|
|
3 -- LISTAGG(fk.column_name, ', ') WITHIN GROUP (ORDER BY fk.position) AS foreign_key_columns
|
||
|
|
4 FROM all_cons_columns pk
|
||
|
|
5 JOIN all_constraints pkc
|
||
|
|
6 ON pk.constraint_name = pkc.constraint_name
|
||
|
|
7 AND pk.owner = pkc.owner
|
||
|
|
8 JOIN all_cons_columns fk
|
||
|
|
9 ON pk.table_name = fk.table_name
|
||
|
|
10 AND pk.owner = fk.owner
|
||
|
|
11 JOIN all_constraints fkc
|
||
|
|
12 ON fk.constraint_name = fkc.constraint_name
|
||
|
|
13 AND fk.owner = fkc.owner
|
||
|
|
14 WHERE pkc.constraint_type = 'P' -- Primary key
|
||
|
|
15 AND fkc.constraint_type = 'R' -- Foreign key
|
||
|
|
16 AND pk.column_name = fk.column_name -- PK column is also FK column
|
||
|
|
17 AND pk.owner = USER
|
||
|
|
18 GROUP BY pk.table_name
|
||
|
|
19 ORDER BY pk.table_name;
|
||
|
|
|
||
|
|
TABLE_NAME
|
||
|
|
--------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
ADDRESS
|
||
|
|
STAFF
|
||
|
|
SUBSCRIPTION
|
||
|
|
USERROLE
|
||
|
|
|
||
|
|
SQL> -- CREATE SCHEMA
|
||
|
|
SQL>
|
||
|
|
SQL> /
|