Iniziare con MySQL

Osservazioni

Logo MySQL

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", "myuser@example.com" );

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', 'username@example.com' );

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   | myuser@example.com  |
+----+----------+---------------------+

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%';