I migliori 10 articoli riguardanti i database

Sito web: http://woork.blogspot.com/2008/09/10-useful-articles-about-database.html

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • blinkbits
  • BlinkList
  • blogmarks
  • co.mments
  • del.icio.us
  • De.lirio.us
  • digg
  • Fark
  • feedmelinks
  • Furl
  • LinkaGoGo
  • Ma.gnolia
  • NewsVine
  • Reddit
  • scuttle
  • Smarking
  • Spurl
  • YahooMyWeb
  • DZone
  • Internetmedia
  • Snap2r
  • Technorati

Ottenere la distanza in metri tra due coordinate satellitari

Fantastica query sql che ci permette di ottenere la distanza in metri tra due coordinate (latitudine e longitudine)

SELECT *,
TRUNCATE ( 6363 * sqrt( POW( RADIANS(40) - RADIANS(l.lt) , 2 ) + POW( RADIANS(10) - RADIANS(l.lg) , 2 ) ) , 3 ) AS dist
FROM hotels AS l
WHERE TRUNCATE ( 6363 * sqrt( POW( RADIANS($lat) - RADIANS(l.latitudine) , 2 ) + POW( RADIANS($long) - RADIANS(l.longitudine) , 2 ) ) , 3 ) < $dist
ORDER BY dist ASC";

Non ricordo la fonte, per cui mi scuso con l'autore che nn cito.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • blinkbits
  • BlinkList
  • blogmarks
  • co.mments
  • del.icio.us
  • De.lirio.us
  • digg
  • Fark
  • feedmelinks
  • Furl
  • LinkaGoGo
  • Ma.gnolia
  • NewsVine
  • Reddit
  • scuttle
  • Smarking
  • Spurl
  • YahooMyWeb
  • DZone
  • Internetmedia
  • Snap2r
  • Technorati

15000 tutorials per photoshop

Ottima raccolta di tutorials su good-tutorials.com divisi per categorie.

Sito web: http://www.good-tutorials.com/

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • blinkbits
  • BlinkList
  • blogmarks
  • co.mments
  • del.icio.us
  • De.lirio.us
  • digg
  • Fark
  • feedmelinks
  • Furl
  • LinkaGoGo
  • Ma.gnolia
  • NewsVine
  • Reddit
  • scuttle
  • Smarking
  • Spurl
  • YahooMyWeb
  • DZone
  • Internetmedia
  • Snap2r
  • Technorati

Corso veloce di mysql

CREAZIONE DB/TABELLA

- CREATE DATABASE nome_database
DROP DATABASE nome_database # elimina il DB
- CREATE TABLE nome_tabella
(
nome_colonna tipo_dato clausule,
nome_colonna2 tipo_dato clausule,
...
)
DROP TABLE nome_tabella # elimina la tabella
DELETE TABLE nome_tabella # elimina il contenuto di una tabella
ALTER TABLE nome_tabella ADD nome_colonna tipo_dato # aggiunge una colonna alla tabella
ALTER TABLE nome_tabella DROP nome_colonna # rimuove una colonna dalla tabella

COMANDI

- Select
Seleziona colonne di dati da un database e mette il
risultato (result set) in una tabella.
Sintassi: SELECT nome_colonna FROM nome_tabella
- Insert into
Inserisce nuovi record in una tabella:
Sintassi: INSERT INTO nome_tabella VALUES (valore1, valore2,....)
# numero valori = numero colonne della tabella
INSERT INTO nome_tabella(colonna_uno, colonna_due,...) VALUES (valore_uno, valore_due,....)
- Update
Modifica il valore di un dato.
Sintassi: UPDATE nome_tabella SET nome_colonna=nuovo_valore,nome_colonna2=nuovo_valore2
WHERE nome_colonna=vecchio_valore
- Delete
Elimina record da una tabella.
Sintassi: DELETE FROM nome_tabella WHERE nome_colonna=valore
- Where
Estrae i dati da una tabella con un criterio.
Sintassi: SELECT nome_colonna FROM nome_tabella
WHERE nome_colonna condizione valore

OPERATORI

