Как создать таблицу в бд

Последнее обновление: 04.05.2018

Создание таблицы

Для создания таблиц используется команда CREATE TABLE . Эта команды применяет ряд операторов, которые определяют столбцы таблицы и их атрибуты. Общий формальный синтаксис команды CREATE TABLE:

CREATE TABLE название_таблицы (название_столбца1 тип_данных атрибуты_столбца1, название_столбца2 тип_данных атрибуты_столбца2, ................................................ название_столбцаN тип_данных атрибуты_столбцаN, атрибуты_уровня_таблицы)

После команды CREATE TABLE идет название таблицы. Имя таблицы выполняет роль ее идентификатора в базе данных, поэтому оно должно быть уникальным. Затем в скобках перечисляются названия столбцов, их типы данных и атрибуты. В самом конце можно определить атрибуты для всей таблицы. Атрибуты столбцов, а также атрибуты таблицы указывать необязательно.

Создадим простейшую таблицу. Для этого выполним следующий скрипт:

CREATE DATABASE productsdb; USE productsdb; CREATE TABLE Customers (Id INT, Age INT, FirstName VARCHAR(20), LastName VARCHAR(20));

Таблица не может создаваться сама по себе. Она всегда создается в определенной базе данных. Вначале здесь создается база данных productsdb. И затем, чтобы указать, что все дальнейшие операции, в том числе создание таблицы, будут производиться с этой базой данных, применяется команда USE .

Далее собственно идет создание таблицы, которая называется Customers. Она определяет четыре столбца: Id, Age, FirstName, LastName. Первые два столбца представляют идентификатор клиента и его возраст и имеют тип INT , то есть будут хранить числовые значения. Следующие столбцы представляют имя и фамилию клиента и имеют тип VARCHAR(20) , то есть представляют строку длиной не более 20 символов. В данном случае для каждого столбца определены имя и тип данных, при этом атрибуты столбцов и таблицы в целом отсутствуют.

И в результате выполнения этой команды будет создана база данных productsdb, в которой будет создана таблица Customers.

Переименование таблиц

Если после создания таблицы мы захотим ее переименовать, то для этого нужно использовать команду RENAME TABLE , которая имеет следующий синтаксис:

RENAME TABLE старое_название TO новое_название;

Например, переименуем таблицу Customers в Clients:

RENAME TABLE Customers TO Clients;

Полное удаление данных

Для полного удаления данных, очистки таблицы применяется команда TRUNCATE TABLE . Например, очистим таблицу Clients:

TRUNCATE TABLE Clients;

Удаление таблиц

Для удаления таблицы из БД применяется команда DROP TABLE , после которой указывается название удаляемой таблицы. Например, удалим таблицу Clients.

Как варианты концентрации информации, жизненно важны, и без них не обходится даже незначительный проект. Насколько эффективно продумана структура, правильно сконструированы таблицы, настроены связи - от этого зависит скорость выборки/записи информации, надежность хранения данных, гарантия невозможности случайно нанести ущерб, доступность отката, завершенность каждой транзакции - и успех в целом.

База данных, прежде всего, - концептуальная идея, представление информации и логики ее использования в конкретной задаче.

Простые отношения = эффективная реализация

Реляционные идеи организации данных однозначно не самые лучшие, но они уверенно держат свои позиции много десятков лет. Как фабрики по производству продуктов и товаров первой необходимости для народного потребления, они, безусловно, необходимы.

Революционные идеи в информационном деле много раз заявляли о своем праве на жизнь, но по сей день не смогли представить значимые свидетельства существования такого права. Как всегда, простота - залог успеха. Однако тема отношений и связей между информационными объектами - точками и системами в информационном пространстве - еще полна белых пятен и интересных неожиданностей.

Применение простой конструкции приводит к формированию простых и удобных в использовании десятков таблиц, формализующих область применения задачи. Начать использовать «мускул» очень просто, но после первого десятка таблиц реляционные отношения порождают другое отношение к информации, ее представлению, хранению и использованию.

Временное, контролируемое и постоянное

Характерный момент: «фундаментальное строительство» концепции баз данных обошлось без участия MySQL, которая пришла в жизнь с интернет-программированием и стала его существенной частью. Динамичные современные технологии позволили этой базе данных стать быстрой, надежной и эффективной, легкой в освоении и применении.

Помимо основных таблиц конструкция create temporary table MySQL предоставляет программисту создавать временные структуры данных, существующие в течение текущего сеанса, визита конкретного пользователя, появления определенного события.

