Presentation is loading. Please wait.

Presentation is loading. Please wait.

Nogle udpluk af mine ’SQL-favoritter’ af Dan Foldager

Similar presentations


Presentation on theme: "Nogle udpluk af mine ’SQL-favoritter’ af Dan Foldager"— Presentation transcript:

1 Nogle udpluk af mine ’SQL-favoritter’ af Dan Foldager
14. September 2010

2

3 AGENDA Database Nye ord og begreber og meget andet.. Data retrieval
Pivot Hvorfor SQL ? Mere info.. Links

4 Referential integrity Journaling Materialized query table
Database Nye ord Fra DDS til DDL XML Large objects Referential integrity Journaling Materialized query table CREATE TABLE AS (SELECT fra ’data-dictionary’) field-reference-file System i Navigator kan danne SQL udfra DDS

5 Database – nye ord Felt = kolonne (column) Record = række (row)
Library = samling (collection), schema Index = index / view Datatypes: beløbsfelt = Money !!! Large objects: - clob (character large object) - blob (Binary large object) - XML Cascade (on delete) Referential constraint UDF = user defined function MQT = Materialized Query Table Null ? Datatyper…. Lav liste (matrix m release-numre)

6 Database - fra DDS til DDL (1 af 3)
System i Navigator Fra DDS til SQL via få klik… OBS: Editcode / editword mm.

7 Database - fra DDS til DDL (2 af 3)
- SQL-fejl (editcode, VALUES mm) CREATE TABLE LABEL ON TABLE HER ER NOGET AT PRØVE.. (lille mand)

8 Database - fra DDS til DDL (3 af 3)
CREATE TABLE mylib/myfile AS (SELECT RNO1, RNO2, RNAM, ..., RSTAC, REDAT, REUSR, RMDAT, RMUSR FROM *libl/AVDTADIC) WITH NO DATA Generelt: CREATE TABLE lib/table AS (SELECT field1, field2, field7, field22, … FROM lib/fieldref )

9 Hvordan ? Library -> files -> !!! Sourcecode (type = SQL)
RUNSQLSTM executes the sourcemember RUNSQLSTM (ikke compile – forklar [interpretiv, dvs ’execute’))

10 Ny applikation (1 af 4) CRTLIB gsgruppen : CREATE SCHEMA gsgruppen or CREATE COLLECTION gsgruppen System i Navigator Skemaer – SCHEMA – COLLECTION !!! OBS: h.klik for at danne din liste i træet..

11 Ny applikation.. (2 af 4) …lad os ombryde til læsbart !!
CRTFILE master : CREATE TABLE gsgruppen/master (medlnr INT NOT NULL WITH DEFAULT, navn VARCHAR (50) NOT NULL WITH DEFAULT, inddat DATE , uddat DATE, VARCHAR ( 100) NOT NULL WITH DEFAULT, tekst VARCHAR (1024) NOT NULL WITH DEFAULT, firma VARCHAR (50) NOT NULL WITH DEFAULT, CONSTRAINT medlnr_pk PRIMARY KEY (medlnr),CONSTRAINT medlnr_value CHECK (medlnr > 0 )) CRTFILE trans : CREATE TABLE gsgruppen/trans (faktNR INT NOT NULL WITH DEFAULT, trndat DATE , medlnr INT NOT NULL WITH DEFAULT, trntxt VARCHAR (100) NOT NULL WITH DEFAULT, amount DECIMAL (9,2) NOT NULL WITH DEFAULT, CONSTRAINT faktnr_pk PRIMARY KEY (faktnr), CONSTRAINT faktnr_value CHECK (faktnr > ), CONSTRAINT medlnr_fk FOREIGN KEY(medlnr) REFERENCES gsgruppen/master(medlnr) ON DELETE CASCADE ON UPDATE RESTRICT) TODO… …lad os ombryde til læsbart !!

12 Ny applikation.. (2 af 4) CRTFILE master : CRTFILE trans : TODO…
CREATE TABLE gsgruppen/master ( medlnr INT NOT NULL WITH DEFAULT, navn VARCHAR (50) NOT NULL WITH DEFAULT, inddat DATE, uddat DATE, VARCHAR ( 100) NOT NULL WITH DEFAULT, tekst VARCHAR (1024) NOT NULL WITH DEFAULT, firma VARCHAR (50) NOT NULL WITH DEFAULT, CONSTRAINT medlnr_pk PRIMARY KEY (medlnr), CONSTRAINT medlnr_value CHECK (medlnr > 0 )) CRTFILE trans : CREATE TABLE gsgruppen/trans ( faktNR INT NOT NULL WITH DEFAULT, trndat DATE , medlnr INT NOT NULL WITH DEFAULT, trntxt VARCHAR (100) NOT NULL WITH DEFAULT, amount DECIMAL (9,2) NOT NULL WITH DEFAULT, CONSTRAINT faktnr_pk PRIMARY KEY (faktnr), CONSTRAINT faktnr_value CHECK (faktnr > ), CONSTRAINT medlnr_fk FOREIGN KEY(medlnr) REFERENCES gsgruppen/master(medlnr) ON DELETE CASCADE ON UPDATE RESTRICT ) TODO…

