MySQLKomma igång med MySQL


Anmärkningar

MySQL-logotyp

MySQL är ett öppet källkodssystem (RDBMS) som utvecklas och stöds av Oracle Corporation.

MySQL stöds på ett stort antal plattformar, inklusive Linux-varianter, OS X och Windows. Den har också API: er för ett stort antal språk, inklusive C, C ++, Java, Lua, .Net, Perl, PHP, Python och Ruby.

MariaDB är en gaffel av MySQL med en något annan funktionsuppsättning . Det är helt kompatibelt med MySQL för de flesta applikationer.

versioner

Version Utgivningsdatum
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

Komma igång

Skapa en databas i MySQL

CREATE DATABASE mydb;
 

Returvärde:

Fråga OK, 1 rad påverkad (0,05 sek)


Använda den skapade databasen mydb

USE mydb;
 

Returvärde:

Databasen har ändrats

Skapa en tabell i 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 skapar en ny tabell som heter mytable .

id int unsigned NOT NULL auto_increment skapar id kolumnen, denna typ av fält tilldelar ett unikt numeriskt ID till varje post i tabellen (vilket betyder att inga två rader kan ha samma id i detta fall), MySQL tilldelar automatiskt en ny, unikt värde för postens id fält (börjar med 1).

Returvärde:

Fråga OK, 0 rader påverkade (0,10 sek)


Infoga en rad i en MySQL-tabell

INSERT INTO mytable ( username, email )
VALUES ( "myuser", "myuser@example.com" );
 

Exempel returvärde:

Fråga OK, 1 rad påverkad (0,06 sek)

Den varchar aka strings kan också sättas in med hjälp av enkla citattecken:

INSERT INTO mytable ( username, email )
VALUES ( 'username', 'username@example.com' );
 

Uppdatera en rad till en MySQL-tabell

UPDATE mytable SET username="myuser" WHERE id=8
 

Exempel returvärde:

Fråga OK, 1 rad påverkad (0,06 sek)

int värdet kan infogas i en fråga utan offert. Strängar och datum måste bifogas i enstaka offert ' eller dubbla citat " .


Radera en rad i en MySQL-tabell

DELETE FROM mytable WHERE id=8
 

Exempel returvärde:

Fråga OK, 1 rad påverkad (0,06 sek)

Detta kommer att radera raden med id är 8.


Att välja rader baserat på villkor i MySQL

SELECT * FROM mytable WHERE username = "myuser";
 

Returvärde:

+----+----------+---------------------+
| id | username | email               |
+----+----------+---------------------+
|  1 | myuser   | myuser@example.com  |
+----+----------+---------------------+
 

1 rad i set (0,00 sek)


Visa lista med befintliga databaser

SHOW databases;
 

Returvärde:

+-------------------+
| Databases         |
+-------------------+
| information_schema|
| mydb              |
+-------------------+
 

2 rader i set (0,00 sek)

Du kan tänka på "information_schema" som en "huvuddatabas" som ger tillgång till databasmetadata.


Visa tabeller i en befintlig databas

SHOW tables;
 

Returvärde:

+----------------+
| Tables_in_mydb |
+----------------+
| mytable        |
+----------------+
 

1 rad i set (0,00 sek)


Visa alla fält i en tabell

DESCRIBE databaseName.tableName;
 

eller om du redan använder en databas:

DESCRIBE tableName;
 

Returvärde:

+-----------+----------------+--------+---------+-------------------+-------+
| Field     | Type           | Null   | Key     | Default           | Extra |
+-----------+----------------+--------+---------+-------------------+-------+
| fieldname | fieldvaluetype | NO/YES | keytype | defaultfieldvalue |       |
+-----------+----------------+--------+---------+-------------------+-------+
 

Extra kan till exempel innehålla auto_increment .

Key hänvisar till den typ av nyckel som kan påverka fältet. Primär (PRI), Unik (UNI) ...

n rad i uppsättning (0,00 sek)

Där n är antalet fält i tabellen.


Skapar användare

Först måste du skapa en användare och sedan ge användaren behörigheter i vissa databaser / tabeller. När du skapar användaren måste du också ange var den här användaren kan ansluta till.

CREATE USER 'user'@'localhost' IDENTIFIED BY 'some_password';
 

Skapar en användare som bara kan ansluta på den lokala datorn där databasen är värd.

CREATE USER 'user'@'%' IDENTIFIED BY 'some_password';
 

Skapar en användare som kan ansluta var som helst (utom den lokala maskinen).

Exempel returvärde:

Fråga OK, 0 rader påverkade (0.00 sek)

Lägga till privilegier

Ge vanliga, grundläggande behörigheter till användaren för alla tabeller i den angivna databasen:

GRANT SELECT, INSERT, UPDATE ON databaseName.* TO 'userName'@'localhost';
 

Ge alla behörigheter till alla tabeller i alla databaser (uppmärksamhet med detta):

GRANT ALL ON *.* TO 'userName'@'localhost' WITH GRANT OPTION;
 

Som visas ovan är *.* Inriktad på alla databaser och tabeller, databaseName.* Inriktar på alla tabeller i den specifika databasen. Det är också möjligt att specificera databas och tabell som databaseName.tableName .

WITH GRANT OPTION ska lämnas ut om användaren inte behöver kunna ge andra användares privilegier.

Privilegier kan vara antingen

ALL
 

eller en kombination av följande, var och en separerad med ett komma (en uttömmande lista).

SELECT
INSERT
UPDATE
DELETE
CREATE
DROP
 

Notera

Generellt sett bör du försöka undvika att använda kolumn- eller tabellnamn som innehåller mellanslag eller använda reserverade ord i SQL. Till exempel är det bäst att undvika namn som table eller first name .

Om du måste använda sådana namn, lägg dem mellan back-tick `` avgränsare. Till exempel:

CREATE TABLE `table`
(   
   `first name` VARCHAR(30)
);
 

En fråga som innehåller bakgrundsavgränsarna i den här tabellen kan vara:

 SELECT `first name` FROM `table` WHERE `first name` LIKE 'a%';
 

Exempel på informationsschema

Processlist

Detta visar alla aktiva & sovfrågor i den ordningen sedan efter hur länge.
SELECT * FROM information_schema.PROCESSLIST ORDER BY INFO DESC, TIME DESC;
 

Detta är lite mer detaljerat om tidsramar som det är i sekunder som standard

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;
 

Lagrad procedurssökning

Sök enkelt genom alla Stored Procedures efter ord och jokertecken.

SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%word%';