Если раньше к таблицам и связям между ними относились как к чему-то незыблемому, то сегодня уже не принято даже мощные базы данных относить к фундаментальным объектам. Это всего лишь шаг к пониманию информационной структуры, нужной для решения задачи.

Предоставляя инструмент создания временных таблиц create temporary table, MySQL дает возможность разделить базу данных на статичную и динамичную составляющие. Указав таблицы, программист может автоматически управлять правильностью ее формирования. Используя конструкцию MySQL create table check, разработчик может указать условия заполнения полей. Хотя этот вариант - скорее возможность облегчить миграцию SQL конструкций с других диалектов.

Информационное пространство: точки и системы

Каждый проект, будь то сайт целиком, одна страница или один простой алгоритм, располагается в определенном месте определенного информационного пространства. «Адрес» этого места - конкретная задача, условия существования алгоритма: информационная структура на входе и выходе, формы преобразования в процессе.

Однако не обязательно следовать правилам MySQL, create table может создать вовсе не то, что предусмотрено ее синтаксисом.

В этом примере поля code_back, owner_code и session_code определяют ключи соответственно по возврату, клиенту и сессии. Не только использование нестандартного варианта MySQL create table, key здесь не лежит в ее области компетенции, а расписан по смыслу: код возврата в случае незавершения транзакции, код активного клиента и код сессии, которых может быть несколько для данного клиента, но от него зависит, куда по коду возврата перейдет управление.

Здесь также нестандартно использование полей h_code, a_contents и a_surprise. Здесь в create table MySQL пример того, как одно поле может содержать не данные, а семантику. В любой ситуации, когда нужно иметь таблицу клиентов, вполне разумно создать кэш активной части этой таблицы. При этом вовсе не обязательно делать это адекватно исходной структуре данных. Так, например, поле a_contents получит содержание: имя;пароль;e-mail, а поле a_surprise - текущее состояние пользователя.

Идея a_contents и/или a_surprise

Такой вариант не потребует доступа к основной таблице, которая может быть большой и громоздкой, а позволит ограничиться маленькой, содержащей только актуальную информацию. Здесь create table MySQL - пример того, что можно сделать вход клиента по имени и паролю, или паролю и e-mail в простом условии: (a_contents like "{$cUserName};{$cUserPass}%") or (a_contents like "%{$cUserPass};{$cUserName}").

В этом примере используется собственная функция проверки наличия таблицы: scTableExists("rm_cache") поскольку если таблицы нет, нужно будет не только ее создать, но и записать, например, несколько начальных записей с данными администраторов ресурса.

Стандартный вариант create table if not exists MySQL предлагает в ограниченном варианте проверку наличия таблицы и ее создания в случае отсутствия. Обычно этого недостаточно. Нужно не только проверить наличие таблицы, но и заполнить ее начальной информацией.

Ячейка простого типа

Специфика языков использования MySQL, в частности PHP, традиционно минимизирует объем популярных данных: прежде всего, нетипированностью своих переменных. Чаще всего используются строки, по мере необходимости - числа и даты, иногда логические данные. Более широкие возможности описания данных на MySQL create table редко содержит. Хотя последнее определяется решаемой задачей. Возможно использование всего ассортимента данных посредством create table MySQL, пример - любая современная система управления контентом сайта.

Что и как использовать - определяет разработчик. В настоящий момент времени, по данным википедии, объемные и скоростные возможности MySQL могут удовлетворить самые емкие фантазии заказчика с учетом опыта используемого разработчика. При использовании на MySQL create table default-конструкции позволяют создавать чистые (пустые таблицы) с ячейками переменной длины и формировать динамичное содержимое в процессе работы.

Сложные структуры данных

Ориентация на простые типы данных, в первую очередь строки, привела к росту интереса к конструированию сложных информационных объектов, что при работе с базой данных превращается в хранение в основном строк, чисел (индексы - чаще всего), дат и "больших данных" - картинки, звуки, другой емкий контент. Здесь диалект create table практически не ограничивает. При всей простоте и доступности «мускула» программист имеет в своем распоряжении всю мощь реального SQL языка.

Внешне простая с точки зрения базы данных ячейка типа char или varchar превращается в алгоритме при чтении в полноценный объект - сложную структуру данных (свойства и методы, синтаксис и семантика), а при записи вновь обращается в компактную форму, сущность которой определяется разработчиком.

Элементарная таблица

