9. Anonyma block 10. Clean code och läsbarhet 11. Variabeltyper och variabeldeklaration 12. Olika loopar: Basic, while och for loop

Relevanta dokument
1. PLSQL 2 2. Select into

1. SQL DDL (Data Definition Language) 2. Skapa tabell

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

9. :new och :old -värden 10. Triggerns olika delar 11. Olika typer av triggrar 12. Kodexempel. Pär Douhan,

Exempel på ett litet Ada-program

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

1. SQL 2. Utsökningar mot flera tabeller. 4. IN-operatorn 5. Join 6. Kartesisk produkt 7. Tabellalias

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt

Vyer, Prepared Statements, Triggers

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Sample exam questions. Database exam TIG058

1. SQL DML (Data Manipulation Language) 2. Lägga till data. 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7.

Pascal... Pascal. Pascal... Pascal...

Klassdeklaration. Metoddeklaration. Parameteröverföring

Övningar i SQL. SQLAccess.doc Ove Lundgren

SQL, nästlade delfrågor Nästlade delfrågor. En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga.

Structured query language (SQL)

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

WCMS-15, Webbutvecklare CMS

9. Between 10. Group by 11. Aggregatfunktionerna max, min, sum och avg 12. Nästlade sökningar

2. Objekt, operatorer och integritetsregler 3. Databasobjekt

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Grunderna i SQL del 1

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Design och underhåll av databaser

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Imperativ programmering. Föreläsning 2

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

DD1314 Programmeringsteknik

Databasutveckling Introduktion till SQL och TSQL

Föreläsning 2: Översikt över ett databassystem

Introduktion till frågespråket SQL (v0.91)

Användarhandledning Version 1.2

Informationssystem och Databasteknik, 2I-1100 HT2001. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3.

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Programmering A. Johan Eliasson

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation

TDDE10 TDDE11, 725G90. Gemensam kurswebsida på:

Innehåll Programability Del 2

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

DVA234 Databaser. Dag Nyström, Introduktion till databaser och MS SQL Server

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

INTRODUKTION TILL JDBC

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra.

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Starta MySQL Query Browser

Tentamen Grundläggande programmering

SMD 134 Objektorienterad programmering

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Karlstads Universitet, Datavetenskap 1

Nya webbservern Dvwebb.mah.se

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Föreläsning 3: Booleans, if, switch

Databaser och. SQL, utsökningar mot flera tabeller TENTA. # radnr (#) studnr (#) kursnr * tentadatum * betyg

Databasspråket SQL - online.

Frågespråk och SQL. nikos dimitrakas rum 2423

Transaktioner. 1. Transaktioner 2. Samtidighet ( concurrency ) och lås. 3. Deadlock. Kap. 17. Informatik B: Databashantering med SQL Server

Föreläsning 6: Introduktion av listor

F4. programmeringsteknik och Matlab

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Vad är SQL? Introduktion till SQL

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

TDIU01 - Programmering i C++, grundkurs

Programmeringsteknik I

VAD GÖR DU / VEM ÄR DU?

Föreläsning 2 Programmeringsteknik och C DD1316

Idag. 1. Från modell till databasstruktur. 2. Prata med databaser (frågepsråket SQL)

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner

Från verklighet via modell till databas. Idag. Testa reglerna på varuhusmodellen. Från verklighet via modell till databas

Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem.

Parameteröverföring. Exempel. Exempel. Metodkropp

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Databasspråket SQL - online.

Databasspråket SQL - online.

Visual Basic, en snabbgenomgång

3. Dynamiska webbplatser, 20 Yhp (4 v)

TDDC77 Objektorienterad Programmering

Structured Query Language (SQL)

Databaser och Datamodellering Foreläsning IV

VHDL och laborationer i digitalteknik

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

D1. Create Domain TEXT30 char(30) Default INGET VÄRDE! ;

Kursplan. IK1051 Behörighetsgivande kurs i databassystem för masterprogram i Business Intelligence. 7,5 högskolepoäng, Grundnivå 1

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Winstrand Development

Transkript:

