![]() |
Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Basi di dati ~ informatica triennale (http://www.dsy.it/forum/forumdisplay.php?forumid=211)
-- Un po' di comandi SQL (http://www.dsy.it/forum/showthread.php?threadid=32469)
Un po' di comandi SQL
Hola gente...
Cercasi qualche "virtuoso" di SQL...
Mettiamo questo esempio:
- ho definito uno schema che si chiama universitario
- all'interno di questo schema ho 2 tabelle: studente e docente
- docente ha 3 attributi/colonne: nome , cognome , corso tenuto
- ho definito l'attributo nome come PRIMARY KEY
Ipotesi: mi accorgo che non va bene come chiave primaria. Con che sitassi devo usare il comando ALTER per ri-definire come chiave primaria (ad es.) nome e cognome?
P.S. (per i più pedanti&pignoli) SO che la Castano ha detto che "una base cosi progettata non va bene, perché la chiave primaria è stata scelta male. Invece del comando ALTER si sarebbe dovuta progettare meglio la tabella..."; la mia è semplice curiosità...
Se hai usato una sintassi del genere:
il terminale psql dovrebbe restituirti questo messaggio:code:
CREATE TABLE docenti ( nome VARCHAR(50) PRIMARY KEY, cognome VARCHAR(50) NOT NULL, corso INTEGER REFERENCES qualcosa );
Postgres non offre il comodissimo comando DROP PRIMARY KEY quindi bisogna arrangiarsi così:code:
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "nome_pkey" for table "docenti" CREATE TABLE
Fammi sapere se funziona o trovi una soluzione meno macchinosa!code:
ALTER TABLE docenti DROP CONSTRAINT nome_pkey; ALTER TABLE docenti ADD CONSTRAINT pr_key PRIMARY KEY (nome, cognome);
__________________
The answer is blowing in the wind...
perfetto...
appena testato, funziona benissimo...
grazie mille
Quando ho una tabella con relazione n a n... è corretto (come scritto in seguito) usare una sintassi del genere per definire le due chiavi esterne che sono anche chiavi primarie..
CREATE TABLE esamiSvolti (
Matricola char[10],
codEsame int[10]
PRIMARY KEY(Matricola, codEsame)
FOREIGN KEY (codEsame, Matricola)
REFERENCES esami(codEsame), matricole(Matricola)
ON DELETE SET NULL
ON UPDATE CASCADE
)
__________________
My Blog - My Photo Album
Prova con:
code:
CREATE TABLE esamiSvolti ( Matricola INTEGER REFERENCES matricole (Matricola) ON DELETE SET NULL ON UPDATE CASCADE, codEsame INTEGER REFERENCES esami (codEsame) ON DELETE SET NULL ON UPDATE CASCADE, PRIMARY KEY (Matricola, codEsame) );
__________________
The answer is blowing in the wind...
in che formato salvereste delle percentuali in un db?
qualcosa del tipo 1.1 per il 10% o direttamente un int/doube contenente il 10?
__________________
My Blog - My Photo Album
Originally posted by johnnyd
in che formato salvereste delle percentuali in un db?
qualcosa del tipo 1.1 per il 10% o direttamente un int/doube contenente il 10?
scusate,
il prof ferrara all'ultima lezione ha spiegato a grandi linee l'installazione di psql.
io ce l'ho già installato e funzionante, ma vedevo che lui creava un cluster e utilizzava il comando "postmaster" che nella versione per windows non ho trovato.
sapete qual è il suo corrispettivo?
grazie
quasi mi vergogno a chiederlo...
pero non sono proprio riuscito a trovare il carattere di escape..
mi spiego meglio.
in una colonna definita come varchar(20) voglio inserire L'armata brancaleone . Siccome bisogna digitare
code:
INSERT INTO nome_tabella VALUES ('L'armata bracaleone')
Originally posted by CaboM.BNA
quasi mi vergogno a chiederlo...
pero non sono proprio riuscito a trovare il carattere di escape..
mi spiego meglio.
in una colonna definita come varchar(20) voglio inserire L'armata brancaleone . Siccome bisogna digitare
code:
INSERT INTO nome_tabella VALUES ('L'armata bracaleone')
ti ringrazio...
ho appena testato, è proprio come dicevi tu..
certo che io sono babbo però...
non avevo provato la COSA PIU' OVVIA...
avevo immediatamente pensato solo caratteri come \ o " ..
Originally posted by CaboM.BNA
quasi mi vergogno a chiederlo...
pero non sono proprio riuscito a trovare il carattere di escape..
mi spiego meglio.
in una colonna definita come varchar(20) voglio inserire L'armata brancaleone . Siccome bisogna digitare
code:
INSERT INTO nome_tabella VALUES ('L'armata bracaleone')
Originally posted by CaboM.BNA
ti ringrazio...
ho appena testato, è proprio come dicevi tu..
certo che io sono babbo però...
non avevo provato la COSA PIU' OVVIA...
avevo immediatamente pensato solo caratteri come \ o " ..
All times are GMT. The time now is 08:17. | Show all 13 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.