Поиск…


замечания

Логотип MySQL

MySQL - это система управления реляционными базами данных с открытым исходным кодом (RDBMS), которая разработана и поддерживается корпорацией Oracle.

MySQL поддерживается на большом количестве платформ, включая версии Linux, OS X и Windows. Он также имеет API для большого количества языков, включая C, C ++, Java, Lua, .Net, Perl, PHP, Python и Ruby.

MariaDB - это вилка MySQL со слегка отличающимся набором функций . Он полностью совместим с MySQL для большинства приложений.

Версии

Версия Дата выхода
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

Начиная

Создание базы данных в MySQL

CREATE DATABASE mydb;

Возвращаемое значение:

Запрос ОК, 1 строка затронута (0,05 сек)


Использование созданной базы данных mydb

USE mydb;

Возвращаемое значение:

Изменена база данных

Создание таблицы в 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 создаст новую таблицу под названием mytable .

id int unsigned NOT NULL auto_increment создает столбец id , этот тип поля присваивает уникальной числовой идентификатор каждой записи в таблице (это означает, что в этом случае две строки не могут иметь одинаковый id ), MySQL автоматически назначит новый, уникальное значение для поля id записи (начиная с 1).

Возвращаемое значение:

Запрос ОК, 0 строк затронуты (0,10 сек)


Вставка строки в таблицу MySQL

INSERT INTO mytable ( username, email )
VALUES ( "myuser", "[email protected]" );

Пример возвращаемого значения:

Запрос ОК, 1 строка затронута (0,06 сек)

Также можно вставлять strings varchar aka с помощью одинарных кавычек:

INSERT INTO mytable ( username, email )
VALUES ( 'username', '[email protected]' );

Обновление строки в таблице MySQL

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

Пример возвращаемого значения:

Запрос ОК, 1 строка затронута (0,06 сек)

Значение int может быть вставлено в запрос без кавычек. Строки и Даты должны быть заключены в одинарные кавычки ' или двойные кавычки " .


Удаление строки в таблицу MySQL

DELETE FROM mytable WHERE id=8

Пример возвращаемого значения:

Запрос ОК, 1 строка затронута (0,06 сек)

Это приведет к удалению строки с id 8.


Выбор строк на основе условий в MySQL

SELECT * FROM mytable WHERE username = "myuser";

Возвращаемое значение:

+----+----------+---------------------+
| id | username | email               |
+----+----------+---------------------+
|  1 | myuser   | [email protected]  |
+----+----------+---------------------+

1 строка в наборе (0,00 сек)


Показать список существующих баз данных

SHOW databases;

Возвращаемое значение:

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

2 ряда в наборе (0,00 сек)

Вы можете думать о «information_schema» как о «основной базе данных», которая обеспечивает доступ к метаданным базы данных.


Показывать таблицы в существующей базе данных

SHOW tables;

Возвращаемое значение:

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

1 строка в наборе (0,00 сек)


Показать все поля таблицы

DESCRIBE databaseName.tableName;

или, если уже использовать базу данных:

DESCRIBE tableName;

Возвращаемое значение:

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

Например, Extra может содержать auto_increment .

Key относится к типу ключа, который может повлиять на поле. Первичный (PRI), уникальный (UNI) ...

n строка в наборе (0,00 сек)

Где n - количество полей в таблице.


Создание пользователя

Во-первых, вам нужно создать пользователя, а затем предоставить права пользователя на определенные базы данных / таблицы. При создании пользователя вам также необходимо указать, с какого пользователя можно подключиться.

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

Создает пользователя, который может подключаться только к локальному компьютеру, на котором размещается база данных.

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

Создает пользователя, который может подключаться из любого места (кроме локальной машины).

Пример возвращаемого значения:

Запрос ОК, 0 строк, затронутых (0.00 сек)

Добавление привилегий

Предоставьте общие, основные привилегии пользователю для всех таблиц указанной базы данных:

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

Предоставьте всем привилегии пользователю для всех таблиц во всех базах данных (внимание с этим):

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

Как показано выше, *.* Предназначено для всех баз данных и таблиц, databaseName.* Предназначено для всех таблиц конкретной базы данных. Также можно указать базу данных и таблицу, например, имя databaseName.tableName .

WITH GRANT OPTION следует исключить, если пользователь не может предоставить права других пользователей.

Привилегии могут быть либо

ALL

или комбинацию из следующего, каждая из которых разделена запятой (неисчерпывающий список).

SELECT
INSERT
UPDATE
DELETE
CREATE
DROP

Заметка

Как правило, вам следует избегать использования имен столбцов или таблиц, содержащих пробелы, или использования зарезервированных слов в SQL. Например, лучше избегать имен, таких как table или first name .

Если вы должны использовать такие имена, поместите их между разделителями `` back-tick``. Например:

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

Запрос, содержащий разделители обратного тика в этой таблице, может быть:

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

Примеры информационных схем

Список процессов

Это покажет все активные и спальные запросы в этом порядке, а затем как долго.
SELECT * FROM information_schema.PROCESSLIST ORDER BY INFO DESC, TIME DESC;

Это немного более подробная информация о временных рамах, поскольку она находится в секундах по умолчанию

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;

Поиск сохраненной процедуры

Легко выполнять поиск по всем Stored Procedures для слов и подстановочных знаков.

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


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow