MySQLRozpoczęcie pracy z MySQL


Uwagi

Logo MySQL

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", "myuser@example.com" );
 

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', 'username@example.com' );
 

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   | myuser@example.com  |
+----+----------+---------------------+
 

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%';