Только колонки, только строчки и только один элемент на их пересечении, и только одного типа - ячейка. Таково базовое правило конструкции Никакой не отличается оригинальностью: числа, строки символов, даты... Это не вытекает из синтаксиса, но так получается на практике.

Программист, интерпретируя ячейку, может допустить в ней объект любого типа, обусловленного требованиями задачи. С точки зрения базы данных этот "любой тип" - всего-навсего строка.

Впрочем, неважно, что и как предпочитает использовать разработчик. Важно, что в настоящий момент времени (по данным википедии) объемные и скоростные параметры MySQL могут удовлетворить самые емкие фантазии заказчика с учетом опыта используемого разработчика.

«Живучими» оказываются самые простые таблицы, устроенные максимально простым способом. Если разработчик вкладывает в каждое поле надлежащий смысл, облекая его в тип char или varchar в рамках установленного MySQL create table syntax, то таблица будет работать.

Целочисленная таблица

Стоит отдельно поговорить об индексах в MySQL. Create table позволяет сразу их описать и использовать для доступа к большим объемам данных. Такой подход очень объясним, привычен и отработан до таких мелочей, что оптимизация упирается в скорость процессора, кеширование выборок, хитрые алгоритмы подсчета, часто выбираемых данных, правку php.ini, my.ini и httpd.conf.

Между тем никто не мешает разработчику создать свое собственное представление «о данных» - «ключах к данным», для простоты целочисленное - ни одной строки в таблице, только числа. Микропроект create table int MySQL обеспечит всем необходимым остальные таблицы: быстрый доступ, простые операции, полный функционал при идеальной скорости.

Целые числа, организованные как карта реальных данных, находящихся в больших и громоздких таблицах, без проблем позволят ускорить выборку и модификацию информации. Необязательно создавать такой вариант ключевого доступа на все время работы, можно использовать конструкцию create temporary table, MySQL создаст временную таблицу перед ее использованием. Или, например, для каждого пользователя - свою таблицу ключей.

В этом контексте синтаксисом не обозначенное использование create table if not exists MySQL позволяет создавать нужные таблицы даже при их непредвиденном отсутствии: например, был некорректный вход/выход или сбой компьютера, и индексирование нарушилось.

Реалии хостинга - MySQL+

Исторически база данных представляла собой осмысленное строение данных. Конструкция MySQL create table изначально придерживалась классических представлений о данных и их месте на дисковом пространстве. Интернет-программирование, и прежде всего варианты предоставления хостинга и логика популярных систем управления сайтами, сделали странное, на первый взгляд, смещение: одна база может представлять собой совокупность нескольких. Разделение идет по префиксам имен таблиц.

Некоторые поставщики хостинга наложили на имена баз данных свои требования, например, имя базы данных начинается с имени владельца хостинга.

По большому счету не важно, как назвать базу данных и как именовать ее таблицы. Однако сложившаяся ситуация стала представлять собой не просто синтаксис MySQL, а требования хостинга плюс синтаксис, то есть MySQL+.

Чем меньше таблица, чем проще она устроена, и чем меньше в ней записей, тем плотнее она имплантируется в язык программирования, посредством которого выполняются нужные действия с данными.

В принципе, любую задачу легко расписать на элементарные составляющие, вопрос лишь в том, во сколько обойдется такая простота.

Если нужен чистый MySQL, то это собственный хостинг, собственный сервер, где не будет ограничений ни по количеству баз данных, ни по правилам их именования и входящих в них таблиц.

Разнообразие версий Apache/MySQL/PHP

Зависимость от условий хостинга - не столько беда, сколько важное условие для современного безопасного программирования. Можно писать на PHP 7.0.13, использовать MySQL 5.7.16, но у заказчика окажется хостинг, допускающий только Perl и версию "мускула" 4.1.1 или устаревшую версию PHP.

В основном (что, впрочем, не факт) хостинги предоставляются на Linux, FreeBSD, UBUNTU и других вариациях юникосоподобных систем. Все они работают прекрасно, но у каждого из них свои особенности, свои варианты сборок AMP (Apache, MySQL, PHP). Далеко не всегда и не всякая команда сработает в очередной версии, хотя она работала в предыдущей.

Такую простую операцию как экспорт базы данных любая версия MySQL делает без проблем, как из phpMyAdmin, так и из командной строки. Обратная операция по импорту может не состояться. Чаще всего придется менять что-то в настройках PHP, сервера MySQL или Apache. Если изменения не помогают, придется искать альтернативные варианты.