FÖ 10: Databaskursen 1. Vyer (Views) 2. Vyer och dataåtkomst 3. Olika typer av vyer 4. Fördelar med vyer 5. Syntax för att skapa vyer 6. Enkla och komplexa vyer 7. Vyer och constraints 8. PLSQL - introduktion i 9. Anonyma block 10. Clean code och läsbarhet 11. Variabeltyper och variabeldeklaration 12. Olika loopar: Basic, while och for loop 1 Pär Douhan, pdo@du.se

Vyer Vi börjar med vyer 2

Vyer - Views En vy är en logisk struktur som baseras på en tabell eller en annan vy. En vy innehåller ingen data. En vy kan ses som ett fönster, genom vilket vi kan söka eller förändra data. En vy är en skräddarsydd presentation av data i data- basen. En vy är en lagrad SQL-fråga. 3

Vyer och dataåtkomst t Vi kommer åt data via en vy precis som vi kommer åt data via en vanlig tabell. Vi ställer SQL-frågor på samma sätt mot en vy som mot en tabell. Vi kan göra: -select - join och nästlade frågor - Ibland även DML (insert, update, delete) Vi kan alltså betrakta en vy som en virtuell tabell. virtuell = skenbar 4

Olika typer av vyer Det finns fyra olika typer av vyer i Oracle: 1. Relational Views på kursen 2. Inline Views - vyer som definieras "on the fly" när de används i SQL- koden. 3. Materialized Views - Tar plats, resultatet cachas och prestandan ökar vid många rader. 4. ObjectViews - vyer mot objekttyper. 5

Varför vyer? Vyer används för att: 1. Öka prestandan 2. Öka säkerheten 3. Dölja komplexiteten (högre abstraktion) 4. Anpassa presentation av data En relationsvy: -Tar upp lite plats (Vydefinitionen inkl. SQL-frågan) -Vydefinitionen lagras i data dictionary (tablespace system) - Kan skapas utifrån en/flera bastabeller, eller andra vyer 6

Syntax Syntax för att skapa en vy create [or replace] view <view_name> as <query>; Exempel: create view kund_vy as select fnamn,enamn,mobilnr from kund; Exempel med kolumnalias: li create view kund_vy( förnamn,efternamn,mobilnummer) as select fnamn,enamn,mobilnr from kund; 7

Mer om vyer Ändra vydefinition or replace Skapar en ny vy och kastar den gamla Kasta bort vyer drop view kund_vy; Metadata Hittar vi i data dictionary vyn user_views. För att se vilka kolumner som finns i user_views: desc user_views; 8

Rättigheter t Vi behöver rättigheter för att skapa vyer Rättigheter för att göra select på de bastabeller eller vyer som vyn skall skapas från: grant select on table_name to user; grant select on view_name to user; Rättigheter att skapa själva vyobjektet: grant create view to user; 9

Relational l views Två olika typer av relationsvyer: 1. Enkla vyer 2. Komplexa vyer Den huvudsakliga skillnaden är relaterad till DML-operationer. 10

Simple view En enkel vy: Visar data från en tabell Innehåller inga funktioner Inga grupper av data Tillåter DML operationer 11

Complex view En komplex vy: Kan visa data från flera tabeller Kan innehålla funktioner Kan innehålla grupper av data Tillåter inte alltid DML operationer: Det beror på hur komplex den är! 12

Vyer och constraints t with check option Vyn som skapas har en begränsning som ser till att användare bara kan göra insert och update på rader som man kan se när man söker i vyn. create or replace view personalvy as select fnamn,enamn,mobilnr,lön lö from personal where avdnr = 12 Vi kan bara göra DML för de som jobbar with check option; på avdelning 12. with read only Ser till att det bara går att läsa data. DML-operationer är förbjudet! create or replace view personalvy as select fnamn,enamn,mobilnr,lön from personal with read only; 13

Validate? Validate = bekräfta valid = giltig invalid = ogiltig En vy kan vara valid eller invalid. När vi skapar en vy, så kommer DBMS att verifiera att SQL-frågan är giltig. Om vi sedan går in och ändrar i bastabellen kan detta medföra att SQL-frågan blir ogiltig, d.v.s. vi får en vy vars status är ogiltig (invalid). 14

Force Vi kan använda force-kommandot för att tvinga DBMS att acceptera vår vydefinition, oavsett om SQL-frågan är giltig eller inte. Detta tillåter oss att skapa en vy med status = invalid create force view invalid_vy as select * from tabell_som_inte_finns; Warning: View created with compilation errors. Varför används det här? 15

