Создание базы данных
Для создания базы данных используется команда:
CREATE DATABASE <Имя базы>;
Например:
CREATE DATABASE `students`;
При создании базы данных можно сразу выбрать кодировку:
CREATE DATABASE `students` DEFAULT CHARACTER SET cp1251
COLLATE cp1251_general_ci;
Итак, открываем программу MySQL WorkBench, заходим в SQL - Editor. В текстовом поле
на вкладке SQL набираем команду:
CREATE DATABASE `students` DEFAULT CHARACTER SET cp1251
COLLATE cp1251_general_ci;
Среди всех баз данных может быть выбрана одна текущая, к которой направляются все команды SQL. Выбирается текущая база данных с помощью команды SQL
USE <База данных>;
Например, только что созданную базу данных students можно выбрать SQL-командой
USE `students`;
Создание пользователя базы данных:
После создания базы данных необходимо создать пользователя базы данных и назначить ему полномочия. Полномочия (или привилегии) — это права определенного пользователя выполнять определенные действия над определенным объектом. Пользователь должен обладать наименьшим набором привилегий, необходимых для выполнения конкретных задач.
Создание и назначение полномочий осуществляются SQL-командой:
GRANT <Привилегии> [<Столбцы>]
ON <База данных>.<Таблица>
TO <Имя пользователя> [IDENTIFIED BY '<Пароль>']
[WITH GRANT OPTION];
В параметре <Привилегии> могут быть указаны через запятую следующие полномочия:
ALL или ALL PRIVILEGES — все полномочия;
USAGE — без всех полномочий;
SELECT — возможность выбирать записи в таблицах;
INSERT — право вставлять новые записи в таблицы;
UPDATE — полномочия изменять значения в существующих полях таблиц;
DELETE — разрешение удалять записи;
FILE — возможность сохранять данные из таблиц в файл и, наоборот,
восстанавливать их из файла;
CREATE — право создавать новые базы данных или таблицы. Если в
команде GRANT указана определенная база данных или таблица, то пользователь может создавать только указанную базу данных или таблицу;
ALTER — полномочия изменять структуру существующих таблиц;
INDEX — право создавать и удалять индексы определенных таблиц;
DROP — возможность удаления базы данных или таблицы;
PROCESS — разрешение просматривать и удалять процессы на сервере;
RELOAD — возможность перезагружать таблицы полномочий;
SHUTDOWN — право останавливать сервер MySQL.
В параметре <Имя пользователя> указывается имя пользователя (например, Boris) или Имя_пользователя@Имя_хоста (например, Boris@localhost). Новому пользователю можно назначить пароль. Если указана опция WITH GRANT OPTION, то пользователь может предоставлять свои полномочия другим.
Создадим нового пользователя с именем Boris и назначим ему ограниченные привилегии. Для этого на вкладке SQL набираем следующую команду:
GRANT select, insert, update, delete, index, alter, create, drop ON `students`.* TO Boris@localhost IDENTIFIED BY '456';
После создания пользователя или изменения привилегий необходимо перезагрузить привилегии с помощью SQL-команды
FLUSH PRIVILEGES;
Для лишения пользователя полномочий используется команда SQL
REVOKE <Привилегии> [<Столбцы>]
ON <База данных>.<Таблица>
TO <Имя пользователя>;
Если полномочия были предоставлены опцией WITH GRANT OPTION, то удалить их можно с помощью команды SQL
REVOKE GRANT OPTION
ON <База данных>.<Таблица>
TO <Имя пользователя>;
Для удаления пользователя используется SQL-команда
DROP USER <Имя пользователя>;
Для просмотра прав пользователя предназначена команда SQL
SHOW GRANTS FOR '<Имя пользователя>'@'<Хост>';
Для примера выведем полномочия созданного пользователя Boris:
SHOW GRANTS FOR 'Boris'@'localhost';
Скриншот MySQL Workbench – Server Administration:
Создание таблицы:
Создать таблицу в базе данных позволяет SQL-команда
CREATE TABLE <Имя таблицы> (
<Имя поля1> <Тип данных> [<Опции>],
<Имя поля2> <Тип данных> [<Опции>],
...
) [<Дополнительные опции>];
В параметре <Опции> могут быть указаны следующие значения:
NOT NULL означает, что поле обязательно должно иметь значение при вставке новой записи в таблицу (если не задано значение по умолчанию). Если опция не указана, то поле может быть пустым;
PRIMARY KEY указывает, что поле является первичным ключом таблицы. Записи в таком поле должны быть уникальными. Опция также может быть указана после перечисления всех полей;
AUTO_INCREMENT указывает, что поле является счетчиком: если при вставке новой записи указать NULL, то MySQL автоматически генерирует значение, на единицу большее максимального значения, уже существующего в поле. В таблице может быть только одно поле с этой опцией;
DEFAULT задает для поля значение по умолчанию, которое будет использовано, если при вставке записи для этого поля не было явно указано значение;
CHARACTER SET определяет кодировку текстового поля;
COLLATE задает тип сортировки текстового поля.
В параметре <Дополнительные опции> могут быть указаны следующие значения:
ENGINE — тип таблицы (например, MyISAM);
DEFAULT CHARSET — кодировка (например, cp1251);
AUTO_INCREMENT — начальное значение для автоматической генерации значения поля.
Для вывода всех типов таблиц, поддерживаемых текущей версией MySQL, предназначена SQL-команда SHOW ENGINES;
На практике обычно используются два типа таблиц — MyISAM и InnoDB. Тип MyISAM является "родным" типом таблиц и применяется по умолчанию. Хотя версии MySQL под Windows по умолчанию могут устанавливать тип InnoDB. В отличие от типа MyISAM таблицы типа InnoDB поддерживают транзакции и внешние ключи, но не имеют поддержки полнотекстового поиска. Кроме того, таблицы типа InnoDB работают медленнее таблиц MyISAM, но зато они более надежны.
Для вывода всех кодировок применяется SQL-команда
SHOW CHARACTER SET;
Чтобы получить список всех типов сортировки можно воспользоваться SQL-командой
SHOW COLLATION;
Для создания таблиц в текстовом поле набираем следующие команды:
CREATE TABLE `Avtoservis` (
`id_City` INT NOT NULL AUTO_INCREMENT,
`City` CHAR(50) NOT NULL,
PRIMARY KEY (`id_City`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
CREATE TABLE `Klienti` (
`id_Customer` INT NOT NULL AUTO_INCREMENT,
`Name` CHAR(50) NOT NULL,
`Address` CHAR(255) NOT NULL,
`id_City` INT NOT NULL,
`Phone` CHAR(30),
PRIMARY KEY (`id_Customer`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
CREATE TABLE `Usluga` (
`id_Tovar` INT NOT NULL AUTO_INCREMENT,
`Tovar` CHAR(50) NOT NULL,
`Price` INT NOT NULL,
PRIMARY KEY (`id_Tovar`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
CREATE TABLE `Orders_Items` (
`id_Orders` INT NOT NULL,
`id_Tovar` INT NOT NULL,
`Col` TINYINT unsigned,
PRIMARY KEY (`id_Orders`, `id_Tovar`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
CREATE TABLE `Orders` (
`id_Orders` INT NOT NULL AUTO_INCREMENT,
`id_Customer` INT NOT NULL,
`Date_orders` DATE,
`Sum` INT,
PRIMARY KEY (`id_Orders`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
Вывести все таблицы из указанной базы данных позволяет SQL-команда
SHOW TABLES FROM <Имя базы данных>;
Для примера выведем все таблицы из базы данных tests:
SHOW TABLES FROM `tests`;
Чтобы отобразить структуру конкретной таблицы из указанной базы данных, можно воспользоваться командой SQL
SHOW COLUMNS FROM <Таблица> FROM <Имя базы данных>;
Для примера выведем структуру таблицы City из базы данных tests:
SHOW COLUMNS FROM `City` FROM `tests`;
