MySQL Zelfstudie
Aan de slag met MySQL
Zoeken…
Opmerkingen
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", "[email protected]" );
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', '[email protected]' );
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 | [email protected] |
+----+----------+---------------------+
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%';