Formattazione del testo con tag HTML
(Cognome, Nome)) Interrogazione: SELECT: Istruzioni SELECT con una sola relazione nella clausola FROM permettono di realizzare: selezioni, proiezioni, ridenominazioni. Con più relazioni nella FROM si realizzano join (e prodotti cartesiani). Le espressioni SQL sono dichiarative e noi ne stiamo vedendo la semantica. In pratica, i DBMS eseguono le operazioni in modo efficiente, ad esempio: eseguono le selezioni al più presto, se possibile, eseguono join e non prodotti cartesiani. La capacità dei DBMS di "ottimizzare" le interrogazioni rende (di solito) non necessario preoccuparsi dell'efficienza quando si specifica un'interrogazione. È perciò più importante preoccuparsi della chiarezza (anche perché così è più difficile sbagliare...) LIKE: select * from persone where nome like 'A_d%' Ordinamento del risultato: select nome, reddito from persone where eta < 30 order by nome Sostituzione
nome Colonna (ridenominazione risultato):select nome as nome,
from personawhere 10<eta<30(oppure: where true)
Operatori aggregate: COUNT
select *from Paternitawhere Padre = 'Franco'DELETE:DELETE FROM Tabella[ WHERE Condizione ]
DELETE FROM Persone WHERE Eta < 35CREA UNA VISTA:create view NomeVista [ ( ListaAttributi ) ] as SelectSQL [ with [ local | cascaded ] check option ]
create view ImpiegatiAmmin(Nome, Cognome, Stipendio) asselect Nome, Cognome, Stipendiofrom Impiegatowhere Dipart = 'Amministrazione' andStipendio > 10INTERROGAZIONE DI UNA VISTA:select * from ImpiegatiAmmin
select Nome, Cognome, Stipendiofrom Impiegatowhere Dipart = 'Amministrazione' and Stipendio > 10DISTINCT:select distinctcognome, filialefrom impiegati
JOIN:select R1.A1, R2.A4from R1, R2where R1.A2 = R2.A3
Media dei redditi dei figli di Franco: (SUM, AVG, MAX, MIN)select avg(reddito)from persone join paternita on nome=figliowhere padre='Franco'
UNION: unisce tutta
la tabella
genitore | figlio |
---|---|
padre | figlio |
madre | figlio |
Modifica:
INSERT:
INSERT INTO Persone(Nome, Reddito)VALUES('Lino',55)
VINCOLI DI INTEGRITÀ GENERICI:
Specifica vincoli a livello di schema
create assertion NomeAss check ( Condizione )
create assertion AlmenoUnImpiegatocheck (1 <= ( select count(*)from Impiegato ))
CHECK POINT VISTE: permette modifiche, ma solo a condizione che la ennupla continui ad appartenere alla vista
create view ImpiegatiAmminPoveri as
select *
from ImpiegatiAmmin
where Stipendio < 50
with check option
OUTER JOIN:
select paternita.figlio, padre, madre
from maternita left outer join paternita
on maternita.figlio = paternita.figlio
INSERT INTO Persone ( Nome )
SELECT Padre
FROM Paternita
WHERE Padre NOT IN (SELECT Nome
FROM Persone)
UPDATE:
UPDATE Persone SET Reddito = 45
WHERE Nome = 'Piero'
UPDATE Persone
SET Reddito = Reddito * 1.1
WHERE Eta < 30
ORDER:
select nome, reddito
from persone
where eta <
- order by nome
- CHECK: Specifica di vincoli di ennupla check ( Condizione )
- create table Impiegato(Matricola character(6),Cognome character(20),Nome character(20),Sesso character not null check (sesso in ('M','F')) Stipendio integer,Ritenute integer,Netto integer,Superiore character(6),check (Netto = Stipendio - Ritenute ))
- Capitolo 5: Modello Concettuale E-R
- Entità: CLASSE O INSIEME di oggetti (fatti, persone, cose) della applicazione di interesse con proprietà comuni e conesistenza "autonoma", ogni entità ha un nome che la identifica univocamente nello schema: nomi espressivi e opportune convenzioni (singolare);
- Occorrenza (o istanza) di entità: SINGOLO elemento della classe;
- Attributo: proprietà elementare di un'entità o di una relationship, di interesse ai fini dell'applicazione; associa ad ogni occorrenza di entità o relationship un valore appartenente a un insieme detto
dominio dell'attributo;
- Attributi Composti: raggruppano attributi di una medesima entità o relationship che presentano affinità nel loro significato o uso
- Relationship (o Relazione, Correlazione, Associazione): legame logico fra due o più entità, rilevante nell'applicazione di interesse, nomi espressivi e opportune convenzioni (singolare, sostantivi invece che verbi);
- Una occorrenza di una relationship binaria è coppia di occorrenze di entità, una per ciascuna entità coinvolta;
- Una occorrenza di una relationship n-aria è una n-upla di occorrenze di entità, una per ciascuna entità coinvolta;
- Nell'ambito di una relationship non ci possono essere occorrenze (coppie, ennuple) ripetute
Relazioni con cardinalità massime: uno a uno; uno a molti, molti a molti.
Identificatore di una entità: "strumento" per l'identificazione univoca delle occorrenze di
un'entità è costituita da:
- identificatore interno: attributi dell'entità;
- identificatore esterno: (attributi +) entità esterne attraverso relationship;
- Ereditarietà: tutte le proprietà (attributi, relationship, altre generalizzazioni) dell'entità genitore vengono ereditate dalle entità figlie e non rappresentate esplicitamente;
- Generalizzazione:
- totale se ogni occorrenza dell'entità genitore è occorrenza di almeno una delle entità figlie, altrimenti è parziale;
- esclusiva se ogni occorrenza dell'entità genitore è occorrenza di al più una delle entità figlie, altrimenti è sovrapposta;
- Cardinalità di relationship o di attributo: coppia di valori associati a ogni entità che partecipa a una relationship; specificano il numero minimo e massimo di occorrenze delle relationship cui ciascuna occorrenza di una entità può partecipare.
Capitolo 6: Modello Logico
Obiettivo "tradurre" lo schema concettuale in uno schema logico che rappresenti gli stessi dati in maniera corretta ed efficiente:
- dati di ingresso: schema concettuale; informazioni sul carico applicativo; modello logico
- dati di uscita: schema logico; documentazione associata.
Indicatori:
- spazio: numero di occorrenze previste;
- tempo: numero di occorrenze (di entità e relationship) visitate durante un'operazione.
Si costruisce una tavola degli accessi basata su uno schema di navigazione.
Analisi delle ridondanze: in questa fase si decide se eliminare le ridondanze eventualmente presenti o mantenerle (o anche di introdurne di nuove)
Vantaggi: semplificazione delle interrogazioni;
Svantaggi: appesantimento degli aggiornamenti, maggiore
occupazione di spazio. Eliminazione delle gerarchie: si eliminano perciò le gerarchie, sostituendole con entità e relationship, in tre modi:
- accorpamento delle figlie della generalizzazione nel genitore, conviene se gli accessi al padre e alle figlie sono contestuali;
- accorpamento del genitore della generalizzazione nelle figlie, conviene se gli accessi alle figlie sono distinti;
- sostituzione della generalizzazione con relationship, conviene se gli accessi alle entità figlie sono separati dagli accessi al padre.
Scelta degli identificatori principali: operazione indispensabile per la traduzione nel modello relazionale. Criteri:
- assenza di opzionalità;
- semplicità;
- utilizzo nelle operazioni più frequenti o importanti.
Partizionamento/accorpamento di entità e relationship: Gli accessi si riducono:
- separando attributi di un concetto che vengono acceduti separatamente;
- raggruppando attributi di concetti diversi.
- partizionamento verticale di entità;
- partizionamento orizzontale di relationship;
- eliminazione di attributi multivalore;
- accorpamento di entità/relationship.
<?Codice php?>Stile classico:
<?phpCodice php?>Commenti:
- // questo è un commento
- /* questo è un commento */
- # questo è un commento
- +: addizione ($a + $b).
- -: sottrazione ($a - $b).
- *: moltiplicazione ($a * $b).
- /: divisione ($a / $b).
- %: modulo ($a % $b).
- ==: uguale ($a == $b).
- ===: identico ($a === $b) (cioè $a e $b sono anche dello stesso tipo).
- !=: diverso ($a != $b).
- <>: diverso ($a <> $b).
- <: minore di ($a < $b).
- <=: minore o uguale di ($a <= $b).
- count(): Restituisce il numero di elementi in un array.
- array_push(): Aggiunge uno o più elementi alla fine di un array.
array.array_pop()
: Rimuove e restituisce l'ultimo elemento di un array.
array.array_merge()
: Unisce due o più array.
array.array_search()
: Cerca un elemento all'interno di un array e restituisce la sua chiave.
Funzioni:
phpinfo()
: genera dinamicamente una pagina contenente informazioni sulla versione di PHP installata e altre cosette, quali nomi delle variabili predefiniteecho
: serve per scrivere l'output che viene inviato al browser che accede allo script (non si tratta propriamente di una funzione) si può usare per visualizzare le variabili.exit()
edie()
: arrestano l'esecuzione dello script;die()
consente anche di stampare un messaggio. Tali funzioni possono essere utilizzate per gestire eventuali situazioni di errore che non consentono la prosecuzione dello script.define("nome_costante","il valore che si intende dare")
: per definire una costanterequire "[file]"
einclude "[file]"
: per includere il contenuto di un file all'interno di un altro file
Per includere file esterni puoi utilizzare il tag <link>
nel tag <head>
del tuo documento HTML. Ad esempio:
<head> <link rel="stylesheet" href="style.css"> </head>
Un array può contenere anche elementi di tipo diverso. Puoi definire un array utilizzando il tag <script>
nel tag <body>
del tuo documento HTML. Ad esempio:
<body> <script> var array = [1, "stringa", true]; </script> </body>
Per estrarre una sottostringa da una stringa puoi utilizzare la funzione substr(stringa, inizio, fine)
. Ad esempio:
<script> var stringa = "Hello World"; var sottostringa = stringa.substr(0, 5); </script>
Per ottenere la lunghezza di una stringa puoi utilizzare la funzione strlen(stringa)
. Ad esempio:
<script> var stringa = "Hello World"; var lunghezza = stringa.length; </script>
Per eliminare gli spazi da una stringa puoi utilizzare la funzione trim(stringa)
. Ad esempio:
<script> var stringa = " Hello World "; var stringaSenzaSpazi = stringa.trim(); </script>
Per rendere maiuscola l'iniziale di una stringa puoi utilizzare la funzione ucfirst(stringa)
. Ad esempio:
<script> var stringa = "hello world"; var stringaMaiuscola = stringa.charAt(0).toUpperCase() + stringa.slice(1); </script>
Per rendere maiuscole tutte le iniziali delle parole di una stringa puoi utilizzare la funzione ucwords(stringa)
. Ad esempio:
<script> var stringa = "hello world"; var parole = stringa.split(" "); for (var i = 0; i < parole.length; i++) { parole[i] = parole[i].charAt(0).toUpperCase() + parole[i].slice(1); } var stringaMaiuscole = parole.join(" "); </script>
Per trovare la posizione di un pattern all'interno di una stringa puoi utilizzare la funzione strpos(stringa, pattern)
. Ad esempio:
<script> var stringa = "Hello World"; var posizione = stringa.indexOf("World"); </script>