Очевидный факт, иную операцию можно выполнить, переустановив базу данных, язык программирования или сервер. Это не лучшее решение, но, как правило, действенное.

База данных создание/проверка таблицы

Синтаксис MySQL create table редко применим в его стандартном варианте. Если его не рассматривать в контексте популярных систем управления сайтами: тут всегда будет классика жанра. В ежедневной работе проще всего его рассматривать в контексте практики: какие поля нужны в таблице, какой у них должен быть тип и размер. Остальное все равно придется дорабатывать в процессе разработки: набор символов, порядок сортировки, ключи.

Оптимальным является такой вариант алгоритма, при котором даже отсутствие базы данных не мешает сайту начать работу. Можно написать собственную функцию проверки наличия базы данных и/или таблицы, когда необходимо сформировать не только информационные структуры, но и заполнить их начальной информацией.

Часто достаточно использовать серию конструкций Create table if not exists, MySQL тогда не удивит владельца сайта или его посетителя тем, что неожиданно сообщит: базы данных нет, или структура таблиц нарушена.

В современном программировании общее правило «доверяй, но проверяй» не работает, вернее будет использовать логику «проверь и используй».

Create table: MySQL пример таблицы пользователей

Регистрация новых посетителей и вход/выход пользователей сайта разработаны многочисленное количество раз, но предела совершенству в этой важной части любого сайта пока нет.

Во многом вход/выход и регистрация определяются сферой компетенции сайта и/или используемой системой управления сайтом, но чаще - желанием разработать что-то более безопасное, защитить аккаунты пользователей, предотвратить взлом сайта.

Обычно база данных MySQL более защищена, чем сайт, но в случае сбоя не исключен вывод на экран браузера в сообщениях об ошибках конфигурационного кода сайта, содержащего имена и пароли к базе данных.

Хорошая практика - разделить данные на статичную и динамичную составляющие. На примере таблицы пользователей можно иметь объемную таблицу users и активную cache_users. Первая таблица содержит большое количество пользователей, вторая - только тех, кто работал в последние сутки (например). Всякий новый пользователь, который отсутствует во второй таблице, приходит туда после входа/регистрации и хранится некоторое время.

Но разделение на две таблицы здесь дает не только скорость выборки данных (малая таблица всегда быстрее громоздкой и большой), но и в том, что в нее помещается только та информация, которая нужна чаще всего при работе любого клиента конкретного сайта. Для выборки или изменения данных, естественно, используется основная таблица.

Память, информация и базы данных

В области информационных технологий как-то не сложилось представлять язык программирования с памятью. Язык - это переменные, константы и конструкции, позволяющие чем-то и как-то манипулировать. База данных - это что-то такое хранящее. Из нее всегда можно что-то выбрать в нее можно что-то записать.

Совмещается язык и база для целей работы с информацией, но логика взаимосвязей в этой триаде не столь совершенна, даже как в простой связке AMP: Apache, PHP, MySQL. Здесь все ясно: сервер, язык программирования и база данных - все, что нужно для подавляющего числа задач.

Язык SQL - тот же язык программирования, да и вообще в базе данных есть собственная логика операций, собственная концепция программирования. Здесь налицо стремление базы данных в сторону программирования. PHP - хороший инструмент, но сказать, что он адекватно стремится в сторону баз данных, пока трудно. Однако его конструкции и функции развиваются и совершенствуются.

Если же совместить PHP и MySQL в единое целое, то получится инструмент, обладающий памятью. Вариант совмещения дает идея объектно-ориентированного программирования: объект, описанный в языке, на время своей ненадобности находится в памяти (в базе данных) в компактном состоянии. Когда же в нем появляется необходимость, он восстанавливается в полноценный объект и действует в соответствии со своей компетенцией.

Вот универсальный синтаксис SQL для создания таблиц MySQL:

CREATE TABLE table_name (column_name column_type);

Теперь, мы создадим следующую таблицу в учебники базы данных.

Tutorials_tbl(tutorial_id INT NOT NULL AUTO_INCREMENT, tutorial_title VARCHAR(100) NOT NULL, tutorial_author VARCHAR(40) NOT NULL, submission_date DATE, PRIMARY KEY (tutorial_id));

Вот несколько пунктов, которые нуждаются в пояснении:

  • Поле атрибута не равно NULL , используется потому что мы не хотим, чтобы она была нулем. Поэтому если пользователь попытается создать запись со значением NULL, то MySQL будет вызвана ошибка.
  • Поле атрибута auto_increment в MySQL не говорит, чтобы идти вперед и добавить следующий доступный номер в поле ID.
  • Ключевое слово первичный ключ используется для определения столбца в качестве первичного ключа. Вы можете использовать несколько столбцов, разделенных запятыми, чтобы определить первичный ключ.

