Linguaggio MySQL
-
Upload
polepolemos -
Category
Documents
-
view
65 -
download
6
description
Transcript of Linguaggio MySQL
-
Zz appunti di INFORMATICA
appunti di INFORMATICA
02/01/2015
Paola Pucci
appunti di INFORMATICA
Linguaggio MySQL
-
2
INDICE
linguaggio mysql .............................................................................................................................................................. 4
identificatori ................................................................................................................................................................ 4
creazione e uso di database......................................................................................................................................... 4
definizione tabelle ....................................................................................................................................................... 5
modifica degli schemi .................................................................................................................................................. 7
creare un indice ........................................................................................................................................................... 7
cancellare un indice e una tabella ............................................................................................................................... 7
manipolazione dei dati ................................................................................................................................................ 7
inserimento dei dati ................................................................................................................................................. 8
cancellazione delle righe .......................................................................................................................................... 8
modifica delle righe ................................................................................................................................................. 8
creare e cancellare le viste ...................................................................................................................................... 9
comandi per la sicurezza .......................................................................................................................................... 9
interrogazioni semplici............................................................................................................................................. 9
operatori ................................................................................................................................................................ 12
eliminare i duplicati ............................................................................................................................................... 12
condizioni ............................................................................................................................................................... 12
-
3
Paola Pucci
Linguaggio MySQL
n. 13 pagine
Questa opera distribuita con Licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo
Tu sei libero:
di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico, rappresentare, eseguire e recitare quest'opera
di modificare quest'opera
Alle seguenti condizioni: Attribuzione Devi attribuire la paternit dell'opera nei modi indicati dall'autore o da chi ti ha dato l'opera in licenza e in modo tale da non suggerire che essi avallino te o il modo in cui tu usi l'opera.
Non commerciale Non puoi usare quest'opera per fini commerciali.
Condividi allo stesso modo Se alteri o trasformi quest'opera, o se la usi per crearne un'altra, puoi distribuire l'opera risultante solo con una licenza identica o equivalente a questa.
http://creativecommons.org/licenses/by-nc-sa/3.0/deed.it
-
4
LINGUAGGIO MYSQL SQL l'acronimo di Structured Query Language, nonostante il nome, non si tratta solo di un semplice linguaggio di interrogazione, , infatti, il linguaggio di definizione e manipolazione dei dati universalmente usato nelle basi di dati relazionali.
E un linguaggio non procedurale, al contrario del C++, cio consente di operare sui dati di un database tramite frasi che non fanno uso di simboli matematici ed algebrici, ma solo di parole chiave prese dal linguaggio corrente; questo, insieme alla sintassi che riprende forme usuali, fa s che le frasi abbiano una struttura lineare ed espressiva. Non usa, inoltre, il concetto di funzione o procedura ampiamente usato in C++. Il ; posto al termine del comando serve a segnalare la fine delle istruzioni.
E, inoltre, un linguaggio not case sensitive, cio non fa distinzione fra le lettere maiuscole e minuscole. Legenda: come nella semantica di tutti i linguaggi di programmazione, le parti opzionali sono racchiuse tra parentesi quadre.
IDENTIFICATORI
Gli identificatori (nomi di tabelle e di attributi) sono costituiti da sequenze di caratteri con lunghezza massima uguale a 18 caratteri : devono iniziare con una lettera e possono anche contenere il carattere. Nella dichiarazione della tabella occorre specificare il tipo dei dati scelto per gli attributi.
I tipi standard sono:
CHARACTER(n) Stringa di lunghezza n n da 1 a 15000
DATE Data nella forma AAAA/MM/GG o AAAA-MM-GG
TIME Ora nella forma HH:MM:SS
INTEGER(p) Numero intero con precisione p p da 1 a 45
SMALLINT Numero intero con precisione 5 da -215 a 215 -1
INTEGER Numero intero con precisione 10 da -231 a 231 -1
DECIMAL(p,s) Numero decimale con precisione p e s cifre decimali
REAL Numero reale con mantissa di precisione 7
FLOAT(o DOUBLE PRECISION) Numero reale con mantissa di precisione 15
FLOAT(p) Numero reale con mantissa di precisione p
La precisione p indica il numero massimo di cifre che pu contenere, esclusi il segno e il punto decimale. Il numero s indica il numero di cifre che conseguono il punto decimale.
CREAZIONE E USO DI DATABASE
Per creare un nuovo Data Base si usa la seguente sintassi:
CREATE DATABASE Nomedatabase
[authorization nomeproprietario];
per selezionare un nuovo Data Base si usa la seguente sintassi:
USE Nomedatabase ;
-
5
DEFINIZIONE TABELLE
Una tabella SQL costituita da una collezione di attributi e da un insieme (eventualmente vuoto) di vincoli.
La sintassi :
CREATE TABLE NomeTabella
(
NomeAttributo Dominio [valore di default] [vincoli],
{ ecc. }
);
quindi una tabella viene definita associandole un nome ed elencandone gli attributi che ne compongono lo schema.
Ecco un esempio :
CREATE TABLE persona
( Codfisc char(16) primary key,
Nome char(20),
Indirizzo char(50),
Citt char(20)
);
I valori di default sono i valori che deve assumere lattributo quando viene inserita una riga nella tabella senza che venga specificato il valore dellattributo stesso.
Sia nella definizione dei vincoli che in quella delle tabelle possibile stabilire dei vincoli; per vincoli si intendono delle propriet che devono essere verificate da ogni istanza della base di dati.
In SQL i vincoli che possono essere definiti sugli attributi di una tabella sono i vincoli di not null,
unique e primary key.
Not null : significa che l'attributo deve essere sempre specificato.
Unique : si applica ad uno o pi attributi imponendo che righe differenti abbiano valori differenti. Viene fatta eccezione solo per il valore null.
Primary Key : specifica quali attributi rappresentano la chiave primaria.
In SQL altri vincoli che possono essere definiti sugli attributi di una tabella sono quelli di default, check e primary key.
Default : assegna all'attributo il valore predefinito.
Check () : specifica un qualsiasi vincolo che riguarda il valore di un attributo, oltre agli operatori di confronto si possono trovare: IN, BETWEEN..AND, NOT BETWEEN..AND, LIKE, NOT LIKE.
Foreign Key : specifica quali attributi rappresentano la chiave esterna, inoltre si pu indicare, in fase di cancellazione ON DELETE o in fase di modifica ON UPDATE, le opzioni CASCADE, SET NULL, SET DEFAULT e NO ACTION.
-
6
CREATE TABLE azienda
(Codazienda char(5) not null,
Ragionesociale char(30) not null,
Codattivit char(4) not null,
CodDip char(6) not null,
Primary key (Codazienda),
Foreign key (CodDip) REFERENCES dipendente(CodDip) ON DELETE SET NULL,
Foreign key (Codattivit) REFERENCES categoria(Codattivit) ON UPDATE
CASCADE);
crea una tabella in cui la chiave primaria Codazienda, mentre le chiavi esterne sono Coddip derivata dalla tabella dipendente che, in caso di cancellazione, imposta a null le righe corrispondenti e Codattivit derivata da categoria che , in caso di modifica imposta tutte le righe corrispondenti con lo stesso nuovo valore.
CREATE TABLE persona
(Matricola char(6) primary key not null,
Nome char(20) not null,
Cognome char(20) not null,
Indirizzo char(50),
Citt char(20),
Funzione char(18),
Unique (Nome, Cognome)
);
Cancellazione (ON DELETE ) Modifica (ON UPDATE)
CASCADE: vengono cancellate le righe corrispondenti
CASCADE: le righe corrispondenti vengono impostate allo stesso nuovo valore
SET NULL: vengono impostate a Null le righe corrispondenti
SET NULL: le righe corrispondenti vengono impostate a Null
SET DEFAULT: le righe corrispondenti vengono impostate al valore di default
SET DEFAULT: le righe corrispondenti vengono impostate al valore di default
NO ACTION: non viene eseguita nessuna azione NO ACTION: non viene eseguita nessuna azione
-
7
crea una tabella in cui la chiave primaria la matricola, in cui gli attributi nome e cognome devono essere obbligatoriamente specificati (a causa del not null) e in cui non possono comparire due righe aventi stesso nome e cognome.
MODIFICA DEGLI SCHEMI
Il linguaggio implementa anche delle istruzioni dedicate alla modifica delle strutture esistenti utilizzando il comando alter, per aggiungere una nuova colonna add a quelle gi esistenti, oppure per togliere una colonna drop.
ALTER TABLE NomeTabella
[BEFORE NomeColonna];
Esempi:
ALTER TABLE persona
ADD nascita date;
ALTER TABLE persona
DROP Indirizzo;
Nel primo esempio aggiungo lattributo nascita con tipo di dato date e nel secondo cancello Indirizzo, inutile precisare il tipo di dato, in quanto lho definito a suo tempo nella Create Table.
CREARE UN INDICE
L'istruzione CREATE INDEX viene utilizzata per creare un nuovo indice su una tabella esistente, la chiave esterna che avevamo definito quando si parlava di attributi nel modello E-R.
Se si vuole che non ci siano valori duplicati per l'attributo associato ad indice in righe diverse, occorre usare la clausola UNIQUE.
Esempio:
CREATE UNIQUE INDEX Ipers
ON persona (Cognome, Nome);
CANCELLARE UN INDICE E UNA TABELLA
Una tabella o un indice possono essere eliminati con il comando DROP.
Esempio:
DROP TABLE persona;
DROP INDEX Ipers ON persona;
MANIPOLAZIONE DEI DATI
La parte di manipolazione dei dati si occupa delle operazioni di inserimento, modifica e
cancellazione delle righe.
-
8
INSERIMENTO DEI DATI
Il comando di inserimento di righe nella base di dati presenta la seguente sintassi :
INSERT INTO NomeTabella
( ListaAttributi)
VALUES ( ListaDiValori );
Questa sintassi permette di inserire una riga specificandone i valori dei suoi attributi. Se i dati sono numerici si scrivono cos come si presentano, se di tipo carattere devono essere preceduti e seguiti da apici o da virgolette.
Esempio:
INSERT INTO Persona
(Cognome, Nome,)
VALUES('Barbagallo', 'Tino',.);
CANCELLAZIONE DELLE RIGHE
Il comando SQL delete il comando che permette di eliminare delle righe dalla tabella di una base di dati.
La sintassi :
DELETE FROM NomeTabella
[WHERE Condizione ];
e attua la cancellazione delle righe che rispondono alla condizione specificata.
La condizione rispetta la sintassi SQL, per cui potremmo avere al suo interno delle interrogazioni nidificate, che affronteremo in seguito, facendo riferimento ad altre tabelle. Un semplice esempio che elimina i dipartimenti senza impiegati:
DELETE FROM Dipartimento
WHERE Nome NOT IN (SELECT Dipart
FROM Impiegato);
E' da notare la differenza tra il comando DELETE ed il comando DROP. Ad esempio il comando:
DELETE FROM Dipartimento;
elimina tutte le righe della tabella dipartimento, ma lo schema rimane immutato; il comando, infatti, canceller solo le istanze della tabella. Mentre il comando:
DROP TABLE Dipartimento;
elimina tutte le istanze della tabella, nonch lo schema.
MODIFICA DELLE RIGHE
In SQL la modifica delle righe avviene mediante l'utilizzo del comando update, seguendo la sintassi:
UPDATE NomeTabella
SET Attributo = < Espressione | SelectSQL | Null | default >
-
9
[ WHERE Condizione ];
Il comando update permette di aggiornare uno o pi attributi delle righe di NomeTabella che soddisfano l'eventuale condizione. Se la condizione non compare, ovviamente si suppone di default il valore vero e si esegue la modifica su tutte le righe della tabella.
Ecco un esempio che aumenta del 20% lo stipendio degli impiegati che si chiamano "TINO":
UPDATE Impiegato
SET Stipendio = Stipendio * 1.2
WHERE Nome = 'TINO OR Tino;
CREARE E CANCELLARE LE VISTE
CREATE VIEW serve per creare una vista in una tabella.
Esempio:
CREATE VIEW Impieg
AS SELECT *
FROM Personale
WHERE funzione='impiegato';
Invece per cancellarla si usa:
DROP VIEW Impieg;
COMANDI PER LA SICUREZZA
Il comando GRANT concede i permessi, specificando il tipo di accesso, le tabelle sulle quali consentito l'accesso e l'elenco degli utenti ai quali permesso di accedere.
Esempio:
Per concedere il diritto di modifica sulla tabella dei dipendenti agli utenti denominati con Salvo e Fausto, si deve usare il comando GRANT nella forma:
GRANT UPDATE
ON Persona
TO Salvo,Fausto;
La revoca dei permessi viene effettuata con REVOKE
REVOKE UPDATE
ON Persona
FROM Salvo,Fausto;
INTERROGAZIONI SEMPLICI
Anche se la parola query pu essere tradotta in interrogazione o domanda, una query SQL non
necessariamente una domanda, pu essere un comando per svolgere una delle seguenti
operazioni:
Creare o cancellare una tabella
-
10
Inserire, modificare o cancellare campi
Ricercare informazioni specifiche in pi tabelle e restituire i risultati in un particolare ordine
Modificare i parametri di protezione di un database
Gli elementi importanti di una query sono le parole chiave ovvero le parole del linguaggio SQL
che sono riservate come parte della sintassi.
Le parole chiavi di una query sono:
SELECT FROM WHERE
Il carattere * che compare dopo la parola chiave SELECT indica tutti gli attributi della tabella.
E possibile indicare le singole colonne che verranno elencate nello stesso ordine indicato:
SELECT BENEFICIARIO, NOTE, Num, IMPORTO
FROM ASSEGNI;
-
11
BENEFICIARIO NOTE Num IMPORTO
Computer shop DVD e CD ROM 1 1.500,00
Librerie Riunite Libri, cancelleria 2 2.453,40
Computer Shop Telefono cellulare 3 2.003,20
BIOGA srl GAS 4 980,00
Supermarket GC Alimentari 5 1.500,00
Assicurazioni Italy Assicurazione casa 6 250,00
GAS Spa. Gas 7 251,00
Per selezionare solo alcune colonne basta indicarle, solo quelle dichiarate verrano elencate nellordine indicato:
QUESTA E LA SINTASSI DELLA PROIEZIONE!
SELECT Num, IMPORTO
FROM ASSEGNI;
Num IMPORTO
1 1.500,00
2 2.453,40
3 2.003,20
5 1.500,00
6 250,00
4 980,00
7 251,00
Per selezionare dati da unaltra tabella sufficiente modificare la clausola FROM
QUESTA E LA SINTASSI DELLA SELEZIONE!
SELECT *
FROM DEPOSITI
WHERE NOTE = Stipendio;
DEPOSITO CHIHAPAGATO IMPORTO NOTE
1 Zio ricco 2000,00 regalo di Natale
2 Mia azienda 2.453,40 Stipendio
3 Trasporti S.r.L. 250,00 Affitto garage
-
12
OPERATORI
Gli operatori sono gli elementi utilizzati allinterno delle espressioni per specificare le condizioni necessarie a caricare i dati.
Possono essere divisi in sei gruppi:
aritmetici
di confronto
di caratteri
logici
di insieme
vari.
ELIMINARE I DUPLICATI
CONDIZIONI
Tutte le volte che si vuole trovare un particolare elemento o gruppo di elementi in un database, occorre specificare una o pi condizioni.
Le condizioni sono introdotte dalla clausola WHERE.
SELECT NOME, INDIRIZZO, TELEFONO, RUBRICA
FROM RUBRICA
WHERE NOME = ROSSI;
Nellesempio precedente la condizione NOME = ROSSI.
-
13
Questa condizione potr essere TRUE (vera) o FALSE (falsa) rispettivamente se la colonna NOME contiene ROSSI oppure no.
Per trovare tutti gli impiegati che hanno lavorato pi di 100 ore la condizione potrebbe essere: NUMERODIORE > 100.