Datenbank Oracle

Oracle Database (Oracle Database Server) ist eine Datenbankmanagementsystem-Software der Firma Oracle. Es können sowohl relationale Daten als auch objektrelationale Daten gespeichert werden.

Create Table


DROP TABLE lotto;
CREATE TABLE lotto (
  ID    NUMBER NOT NULL,
  Tag   NUMBER NOT NULL, 
  Monat NUMBER NOT NULL, 
  Jahr  NUMBER NOT NULL, 
  Zahl1 NUMBER NOT NULL, 
  Zahl2 NUMBER NOT NULL, 
  Zahl3 NUMBER NOT NULL, 
  Zahl4 NUMBER NOT NULL, 
  Zahl5 NUMBER NOT NULL, 
  Zahl6 NUMBER NOT NULL, 
  Superzahl  NUMBER, 
  ErstelltAm DATE DEFAULT CURRENT_TIMESTAMP NOT NULL,
  CONSTRAINT lotto_PK PRIMARY KEY (ID)
);
/
  
CREATE SEQUENCE lotto_ID_SEQ INCREMENT BY 1 START WITH 1;
/

CREATE OR REPLACE TRIGGER lotto_ID_INS_TRG BEFORE INSERT ON lotto
       REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW
BEGIN
	SELECT lotto_ID_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
/
	

Create Trigger


CREATE OR REPLACE TRIGGER lotto_tr_count
BEFORE INSERT OR UPDATE
ON lotto
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
begin
	-- do whatever you want
end;
/   
	

Das aktuelle Datum im deutschen Format ausgeben.


SELECT TO_CHAR(sysdate, 'dd.mm.yyyy HH24:MI:SS') as Datum FROM DUAL;

DATUM
-------------------
28.08.2011 17:12:38
	

Einen Datumsstring in einen Date Type Parsen.


SELECT TO_DATE('28.08.2011', 'dd.mm.yyyy') as Datum FROM dual;

DATUM
--------
28.08.11
	

Aus einem Datum den Tag, den Monat und das Jahr als Number Type Parsen.


SELECT 
  to_number(TO_CHAR(sysdate,'DD')) as "Tag als Zahl" 
, to_number(TO_CHAR(sysdate,'MM')) as "Monat als Zahl" 
, to_number(TO_CHAR(sysdate,'YYYY')) as "Jahr als Zahl" 
FROM dual;

Tag als Zahl Monat als Zahl Jahr als Zahl
------------ -------------- -------------
          28              8          2011
	

Mit dem aktuellen Datum den nächsten Tag ermitteln.


SELECT 
  TO_CHAR(sysdate, 'dd.mm.yyyy HH24:MI:SS') as Heute
, TO_CHAR(sysdate + 1, 'dd.mm.yyyy HH24:MI:SS') as Morgen 
FROM DUAL;

HEUTE               MORGEN
------------------- -------------------
28.08.2011 17:16:50 29.08.2011 17:16:50
	

Ein vordefiniertes Intervall von Zahlen ausgehen..


SELECT LEVEL "Zahlen 4-10" FROM dual WHERE LEVEL < 11 AND LEVEL > 4 connect BY LEVEL < 11;

Zahlen 4-10
-----------
          5
          6
          7
          8
          9
         10
	

Ein vordefiniertes Intervall von Jahren ausgehen.


SELECT Jahr
FROM (
	SELECT to_number(to_char(sysdate,'YYYY')) - LEVEL + 1 Jahr
	FROM DUAL
	connect BY LEVEL <= to_number(to_char(sysdate,'YYYY'))- 1989    
) 
WHERE Jahr > 2004
UNION
SELECT Jahr
FROM (
    SELECT to_number(to_char(sysdate + 365,'YYYY')) Jahr FROM dual 
)
ORDER BY 1 desc;

     JAHR
---------
     2011
     2010
     2009
     2008
     2007
     2006
     2005
	

Eine Ergebnismenge als Komma-separierte Liste ausgeben


SELECT ENAME as Namen FROM emp WHERE ENAME LIKE 'M%' OR ENAME LIKE 'S%' ORDER BY ENAME;

Namen
------
MARTIN
MILLER
SCOTT
SMITH

SELECT SUBSTR (namen, 2) as "Namen-Liste"
FROM (
	SELECT SYS_CONNECT_BY_PATH (ENAME, ',') namen, r
	FROM (SELECT 
	 ROWNUM as ID
	, ENAME                     
	, RANK () OVER (ORDER BY ROWID DESC) r
	FROM emp
	WHERE ENAME LIKE 'M%'
	OR ENAME LIKE 'S%'
	ORDER BY ENAME
	)
START WITH ID = 1
CONNECT BY PRIOR ID = ID - 1)
WHERE r = 1;
  
Namen-Liste
-------------------------
SCOTT,SMITH,MARTIN,MILLER
	




Top


Example
Sitemap Kontakt Impressum