Linguaggio SQL Primi Passi

  1. #1
    Utente Esperto L'avatar di Eagle2
    Data Registrazione
    Aug 2013
    Messaggi
    228
    Il linguaggio SQL (structured query language) e nato con l' intento di soddisfare le richieste dei database relazionali.Le interrogazioni che possiamo fare con SQL sono un estensione di quelle che possiamo fare con sequenze di operazioni relazionali, in quanto con SQL possiamo effettuare calcoli, ragruppamenti e ordinamenti.
    Il linguaggio SQL è un linguaggio non procedurale che è diventato uno standard tra i linguaggi per la gestione dei database relazionali.


    Vediamo cosa ci consente di fare il linguaggio SQL:



    • Definire la struttura delle relazioni del database e di controllare gli accessi al database(funzioni di DDL),
    • modificare i dati contenuti nel database, con le operazioni di inserimento,variazione e cancellazione(funzioni di DML),
    • interrogare il database(Query Language).



    Identificatori e tipi di dati:

    il linguaggio SQL usa i caratteri alfabetici,le cifre decimali,gli operatori aritmetici e di confronto(+ - / * = <>), più altri caratteri che assumono particolari significati nella sintassidelle istruzioni.

    Gli identificatori
    (nomi di tabelle e di attributi) sono una sequenza di caratteri di lunghezza massima uguale 18 caratteri: devono inziare con una lettera e possono contenere il carattere _ .
    il nome di un attributo ovvero di una colonna di una tabella è identificato nel seguent emodo:


    NomeTabella.NomeAttributo

    il nome della tabella può essere saltato nel caso non ci siano ambiguita nell' identificazione dell' attributo.

    I tipi di dati standard del linguaggio SQL:



    BOOLEAN Valore logico True,False
    CHARACTER(n) Stringa di lunghezza n n da 1 a 15000
    DATE data nella forma MM/GG/AA
    TIME ora nella forma HH:MM
    INTEGER(p) numero intero con precisione p p da 1 a 45
    SMALLINT Numero intero con precisione5 da -32768 a 32767
    INTEGER Numero intero con precisione 10 da -2.147.483.648 a 2.147.483.647
    DECIMAL(p,s) Numero decimale con precisione p e s cifre decimali p da 1 a 45 e s da 0 a p
    REAL Numero reale con mantissa di precisione 7 valore 0 oppure valore assoluto da 1E-38 a 1E+38
    FLOAT(o DOUBLE PRECISION) Numero reale con mantissa di precisione 15 valore 0 oppure valore assoluto da 1E-38 a 1E+38
    FLOAT(p) Numero reale con mantissa di precisione p p da 1 a 45

    Per i dati numerici la precisione p indica il numero massimo di cifre che il numero può contenere, esclusi il segno e il punto decimale.
    Per i numeri decimali il valore s indica il numero massimo di cifre che seguono la virgole o punto decimale.
    I dati numerici floating point sono memorizzati in forma esponenziale; la precisione riguarda solo le cifre della mantissa.



    La parola NUMERIC può essere usata al posto di DECIMAL
    La parola CHARACTER è equivalente a CHARACTER(1), e può essere abbreviata con CHAR.
    DECIMAL è equivalente a DECIMAL(15,0).
    altre abbreviazioni sono:

    • CHAR(N) invece di CHARACTER(n)
    • INT(p) invece di INTEGER(p)
    • DEC(p,s) invece di DECIMAL(p,s)





    Vediamo la definizione delle tabelle:



    le tabelle vengono definite con il comando CREATE TABLE, seguito dal nome della tabella e dall' elenco degli attributi. Per ogni attributo occorre specificare il nome e il tipo di dato. Gli attributi possono essere qualificati mediante diversi modi con i quali possiamo definire: la chiave primaria, chiavi esterne, l' obbligatorieta e il valore di defoult di un campo.

    andiamo a creare come esempio due tabelle : Impiegato e Dipartimento



    • impiegato avra le informazioni sui dipendenti: il codice identificativo, nome, cognome,residenza e stipendio.
    • Dipartimento con le informazioni sui dipartimenti: ilcodice, il nome del dipartimento e il suo indirizzo.


    Tra impiegato e dipartimento individuiamo due associazioni la prima Comprendere che è un associazione uno a molti tra dipartimento e impiegato perchè un impiegato è compreso in un solo dipartimento, mentre un dipartimento è composto da molti impiegati.

    La seconda associazione è Coordinare che mette in relazione un dipartimento con il dipendente che lo dirige. Coordinare è un associazione uno a molti perchè nell' azienda in esame, un dipendente può essere a capo di più di un dipartimento, mentr eun dipartimento è diretto da un unico manager.

    Impiegati
    (ID, Nome, Cognome, Residenza, Stipendio, Dipartimento).

    Dipartimenti
    (Codice, Descrizione,Sede, Manager)

    L' attributo Dipartimento di impiegati contiene il codice del dipartimento di appartenenza di un dipendente ed è stato introdotto per rappresentare l' associazione uno a molti tra dipartimento e impiegato. (perchè nel modello E/R le chiavi esterne nn vengono introdotte in quanto sono rappresentate dalle associazioni).
    Allo stesso modo ò' attributo manager di dipartimento rappresenta l' associazione uno a molti tra impiegato e dipartimento e contiene il valore della chiave primaria del dipendente che dirige il dipartimento.

    Vediamo ora i comandi in SQL per creare queste due tabelle:


    Creiamo la tabella Impiegati:

    Codice:
    
    CREATE TABLE Impiegati
    
    (  
    
      ID                             smallint            primary key,
      Cognome                        char(30)            not null,
      Nome                           char(20)            not null,
      Residenza                      char(20)            default  '*** Manca Residenza',
      Stipendio                      decimal(9,2),
      Dipartimento                   char(5)             references Dipartimenti(Codice)
    
    );
    l' attributo ID è stato dichiarato chiave primaria tramit eil comando PRIMARY KEY.
    Il not null indica che in tutte le righe della tabella quella colonna deve essere riempita con un valore non nullo e rende quindi il campo obbligatorio.
    Il comando DEFAULT definisce il valore da attribuire al campo se, al momento della creazione del record che lo contiene, non gli viene assegnato alcun valore.
    il comando REFERENCES indica che l' attributo Dipartimento è chiave esterna e definisce un vincolo di integrità referenziale con la tabella Dipartimenti.
    Oltre a questi va ricordato il comando UNIQUE che vieta la presenza di valori duplicati in una colonna o in un insieme di colonne. Per esempio , per indicare che non ci possono essere due dipendenti con identico nome e cognome nello stesso dipartimento si può scrivere cosi:
    Codice:
    UNIQUE(Cognome, Nome, Dipartimento)
    inserendo questa riga nel comando CREATE Table, di seguito alla dichiarazione delle caratteristiche dell' attributo Dipartimento, prima die caratteri èarentesi chiusa e punto e virgola ( ); ) che chiudono la dichiarazione.



    Creiamo la tabella Dipartimenti:

    Codice:
    CRATE TABLE  Dipartimenti
    (
      Codice                              char(5),
      Descrizione                         char(20)      not null,
      Sede                                char(20),
      Manager                             smallint,
      Primary Key   (Codice),
      Unique    (Descrizione),
      Foreign Key (Manager)   references Impiegati(ID)
                 On delete set null
                 On update cascade 
    );

    Questa volta abbiamo creato la tabella usando le clausole PRIMARY KEY e REFERENCES inserendole in righe isolate con questa caratteristica possiamo dichiarare chiavi esterne o primarie formate da più campi.

    Vediamo nelle ultime clausole del codice possiamo vedere che :

    Codice è chiave primaria della tabella (Primary Key)

    non ci possono essere due dipartimenti con lo stesso nome: Unique (Descrizione);

    è possibile dichiarare la chiave esterna in una riga unica (Foreigen Key);

    Manager è chiave esterna associata alla tabella Impiegati;

    La cancellazione di una riga con un valore ID assocciato a valori di Manager è permessa e i valori di

    Manager corrispondenti assumono valore nullo (On Delete set null);

    L' aggiornamento di un ID associato a Manager si riflette a catena sui valori di Manager (On Update cascade).


    Modifica delle tabelle:
    Una vola create le tabelle possiamo modificarle in un secondo momento con il comando ALTER TABLE, per aggiungere una nuova colonna (ADD) a quelle già esistenti, oppure per togliere una colonna (DROP).

    Vediamo degli esempi:

    In questo modo possiamo aggiungere un nuovo attributo con la data di nascita del dipendente:
    Codice:
    ALTER TABLE Impiegati
    ADD Nascita date;
    Utilizzando l' opzione DROP possiamo togliere esempio dalla tabella Impiegati l'attributo Residenza:
    Codice:
    ALTER TABLE Impiegati
    DROP Residenza;
    Vediamo in fine a cosa serve l' istruzione CREATE INDEX:
    CREATE INDEX viene utilizzata per creare un nuovo indice su una tabella esistente, indicando il nome della tabella e il nome dell' attributo o degli attributi ai quali associare l'indice,

    Se non vogliamo che ci siano valori duplicati per l' attributo associato all' indice, dobbiamo usare la parola chiave UNIQUE.

    per esempio il comando seguente crea una indice di nome indiceImpiegati sulla tabella Impiegati secondo gli attributi Cognome e Nome e non sono ammessi duplicati:
    Codice:
    CREATE UNIQUE INDEX  IndiceImpiegati
    ON Impiegati(Cognome, Nome);
    una tabella o un indice possono essere eliminati con il comando DROP seguito dal nome della tabella o dell' indice.

    Esempio cancelliamo la tabella Impiegati:
    Codice:
    DROP TABLE Impiegati;
    Nello stesso modo cancelliamo l' indice di nome indiceimpiegati:
    Codice:
    DROP INDEX IndiceImpiegati ON Impiegati;


    I comandi che abbiamo visto finora rappresentano la parte del linguaggio SQL che fa riferimento alla categoria dei comandi
    DDL(Data Definition Language) cio il linguaggio che permette di passare dal modello logico dei dati a quello fisico.

    se volete approfondimenti sulle differenze tra modello concettuale, logico e fisico date un occhiata a questa guida.


    appena avro tempo vedremo i comandi del DML(Data Manipulation Language) e QL(Query LAnguage) .
    spero sia abbastanza comprensibile per qualsiasi chiarimento o domanda non esitate a chiedere.



  2. #2
    dai cerca di creare qualcosa di più consistente, non limitarti a fare un copia e incolla, e sopratutto arricchisci il thread che è davvero povero di informazioni

  3. #3
    Utente Esperto L'avatar di Eagle2
    Data Registrazione
    Aug 2013
    Messaggi
    228
    Citazione Originariamente Scritto da IlControllore Visualizza Messaggio
    dai cerca di creare qualcosa di più consistente, non limitarti a fare un copia e incolla, e sopratutto arricchisci il thread che è davvero povero di informazioni
    Prima cosa non è affatto un copia incolla seconda cosa la tua risposta è povera di argomentazione quindi perfavore se il tuo pensiero è che questo thread sia povero di informazioni esplicita dove mancherebbero e poi commenta

  4. #4
    Citazione Originariamente Scritto da Eagle2 Visualizza Messaggio
    Prima cosa non è affatto un copia incolla seconda cosa la tua risposta è povera di argomentazione quindi perfavore se il tuo pensiero è che questo thread sia povero di informazioni esplicita dove mancherebbero e poi commenta
    Se avessi scritto tu questo thread ti saresti accorto delle cose che mancano,
    Spiega i cicli e le condizioni, insieme ai begin e ai end.
    spiega bene gli UPDATE, INSERT, INNER JOIN, BACKUP, ROLLBACK.
    Spiega le procedurecome scriverle e come richiamarle). Spiega come utilizzare i Trigger, con tutte le sue modalità.
    Devo continuare ad elencare?.
    Dai su che ce la puoi fare eppej:

  5. #5
    Utente Esperto L'avatar di GattoMalvagio
    Data Registrazione
    Sep 2013
    Messaggi
    1,387
    Citazione Originariamente Scritto da IlControllore Visualizza Messaggio
    Se avessi scritto tu questo thread ti saresti accorto delle cose che mancano,
    Spiega i cicli e le condizioni, insieme ai begin e ai end.
    spiega bene gli UPDATE, INSERT, INNER JOIN, BACKUP, ROLLBACK.
    Spiega le procedurecome scriverle e come richiamarle). Spiega come utilizzare i Trigger, con tutte le sue modalità.
    Devo continuare ad elencare?.
    Dai su che ce la puoi fare eppej:
    Cerchiamo innazittutto di non giudicare senza conoscere il vero e proprio fatto.
    Chiedersi se un computer possa pensare non è più interessante del chiedersi se un sottomarino possa nuotare.

  6. #6
    Citazione Originariamente Scritto da GattoMalvagio Visualizza Messaggio
    Cerchiamo innazittutto di non giudicare senza conoscere il vero e proprio fatto.
    Giudico per ciò che leggo eppej:

  7. #7
    Utente Esperto L'avatar di Eagle2
    Data Registrazione
    Aug 2013
    Messaggi
    228
    Mmmm wow vedo che consci i termini ma se sapessi anche leggere in questo thread non centra l'insert -update ecc. Inquanto sono istruzioni del DDL poi se sei cosi preparato come dici di essere citando semplicemente termini del linguaggio spiegaceli tu e vediamo. E ultima cosa se leggi ce scritto primi passi non guida completa

  8. #8
    Citazione Originariamente Scritto da Eagle2 Visualizza Messaggio
    Mmmm wow vedo che consci i termini ma se sapessi anche leggere in questo thread non centra l'insert -update ecc. Inquanto sono istruzioni del DDL poi se sei cosi preparato come dici di essere citando semplicemente termini del linguaggio spiegaceli tu e vediamo. E ultima cosa se leggi ce scritto primi passi non guida completa
    Io non ho niente da dimostrare. So benissimo quali sono i miei orizzonti. Tu puoi dire lo stesso? eppej:

  9. #9
    Utente Esperto L'avatar di d23
    Data Registrazione
    Dec 2013
    Messaggi
    337
    Citazione Originariamente Scritto da IlControllore Visualizza Messaggio
    Io non ho niente da dimostrare. So benissimo quali sono i miei orizzonti. Tu puoi dire lo stesso? eppej:
    mi ti lascio da solo 1 giorno Eagle e già litighi con un utente? ahah, comunque "IlControllore" ora ti spiego :

    1) Non possiamo mettere TUTTO in una guida sola
    2) Ognuno ha il suo metodo di insegnare o spiegare le cose
    3) Se qualcuno arriva a voler imparare un linguaggio prima dovrebbe avere le basi, la mia Start To Code può aiutare a comprendere la programmazione

    Ora siamo tutti amici quindi, se sei in grado di fare una guida questo è un forum e sei autorizzato a farla , non siamo tutti uguali e se pensi di spiegare meglio alcuni concetti condividi il tuo sapere con tutti
    Il possibile lo facciamo.
    L'impossibile lo realizziamo.
    Per i miracoli ci stiamo attrezzando.
    Impossibile? ERROR 404 FILE NOT FOUND.

Termini piu ricercati:

Nessuno è atterrato su questa pagina da un motore di ricerca. Almeno, non per ora...