= Uguale
<>; Diverso
< Maggiore di
> Minore di
< = Maggiore o uguale a
>= Minore o uguale a
BETWEEN Compreso tra (NOT BETWEEN non compreso tra)
SELECT nome_colonna FROM nome_tabella WHERE nome_colonna BETWEEN valore AND valore
LIKE Che contenga ( _ = ? in bash; % = * in bash)
SELECT nome_colonna FROM nome_tabella WHERE nome_colonna LIKE valore
AND tutte le condizioni WHERE sono vere
OR almeno una condizione WHERE e' vera
SELECT nome_colonna FROM nome_tabella WHERE nome_colonna='stringa' AND/OR nome_colonna2='stringa2'

Tutti i valori diversi da numeri devono essere racchiusi fra gli apici

ALTRI COMANDI

- Distinct
Estrae da una tabella una colonna di dati senza record doppi.
Sintassi: SELECT DISTINCT nome_colonna FROM nome_tabella
- Order By
Ordina i record in base alla condizione definita.
Sintassi: SELECT campo1, campo2 FROM nome_tabella ORDER BY campo1 (DESC)
- Select Count
Conta i record di una select.
Sintassi: SELECT COUNT(nome_colonna) FROM nome_tabella
COUNT(*) : numero di record di una select.
COUNT(nome_colonna) : numero di record di una colonna escludendo gli elementi nulli.
- Count Distinct
numero di record di una select senza record doppi.
Sintassi: SELECT DISTINCT COUNT(nome_colonna) FROM nome_tabella
- Group By
Insieme a SUM() ritorna la somma associata ad un determinato record
Sintassi:
SELECT nome_colonna, SUM(nome_colonna) FROM nome_tabella GROUP BY nome_colonna
- Having
Con SUM() estrae solamente i record che rispettano un determinato valore.
Sintassi:
SELECT nome_colonna,SUM(nome_colonna) FROM nome_tabella GROUP BY nome_colonna
HAVING SUM(nome_colonna) condizione valore
- Alias
Sintassi: SELECT nome_colonna AS colonna_alias FROM nome_tabella
SELECT nome_colonna FROM nome_tabella AS tabella_alias
- Union
Permette di eseguire piu' select contemporaneamente
es: SELECT nome_colonna FROM nome_tabella UNION SELECT nome_colonna FROM nome_tabella2
# i campi delle tabelle devono essere dello stesso tipo
- Select Innestate
SELECT nome_colonna FROM nome_tabella
WHERE nome_tabella.nome_colonna = (SELECT nome_tabella2.nome_colonna FROM nome_tabella2) #MYSQL
nome_tabella2nome_tabella2nome_tabella2
WHERE nome_tabella.nome_colonna IN (NOT IN) (value1,value2,value3..) # Oracle
- Concat
SELECT nome_colonna||' '||nome_colonna2 FROM nome_tabella
- Auto Increment
Se settato, in una INSERT possiamo dare il valore NULL al campo.
In Oracle si chiama SEQUENCE. es : INSERT INTO nome_tabella VALUES (nome_tabellaseq.nextval)

FUNZIONI

SELECT function(nome_colonna) FROM nome_tabella
AVG(nome_colonna) : media
MIN(nome_colonna) : valore piu' piccolo
MAX(nome_colonna) : valore piu' grande
SUM(nome_colonna) : somma

I valori nulli non vengono presi in considerazione

-- mysql
root@miau [~]
# /data/programs/mysql/bin/mysql -u root --password
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9 to server version: 5.0.22-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)

mysql> use test;
Database changed
mysql> show tables;
Empty set (0.01 sec)

mysql> show tables;
mysql> desc TABLE_NAME;

# eseguire uno script su mysql
cat pippo.sql | mysql -u root -p -D DB

# dump db
mysqldump -u username -ppassword database_name >FILE.sql
mysql -u username -ppassword database_name < FILE.sql

# user
mysql> create user 'user'@'localhost' IDENTIFIED BY 'password';

mysql> GRANT ALL ON database.* TO 'user'@'localhost'

# varie query
mysql> select ID from glpi_computers where name='prova';
delete from glpi_monitors where id >40;
update glpi_connect_wire set type='4';
# altre query
# problema lettere accentate migrazione mysql char_mysql

Fonte: http://www.securebrain.com/sql.html

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • blinkbits
  • BlinkList
  • blogmarks
  • co.mments
  • del.icio.us
  • De.lirio.us
  • digg
  • Fark
  • feedmelinks
  • Furl
  • LinkaGoGo
  • Ma.gnolia
  • NewsVine
  • Reddit
  • scuttle
  • Smarking
  • Spurl
  • YahooMyWeb
  • DZone
  • Internetmedia
  • Snap2r
  • Technorati

