MySQL Handledning
Komma igång med MySQL
Sök…
Anmärkningar
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", "[email protected]" );
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', '[email protected]' );
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 | [email protected] |
+----+----------+---------------------+
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%';