Создание таблиц из командной строки:

Это легко создать MySQL таблицу из MySQL> подсказка. Вы будете использовать команды SQL создать таблицу чтобы создать таблицу.

Пример:

Вот пример, который создает tutorials_tbl:

Root@host# mysql -u root -p Enter password:******* mysql> use TUTORIALS; Database changed mysql> CREATE TABLE tutorials_tbl(-> tutorial_id INT NOT NULL AUTO_INCREMENT, -> tutorial_title VARCHAR(100) NOT NULL, -> tutorial_author VARCHAR(40) NOT NULL, -> submission_date DATE, -> PRIMARY KEY (tutorial_id) ->); Query OK, 0 rows affected (0.16 sec) mysql>

Создание таблиц с помощью PHP скрипта:

Чтобы создать новую таблицу в любой существующей базы данных необходимо использовать функции PHP функции mysql_query(). Вы будете проходить свой второй аргумент при правильной команды SQL для создания таблицы.

Пример:

Вот пример создания таблицы с помощью PHP скрипта:

Creating MySQL Tables "; $sql = "CREATE TABLE tutorials_tbl(". "tutorial_id INT NOT NULL AUTO_INCREMENT, ". "tutorial_title VARCHAR(100) NOT NULL, ". "tutorial_author VARCHAR(40) NOT NULL, ". "submission_date DATE, ". "PRIMARY KEY (tutorial_id)); "; mysql_select_db("TUTORIALS"); $retval = mysql_query($sql, $conn); if(! $retval) { die("Could not create table: " . mysql_error()); } echo "Table created successfullyn"; mysql_close($conn); ?>

Еще примеры:

CREATE TABLE IF NOT EXISTS `users` (`id` int(11) NOT NULL auto_increment, `role_id` int(11) NOT NULL default "1", `username` varchar(25) collate utf8_bin NOT NULL, `password` varchar(34) collate utf8_bin NOT NULL, `email` varchar(100) collate utf8_bin NOT NULL, `banned` tinyint(1) NOT NULL default "0", `ban_reason` varchar(255) collate utf8_bin default NULL, `newpass` varchar(34) collate utf8_bin default NULL, `newpass_key` varchar(32) collate utf8_bin default NULL, `newpass_time` datetime default NULL, `last_ip` varchar(40) collate utf8_bin NOT NULL, `last_login` datetime NOT NULL default "0000-00-00 00:00:00", `created` datetime NOT NULL default "0000-00-00 00:00:00", `modified` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=3 ; //С двумя ключами: CREATE TABLE IF NOT EXISTS `ci_sessions` (session_id varchar(40) DEFAULT "0" NOT NULL, ip_address varchar(16) DEFAULT "0" NOT NULL, user_agent varchar(120) NOT NULL, last_activity int(10) unsigned DEFAULT 0 NOT NULL, user_data text NOT NULL, PRIMARY KEY (session_id), KEY `last_activity_idx` (`last_activity`));

Steps for Create Database Mysql

Create Database in two ways

1) By executing a simple SQL query

2) By using forward engineering in MySQL Workbench

In this tutorial, you will learn-

As SQL beginner , let"s look into the query method first.

Create Database

CREATE DATABASE is the SQL command for creating a database.

Imagine you need to create a database with name "movies". You can do it by executing following SQL command.

CREATE DATABASE movies;

Note: you can also use the command CREATE SCHEMA instead of CREATE DATABASE

Now let"s improve our SQL query adding more parameters and specifications.

IF NOT EXISTS

A single MySQL server could have multiple databases. If you are not the only one accessing the same MySQL server or if you have to deal with multiple databases there is a probability of attempting to create a new database with name of an existing database . IF NOT EXISTS let you to instruct MySQL server to check the existence of a database with a similar name prior to creating database.

When IF NOT EXISTS is used database is created only if given name does not conflict with an existing database"s name. Without the use of IF NOT EXISTS MySQL throws an error.

CREATE DATABASEIF NOT EXISTS movies;

Collation and Character Set

Collation is set of rules used in comparison. Many people use MySQL to store data other than English. Data is stored in MySQL using a specific character set. The character set can be defined at different levels viz, server , database , table and columns.

