MySQL учебник
Начало работы с 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%';