Guida 1.8 Query SQL comuni

RE: Query SQL comuni

#1
Cosa sono le query SQL?
Sono delle richieste effettuate a un database, spesso per delle modifiche di massa o per cambiare alcuni dati con lo stesso valore.

Come si scrivono?
Ci sono 2 metodi suggeriti per scriverle. Per dimostrarveli, ecco un esempio di come impostare il campo postcount del primo utente a 0.

UPDATE `mybb_usersSET `postnum` = '0' WHERE `uid` = '1' 

oppure

UPDATE mybb_users SET postnum=0 WHERE uid=

Questa query aggiornerà la tabella mybb_users e imposterà il valore della colonna postnum (contatore post) a 0, dove il valore della colonna uid (ID utente) è uguale a 1.
Tutto il testo in grassetto è presente nella query, nello stesso ordine. Quando eseguirete questa query, vi verrà detto che una riga è stata modificata.

Il layout di questi 2 esempi è diverso. Uno ha ` e ' con spazi tra ogni parola, mentre l'altro no. Entrambi gli stili funzioneranno ma state attenti. Se usate il primo, assicuratevi di usare correttamente ` e '. Le tabelle del database o il nome delle colonne devono avere `, mentre l'informazione che deve essere cambiata devere avere '. Le funzioni delle query SQL sono case insensitive, quindi funzioneranno lo stesso se le scrivere in maiuscolo o in minuscolo: UPDATE/update, SET/set, WHERE/where.

Per specificare un database in una query, potete usare questa:

UPDATE `nome_database`.`mybb_usersSET `postnum` = '0' WHERE `uid` = '0' 

Come potete vedere anche il nome del database utilizza ` e c'è un . tra il nome del database e il nome della tabella.

Cosa può andare storto?
Quando eseguite le query, assicuratevi che quello che volete fare sia giusto. Le modifiche effettuate non possono essere annullate. Se eseguite una query che imposta a tutti gli utenti lo stesso indirizzo email, causerete un sacco di problemi e non potrete tornare indietro. Questo è un classico esempio di cosa può andare storto.

Questa query imposterà l'email dell'utente con uid 1 a email@dominio.it. Con questa query verrà modificata una sola riga perché abbiamo specificato di modificare soltando la riga dove uid = 1.

UPDATE `mybb_usersSET `email` = 'email@dominio.it' WHERE `uid` = '1' 

Però se eseguite quest'altra...

UPDATE `mybb_usersSET `email` = 'email@dominio.it' 

...oops!! Avete impostato l'email di ogni singolo utente a email@dominio.it. Questo perché non è stato specificato quali righe modificare, quindi sono state cambiate tutte. Questo è un grosso problema perché gli utenti non riceveranno le email per recuperare la password, per le sottoscrizioni ed altre.

Tuttavia, in alcuni casi che vedremo dopo, è consentito non specificare le righe da modificare. Questo può essere fatto se realmente vogliamo modificare ogni singola riga allo stesso valore, per esempio rimuovere tutti gli avatar.

Quali query utilizzare?
La maggior parte delle query che userete per risolvere un problema saranno query di aggiornamento che aggiorneranno le righe invece di aggiungere o rimuovere qualcosa. Però ci sono altri tipi che possiamo usare.

Qui sotto c'è una lista di query utili che potrai usare. Alcune di queste necessitano ulteriori azioni. Se durante l'installazione avete impostato un prefisso delle tabelle diverso, dovete sostituire mybb_ con il prefisso usato.

Impostare il postbit classico a tutti gli utenti
UPDATE `mybb_usersSET `classicpostbit` = '1' WHERE `classicpostbit` = '0' 

Impostare il postbit orizzontale a tutti gli utenti
UPDATE `mybb_usersSET `classicpostbit` = '1' WHERE `classicpostbit` = '1' 

Impostare una password dimenticata a 'test' (bisogna modificare la X con l'uid dell'utente)
UPDATE `mybb_usersSET `password` = '098f6bcd4621d373cade4e832627b4f6', `salt` = '' WHERE `uid` = 'X' 

Reimpostare il vostor gruppo utente primario a Admin se lo avete cambiato (modificate l'uid se il vostro non è 1)
UPDATE `mybb_usersSET `usergroup` = '4' WHERE `uid` = '1' 

Disattivare la valutazione delle discussioni in tutti i forum (Richiede di ricostruire la cache 'forums' nel pannello amministratore)
UPDATE `mybb_forumsSET `allowtratings` = '0' WHERE `allowtratings` = '1' 

Attivare la valutazione delle discussioni in tutti i forum (Richiede di ricostruire la cache 'forums' nel pannello amministratore)
UPDATE `mybb_forumsSET `allowtratings` = '1' WHERE `allowtratings` = '0' 

Rendere tutti gli utenti invisibili visibili
UPDATE `mybb_usersSET `invisible` = '0' WHERE `invisible` = '1' 

Rimuovere tutti gli avatar
UPDATE `mybb_usersSET `avatar` = '' 

Rimuovere tutte le firme
UPDATE `mybb_usersSET `signature` = '' 

Rimuovere i titoli utente personalizzati
UPDATE `mybb_usersSET `usertitle` = '' 

Impostare a tutti gli utenti di ricevere email dagli amministratori
UPDATE `mybb_usersSET `allownotices` = '1' WHERE `allownotices` = '0' 

Impostare a tutti gli utenti di ricevere messaggi privati
UPDATE `mybb_usersSET `receivepms` = '1' WHERE `receivepms` = '0' 

Attivare tutti gli utenti in attesa attivazione
UPDATE `mybb_usersSET `usergroup` = '2' WHERE `usergroup` = '5' 

Eliminare tutti gli utenti in attesa attivazione
DELETE FROM `mybb_usersWHERE `usergroup` = '5' 

Azzerare le visite delle discussioni
UPDATE `mybb_threadsSET `views` = '0' 

Come si eseguono le query?
Per eseguire le query, dovete avere l'accesso ad un database manager come PHPMyAdmin. Una volta entrati dovete selezionare il vostro database e trovare l'area in cui eseguire le query, in PHPMyAdmin c'è una sezione chiamata SQL.

Se l'esecuzione della query vi restituisce un errore, assicuratevi che sia stata scritta correttamente.

È fortemente consigliato di non eseguire una query se:
  1. non si è sicuri di cosa farà;
  2. non si `è sicuri che sia corretta
  3. non vi fidate di chi vi ha dato la query

Utilizzare le query SQL è come giocare col fuoco, fate un piccolo errore e potreste essere nei guai.

Spero che questa guida vi sia stata di aiuto. Se necessitate di chiarimenti o volete che sia aggiunto qualcosa, fatemelo sapere.
 

RE: Query SQL comuni

#2
Hai dimenticato di aggiungere questo codice per azzerare a 0 tutte le visite dei post


UPDATE `mybb_threadsSET `views` = '0' 
 

RE: Query SQL comuni

#3
Grazie, lo aggiungo.
Citazione:Noi non possiamo aiutare tutti, ma tutti possono aiutare qualcuno
 
  

Vai al forum:


Utenti in questa pagina: 1 Ospite(i)