Запрос на создание таблицы в MySQL
Для создания таблицы потребуется придумать:
- Имя таблицы
- Имена полей таблицы
- Значения, которыми могут быть заполнены поля
Синтаксис запроса на создание таблицы.
1 |
CREATE TABLE table_name (column_name column_type attributes); |
Для примера создадим таблицу books со списком книг условной базы данных Bookstore.
Оповестим сервер MySQL с какой базой данных мы собираемся работать.
1 |
USE Bookstore; |
При именовании колонок таблицы старайтесь использовать знак подчеркивания в местах где предполагается пробел, не начинать имена с заглавной буквы (кроме имен собственных), а также использовать слова в единственном числе, не совпадающие с именем таблицы.
Составим запрос на создании таблицы со следующими полями:
- id - Идентификатор записи.
- title - название книги.
- author - имя автора книги.
- genre - жанр произведения в книге.
- price - цена книги.
- edition - номер издания.
- isbn - номер ISBN.
- page_num - число страниц в книге.
- publish_year - год выхода книги в печать.
- creation_date - дата создания записи (когда занесли книгу в БД).
1 2 3 4 5 6 7 8 9 10 11 12 |
CREATE TABLE books( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(50) NOT NULL, author VARCHAR(50) NOT NULL, genre SET('Драма','Роман','Повесть','Рассказ','Поэма'), price DECIMAL(15,2), edition TINYINT UNSIGNED DEFAULT '1' NOT NULL, isbn VARCHAR(50), page_num SMALLINT UNSIGNED, publish_year SMALLINT(4), creation_date TIMESTAMP ); |
После того как вы указали тип данных для поля, вы можете также указать дополнительные атрибуты:
- UNSIGNED - позволяет увеличить диапазон числовых значений за счет отключения использования отрицательных чисел. Используется только с числовыми типами данных.
- AUTO_INCREMENT - значение поля с этим атрибутом будет увеличиваться на 1 при каждом создании новой записи в таблице. Часто используется для автоматического заполнения полей с идентификатором записи.
- PRIMARY_KEY - первичный ключ используется для идентификации записей в таблице. Первичным ключом может быть только уникальное значение поэтому чаще всего это значение поля id с атрибутом
AUTO_INCREMENT
. - NOT NULL - обязательное поле для заполнения (не может быть пустым).
- DEFAULT - значение поля по умолчанию.
Каждая таблица должна иметь поле которое помечено как первичный ключ.
Создание таблицы в терминале:
[root@centos7 ~]# mysql -u root -p
Enter password:
mysql> USE Bookstore;
Database changed
mysql> CREATE TABLE books(
-> id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
-> title VARCHAR(50) NOT NULL,
-> author VARCHAR(50) NOT NULL,
-> genre SET('Драма','Роман','Повесть','Рассказ','Поэма'),
-> price DECIMAL(15,2),
-> edition TINYINT UNSIGNED DEFAULT '1' NOT NULL,
-> isbn VARCHAR(50),
-> page_num SMALLINT UNSIGNED,
-> publish_year SMALLINT(4),
-> creation_date TIMESTAMP);
Query OK, 0 rows affected (0.22 sec)
mysql>
Создание таблицы в базе данных с помощью PHP (PDO)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php $server = "localhost"; $user = "root"; $password = "MySafePass4!"; $db_name = "Bookstore"; try { // Открываем соединение $db = new PDO("mysql:host=$server;dbname=$db_name", $user, $password); // Создание исключения при ошибке $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Запрос на создание таблицы $sql = "CREATE TABLE books(". "id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,". "title VARCHAR(50) NOT NULL,". "author VARCHAR(50) NOT NULL,". "genre SET('Драма','Роман','Повесть','Рассказ','Поэма'),". "price DECIMAL(15,2),". "edition TINYINT UNSIGNED DEFAULT '1' NOT NULL". "isbn VARCHAR(50),". "page_num SMALLINT UNSIGNED,". "publish_year SMALLINT(4),". "creation_date TIMESTAMP);"; // Выполняем запрос $db->exec($sql); echo "Таблица успешно создана!"; } catch(PDOException $e) { echo "Ошибка при создании таблицы в базе данных: " . $e->getMessage(); } // Закрываем соединение $db = null; ?> |
Запрос на удаление таблицы в MySQL
Синтаксис запроса на удаление таблицы:
1 |
DROP TABLE table_name; |
Удаление таблицы в терминале.
[root@centos7 ~]# mysql -u root -p
Enter password:
mysql> USE Bookstore;
Database changed
mysql> DROP TABLE books;
Query OK, 0 rows affected (0.05 sec)
mysql>
Удаление таблицы в базе данных с помощью PHP (PDO)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php $server = "localhost"; $user = "root"; $password = "MySafePass4!"; $db_name = "Bookstore"; try { // Открываем соединение $db = new PDO("mysql:host=$server;dbname=$db_name", $user, $password); // Создание исключения при ошибке $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Запрос на удаление таблицы $sql = "DROP TABLE books"; // Выполняем запрос $db->exec($sql); echo "Таблица успешно удалена!"; } catch(PDOException $e) { echo "Ошибка при удалении таблицы в базе данных: " . $e->getMessage(); } // Закрываем соединение $db = null; ?> |