You need to select the rules of collation which in turn depend on the character set chosen.

For instance, the Latine1 character set uses the latin1_swedish_ci collation which is the Swedish case insensitive order.

CREATE DATABASE IF NOT EXISTS movies CHARACTER SET latin1 COLLATE latin1_swedish_ci

The best practice while using local languages like Arabic , Chinese etc is to select Unicode (utf-8) character set which has several collations or just stick to default collation utf8-general-ci.

You can find the list of all collations and character sets here

You can see list of existing databases by running following SQL command.

SHOW DATABASES

Creating Tables MySQL

Tables can be created using CREATE TABLE statement and it actually has the following syntax.

CREATE TABLE `TableName` (`fieldname` dataType ) ENGINE = storage Engine;

  • "CREATE TABLE" is the one responsible for the creation of the table in the database.
  • "" is optional and only create the table if no matching table name is found.
  • "`fieldName`" is the name of the field and "data Type" defines the nature of the data to be stored in the field.
  • "" additional information about a field such as " AUTO_INCREMENT" , NOT NULL etc

    Create Table Example:-

    CREATE TABLE IF NOT EXISTS `MyFlixDB`.`Members` (`membership_number` INT AUTOINCREMENT , `full_names` VARCHAR(150) NOT NULL , `gender` VARCHAR(6) , `date_of_birth` DATE , `physical_address` VARCHAR(255) , `postal_address` VARCHAR(255) , `contact_number` VARCHAR(75) , `email` VARCHAR(255) , PRIMARY KEY (`membership_number`)) ENGINE = InnoDB;

Now let"s see what the MySQL"s data types are. You can use any of them depending on your need. You should always try to not to underestimate or overestimate potential range of data when creating a database.

DATA TYPES

Data types define the nature of the data that can be stored in a particular column of a table

MySQL has 3 main categories of data types namely

  1. Numeric,
  2. Date/time.

Numeric Data types

Numeric data types are used to store numeric values. It is very important to make sure range of your data is between lower and upper boundaries of numeric data types.

TINYINT() -128 to 127 normal
0 to 255 UNSIGNED.
SMALLINT() -32768 to 32767 normal
0 to 65535 UNSIGNED.
MEDIUMINT() -8388608 to 8388607 normal
0 to 16777215 UNSIGNED.
INT() -2147483648 to 2147483647 normal
0 to 4294967295 UNSIGNED.
BIGINT() -9223372036854775808 to 9223372036854775807 normal
0 to 18446744073709551615 UNSIGNED.
FLOAT A small approximate number with a floating decimal point.
DOUBLE(,) A large number with a floating decimal point.
DECIMAL(,) A DOUBLE stored as a string , allowing for a fixed decimal point. Choice for storing currency values.

Text Data Types

As data type category name implies these are used to store text values. Always make sure you length of your textual data do not exceed maximum lengths.

CHAR() A fixed section from 0 to 255 characters long.
VARCHAR() A variable section from 0 to 255 characters long.
TINYTEXT A string with a maximum length of 255 characters.
TEXT
BLOB A string with a maximum length of 65535 characters.
MEDIUMTEXT
MEDIUMBLOB A string with a maximum length of 16777215 characters.
LONGTEXT
LONGBLOB A string with a maximum length of 4294967295 characters.

Date / Time

DATE YYYY-MM-DD
DATETIME YYYY-MM-DD HH:MM:SS
TIMESTAMP YYYYMMDDHHMMSS
TIME HH:MM:SS

Apart from above there are some other data types in MySQL.

ENUM To store text value chosen from a list of predefined text values
SET This is also used for storing text values chosen from a list of predefined text values. It can have multiple values.
BOOL Synonym for TINYINT(1), used to store Boolean values
BINARY Similar to CHAR, difference is texts are stored in binary format.
VARBINARY Similar to VARCHAR, difference is texts are stored in binary format.

Now let"s see a sample SQL query for creating a table which has data of all data types. Study it and identify how each data type is defined.