10 articoli su come ottimizzare mysql

  1. Identifying slow MySQL queries
  2. MySQL & PHP Performance Optimization Tips
  3. MySQL Presentations: Optimizing MySQL
  4. MySQL 5 Optimization and Tuning Guide
  5. Survive heavy traffic with your Web server
  6. Tools to use for MySQL Performance - Peter Zaitsev
  7. MySQL Queries Optimization (video) - Peter Zaitsev
  8. Table Design and MySQL Index Details
  9. MySQL Reference Manual: Optimization Overview
  10. MySQL Reference Manual: The MySQL Query Cache

Via: http://www.fanphp.com/2008/06/20/mysql-database-optimization/

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • blinkbits
  • BlinkList
  • blogmarks
  • co.mments
  • del.icio.us
  • De.lirio.us
  • digg
  • Fark
  • feedmelinks
  • Furl
  • LinkaGoGo
  • Ma.gnolia
  • NewsVine
  • Reddit
  • scuttle
  • Smarking
  • Spurl
  • YahooMyWeb
  • DZone
  • Internetmedia
  • Snap2r
  • Technorati

Trovare duplicati in una tabella con mysql

 
SELECT db1.*
FROM tbl_data db1, tbl_data k2
WHERE db1.id <> db2.id
AND db1.name = db2.name
 

db1.id must be the PK
db1.name must be the fields that should be verified as double entries.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • blinkbits
  • BlinkList
  • blogmarks
  • co.mments
  • del.icio.us
  • De.lirio.us
  • digg
  • Fark
  • feedmelinks
  • Furl
  • LinkaGoGo
  • Ma.gnolia
  • NewsVine
  • Reddit
  • scuttle
  • Smarking
  • Spurl
  • YahooMyWeb
  • DZone
  • Internetmedia
  • Snap2r
  • Technorati

Tutorial avanzati su tematiche web su nettuts.com

Ottimo sito dove poter trovare interessanti tutorial avanazati su programmazione web.

Sito web: http://nettuts.com/

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • blinkbits
  • BlinkList
  • blogmarks
  • co.mments
  • del.icio.us
  • De.lirio.us
  • digg
  • Fark
  • feedmelinks
  • Furl
  • LinkaGoGo
  • Ma.gnolia
  • NewsVine
  • Reddit
  • scuttle
  • Smarking
  • Spurl
  • YahooMyWeb
  • DZone
  • Internetmedia
  • Snap2r
  • Technorati

Differenza tra due date con mysql

Supponiamo di avere due campi di tipo date e vogliamo calcolare il numero di giorni che li separano:

select (TO_DAYS(data1)-TO_DAYS(dati)) as giorni from tabella

ad oggi invece 

select (TO_DAYS(data1)-TO_DAYS(now())) as giorni from tabella

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • blinkbits
  • BlinkList
  • blogmarks
  • co.mments
  • del.icio.us
  • De.lirio.us
  • digg
  • Fark
  • feedmelinks
  • Furl
  • LinkaGoGo
  • Ma.gnolia
  • NewsVine
  • Reddit
  • scuttle
  • Smarking
  • Spurl
  • YahooMyWeb
  • DZone
  • Internetmedia
  • Snap2r
  • Technorati

Come YouTube scala MySQL per il suo database

 

“Nel 2006, YouTube serviva approssimatamente 100 milioni di video al giorno.Per mantenere un sito web di queste dimensioni uno può pensare che YouTube ha centinaia di DBAs. In effetti ci sono solo 3 persone che fanno tutto il lavoro. Paul Tuckfield, MySQL DBA at YouTube condivide le storie orribilanti sulla scalabilità di YouTube e come ha combattuto con questi problemi. Lo stesso svela i tre passi fondamentali della scalabilità di YouTube: Python, Memcache e MySQL replication. Molte persone pensano che risolvere i problemi di scalabilità significa aumentare hardware e potenza della CPU. Ma non è solo questo”

Articolo completo: http://itc.conversationsnetwork.org/shows/detail3299.html

