MySQL Tutorial
Iniziare con MySQL
Ricerca…
Osservazioni
MySQL è un RDBMS (Relational Database Management System) open source sviluppato e supportato da Oracle Corporation.
MySQL è supportato su un gran numero di piattaforme, incluse le varianti di Linux, OS X e Windows. Dispone inoltre di API per un gran numero di lingue, tra cui C, C ++, Java, Lua, .Net, Perl, PHP, Python e Ruby.
MariaDB è un fork di MySQL con un set di funzionalità leggermente diverso . È completamente compatibile con MySQL per la maggior parte delle applicazioni.
Versioni
Versione | Data di rilascio |
---|---|
1.0 | 1995/05/23 |
3.19 | 1996/12/01 |
3.20 | 1997-01-01 |
3.21 | 1998/10/01 |
3.22 | 1999/10/01 |
3.23 | 2001/01/22 |
4.0 | 2003/03/01 |
4.1 | 2004-10-01 |
5.0 | 2005-10-01 |
5.1 | 2008-11-27 |
5.5 | 2010-11-01 |
5.6 | 2013/02/01 |
5.7 | 2015/10/01 |
Iniziare
Creazione di un database in MySQL
CREATE DATABASE mydb;
Valore di ritorno:
Domanda OK, 1 riga interessata (0,05 secondi)
Utilizzando il database creato mydb
USE mydb;
Valore di ritorno:
Database modificato
Creare una tabella in MySQL
CREATE TABLE mytable
(
id int unsigned NOT NULL auto_increment,
username varchar(100) NOT NULL,
email varchar(100) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE mytable
creerà una nuova tabella chiamata mytable
.
id int unsigned NOT NULL auto_increment
crea la colonna id
, questo tipo di campo assegnerà un ID numerico univoco a ciascun record nella tabella (nel senso che in questo caso nessuna riga può avere lo stesso id
), MySQL assegnerà automaticamente un nuovo, valore univoco per il campo id
del record (a partire da 1).
Valore di ritorno:
Query OK, 0 righe interessate (0.10 sec)
Inserimento di una riga in una tabella MySQL
INSERT INTO mytable ( username, email )
VALUES ( "myuser", "[email protected]" );
Esempio valore di ritorno:
Query OK, 1 riga interessata (0,06 sec)
Le strings
varchar
aka possono anche essere inserite usando le virgolette singole:
INSERT INTO mytable ( username, email )
VALUES ( 'username', '[email protected]' );
Aggiornamento di una riga in una tabella MySQL
UPDATE mytable SET username="myuser" WHERE id=8
Esempio valore di ritorno:
Query OK, 1 riga interessata (0,06 sec)
Il valore int
può essere inserito in una query senza virgolette. Stringhe e date devono essere racchiusi in un'unica citazione '
o doppi apici "
.
Cancellare una riga in una tabella MySQL
DELETE FROM mytable WHERE id=8
Esempio valore di ritorno:
Query OK, 1 riga interessata (0,06 sec)
Questo cancellerà la riga che ha id
è 8.
Selezione delle righe in base alle condizioni in MySQL
SELECT * FROM mytable WHERE username = "myuser";
Valore di ritorno:
+----+----------+---------------------+
| id | username | email |
+----+----------+---------------------+
| 1 | myuser | [email protected] |
+----+----------+---------------------+
1 riga in set (0,00 secondi)
Mostra l'elenco dei database esistenti
SHOW databases;
Valore di ritorno:
+-------------------+
| Databases |
+-------------------+
| information_schema|
| mydb |
+-------------------+
2 file in set (0,00 secondi)
Puoi pensare a "information_schema" come "master database" che fornisce accesso ai metadati del database.
Mostra tabelle in un database esistente
SHOW tables;
Valore di ritorno:
+----------------+
| Tables_in_mydb |
+----------------+
| mytable |
+----------------+
1 riga in set (0,00 secondi)
Mostra tutti i campi di un tavolo
DESCRIBE databaseName.tableName;
o, se già si utilizza un database:
DESCRIBE tableName;
Valore di ritorno:
+-----------+----------------+--------+---------+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------------+--------+---------+-------------------+-------+
| fieldname | fieldvaluetype | NO/YES | keytype | defaultfieldvalue | |
+-----------+----------------+--------+---------+-------------------+-------+
Extra
può contenere auto_increment
per esempio.
Key
riferisce al tipo di chiave che può influire sul campo. Primaria (PRI), Unica (UNI) ...
n riga in set (0,00 secondi)
Dove n è il numero di campi nella tabella.
Creazione dell'utente
Innanzitutto, è necessario creare un utente e quindi concedere le autorizzazioni dell'utente su determinati database / tabelle. Durante la creazione dell'utente, è inoltre necessario specificare da dove questo utente può connettersi.
CREATE USER 'user'@'localhost' IDENTIFIED BY 'some_password';
Creerà un utente che può connettersi solo sul computer locale in cui è ospitato il database.
CREATE USER 'user'@'%' IDENTIFIED BY 'some_password';
Creerà un utente in grado di connettersi da qualsiasi luogo (eccetto il computer locale).
Esempio valore di ritorno:
Query OK, 0 righe interessate (0,00 secondi)
Aggiunta di privilegi
Concedere privilegi comuni, di base all'utente per tutte le tabelle del database specificato:
GRANT SELECT, INSERT, UPDATE ON databaseName.* TO 'userName'@'localhost';
Concedi tutti i privilegi all'utente per tutte le tabelle su tutti i database (attenzione con questo):
GRANT ALL ON *.* TO 'userName'@'localhost' WITH GRANT OPTION;
Come illustrato sopra, *.*
Indirizza tutti i database e le tabelle, databaseName.*
Indirizza tutte le tabelle del database specifico. È anche possibile specificare database e tabelle come databaseName.tableName
.
WITH GRANT OPTION
deve essere omesso se l'utente non deve essere in grado di concedere altri privilegi agli utenti.
I privilegi possono essere entrambi
ALL
o una combinazione di quanto segue, ciascuno separato da una virgola (elenco non esaustivo).
SELECT
INSERT
UPDATE
DELETE
CREATE
DROP
Nota
In generale, si dovrebbe cercare di evitare l'uso di nomi di colonne o tabelle contenenti spazi o l'utilizzo di parole riservate in SQL. Ad esempio, è meglio evitare nomi come table
o first name
.
Se devi usare questi nomi, mettili tra i delimitatori ``
tick back tick ``
. Per esempio:
CREATE TABLE `table`
(
`first name` VARCHAR(30)
);
Una query contenente i delimitatori di back-tick su questa tabella potrebbe essere:
SELECT `first name` FROM `table` WHERE `first name` LIKE 'a%';
Esempi di schemi di informazioni
processlist
Questo mostrerà tutte le query attive e in sospeso in quell'ordine, quindi per quanto tempo.SELECT * FROM information_schema.PROCESSLIST ORDER BY INFO DESC, TIME DESC;
Questo è un po 'più dettagliato sui timeframe in quanto è in secondi per impostazione predefinita
SELECT ID, USER, HOST, DB, COMMAND,
TIME as time_seconds,
ROUND(TIME / 60, 2) as time_minutes,
ROUND(TIME / 60 / 60, 2) as time_hours,
STATE, INFO
FROM information_schema.PROCESSLIST ORDER BY INFO DESC, TIME DESC;
Ricerca di stored procedure
Cerca facilmente attraverso tutte le Stored Procedures
per parole e caratteri jolly.
SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%word%';