CREATE TABLE`all_data_types` (`varchar` VARCHAR(20) , `tinyint` TINYINT , `text` TEXT , `date` DATE , `smallint` SMALLINT , `mediumint` MEDIUMINT , `int` INT , `bigint` BIGINT , `float` FLOAT(10, 2) , `double` DOUBLE , `decimal` DECIMAL(10, 2) , `datetime` DATETIME , `timestamp` TIMESTAMP , `time` TIME , `year` YEAR , `char` CHAR(10) , `tinyblob` TINYBLOB , `tinytext` TINYTEXT , `blob` BLOB , `mediumblob` MEDIUMBLOB , `mediumtext` MEDIUMTEXT , `longblob` LONGBLOB , `longtext` LONGTEXT , `enum` ENUM("1", "2", "3") , `set` SET("1", "2", "3") , `bool` BOOL , `binary` BINARY(20) , `varbinary` VARBINARY(20)) ENGINE= MYISAM ;

  • Use upper case letters for SQL keywords i.e. "DROP SCHEMA IF EXISTS `MyFlixDB`;"
  • End all your SQL commands using semi colons.
  • Avoid using spaces in schema, table and field names. Use underscores instead to separate schema, table or field names.

MySQL workbench ER diagram forward engineering

MySQL workbench has utilities that support forward engineering. Forward engineering is a technical term is to describe the process of translating a logical model into a physical implement automatically .

We created an ER diagram on our ER modeling tutorial. We will now use that ER model to generate the SQL scripts that will create our database.

Creating the MyFlix database from the MyFlix ER model

1. Open the ER model of MyFlix database that you created in earlier tutorial.

2. Click on the database menu. Select forward engineer

3. The next window, allows you to connect to an instance of MySQL server. Click on the stored connection drop down list and select local host. Click Execute

4. Select the options shown below in the wizard that appears. Click next

5. The next screen shows the summary of objects in our EER diagram. Our MyFlix DB has 5 tables. Keep the selections default and click Next.

6.. The window shown below appears. This window allows you to preview the SQL script to create our database. We can save the scripts to a *.sql" file or copy the scripts to the clipboard. Click on next button

7. The window shown below appears after successfully creating the database on the selected MySQL server instance.


Summary

  • Creating a database involves translating the logical database design model into the physical database.
  • MySQL supports a number of data types for numeric, dates and strings values.
  • CREATE DATABSE command is used to create a database
  • CREATE TABLE command is used to create tables in a database
  • MySQL workbench supports forward engineering which involves automatically generating SQL scripts from the logical database model that can be executed to create the physical database

The Database along with Dummy Data is attached. We will be using this DB for all our further tutorials. Simple import the DB in MySQL Workbench to get started

В этой статье мы расскажем, как создавать новые базы данных и таблицы, используя команды SQL в клиенте mysql. Предполагается, что этот инструмент запущен и подключен к серверу базы данных MySQL.

Создание новой базы данных MySQL

Новая база данных создается с помощью оператора SQL CREATE DATABASE, за которым следует имя создаваемой базы данных. Для этой цели также используется оператор CREATE SCHEMA. Например, для создания новой базы данных под названием MySampleDB в командной строке mysql нужно ввести следующий запрос:

CREATE DATABASE MySampleDB;

Если все прошло нормально, команда сгенерирует следующий вывод:

Query OK, 1 row affected (0.00 sec)

Если указанное имя базы данных конфликтует с существующей базой данных MySQL, будет выведено сообщение об ошибке:

ERROR 1007 (HY000): Can"t create database "MySampleDB"; database exists

В этой ситуации следует выбрать другое имя базы данных или использовать опцию IF NOT EXISTS. Она создает базу данных только в том случае, если она еще не существует:

CREATE DATABASE IF NOT EXISTS MySampleDB;

Создание таблиц с помощью SQL

Новые таблицы добавляются в существующую базу данных с помощью оператора SQL CREATE TABLE. За оператором CREATE TABLE следует имя создаваемой таблицы, а далее через запятые список имен и определений каждого столбца таблицы:

CREATE TABLE имя_таблицы (определение имени_столбца, определение имени_таблицы …, PRIMARY KEY = (имя_столбца)) ENGINE = тип_движка;

В определении столбца ​​задается тип данных, может ли столбец быть NULL, AUTO_INCREMENT. Оператор CREATE TABLE также позволяет указать столбец (или группу столбцов) в качестве первичного ключа.
Прежде чем будет создавать таблицу, нужно выбрать базу данных. Это делается с помощью оператора SQL USE:

Создадим таблицу, состоящую из трех столбцов: customer_id , customer_name и customer_address . Столбцы customer_id и customer_name не должны быть пустыми (то есть NOT NULL). customer_id содержит целочисленное значение, которое будет автоматически увеличиваться при добавлении новых строк. Остальные столбцы будут содержать строки длиной до 20 символов. Первичный ключ определяется как customer_id.

