Типы данных в MySQL
В MySQL представлено множество типов данных, в соответствии с которыми хранятся и обрабатываются все данные в таблицах. Перечислим некоторые из них.
Числа
Числа разделяются на целые и дробные. Целые представлены следующими типами данных:
§ TINYINT — 1 байт, т.е. принимает значения от -128 до 127 (в случае использования TINYINT UNSIGNED, т.е. без учета знака перед числом — 0..255);
§ SMALLINT — 2 байта, -32768..32767 (0..65535);
§ MEDIUMINT — 3 байта, -8388608..8388607 (0..2^24-1);
§ INT — 4 байта, -2147483648..2147483647 (0..2^32-1);
§ BIGINT — 8 байт, -2^32..2^32-1 (0..2^64).
Дробные числа представлены следующими типами данных:
§ FLOAT (4 байта);
§ DOUBLE (8 байт) — вдвое большая точность после запятой.
Строки
§ CHAR — дополняет до заданной «ширины» (например, в случае использования CHAR(6) строка из пяти символов «hello» будет храниться как «hello», т.е. с пробелом на конце);
§ VARCHAR — использует необходимый минимум памяти (в случае использования VARCHAR(6) строка из пяти символов «hello» будет храниться как «hello»);
§ BLOB, TINYBLOB, MEDIUMBLOB, LONGBLOB — бинарные данные разных размеров;
§ TEXT, TINYTEXT, MEDIUMTEXT, LONGTEXT — текстовые данные разных размеров;
§ ENUM — одно из заданных значений (например, в ячейке типа ENUM(0,1,2) может храниться ноль, единица или двойка);
§ SET — ноль или более заданных значений (в ячейке типа SET(0,1,2) может храниться любая комбинация из ноля, единицы и двойки — в том числе и пустое значение).
Другие типы
§ булев: BOOL, BOOLEAN;
§ уникальный автоматически увеличившийся идентификатор: SERIAL (== BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE);
§ дата и время: DATETIME, DATE, TIMESTAMP, TIME, YEAR.
Работа с базами данных и таблицами
Команды для манипулирования базами данных
1. Создание базы данных:
CREATE DATABASE `db_name`;
Параметр команды создания баз данных — имя, выдаваемое создаваемой базе данных. Например, для создания базы данных под названием "my_database" нужно ввести команду:
CREATE DATABASE `my_database`;
Несмотря на то, что современная версия MySQL позволяет создавать БД с кириллическими и специальными символами в названии, принято использовать латинские буквы, цифры и знаки подчеркивания («_»).
2. При одновременной работе в нескольких базах данных в командах нужно уточнять, с данными какой БД вы работаете. Для этого используется разделитель точка — «.». Так, чтобы обратиться к атрибуту "attribute" таблицы "table", находящейся в базе данных "database1", нужно использовать запись:
`database1`.`table`.`attribute`
Если же вам понадобится обратиться к аналогичному атрибуту такой же таблицы, находящейся в БД "database2", запись станет такой:
`database2`.`table`.`attribute`
Для того, чтобы вводимые команды применялись к конкретной базе данных по умолчанию, можно воспользоваться командой USE и ввести название базы данных, с которой мы будем в дальнейшем работать:
USE `my_database`;
После выполнения команды USE следующие записи будут эквивалентны:
`my_database`.`table1`
`table1`
3. Удаление существующей базы данных выполняется командой DROP DATABASE, которая в качестве единственного аргумента принимает название удаляемой базы данных. Например, чтобы удалить созданную вами в начале работы БД "my_database", нужно выполнить:
DROP DATABASE `my_database`;
После успешного удаления вы можете заново создать ее. Учтите, что если бы в вашей базе данных были таблицы и данные, вся эта информация была бы утеряна навсегда.
4. Для просмотра информации о базах данных, их таблиц, а также привилегий текущего пользователя, используется команда SHOW.
1. Увидеть список всех доступных пользователю баз данных можно с помощью команды:
SHOW DATABASES;
2. Увидеть список всех таблиц в используемой базе данных можно с помощью команды:
SHOW TABLES;
3. Для вывода информации о таблице "table_name" используйте команду:
SHOW CREATE TABLE `table_name`;
Обратите внимание, что результатом выполнения команды будет команда создания таблицы с учетом всех изменений, произведенных над таблицей в процессе работы с базой данных.
4. Увидеть список всех прав текущего пользователя СУБД можно с помощью команды:
SHOW GRANTS;
2. Команды для работы с таблицами БД
1. Для создания таблицы используется команда CREATE TABLE. В качестве аргумента ей передается название новой таблиц и перечисление всех атрибутов таблицы и их описаний (типы данных, значения по умолчанию, ограничения на применяемые значения и т.п.) — все перечисление берется в круглые скобки, а разделителем между атрибутами служит запятая. В общем виде команда выглядит так:
CREATE TABLE `table_name` (
`название_первого_поля` его_тип [параметры],
`название_второго_поля` его_тип [параметры],
...
`название_последнего_поля` его_тип [параметры]
);
Обратите внимание, что после последнего атрибута запятая не требуется. Пример создания таблицы "news" с тремя атрибутами (идентификатор новости, время публикации, текст новости):
CREATE TABLE `news` (
`id` MEDIUMINT(8) UNSIGNED PRIMARY KEY NOT NULL AUTO_INCREMENT,
`posted` TIMESTAMP NOT NULL,
`content` TEXT
);
2. Для удаления таблицы используется команда DROP TABLE с названием таблицы в качестве единственного аргумента. Например, для удаления созданной таблицы "news" команда будет выглядеть так:
DROP TABLE `news`;
3. Для изменения таблиц используется команда ALTER TABLE. Вид производимого изменения определятся последующими дополнительными командами:
3.1. Переименование таблицы осуществляется с помощью подкоманды RENAME. Например, чтобы переименовать таблицу "news" в "news_new", нужно выполнить следующую команду:
ALTER TABLE `news` RENAME TO `news_new`;
3.2. Для добавления нового атрибута в таблицу потребуется подкоманда ADD COLUMN, для которой нужно ввести название нового атрибута и указать его тип. Например, добавление к таблице "news" нового атрибута "author" (имя автора) будет выглядеть следующим образом:
ALTER TABLE `news` ADD COLUMN `author` VARCHAR(42);
Кроме того, можно задать положение добавляемого поля. Для этого в конец команды добавляется инструкция, указывающая, после какого столбца будет добавлено новое поле. Например, команда добавления атрибута "author" в таблицу "news" с тем, чтобы "author" стал вторым полем, выглядит следующим образом:
ALTER TABLE `news` ADD COLUMN `author` VARCHAR(42) AFTER `id`;
Чтобы поле стало первым в таблице, нужно заменить конструкцию с "AFTER..." на ключевое слово "FIRST". Команда добавления атрибута "author" в таблицу "news" в качестве первого поля будет выглядеть так:
ALTER TABLE `news` ADD COLUMN `author` VARCHAR(42) FIRST;
3.3. Для изменения типа атрибута таблицы служит подкоманда MODIFY, для которой нужно указать таблицу, название атрибута и заново перечислить все требуемые для него параметры. Например, чтобы изменить тип атрибута "author" таблицы "news" на CHAR(42), нужно выполнить следующую команду:
ALTER TABLE `news` MODIFY COLUMN `author` CHAR(42);
3.4. Для удаления атрибута из таблицы служит подкоманда DROP COLUMN. Например, команда удаления атрибута "author" из таблицы "news" выглядит так:
ALTER TABLE `news` DROP COLUMN `author`;