PLSQL PLSQL: en introduktion 16

Introduktion till Oracle PLSQL Vd Vad är PL/SQL? PL/SQL = "Oracle's Procedural Language extension to SQL". PL/SQL-språkets syntax, struktur och datatyper liknar ADA. PL/SQL körs i en VM (Virtual Machine) precis som Java. Båda finns i Oracle. Oracle Server Oracle JVM Oracle PLSQL VM 17

Java eller PL/SQL? Java eller PL/SQL i Oracle? Använd Java när det inte går att använda PL/SQL. Skicka email med bilagor? - PL/SQL = svårt! - Java = lätt! Loopa igenom rader i en databastabell och göra något! - PL/SQL = lätt! -Java = svårt! "If it touch data PL/SQL" T. Kyte 18

Case sensitive PL/SQL är inte case sensitive. DecLAre variabeldeklareationer; BEGIN vad programmet skall göra; -- kommentar på en rad. Ignoreras av kompilatorn. anonymt PL/SQL-block /* kommentarer till koden på flera rader. */ end; / 19

Olika PL/SQL block Två olika typer av PL/SQL block 1. Anonyma block - Icke namngivna block. begin dbms_output.put_line('hello World!'); end; / SQL-developer, F5 eller Run Script. 2. Namngivna block - Lagrade procedurer, funktioner, triggrar och paktet. 20

Clean code Clean code Easy and Simple! 1. Easy to read 2. Easy to follow 3. Easy to understand 4. Easy to modify 5. Easy to test 6. Works correctly Tänk på att skriva bra PLSQL kod! Att koden ska fungera korrekt inbegriper att den är smart konstruerad och optimerad. Ett exempel på smart kod är att utforma sin logik så att vi förflyttar så lite data som möjligt över nätverket! Data lives forever! 21

Läsbarhet Mikaela Hedbergs "rensa-script" " declare cursor c_objects is select object_name, object_type from user_objects; cursor c_constraints is select owner, constraint_name, constraint_type, table_name from user_constraints where constraint_name not like upper('bin%'); v_object_name varchar2(100); v_object_type varchar2(100); begin for c in c_constraints loop execute immediate 'alter table ' c.table_name ' drop constraint ' c.constraint_name; end loop; for x in c_objects loop if upper(x.object_type) not in ('PACKAGE BODY') then execute immediate 'drop ' x.object_type ' ' x.object_name; end if; end loop; end; / 22

Läsbarhet Med syntax highlightinghli h i declare cursor c_objects is select object_name, object_type t from user_objects; cursor c_constraints is select owner, constraint_name, constraint_type, table_name from user_constraints where constraint_name not like upper('bin%'); v_object_name varchar2(100); v_object_type varchar2(100); begin for c in c_constraints loop execute immediate 'alter table ' c.table_name ' drop constraint ' c.constraint_name; end loop; for x in c_ objects loop if upper(x.object_type) not in ('PACKAGE BODY') then execute immediate 'drop ' x.object_type ' ' x.object_name; end if; end loop; end; / 23

Läsbarhet Med syntax highlighting, hli h i indentering i och monospaced font declare cursor c_objects is select object_name, object_type from user_objects; cursor c_constraints is select owner, constraint_name, constraint_type, table_name from user_constraints where constraint_namename not like upper('bin%'); v_object_name varchar2(100); v_object_type varchar2(100); begin for c in c_constraints loop execute immediate 'alter table ' c.table_name ' drop constraint ' c.constraint_name; end loop; for x in c_ objects loop if upper(x.object_type) not in ('PACKAGE BODY') then execute immediate 'drop ' x.object_type ' ' x.object_name; end if; end loop; end; / 24

Notepad ++ Klistra in RTF i labbrapporten Välj SQL 25

Variabeltyper Variabeltyper i PL/SQL 1. Skalär - nummer, datum, teckensträngar, boolean 2. Komposit - record, PL/SQL-table, varray... 3. Referens -ref cursor 4. LOB -BLOB 26

Variabeltyper Variabeltyper som kommer att användas på kursen: number varchar2 date boolean skalära datatyper true, false eller null record komposit datatyp 27