CREATE TABLE customer (customer_id int NOT NULL AUTO_INCREMENT, customer_name char(20) NOT NULL, customer_address char(20) NULL, PRIMARY KEY (customer_id)) ENGINE=InnoDB;

Значения NULL и NOT NULL

Если для столбца указано значение NULL, тогда пустые строки будут добавляться в таблицу. И наоборот, если столбец определяется как NOT NULL, тогда пустые строки не будут добавлены​​.

Первичные ключи

Первичный ключ — это столбец, используемый для идентификации записей в таблице. Значение столбца первичного ключа должно быть уникальным. Если несколько столбцов объединены в первичный ключ, то комбинация значений ключей должна быть уникальной для каждой строки.

Первичный ключ определяется с помощью оператора PRIMARY KEY во время создания таблицы. Если используется несколько столбцов, они разделяются запятой:

PRIMARY KEY (имя_столбца, имя_столбца...)

В следующем примере создается таблица с использованием двух столбцов в качестве первичного ключа:

CREATE TABLE product (prod_code INT NOT NULL AUTO_INCREMENT, prod_name char(30) NOT NULL, prod_desc char(60) NULL, PRIMARY KEY (prod_code, prod_name)) ENGINE=InnoDB;

AUTO_INCREMENT

Когда столбец определяется с помощью AUTO_INCREMENT, его значение автоматически увеличивается каждый раз, когда в таблицу добавляется новая запись. Это удобно при использовании столбца в качестве первичного ключа. Благодаря AUTO_INCREMENTне нужно писать инструкции SQL для вычисления уникального идентификатора для каждой строки.

AUTO_INCREMENT может быть присвоен только одному столбцу в таблице. И он должен быть проиндексирован (например, объявлен в качестве первичного ключа).

Значение AUTO_INCREMENT для столбца можно переопределить, указав новое при выполнении инструкции INSERT.

Можно запросить у MySQL самое последнее значение AUTO_INCREMENT, используя функцию last_insert_id() следующим образом:

SELECT last_insert_value();

Определение значений по умолчанию при создании таблицы

Значения по умолчанию используются, когда значение не определено при вставке в базу данных.
Значения по умолчанию задаются с помощью ключевого слова DEFAULT в операторе CREATE TABLE. Например, приведенный ниже запрос SQL задает значение по умолчанию для столбца sales_quantity:

CREATE TABLE sales { sales_number int NOT_NULL, sales_quantity int NOT_NULL DEFAULT 1, sales_desc char(20) NOT_NULL, PRIMARY KEY (sales_number)) ENGINE=MyISAM;

Типы движков баз данных MySQL

Каждый из примеров создания таблицы в этой статье до этого момента включал в себя определение ENGINE= . MySQL поставляется с несколькими различными движками баз данных, каждый из которых имеет свои преимущества. Используя директиву ENGINE =, можно выбрать, какой движок использовать для каждой таблицы. В настоящее время доступны следующие движки баз данных MySQL:

  • InnoDB — был представлен вMySQL версии 4.0 и классифицирован как безопасная среда для транзакций.Ее механизм гарантирует, что все транзакции будут завершены на 100%. При этом частично завершенные транзакции (например, в результате отказа сервера или сбоя питания) не будут записаны. Недостатком InnoDB является отсутствие поддержки полнотекстового поиска.
  • MyISAM — высокопроизводительный движок с поддержкой полнотекстового поиска. Эта производительность и функциональность обеспечивается за счет отсутствия безопасности транзакций.
  • MEMORY — с точки зрения функционала эквивалентен MyISAM, за исключением того, что все данные хранятся в оперативной памяти, а не на жестком диске. Это обеспечивает высокую скорость обработки. Временный характер данных, сохраняемых в оперативной памяти, делает движок MEMORY более подходящим для временного хранения таблиц.

Движки различных типов могут сочетаться в одной базе данных. Например, некоторые таблицы могут использовать движок InnoDB, а другие — MyISAM. Если во время создания таблицы движок не указывается, то по умолчанию MySQL будет использовать MyISAM.

Чтобы указать тип движка, который будет использоваться для таблицы, о поместите соответствующее определение ENGINE= после определения столбцов таблицы:

CREATE TABLE tmp_orders { tmp_number int NOT_NULL, tmp_quantity int NOT_NULL, tmp_desc char(20) NOT_NULL, PRIMARY KEY (tmp_number)) ENGINE=MEMORY;

Перевод статьи «Creating Databases and Tables Using SQL Commands» был подготовлен дружной командой проекта




Top