PDA

View Full Version : Sql



Brcondor
3rd October 2012, 09:40
Sto cercando di espandere la mia conoscenza e dopo Access ho deciso di studiare più seriamente Sql.
Intanto sto seguendo basi di dati2(transazioni e robe del genere) e colmando alcuni gap che avevo su basi di dati 1.
Ma rimane un problema, che programma uso?
Io sto provando con Mysql, che mi sembra ancora più semplice di Access.
La cosa che non capisco è cosa devo fare una volta che ho finito la struttura del Db:
devo per forza appoggiarmi a un altro linguaggio di programmazione per costruire le form oppure esiste qualche tool già sviluppato che mi permetta di costruirle stile Access?
Nel caso vedevo java, php e non so che altro: da cosa mi conviene cominciare?
La seconda cosa che vorrei imparare, ma penso di aver capito che strada seguire, è come far si che poi un utente possa utilizzare il DB che ho creato:
devo per forza passare da una webapp o posso farlo girare come standalone sul singolo sistema? Non per altro, quanto per iniziare a fare qualche prova e vedere come funziona.

Zaider
3rd October 2012, 09:43
Non è nemmeno vagamente paragonabile come livello di difficoltà ma noi alle superiori (sono perito informatico) usavamo MSsql + php per lo sviluppo dei form in formato web

Axet
3rd October 2012, 10:04
Riga di comando?
Altrimenti ci son 10239452908 strumenti, su Mac io uso Navicat

Brcondor
3rd October 2012, 10:08
Navicat? Ora vedo cos'è. Grazie.
Cmq + giusto l'iter logico:
- creazione infrastruttura database (schema ER)
- creazione form (navicat o php)
- pubblicazione db su web(prendo spazio su aruba ad esempio) o come standalone
Rimane quindi solo il dubbio su come renderlo standalone. Io lavoro sul mac ma vorrei farlo girare su ubuntu/windows, è una follia infattibile? Da xcode non c'è nulla che posso usare? Adoro xcode :P

Brcondor
3rd October 2012, 15:50
Ma farlo prima in Access e poi trasporlo è una cosa sensata/utile o una perdita di tempo? Così lo tiro in piedi vedo se funziona

Warbarbie
3rd October 2012, 15:56
mysqlworkbench fa tutto da solo.
Senno come detto da axet te lo scrivi a mano

Brcondor
3rd October 2012, 16:14
Ok, ho scaricato Mysql workbench ma non capisco da dove dovrei disegnare le mie maschere...

Warbarbie
3rd October 2012, 16:17
dal menu di data modeling fai lo schema ER, naturalmente devi tirare su un server dal menu server administration

Brcondor
3rd October 2012, 16:32
No ma non mi son spiegato. Io intendo come si fanno le maschere di inserimento dei dati e di esecuzione di query da "bottone". Il diagramma ER è carino da vedere ma non mi serve a un granchè(nel progetto universitario con Access l'avevo fatto prima di iniziare a lavorare su Access...)

Mez
3rd October 2012, 16:50
phpmyadmin con xampp
mysqlwb per me è un po' misero, nel senso... è fatto proprio col culo, mi crashava sempre quando dovevo fare le foreign key

Brcondor
5th October 2012, 10:07
Grazie anche a te Mez, ora finisco con la teoria e poi mi metto a giocare.

San Vegeta
5th October 2012, 19:33
non entro nel merito di mysql che è un po' misero perchè non ne vale la pena, però è necessario far notare che Access è nato come base dati easy e ha delle maschere e editor grafici proprio perchè doveva poter essere usato da gente che non conosce l'SQL.
MySQL è un DB che implementa un linguaggio SQL, quindi non ha maschere... se ti piacciono i form di inserimento dati devi appoggiarti a un linguaggio per il web o un frontened java o .net, altrimenti fai come il resto del mondo e inserisci i dati tramite query di import :)

Brcondor
9th October 2012, 18:53
Dato che potrebbe servirmi per un corso che sto seguendo, mi lancuio sul php(non sembra difficilissimo) e poi lo uso in combo con Myql e bona. Mysql workbench per quello che devo farci io sembra un ottimo fit, non devo fare cose mostruosamente complesse. Grazie a tutti dei consigli :)