Altri articoli: http://mysqldatabaseadministration.blogspot.com/2007/04/youtube-and-mysql.html

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • blinkbits
  • BlinkList
  • blogmarks
  • co.mments
  • del.icio.us
  • De.lirio.us
  • digg
  • Fark
  • feedmelinks
  • Furl
  • LinkaGoGo
  • Ma.gnolia
  • NewsVine
  • Reddit
  • scuttle
  • Smarking
  • Spurl
  • YahooMyWeb
  • DZone
  • Internetmedia
  • Snap2r
  • Technorati

Ordinare i risultati di una query per rilevanza

Per un lavoro che sto seguendo mi è stato chiesto di preparare un motore di ricerca dove i risultati della query devono essere ordinati in base alla rilevanza che questi hanno con le parole cercate.

il problema è che la rilevanza dei singoli record varia a seconda del campo nel quale vengono trovate e dal numero di parole cercate.

immagine una tabella con la seguente struttura:

  • id
  • titolo
  • descrizione
  • keywords
  • il motore di ricerca deve cercare all’interno dei campi titolo, descrizione e keywords con il criterio “like ‘%parola%’ ” ma deve visualizzare prima i risultati dove il match è positivo per titolo , poi per keywords ed infine per descrizione.

    il discorso di complica se le parole cercate sono più di una in quanto la rilavenza di un match completo su tutte le parola vale di più di uno parziale.

    quello che segue è la mia soluzione al problema …

    nell’ottica di ottimizzare la ricerca in maniera che sia il più performante possibile ho cercato di utilizzare un’unica query preparata da una pre-elebarazione via codice.

    quello che segue è un esempio di una query ( ottimizzata per mysql ) dove l’utente ha cercato due parole ( parolauno e paroladue )

    select
    ( if ( instr( titolo , ‘parola_uno‘) > 0 , 5 , 0 )
    + if ( instr( titolo , ‘parola_due‘ ) > 0 , 5 , 0 )
    + if ( instr( keywords, ‘parola_uno‘) ‘ ) > 0 , 3 , 0 )
    + if ( instr( keywords, ‘parola_due‘) ‘ ) > 0 , 3 , 0 )
    + if ( instr( descrizione, ‘parola_uno‘) ‘ ) > 0 , 1 , 0 )
    + if ( instr( descrizione, ‘parola_due’) ‘ ) > 0 , 1 , 0 )
    ) as relevance ,
    titolo ,
    descrizione ,
    keywords
    from nometabella
    where
    concat_ws(’ ‘ , titolo , descrizione , keywords) like ‘%parola_uno%’
    and concat_ws(’ ‘ , titolo , descrizione , keywords) like ‘%parola_due%’
    order by relevance desc

    in pratica ho fatto creare a mysql, durante l’elaborazione della query, un campo ( relevance ) ricavato dalla somma dei valori ricavati a loro volta dalla combinazione di una funzione if ed instr.

    dopo aver essegnato in modo arbitrario un valore all’importanza del campo ( 5 per titolo , 3 per keywords e 1 per descrizione ) testo con un if se instr restituisce un valore maggiore di 0 in caso di math positivo restituisco il valore assegnato all’importanza del campo mentre in caso di math negativo restituisco 0 ( zero )

    creando un loop da codice che cicla per il numero di parole cercate, avremo ( nell’esempio ) la somma di 6 valori che nel caso di rilevanza massima assumera il valore 18 ( 5 + 5 + 3 + 3 + 1 + 1) e nel caso di rilevanza minima 1 ( 0 + 0 + 0 + 0 + 0 + 1)

    avendo a questo punto valorizzato il singolo record , è stato sufficente creare un ordinamento decrescente ( order by relevance desc )

    consapevole che quanto detto è molto lontano dall’essere considerato una trattazione completa sull’argomento, spero possa essere per voi un punto di partenza in caso di problematiche analoghe o uno stimolo per una riflessione sull’argomento.

     Via: http://maurizio.mavida.com/....sultati-di-una-query-per-rilevanza/

    Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
    • blinkbits
    • BlinkList
    • blogmarks
    • co.mments
    • del.icio.us
    • De.lirio.us
    • digg
    • Fark
    • feedmelinks
    • Furl
    • LinkaGoGo
    • Ma.gnolia
    • NewsVine
    • Reddit
    • scuttle
    • Smarking
    • Spurl
    • YahooMyWeb
    • DZone
    • Internetmedia
    • Snap2r
    • Technorati

    Next Page →