maniu@securebrain.com:~# vi sql



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





:q!