Variabeldeklaration Variabeldeklaration och tilldelning av värden declare v_namn varchar2(50); v_år varchar2(4) := to_char(sysdate,'yyyy'); begin -- tilldelar l v_namn en textsträng. v_namn := 'Hans Rosendahl'; end; / dbms_output.put_line('årets pedagog ' v_år 'är: ' v_namn); := tilldelningsoperator. = operator för att utvärdera likhet. if a = b then -- true eller false. 28

Utskrift Utskrift slås på med set serveroutput on set serveroutput on /* slå på utskrift med set serveroutput on */ declare v_namn varchar2(50); v_år varchar2(4) := to_char(sysdate,'yyyy'); /* hämtar dagens datum och gör om det till en teckensträng med fyra tecken. YYYY medför att det kommer att bara visa årtal med fyra tecken */ begin v_ namn := 'Hans Rosendahl'; ; dbms_output.put_line('årets pedagog ' v_år ' är: ' v_namn); end; anonymous block completed Årets pedagog 2015 är: Hans Rosendahl 29

PLSQL Loopar och styrstrukturer 30

Ait Aritmetiska tik operatorer Artitmetisk operator Användning + Addition - Subtraktion * Multiplikation / Division ** Exponentiering - 2 + 3 * (10-2 * 3) / 6 = x 1. Parenteser 2. Potenser 3. Multiplikation lik i och division i i 4. Subtraktion och addition - 2 + 3 * (4) / 6 = x 31-2 + 12 / 6 = x - 2 + 2 = x x = 0 2 ** 3 = 2*2*2 = 8

Substitutionsvariabler i bl PLSQL har inga input satser & markerar en substitutions variabel '&ange_namn' 32

Styrstrukturert Styrstrukturer = Control Structures 1. if... then... end if; 2. if... then... else... end if; 3. if... then... elsif... then... end if; 4. case... when... then... end case; OBS! ELSIF 33

CASE Exempel på CASE-sats: set serveroutput on -- slå på utskrift declare v_num number(7) := &ange_ett_heltal; v_test number(1); begin v_test := mod(v_num,2); case v_test t end; / when 0 then dbms_output.put_line('talet är jämnt'); else end case; dbms_output.put_line('talet är udda'); 34

IF Samma exempel med IF-sats: set serveroutput on declare v_num number := &ange_ett_heltal; v_test number; begin v_test := mod(v_num,2); if v_test = 0 then end; / dbms_output.put_line('talet är jämnt'); else end if; dbms_output.put_line('talet är udda'); 35

NULL? Testa null-värden äd i en IF-sats: set serveroutput on declare a number := null; Utskrift? if ((a is null) and (b is null)) then c b number := null; begin if (a = b) then dbms_output.put_line('a'); elsif (a <> b) then end if; end; / dbms_ output.put p _ line('b'); else dbms_output.put_line('c'); 36

Loopar Det finns tre olika typer av loopar i PL/SQL: 1. Basic loop 2. WHILE loop 3. FOR loop 37

Basic loop Exempel på basic loop: set serveroutput on declare i number(3); begin i = 1 i = 2 i = 3 i := 1; i = 4 loop i = 5 end; / exit when i = 6; dbms_output.put_line('i = ' i); i = i + 1; end loop; 38

While loop Exempel på WHILE loop: set serveroutput on declare i number(3); begin i := 1; while (i < 6) loop dbms_output.put_line('i = ' i); i = i + 1; end loop; end; / i = 1 i = 2 i = 3 i = 4 i = 5 39

For loop Exempel på FOR loop: set serveroutput on begin i = 1 for i in 1.. 5 loop i = 2 dbms_output.put_line('i = ' i); i = 3 end loop; i = 4 end; / i = 5 -- har inbyggd räknare, som vi kan kalla vad vi vill for counter in 1.. 5 loop dbms_output.put_line('i = ' counter); 40

For select Exempel på FOR SELECT loop: set serveroutput on begin end; / for rec in (select fnamn,enamn from student) loop dbms_output.put_line(rec.fnamn ' ' rec.enamn); end loop; Bo Ek Tommy Kvist Stina Klanth Hans Dalros Marie Ekholm Aressa Kristossih Mgabhe Mboto Sonja Stenlund Stina Dalkvist Arne Möller 41

The End 42