13 Ny applikation (3 af 4) TODO…

14 Ny applikation.. (4 af 4) Data… : TODO…
INSERT INTO gsgruppen/master VALUES(NULL, ’Dan’, ’Foldager’,….) INSERT INTO gsgruppen/trans ….????????? TODO…

15 Nogle tips .. Ret stavefejl i feltoverskrift Dokumentation…
LABEL ON COLUMN PALPRIS.PRP1UD IS 'Pris /1 paller ud –’ Dokumentation… COMMENT ON COLUMN … [mulighed for 2000 char dokumentation] SQL function Labels : - virker også på DDS-beskrevne filer - COMMENT ON COLUMN FLDREF ( EntryDate IS ‘Date of record creation. Date is set automatically by the syst em.’, EntryUser IS ‘User-ID for person who entered this record. Rows may exist whe re special values starting with an asterisk (”*”) are used, fx ”*CONVERT” an d ”*IMPORT”.’, UpdateDate IS ‘Date of latest record update. Date is set automatically by the system (trigger-pgm). Field is null at record entry to the table.’, STATUS IS ‘Record status field. Defaults to ”A” (Active) when record is created. May be set to ”I” (Inactive), ”D” (Deleted) or ”*” (may be erase d.’ ); SQL i CL ?

16 Data retrieval SELECT…. Pivot
SELECT (CURRENT DATE - 3 DAYS), davno from avadfo_9/avdta

17 Nogle tips Pivot !! (1 af 5) OPGAVE: Vis avance pr varegruppe over tid. SELECT ssvagr, ssdato, ssbelb - sskost AS avance FROM qqq/saltrans

18 Nogle tips Pivot !! (2 af 5) SELECT ssvagr, ssdato, ssbelb - sskost AS avance FROM qqq/saltrans SELECT ssvagr, year(ssdato) as YEAR, ssbelb - sskost AS avance FROM qqq/saltrans QUARTER – WEEKNO – YEAR fra dato-felt

19 Nogle tips Pivot !! (3 af 5) SELECT ssvagr, ssdato, ssbelb - sskost AS avance FROM qqq/saltrans SELECT ssvagr, year(ssdato) as YEAR, ssbelb - sskost AS avance FROM qqq/saltrans SELECT ssvagr, year(ssdato) as YEAR, sum(ssbelb - sskost) AS avance FROM qqq/saltrans GROUP BY ssvagr, year(ssdato) ORDER BY ssvagr, year(ssdato)

20 Nogle tips Pivot !! (4 af 5) SELECT ssvagr, year(ssdato) as YEAR, sum(ssbelb - sskost) AS avance FROM qqq/saltrans GROUP BY ssvagr, year(ssdato) ORDER BY ssvagr, year(ssdato) select ssvagr, sum(case when year(ssdato) = 2006 then (ssbelb - sskost) end) as "2006", sum(case when year(ssdato) = 2007 then (ssbelb - sskost) end) as "2007", sum(case when year(ssdato) = 2008 then (ssbelb - sskost) end) as "2008", sum(case when year(ssdato) = 2009 then (ssbelb - sskost) end) as "2009" from qqq/saltrans where year(ssdato) >= 2006 GROUP BY ssvagr ORDER BY ssvagr

21 Nogle tips .. Pivot (5 af 5) Use System i Navigator select ssvagr,
sum(case when year(ssdato) = 2006 then (ssbelb - sskost) end) as "2006", sum(case when year(ssdato) = 2007 then (ssbelb - sskost) end) as "2007", sum(case when year(ssdato) = 2008 then (ssbelb - sskost) end) as "2008", sum(case when year(ssdato) = 2009 then (ssbelb - sskost) end) as "2009" from qqq/saltrans where year(ssdato) >= 2006 GROUP BY ssvagr ORDER BY ssvagr Use System i Navigator

22 Hvorfor SQL ? Move databaselogic to database level
Lob og xml data ikke muligt i DDS Token !!!!<<<<<<<obs Date calculation Cascading (..on delete) Pivot Cross platform impact… Use STRQM i stedet for WRKQRY !!!

23 Some tips .. SQL i CL C/free
Exec sql Select …. INTO :aaaaa FROM where :abcde = inputknr; (e løsning hos DFS) /end-free

24 Mere info.. Links: http://en.wikipedia.org/wiki/SQL#Language_elements

25 SLUT


Download ppt "Nogle udpluk af mine ’SQL-favoritter’ af Dan Foldager"

Similar presentations


Ads by Google