Brcondor
11th October 2012, 12:57
Ok avendovi coinvolto mi sento moralmente obbligato a dirvi come sta andando avanti.
Forte dei vari consigli ottenuti qua e la ho deciso di rimboccarmi le maniche. Mi son preso un libro di php per principianti(tra l'altro libro per il 5 anno dei periti informatici) che ha iniziato con html.
Essendo molto semplice tutto è spiegato nei dettagli e in maniera pratica. Appena lo finisco, mi metto a sperimentare e mi compro un secondo manuale più serio magari specifico su php e mysql(ne avevo visto uno a prezzo ragionevole di php5 e mysql).

Il Nando
11th October 2012, 13:15
Tieni conto che il linguaggio SQL è una cosa, i sistemi db un'altra. Posto che conoscere il linguaggio è fondamentale, anche conoscere e smanettare i vari sistemi è utile, soprattutto nell'ottica di scrivere un CV

Se vuoi approfondire ti consiglio di metterti su la versione di sqlserver express (aggratis) e fare un giro col management studio express, ti ritroverai in mano un sistema parecchio tosto, in confronto a mysql (tosto != migliore).
Altrimenti oracle è IL sistema db ma a quanto ne so è duretto da mandar giù.

Personalmente lavorando con microcozz uso soprattutto sqlserver + ado .net e mio malgrado anche mfc (ado qualcosa nn me lo ricordo ghgh), il linguaggio è sempre quello (a parte il transact per fare stored procedure complesse), ma i tool amministrativi per gestire il sistema sono più complessi di quelli di mysql e infinitamente più complessi di access.

Per capirci, conoscendo sql puoi scrivere query ignobili per individuare dei "buchi" in una tabella che rappresenta dei sottopercorsi di una rete ferroviaria, poi ti danno in mano un file dbsalcazzo.bak e ti dicono "ecco puoi installarlo nel tuo sistema", che fai?


Ok avendovi coinvolto mi sento moralmente obbligato a dirvi come sta andando avanti.
Forte dei vari consigli ottenuti qua e la ho deciso di rimboccarmi le maniche. Mi son preso un libro di php per principianti(tra l'altro libro per il 5 anno dei periti informatici) che ha iniziato con html.
Essendo molto semplice tutto è spiegato nei dettagli e in maniera pratica. Appena lo finisco, mi metto a sperimentare e mi compro un secondo manuale più serio magari specifico su php e mysql(ne avevo visto uno a prezzo ragionevole di php5 e mysql).

Ahhhhhhhhhhhhhhh un altro phprogrammatroto! Mio consiglio, se è il tuo primo linguaggio inizia col c++. E' un dito nel culo ma almeno impari a programmare bene (e si impara una volta sola) quando hai capito il c++ puoi passare al .net framework e sviluppare front-end data-oriented con tre click e un ambiente di sviluppo grafico decisamente serio. A sto punto il php lo impari leggendoti una guida for dummies al cesso in tipo 20 minuti.

Tunnel
11th October 2012, 13:37
Per la cronaca tra mssql e MySQL ne passa un abisso. MySQL é un Severino che va bene per farci i siti. Mssql entetprise é tutto un altro mondo. Estremamente più strutturato e complesso. Al limite il paragone é con Oracle, non certo con mysql

Il Nando
11th October 2012, 14:09
Eh immaginavo ma nn conosco abbastanza il sistema mysql (e cmq mssql lo uso a livello piuttosto elementare) per lanciarmi in giudizi. Di mysql io ho smanettato un pò con easyphp e pensavo fosse una versione "light" per capirci.

^Gatsu^
11th October 2012, 15:17
Quando al tempo dell'università ho realizzato progetti in jsp, utilizzavo postgresSQL e mi trovavo decisamente bene. L'IDE era Netbeans.

Tunnel
11th October 2012, 16:27
Si lo preferisco anche io :)

Brcondor
11th October 2012, 17:14
Ahhhhhhhhhhhhhhh un altro phprogrammatroto! Mio consiglio, se è il tuo primo linguaggio inizia col c++. E' un dito nel culo ma almeno impari a programmare bene (e si impara una volta sola) quando hai capito il c++ puoi passare al .net framework e sviluppare front-end data-oriented con tre click e un ambiente di sviluppo grafico decisamente serio. A sto punto il php lo impari leggendoti una guida for dummies al cesso in tipo 20 minuti.
So programmare abbastanza bene in C. Ho sviluppato un progetto abbastanza realistico con Access. Ho usato mille volte Matlab.
Non voglio diventare un programmatore, sto facendo altro. Voglio però sapere come funzionano le cose e cosa si può fare e quanto "costi", e non vedo nessuna alternativa se non quella di cimentarsi con passione.
Io voglion sapere come si fanno le cose, non saperle fare. Una volta che so come si fanno, se mai mi servirà pagherò qualcuno per farle, potendoci però dialogare.

Il Nando
11th October 2012, 17:48
Beh tieni conto che ci sono mille modi per fare un'applicazione data-oriented anche senza cambiare ambiente di sviluppo.

Io lavoro con ado .net e avrò cambiato stile almeno 3 volte passando dai metodi "semiautomatici" a quelli "a manina" via-via che acquisivo esperienza.

In linea di massima cmq ti sconsiglio di iniziare con un linguaggio web come il php che non ha un suo ambiente di sviluppo, ti consiglio c# + .net framework con visual studio .net per vedere cosa offre un ambiente professionale, tanto se il C lo sai usare il c# è la stessa zuppa senza puntatori (per dirla alla carlona). Altrimenti java + eclipse (nn so una mazza in proposito ma per capirci). Puoi usare praticamente qualsiasi tipo di sistema db (mysql/oracle/postgres/sqlserver) con il relativo connector per l'ambiente che hai scelto.

Il punto è che per sviluppare in php un qualcosa di "grafico" attaccato a dei dati devi passare attraverso uno sviluppo feroce (che coinvolge php html e css) oppure personalizzare qualche cms o sistema già pronto. In pratica ti cimenteresti con passione a imparare il codice scritto da qualcun'altro e direi che nn è ciò che vuoi.

Kat
11th October 2012, 19:18
...
tanto se il C lo sai usare il c# è la stessa zuppa senza puntatori (per dirla alla carlona).
...
Direi proprio di no, il C e' procedurale, il C# e' object oriented, sono paradigmi di programmazione differenti.
Potevo capire se dicevi C++, ma il C e' abbastanza diverso.

Hador
11th October 2012, 21:02
Direi proprio di no, il C e' procedurale, il C# e' object oriented, sono paradigmi di programmazione differenti.
Potevo capire se dicevi C++, ma il C e' abbastanza diverso.per non parlare della parte linq e funzionale... cavoli a merenda

Axet
11th October 2012, 21:35
Direi proprio di no, il C e' procedurale, il C# e' object oriented, sono paradigmi di programmazione differenti.
Potevo capire se dicevi C++, ma il C e' abbastanza diverso.

Son tutti imperativi, sempre la stessa solfa. Cioè quel che cambia è l'inserimento del concetto di oggetto, ma alla fine i metodi negli oggetti li scrivi allo stesso modo.
Se sai usare C++ sai usare C, se sai usare C e assimili la logica ad oggetti sai usare C++.
Del resto come detto fan tutti parte della stessa macrofamiglia.

Le differenze vere stanno che so, tra java e prolog :sneer:

Hador
11th October 2012, 21:49
Si ma non toglie che il C# non centra una minchia

Il Nando
12th October 2012, 13:27
Si ho scritto C ma intendevo C++ partendo dal presupposto che se ha imparato a programmare di recente sia partito con quello.

Ciò non toglie che se devi spiegarlo a una persona che non ha molta esperienza la fai semplice: "vuoi imparare un linguaggio-ambiente professionale per sviluppare roba data-oriented? Conosci il C/C++" -> C# e visual studio + mssql.

Come dice axet è sempre la stessa roba più o meno, per intendere che ritrovi molte cose in comune quindi impari più facilmente e metti in saccoccia uno degli strumenti di sviluppo del momento.

Se vogliamo fare la punta al cazzo (paradigmi, linq et svaire) facciamocela fra di noi che magari ci lavoriamo da anni :p

Hador
12th October 2012, 14:12
Il fatto che uno riesca a scrivere del codice non vuol dire che sappia programmare :nod:
C e C++ sono linguaggi system level dove hai controllo diretto sulla memoria e sono deterministici nella compilazione; C# e Java no, sono linguaggi più di alto livello, si programma in modo diverso e hanno altre pecularietà. C# poi ormai ha dentro tanta di quella roba che proprio fa discorso a parte, type inference, dynamic typing, multiple inheritance, operatori funzionali... Che poi uno ne possa usare un decimo ok, ma non vuol dire che sai usare il linguaggio :D

Il Nando
12th October 2012, 15:10
Il C# mantiene il controllo esplicito della memoria tramite la key 'unsafe' http://msdn.microsoft.com/it-it/library/chfa2zb8.aspx

Il java non mi risulta abbia una robba del genere. Il C# è l'evoluzione diretta del C++ con i tipi reimpostati in ottica object-oriented e con il garbage collector e un pacco di robe in più che puntano dritte ad aumentare il livello di astrazione fino ad arrivare ad essere quasi astruse (tipo la reflection toh).

Se lui riesce a scrivere del codice C(++) a maggior ragione dovrebbe riuscire a usare c# seguendo una qualsiasi guida for dummies di ado.net e imbastire un'applicazione data oriented con form pomelli data-grid scrollbar e cazzatine varie, anche non sapendo programmare: lavorando con i wizard devi fare qualche clicketi-click qua e la e sei servito, c'e' gente che ha un livello di competenza di ben poco superiore e si fa pagare come programmatore (prima o poi capita a tutti di lavorarci assieme a sti soggetti).

Poi chiaramente si ferma lì, il passo successivo è imparare sul serio per poter dire di "saper programmare" -scrivo codice da 10 anni buoni e ancora ho un sacco da imparare- ma quello non è il suo obiettivo a detta sua. Però imho può a farsi un'idea di come funziona questo genere di software in poco tempo, di certo molto meno che se volesse sviluppare via php/html/css.

Brcondor
12th November 2012, 13:22
Ok, sorge un nuovo problema.
Oltre a imparare tanto per, sto seguendo pure in modalita kamikaze anche basi di dati 2. Ho imparato(devo sistemare due cosette) a scrivere codice con SQL, ora stavo cercando di digerire meglio i cazzo di trigger. Avendo poca esperienza in scrittura di codice sql a manina, avevo pensato di tirar su MySQL e cimentarmi, accantonando il discorso del frontend grafico.
Ma...
1. mysql non mi fa fare 2 trigger che partano nello stesso momento sulla stessa tabella e
2. è come se when non funzionasse: cosa c'è di sbagliato in questo codice
Create trigger T1
after insert on Iscrizioni
for each row
when not exists
(select *
from Studenti
where matr=new.matrstud)
OR
not exists
(select *
from CorsiAnni
where new.Corso=Codcors AND new.Anno=Anno)
Rollback;
Posto che non l'ho lanciato (quindi non ho errori su tabelle) perxhè mi da proprio errore di sintassi sulla riga del when.
Per fare solo la programmazione a manina, che cavolo uso senza le limitazioni sui trgger?

Ladro di anime
12th November 2012, 14:08
A parte la sintassi errata, mi pare che non puoi usare query o subquery nel when, sposta tutto nella parte del codice.
Rollback o commit dentro i trigger non si mettono, se vuoi fai partire qualche errore.

Cifra
12th November 2012, 14:29
Oppure fai la union delle due tabelle della when

PS ops forse hanno chiavi diverse.

Brcondor
12th November 2012, 18:36
Quel codice in teoria è sicuramente giusto dato che è la soluzione di un esercizio... quindi in linea teoria puoi usare subquery nel when.
Un qualche programma che mi èermetta di fare trigger senza sbattermi di èproblemi diversi dallo scrivere il trigger giusto?

Rise-the-Sky
13th November 2012, 11:02
A parte che non è chiaro se stai studiando SQL o MYSQL.
Nel 1 caso la soluzione del tuo problema è usare una RULE e non un trigger.
Nel 2 caso MySQL da barbonaccio com'è non ti dà la possibilità quindi devi usare un trigger.

Non toccando MySQL da molto non so dirti perchè quella sintassi sia errata .. potrebbe essere la mancanza di Begin End ma non son sicuro.
Alternativamente però a quella soluzione potresti sostituire il blocco when /rollback con una banalissima DELETE sulla tua tabella che elimini l'elemento che hai appena inserito nel caso in cui non rispetti le 2 condizioni da te stabilite.

(ES: DELETE
FROM Iscrizioni as I
LEFT JOIN Studenti as S ON (S.matr=I.matrstud)
LEFT JOIN CorsiAnni as C ON (I.Corso = C.Codcors AND I.Anno=C.Anno)
WHERE I.id = New.ID
AND (S.id IS NULL OR C.id IS NULL)
)


PS:è confortante sapere che ogni volta che guardo nella documentazione di MySQL trovo qualche buon motivo per rinnovare il mio odio vs di lui :pokerfacen: