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

В данной статье мы расскажем, как создавать новые базы данных и таблицы, используя команды 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:

USE MySampleDB;

Создадим таблицу, состоящую из трех столбцов: 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;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *