1-2-3-4-5 Mysql , Gui , CREATE

SQL (Structured Query Language), come dice il nome, è un linguaggio strutturato per l’interrogazione.

Un buon strumento gratuito per la gestione dei database con mySQL è MySQLWorkbench di Oracle.

Le comuni operazioni possono essere comunque effettuate col classico PhpMyAdmin.

Creare ora un nuovo database chiamato Olimpiadi, con una tabella atleti, che contiene le generalità degli atleti.

ecco il comando SQL:

CREATE TABLE `Olimpiadi`.`atleti` (
 `idatleta` INT UNSIGNED NOT NULL AUTO_INCREMENT,
 `cognome` CHAR(30) NOT NULL,
 `nome` CHAR(30) NOT NULL,
 `eta` INT(10) UNSIGNED NOT NULL,
 `nazione` INT(10) NOT NULL DEFAULT 0,
 PRIMARY KEY (`idatleta`));

una discipline

CREATE TABLE `Olimpiadi`.`sidcipline` (
 `idDisciplina` INT(3) UNSIGNED NULL AUTO_INCREMENT,
 `nomeDisciplina` CHAR(30) NOT NULL DEFAULT 0,
 PRIMARY KEY (`idDisciplina`));

una atletidiscipline, che permette di collegare diversi atleti che praticano più discipline (1 a M(olti) )

CREATE TABLE `Olimpiadi`.`atletidiscipline` (
 `idAtDis` INT NULL AUTO_INCREMENT,
 `atleta` INT(3) UNSIGNED NULL DEFAULT 0 COMMENT ' ',
 `disciplina` INT(3) UNSIGNED NULL DEFAULT 0,
 PRIMARY KEY (`idAtDis`));

e una nazioni dove l’idNazione sarà il numero corrispondente del campo nazione della tabella atleti

CREATE TABLE `Olimpiadi`.`nazioni` (
  `idNazione` TINYINT(3) NULL AUTO_INCREMENT,
  `nomeNazione` CHAR(30) NULL,
  PRIMARY KEY (`idNazione`));

Popolare le tabelle con un po’ di records.

Il linguaggio SQL si distingue per tre proprietà fondamentali dal punto di vista logico:

DDL = Data Definition Language

comandi per definire la struttura delle tabelle  e delle associazioni che esistono tra queste, nonché eventuali vincoli di integrità.

Di questa categoria fanno parte i comandi:

CREATE per creare una tabella

DROP per eliminare una tabella

ALTER per aggiungere o togliere campi da una tabella

DML = Data Manipulation Language

per la manipolazione dei dati contenuti in un database.

INSERT per aggiungere records

DELETE per eliminare records

UPDATE per aggiornare i records

QL = QUERY LANGUAGE

proprietà utile all’interrogazione e estrazione.

SELECT estrae dati e righe, anche di più tabelle per istituire congiunzioni o criteri di ricerca e filtraggi.

CREATE

la sintassi è

CREATE TABLE nome_tabella (campi e parametri)

vediamo un esempio pratico:

create table prova (idprova int (3) not null , descrizione char (30) , primary key(idprova) );

Abbiamo creato una tabella chiamata prova. Al suo interno abbiamo inserito 2 campi:

idprova che è di tipo intero. Il 3 è l’ampiezza della stampa del campo (non la dimensione massima), quindi se io scrivo 12, vuol dire che sql aggiunge uno zero davanti, quindi stamperà 012.

descrizione è un char, quindi contiene caratteri con una dimensione massima di 30 . Anche il char riempie di spazi il mio record, dino al raggiungimento della cifra indicata (in questo caso 30). Il varchar, invece occupa lo spazio realmente inserito.

Primary key specifica il campo che funge da chiave primaria in questo caso idprova. Esiste poi la sintassi che mi permette di inserire primary key subito nelle caratteristiche del campo (idprova int (3) not null primary key).

Un altra caratteristica dei campi è unique: descrizione char (30) unique , il quale stabilisce che all’interno di quel campo non vi possono essere 2 record identici. Quando un campo viene definito unique, viene automaticamente creato un indice di quel campo, il che velocizza notevolmente la ricerca, diminuendo però l’inserimento e la cancellazione. La proprietà unique, non è sempre la scelta migliore per creare un indice, pensate al campo cognomi quante omonimie può avere, si può anche assegnare tramite la keyword index:

index(descrizione);

Aggiungiamo il campo sesso di 1 carattere con un valore predefinito M

sesso char (1) default 'M' ,

L’auto incremento si assegna solo ad un campo numerico e normalmente lo si assegna alla chiave primaria

idprova int (3) not null primary key auto_increment 

L’auto incremento in Microsoft SQL server viene scritto con identity(1,1) ovvero identità con valore di partenza 1 e incremento 1.

Un proprietà utile è il controllo:

eta int (3) not null check(eta between 0 and 120)

Verifica che sia vera la parte specificata tra parentesi quindi accesa si 0 che il 120 .