MySQL Samouczek
Rozpoczęcie pracy z MySQL
Szukaj…
Uwagi
MySQL to otwarty system zarządzania relacyjnymi bazami danych (RDBMS), opracowany i obsługiwany przez Oracle Corporation.
MySQL jest obsługiwany na wielu platformach, w tym wariantach Linux, OS X i Windows. Posiada również interfejsy API dla wielu języków, w tym C, C ++, Java, Lua, .Net, Perl, PHP, Python i Ruby.
MariaDB jest rozwidleniem MySQL z nieco innym zestawem funkcji . Jest w pełni kompatybilny z MySQL dla większości aplikacji.
Wersje
Wersja | Data wydania |
---|---|
1.0 | 1995-05-23 |
3.19 | 1996-12-01 |
3,20 | 01.01.1997 |
3.21 | 01.10.1998 |
3.22 | 1999-10-01 |
3.23 | 2001-01-22 |
4.0 | 2003-03-01 |
4.1 | 01.10.2004 |
5.0 | 01.10.2005 |
5.1 | 27.11.2008 |
5.5 | 01.11.2010 |
5.6 | 01.02.2013 |
5.7 | 01.10.2015 |
Pierwsze kroki
Tworzenie bazy danych w MySQL
CREATE DATABASE mydb;
Zwracana wartość:
Zapytanie OK, problem dotyczy 1 wiersza (0,05 s)
Korzystanie z utworzonej bazy danych mydb
USE mydb;
Zwracana wartość:
Baza danych zmieniona
Tworzenie tabeli w 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
utworzy nową tabelę o nazwie mytable
.
id int unsigned NOT NULL auto_increment
tworzy kolumnę id
, ten typ pola przypisze unikalny numeryczny identyfikator do każdego rekordu w tabeli (co oznacza, że żadne dwa wiersze nie mogą mieć tego samego id
w tym przypadku), MySQL automatycznie przypisze nowy, unikalna wartość w polu id
rekordu (zaczynająca się od 1).
Zwracana wartość:
Zapytanie OK, dotyczy 0 wierszy (0,10 s)
Wstawianie wiersza do tabeli MySQL
INSERT INTO mytable ( username, email )
VALUES ( "myuser", "[email protected]" );
Przykładowa zwracana wartość:
Zapytanie OK, problem dotyczy 1 wiersza (0,06 s)
strings
varchar
aka można również wstawić za pomocą pojedynczych cudzysłowów:
INSERT INTO mytable ( username, email )
VALUES ( 'username', '[email protected]' );
Aktualizowanie wiersza w tabeli MySQL
UPDATE mytable SET username="myuser" WHERE id=8
Przykładowa zwracana wartość:
Zapytanie OK, problem dotyczy 1 wiersza (0,06 s)
Wartość int
można wstawić do zapytania bez cudzysłowów. Struny i terminy muszą być ujęte w pojedynczy cudzysłów '
lub cudzysłów "
.
Usuwanie wiersza do tabeli MySQL
DELETE FROM mytable WHERE id=8
Przykładowa zwracana wartość:
Zapytanie OK, problem dotyczy 1 wiersza (0,06 s)
Spowoduje to usunięcie wiersza o id
8.
Wybieranie wierszy na podstawie warunków w MySQL
SELECT * FROM mytable WHERE username = "myuser";
Zwracana wartość:
+----+----------+---------------------+
| id | username | email |
+----+----------+---------------------+
| 1 | myuser | [email protected] |
+----+----------+---------------------+
1 rząd w zestawie (0,00 s)
Pokaż listę istniejących baz danych
SHOW databases;
Zwracana wartość:
+-------------------+
| Databases |
+-------------------+
| information_schema|
| mydb |
+-------------------+
2 rzędy w zestawie (0,00 s)
Można myśleć o „schemacie_informacyjnym” jako o „głównej bazie danych”, która zapewnia dostęp do metadanych bazy danych.
Pokaż tabele w istniejącej bazie danych
SHOW tables;
Zwracana wartość:
+----------------+
| Tables_in_mydb |
+----------------+
| mytable |
+----------------+
1 rząd w zestawie (0,00 s)
Pokaż wszystkie pola tabeli
DESCRIBE databaseName.tableName;
lub, jeśli już korzystasz z bazy danych:
DESCRIBE tableName;
Zwracana wartość:
+-----------+----------------+--------+---------+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------------+--------+---------+-------------------+-------+
| fieldname | fieldvaluetype | NO/YES | keytype | defaultfieldvalue | |
+-----------+----------------+--------+---------+-------------------+-------+
Extra
może na przykład zawierać auto_increment
.
Key
odnosi się do rodzaju klucza, który może wpływać na pole. Podstawowy (PRI), unikalny (UNI) ...
n rząd w zestawie (0,00 s)
Gdzie n jest liczbą pól w tabeli.
Tworzenie użytkownika
Najpierw musisz utworzyć użytkownika, a następnie nadać mu uprawnienia do określonych baz danych / tabel. Podczas tworzenia użytkownika musisz także określić, skąd ten użytkownik może się połączyć.
CREATE USER 'user'@'localhost' IDENTIFIED BY 'some_password';
Utworzy użytkownika, który będzie mógł łączyć się tylko na komputerze lokalnym, na którym znajduje się baza danych.
CREATE USER 'user'@'%' IDENTIFIED BY 'some_password';
Utworzy użytkownika, który może połączyć się z dowolnego miejsca (z wyjątkiem komputera lokalnego).
Przykładowa zwracana wartość:
Zapytanie OK, dotyczy 0 wierszy (0,00 s)
Dodawanie uprawnień
Przyznaj wspólne, podstawowe uprawnienia użytkownikowi dla wszystkich tabel określonej bazy danych:
GRANT SELECT, INSERT, UPDATE ON databaseName.* TO 'userName'@'localhost';
Przyznaj użytkownikowi wszystkie uprawnienia do wszystkich tabel we wszystkich bazach danych (uwaga na to):
GRANT ALL ON *.* TO 'userName'@'localhost' WITH GRANT OPTION;
Jak pokazano powyżej, *.*
kierowany do wszystkich baz danych i tabel, nazwa databaseName.*
kierowany do wszystkich tabel określonej bazy danych. Możliwe jest również określenie bazy danych i tabeli, tak jak databaseName.tableName
.
WITH GRANT OPTION
należy WITH GRANT OPTION
, jeśli użytkownik nie musi mieć możliwości nadawania uprawnień innym użytkownikom.
Mogą być albo przywileje
ALL
lub kombinacja poniższych, oddzielonych przecinkami (niewyczerpująca lista).
SELECT
INSERT
UPDATE
DELETE
CREATE
DROP
Uwaga
Zasadniczo należy unikać używania nazw kolumn lub tabel zawierających spacje lub używania słów zastrzeżonych w języku SQL. Na przykład najlepiej unikać nazw takich jak table
lub first name
.
Jeśli musisz używać takich nazw, umieścić je pomiędzy tylnym-Tick ``
ograniczników. Na przykład:
CREATE TABLE `table`
(
`first name` VARCHAR(30)
);
Zapytanie zawierające ograniczniki cofania w tej tabeli może być następujące:
SELECT `first name` FROM `table` WHERE `first name` LIKE 'a%';
Przykłady schematów informacyjnych
Lista procesów
Spowoduje to wyświetlenie wszystkich aktywnych i uśpionych zapytań w tej kolejności, a następnie według długości.SELECT * FROM information_schema.PROCESSLIST ORDER BY INFO DESC, TIME DESC;
Jest to nieco więcej szczegółów w ramach czasowych, ponieważ jest to domyślnie w sekundach
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;
Wyszukiwanie procedur przechowywanych
Łatwo przeszukuj wszystkie Stored Procedures
kątem słów i symboli wieloznacznych.
SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%word%';