Создание таблицы
Предположим, что существует база данных. И мы хотим записать в неё данные пользователей сайта. Данные будут достаточно примитивными:- Уникальный порядковый номер пользователя (идентификатор - id). Тип данных: целое число
- Имя пользователя. Тип данных: строка
- Дата добавления в базу. Тип данных: дата и время
Столбец ID встречается практически в каждой таблице в базе. Он имеет уникальный номер, поэтому часто используется для однозначного определения строчки в таблице. ID может быть у чего угодно: пользователя, новости, товара, публикации.
Попробуем создать таблицу с названием USERS и этими полями.
CREATE TABLE USERS (
ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(200),
DATE DATETIME DEFAULT CURRENT_TIMESTAMP
);
Разберём пример по строчкам. В первой строке можно увидеть команду с говорящим названием CREATE TABLE. Она делает запрос на создание таблицы. После неё стоит название таблицы USERS. В названии таблицы стоит ставить только латинские буквы (строчные и заглавные) и подчёркивания, но нельзя делать пробелы и иные символы.
После названия таблицы USERS открываются скобки и идут названия столбцов с типами данных в них и другими опциями, разделённые запятыми:
- ID - поле типа INT (целое число - INTEGER). После типа данных идёт "NOT NULL" - означает, что этот столбец не может быть пустым при добавлении новой строки в таблицу, иначе появится ошибка. Затем идёт "PRIMARY KEY" - эта надпись означает, что этот столбец является первичным ключом, а значит его значения уникальны. Этот столбец имеет свойство AUTO_INCREMENT, которое означает, что во время добавления данных в таблицу значение в этом столбце будет автоматически устанавливаться на единицу больше, чем самое большое.
- NAME - поле типа VARCHAR(200) - это обычный текст длиной максимум 200 символов. Можно задать любую длину в цифрах (до 255). Лишнее будет обрезано, если попытаться добавить слишком длинную строку. Если поставить тип поля VARCHAR с длиной более 255, то на старых версиях MySQL может появиться ошибка при создании таблицы, а новые версии будут просто воспринимать это поле как тип TEXT.
- DATE - поле типа DATETIME. Содержит дату и время в формате базы, к примеру, "28.06.2019 19:36:31". Фраза "DEFAULT CURRENT_TIMESTAMP" означает, что при добавлении новой строки в таблицу столбец DATE примет значение текущей даты - не нужно передавать значение в запросе к базе. Параметр "DEFAULT" может быть выставлен у любого типа данных, к примеру, у INT можно написать "DEFAULT 5", тогда если добавлять строку в базу и не указать значение столбца, то ему будет присвоено значение "5".
Итак, выполним SQL запрос из примера. Теперь необходимо убедиться действительно ли таблица создалась. Для этого сделаем следующий запрос к базе:
SHOW COLUMNS FROM `USERS`;
Эту команду можно перевести дословно с английского языка: "ПОКАЖИ СТОЛБЦЫ ИЗ". После этой команды стоит название таблицы, которую мы только что создавали. Если таблица создана успешно, то в результате выполнения запроса мы увидим список столбцов:
+-------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+-------------------+----------------+ | ID | int(11) | NO | PRI | NULL | auto_increment | | NAME | varchar(200) | YES | | NULL | | | DATE | datetime | YES | | CURRENT_TIMESTAMP | | +-------+--------------+------+-----+-------------------+----------------+По этому результату мы видим, что все столбцы создались успешно.
Добавление данных в таблицу
После успешного создания таблицы можно попробовать добавить первые данные. Не будем мелочиться и добавим сразу две строки данных:INSERT INTO `USERS` SET NAME='Мышь';
INSERT INTO `USERS` SET NAME='Кот', DATE='2019-06-20 20:07:09';
Команда "INSERT INTO" (можно перевести с английского как "ВСТАВИТЬ В") вставляет данные в таблицу, название которой идёт после неё. В нашем случае это "USERS". Затем идёт слово "SET" (переводится как "ЗАДАТЬ"), после которого через запятую перечисляются названия столбцов в таблице и их значения, который надо вставить.
В нашем примере первый столбец ID принимает максимальное уникальное значение, поэтому нет большого смысла передавать его при добавлении данных. Для разнообразия во втором добавлении передано не только значение NAME, но и значение DATE, хотя это необязательно, потому что при создании столбца DATE было сказано, что он принимает значение равное текущей дате и времени, если не передать ему что-то другое.
Базы данных могут быть настроены по-разному. Формат даты может отличаться, из-за чего значение DATETIME может несохраниться, если не угадать с форматом. Поэтому вместо строки, содержащей дату в формате "ГГГГ-ММ-ДД ЧЧ:ММ:СС" можно написать "NOW()" (переводится "сейчас"), тогда в таблицу будет вставлено значение текущей даты в нужном формате.
В статьях этого раздела можно найти более подробное объяснение использованию функции времени, такик как "NOW()". К ним вы можете добавлять и отнимать переоды времени. А так же вычислять, к примеру, вычислить дату следующего понедельника непосредственно при добавлении новой строки в базу.
Существует несколько способов записи команды INSERT. Приведём ещё один пример без "SET", который подходит для добавления небольшого количества данных, когда столбцов мало:
INSERT INTO USERS(NAME) VALUES('Мышь');
INSERT INTO USERS(NAME, DATE) VALUES('Кот', '2019-06-20 20:07:09');
После названия таблицы в скобках идёт название полей, в которых будут вставлены данные. Затем идёт "VALUES" и в скобках через запятую значения, которые будут вставлены. Обратите внимание, что важен порядок названий столбцов и значений, которые находятся в круглых скобках.
Давайте проверим, что было записано в нашу таблицу. Для этого выполним запрос:
SELECT * FROM `USERS`;
Команда "SELECT" возвращает строки из таблицы. После команды стоит звёздочка *, она означает, что необходимо выбрать все столбы таблицы. В нашем случае звёздочку можно заменить на перечисление трёх столбцов через запятую: "ID, NAME, DATE". После звёздочки стоит слово "FROM", которое можно перевести как "из". И в конце стоит название таблицы в базе данных "USERS", из которых будут выводиться данные.
В результате выполнения этого запроса мы увидим такой результат:
+----+----------+---------------------+ | ID | NAME | DATE | +----+----------+---------------------+ | 1 | Мышь | 2019-06-28 20:14:53 | | 2 | Кот | 2019-06-20 20:07:09 | +----+----------+---------------------+Всё добавилось как нужно.
Очистка и удаление таблицы
Попробуем очистить таблицу полностью. Сотрём все строки в ней. Для этого используем следующую SQL запрос:TRUNCATE `USERS`;
Этот короткий запрос содержит команду "TRUNCATE" (переводится с английского как "УСЕЧЬ") и название нашей таблицы "USERS". При выполнении такой команды будут удалены все строки в таблице. Можем убедиться в правильности удаления данных, вызвав команду:
SELECT * FROM `USERS`;
Если в таблице не оказалось ни одной строчки, то удаление прошло удачно. Теперь попробуем удалить саму таблицу. Удаление таблицы делается следующим запросом:
DROP TABLE `USERS`;
Команда "DROP TABLE" безвозвратно удаляет таблицу из базы. После этой команды стоит название нашей таблицы "USERS".