Nützliche SQLs
Allgemeines
Tabellen und Views im aktuellen Schema anzeigen
-
SELECT * FROM cat;
Alle Schemas und deren Besitzer abfragen
-
SELECT schema_name,schema_owner FROM exa_schemas;
Aktuell geöffnetes Schema und angemeldeten Benutzer anzeigen
-
SELECT CURRENT_SCHEMA, CURRENT_USER FROM dual;
Definition eines Views im aktuellen Schema abfragen
-
SELECT view_name, view_text FROM exa_all_views WHERE view_name='MY_VIEW_NAME' AND view_schema=CURRENT_SCHEMA ;
Arbeiten mit Tabellen
Evtl. existierende Tabelle droppen und neue anlegen
-
CREATE OR REPLACE TABLE …
Tabelle ausleeren
-
TRUNCATE TABLE mytab;
Bitte beachten Sie, dass TRUNCATE TABLE dem Transaktionsmanagementsystem von EXASolution unterliegt: Die Änderung wird erst beim Committed persistent.
Tabelle umbenennen
-
RENAME name1 TO name2;
Der RENAME-Befehl kann auf alle Datenbankobjekte ausser Benutzer und Rollen angewandt werden:
- Schema
- Table
- View
- Function
- Skript
Rechteverwaltung (DCL)
Anlegen eines neuen Benutzers, Einrichtung eines Schema mit demselben Namen, in dem der Benutzer alles darf
-
CREATE USER newone IDENTIFIED BY newpass; CREATE SCHEMA newone; ALTER SCHEMA newone CHANGE OWNER newone; GRANT CREATE TABLE, CREATE VIEW, CREATE FUNCTION, CREATE SCRIPT TO newone; GRANT CREATE SESSION TO newone;
GRANT Befehle erzeugen
-
- SELECT 'GRANT select ON '||root_name||'.'||object_name||' TO newone;'
- FROM
- exa_all_objects
- WHERE
- root_name='EXAMPLES' AND
- root_type='SCHEMA' AND
- object_type IN ('TABLE','VIEW')
- ;
Mit der oben dargestellten Query können Sie Grant-Befehle für alle Tabellen und Views in einem bestimmten Schema (hier EXAMPLES) erzeugen, mit denen das Select-Privileg dem Benutzer „newone“ gewährt werden kann.
-
GRANT SELECT ON EXAMPLES.CITIES TO newone; GRANT SELECT ON EXAMPLES.COUNTRIES TO newone; GRANT SELECT ON EXAMPLES.CUSTOMERS TO newone; GRANT SELECT ON EXAMPLES.CUSTOMER_MOVES TO newone; GRANT SELECT ON EXAMPLES.ITEMS TO newone; GRANT SELECT ON EXAMPLES.NEW_CITIES TO newone; GRANT SELECT ON EXAMPLES.NEW_CUSTOMERS TO newone; GRANT SELECT ON EXAMPLES.ORDERS TO newone; GRANT SELECT ON EXAMPLES.PAYMENTS TO newone; GRANT SELECT ON EXAMPLES.PRODUCTS TO newone; GRANT SELECT ON EXAMPLES.RETURNED_ITEMS TO newone; GRANT SELECT ON EXAMPLES.V_CUSTOMERS TO newone; GRANT SELECT ON EXAMPLES.V_CUSTOMER_RAITING TO newone; GRANT SELECT ON EXAMPLES.V_ORDERS TO newone; GRANT SELECT ON EXAMPLES.V_PAYMENTS TO newone; GRANT SELECT ON EXAMPLES.V_PRODUCT_ORDERING TO newone; GRANT SELECT ON EXAMPLES.V_PRODUCT_RATING_MONTHLY TO newone; GRANT SELECT ON EXAMPLES.V_RETURNS TO newone; GRANT SELECT ON EXAMPLES.V_TRANSACTIONS TO newone;
Arbeiten mit Datumangaben
Der DATE Datentyp speichert ein Datum mit den Informationen Tag, Monat und Jahr (vierstellig). Akzeptiert werden nur gültige Daten im Bereich 0000-01-01 bis 9999-12-31. Es ist nicht möglich, Teilfelder (Tag/Monat) auszulassen oder auf ungültige Werte (0, >12/31) zu setzen. Damit ist ein Datum entweder als ganzes gültig oder ein Nullwert. Werte wie '2009-01-00' oder '2009-02-30' sind nicht erlaubt und verursachen eine 'invalid date value' data-exception.
Der TIMESTAMP Datentyp entspricht vom Verhalten her dem DATE Datentyp, ist aber um eine Uhrzeit (Stunden, Minuten, Sekunden, Millisekunden) ergänzt. Der Gültigkeitsbereich entspricht daher [0000-01-01 00:00:00.000; 9999-12-31 23:59:59.999]. Ungültige Werte im Zeitbereich werden mit 'invalid time value' quittiert.
Char nach Date konvertieren und den nächsten Tag berechnen
-
SELECT TO_DATE('20070504','yyyymmdd')+1 FROM dual;
Den ersten und den letzten Tag eines Monats (hier des aktuellen Monats) berechnen
-
SELECT TRUNC(SYSDATE, 'MM') AS first_day, ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 1) - 1 AS last_day FROM dual;















