MySQLAan de slag met MySQL


Opmerkingen

MySQL-logo

MySQL is een open-source relationeel databasebeheersysteem (RDBMS) dat is ontwikkeld en wordt ondersteund door Oracle Corporation.

MySQL wordt ondersteund op een groot aantal platforms, waaronder Linux-varianten, OS X en Windows. Het heeft ook API's voor een groot aantal talen, waaronder C, C ++, Java, Lua, .Net, Perl, PHP, Python en Ruby.

MariaDB is een vork van MySQL met een iets andere functieset . Het is volledig compatibel met MySQL voor de meeste toepassingen.

versies

Versie Publicatiedatum
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

Ermee beginnen

Een database maken in MySQL

CREATE DATABASE mydb;
 

Winstwaarde:

Zoekopdracht OK, 1 rij beïnvloed (0.05 sec)


Met behulp van de gecreëerde database mydb

USE mydb;
 

Winstwaarde:

Database gewijzigd

Een tabel maken 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 maakt een nieuwe tabel met de naam mytable .

id int unsigned NOT NULL auto_increment maakt de id kolom, dit type veld kent een uniek numeriek ID toe aan elke record in de tabel (wat betekent dat in dit geval geen twee rijen dezelfde id kunnen hebben), MySQL zal automatisch een nieuwe, unieke waarde voor het id veld van het record (beginnend met 1).

Winstwaarde:

Zoekopdracht OK, 0 rijen beïnvloed (0,10 sec)


Een rij invoegen in een MySQL-tabel

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

Voorbeeld retourwaarde:

Zoekopdracht OK, 1 rij beïnvloed (0.06 sec)

De varchar aka- strings kunnen ook worden ingevoegd met behulp van enkele aanhalingstekens:

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

Een rij bijwerken in een MySQL-tabel

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

Voorbeeld retourwaarde:

Zoekopdracht OK, 1 rij beïnvloed (0.06 sec)

De int waarde kan zonder aanhalingstekens in een query worden ingevoegd. Strings and Data moeten tussen enkele aanhalingstekens ' of dubbele aanhalingstekens " .


Een rij in een MySQL-tabel verwijderen

DELETE FROM mytable WHERE id=8
 

Voorbeeld retourwaarde:

Zoekopdracht OK, 1 rij beïnvloed (0.06 sec)

Dit verwijdert de rij met id is 8.


Rijen selecteren op basis van voorwaarden in MySQL

SELECT * FROM mytable WHERE username = "myuser";
 

Winstwaarde:

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

1 rij in set (0,00 sec)


Lijst met bestaande databases weergeven

SHOW databases;
 

Winstwaarde:

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

2 rijen in set (0,00 sec)

U kunt "information_schema" beschouwen als een "hoofddatabase" die toegang biedt tot metagegevens van de database.


Toon tabellen in een bestaande database

SHOW tables;
 

Winstwaarde:

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

1 rij in set (0,00 sec)


Toon alle velden van een tabel

DESCRIBE databaseName.tableName;
 

of, als u al een database gebruikt:

DESCRIBE tableName;
 

Winstwaarde:

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

Extra kan bijvoorbeeld auto_increment bevatten.

Key verwijst naar het type sleutel dat van invloed kan zijn op het veld. Primair (PRI), uniek (UNI) ...

n rij in set (0,00 sec)

Waarbij n het aantal velden in de tabel is.


Gebruiker aanmaken

Eerst moet u een gebruiker maken en vervolgens de gebruikersmachtigingen voor bepaalde databases / tabellen geven. Tijdens het maken van de gebruiker moet u ook opgeven waar deze gebruiker verbinding mee kan maken.

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

Hiermee wordt een gebruiker gemaakt die alleen verbinding kan maken op de lokale computer waarop de database wordt gehost.

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

Creëert een gebruiker die overal verbinding kan maken (behalve de lokale machine).

Voorbeeld retourwaarde:

Zoekopdracht OK, 0 rijen beïnvloed (0.00 sec)

Bevoegdheden toevoegen

Verleen gemeenschappelijke, basisrechten aan de gebruiker voor alle tabellen van de opgegeven database:

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

Verleen alle rechten aan de gebruiker voor alle tabellen in alle databases (let hierbij op):

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

Zoals hierboven aangetoond, richt *.* Zich op alle databases en tabellen, databaseName.* alle tabellen van de specifieke database. Het is ook mogelijk om de database en de tabel op te geven zoals dus databaseName.tableName .

WITH GRANT OPTION moet worden weggelaten als de gebruiker geen andere gebruikersrechten hoeft te kunnen verlenen.

Privileges kunnen beide zijn

ALL
 

of een combinatie van het volgende, elk gescheiden door een komma (niet-limitatieve lijst).

SELECT
INSERT
UPDATE
DELETE
CREATE
DROP
 

Notitie

Over het algemeen moet u proberen te voorkomen dat u kolom- of tabelnamen met spaties of gereserveerde woorden in SQL gebruikt. Het is bijvoorbeeld het beste om namen als table of first name te vermijden.

Als u dergelijke namen moet gebruiken, plaatst u ze tussen back-tick `` scheidingstekens. Bijvoorbeeld:

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

Een zoekopdracht met de back-tick scheidingstekens in deze tabel kan zijn:

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

Voorbeelden van informatieschema's

processlist

Dit toont alle actieve & slapende zoekopdrachten in die volgorde en vervolgens hoe lang.
SELECT * FROM information_schema.PROCESSLIST ORDER BY INFO DESC, TIME DESC;
 

Dit is iets meer gedetailleerd over tijdframes omdat het standaard in seconden is

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;
 

Opgeslagen procedure Zoeken

Doorzoek eenvoudig alle Stored Procedures op woorden en jokertekens.

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