Текстовые типы. (большой бинарный объект)

Если нужно хранить данные, для которых не хватит 255 символов столбца типа char или varchar, вам понадобится один из текстовых типов.

Tinytext 255

Text 65 535

Mediumtext 16 777 215

Longtext 4 294 967 295

Выбирая тот или иной текстовый тип, необходимо помнить следующее:

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

• В отличие от столбца типа varchar, при загрузке данных в такой столбец пробелы в конце строки не удаляются.

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

• Разные текстовые типы присущи исключительно MySQL. У SQL Server для больших символьных данных есть только один тип text, а в DB2 и Oracle применяется тип данных под названием clob (Character Large Object, большой символьный объект). При создании столбца для данных произвольного форм

Примеры:

Сокращенные названия государств

Индекс города

Фамилия человека

Описание товара

Хранения отзыва о компании

Названия месяцев

Столбец, являющийся индикатором поставки заказа покупателю

Первичный ключ для таблицы транзакций, генерируемый системой

Номер позиции в клиентской электронной корзине для покупок

Данные позиционирования сверлильного станка для печатных плат

Дата будущего события, например доставки заказа покупателю

Фактическая дата доставки заказа покупателю

Дата и время изменения пользователем определенной строки таблицы

Дата рождения сотрудника

Время, необходимое для монтажа электропроводки в автомобиле на сборочном конвейере

MySQL - это система управления реляционными базами данных.

Программное обеспечение MySQL - это ПО с открытым кодом.

Большинство реляционных баз данных, за исключением MS Access, состоят из двух отдельных компонентов: «back-end», где хранятся данные и «front-end» — пользовательский интерфейс для взаимодействия с данными. Этот тип конструкции достаточно умный, так как он распараллеливает двухуровневую модель программирования, которая отделяет слой данных от пользовательского интерфейса и позволяет сконцентрировать рынок ПО непосредственно на улучшении своих продуктов. Эта модель открывает двери для третьих сторон, которые создают свои приложения для взаимодействия с различными базами данных.

MySQL – это сервер, для работы с сервером имеется консольный клиент mysql.

В Интернете каждый может найти много продуктов для разработки и администрирования баз данных MySQL. Приведу примеры самых распространенных инструментов разработки:

MySQL Workbench

Navicat

PHPMyAdmin

DbForge Studio for MySQL

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

Немного поговорим о консоли. Она входит в поставку. Она умеет практически все, что нужно для создания и администрирования БД.

Особенности работы в консоли:

Окончание команды обозначается точкой с запятой. Команды могут писаться через энтер, как только прошла точка с запятой, так значит команда пошла на выполнение. Команду можно закончить и по другому: \g – выводит как таблицу. или \G – выводит в виде списка.

Если ошиблись, то отменять команду: \с или clear

Все команды можно увидеть набрав команду help.

Команды могут быть буквенными либо в сокращенном виде.

\t \T – автоматом пишется в файле или отключает запись в файл.

Source (\.) – прогон команд из файла.

Комментарии пишут следующим образом:

-- одну строку закомментировать

/* */ - блок комментарий.

# - тоже однострочный комментарий.

Посмотрим в консоли команды:

SELECT user, password FROM mysql.user;

SELECT now();

SHOW DATABASES;

Текстовые типы. (большой бинарный объект) - student2.ru

Примеры:

CREATE DATABASES module3;

CREATE DATABASES module 3; //ошибка

CREATE DATABASES `module 3`; //нет ошибки

CREATE DATABASES IF NOT EXISTS module3; //если не существует, то создать

DROP DATABASES `module 3`;

CREATE DATABASES IF NOT EXISTS module3; //если не существует, то удалить

USE module3; //использовать базу данных

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

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [select_statement]

CREATE TABLE устанавливает новую таблицу, ее столбцы и ограничения целостности в существующей базе данных. Пользователь, который создает таблицу, становится владельцем таблицы и получает полные привилегии для этого, включая возможность предоставления (GRANT) привилегий другим пользователям, триггерам, и сохраненным процедурам.

CREATE TABLE поддерживает несколько опций для определения столбцов:

  • Локальные столбцы, определяющие имя и тип данных для данных, введенных в столбец.
  • Вычисляемые столбцы, базирующиеся на расширении. Значение столбца вычисляется каждый раз при доступе к таблице. Столбцы, к которым обращается выражение, должны существовать раньше, чем столбец может быть определен.
  • Основанные на доменах столбцы, наследуемые все характеристики домена, но определение столбца может включать новое значение по умолчанию, атрибут NOT NULL, дополнительные ограничения CHECK или переопределять порядок сортировки, которые отменяют определение домена.
  • Описание типа данных для столбца типа CHAR, VARCHAR или BLOB-техт может включать предложение CHARACTER SET определяя специфическую кодировку для одиночного столбца. Иначе столбец использует определенную по умолчанию для базы данных кодировку. Если кодировка базы данных изменена, все столбцы впоследствии определенные имеют новую кодировку, но существующие столбцы не изменяются.

Предложение COLLATE позволяет указать специфический порядок сортировки для типов данных CHAR, VARCAHR и BLOB-текст. Выбор порядка сортировки ограничен теми, которые поддерживаются для данной кодировки столбца, это или кодировка по умолчанию для базы данных в целом или другая установленная в предложении CHARACTER SET как часть определения типа данных. Смотри Language Reference, чтобы получить полный список возможных сортировок.

Атрибут NOT NULL предотвращает ввод NULL или неизвестного значения в столбец.

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

  • PRIMARY KEY (первичный ключ) - уникально идентифицирует каждую строку таблицы. Значение в этом столбце либо в упорядоченном наборе столбцов не могут повторятся в более чем одной строке. Столбец PRIMARY KEY должен быть определен только с атрибутом NOT NULL. Таблица может иметь только один PRIMARY KEY, который может быть определен на одном или более столбцов.
  • UNIQUE (уникальные) ключи гарантируют, что не существует двух строк имеющих одно и тоже значение в специфическом столбце или упорядоченном наборе столбцов. Уникальный столбец должен быть определен с атрибутом NOT NULL. Таблица может иметь один или более UNIQUE ключей. UNIQUE ключ может быть использован FOREIGN KEY (внешний ключ) в другой таблице.
  • Справочные ограничения гарантируют, что значения в наборе столбцов, которые определены в FOREIGN KEY принимают те же самые значения, которые присутствуют в столбце UNIQUE или PRIMARY KEY в справочной таблице.
  • CHECK ограничения предписывают <search_condition>, которые должны принимать значение истинно для добавленных или измененных данных.<search_condition> могут требовать некоторой комбинации или порядка значений или равенства значению, введенному в другие столбцы.

Для не именованных ограничений, система создает уникальное имя, сохраненное в системной таблице RDB$RELATION_CONSTRAINTS.

Обратите внимание: Ограничения не допустимы на выражениях.

[] – необязательно присутствует.

Пример.

Рассмотрим две таблицы. Первая таблица содержит информацию о людях. Вторая об их предпочтениях в еде, т.е. любимые блюда.

PERSON
Person_id Smallint(unsigned)
fname VARCHAR(20)
Iname VARCHAR(20)
gender CHAR(1)
birth_date DATE

И таблицу

Favorite_food
Person_id Smallint(unsigned)
Food VARCHAR(20)

У таблицы person есть первичный ключ (person_id), гарантирующий уникальность. Столбцы person_id и food (блюдо) образуют первичный ключ таблицы favorite_food. Столбец person_id также является внешним ключом к таблице person.

Команда создания первой таблицы:

CREATE TABLE person (person_id SMALLINT UNSIGNED,

fname VARCHAR(20),

lname VARCHAR(20),

gender CHAR(1),

birth_date DATE,

CONSTRAINT pk_person PRIMARY KEY (person_id) );

В этом выражении должно быть понятно все, кроме последнего элемента. При описании таблицы необходимо сообщить серверу БД, какой столбец или столбцы будут играть роль первичного ключа таблицы. Осуществляется это путем создания ограничения (constraint) для таблицы. В описание таблицы можно добавить ограничение одного из нескольких типов. Данное ограничение является ограничением первичного ключа (primary key constraint). Оно накладывается на столбец person_id и получает имя pk_person. Обычно начинают имена ограничений первичного ключа с приставки pk_, а затем указываю имя таблицы, чтобы при просмотре списка таких ограничений было ясно, чем каждое из них является.

Говоря об ограничении, упомянем еще один тип, который мог бы быть полезным для таблицы person. Некоторым полям можно указать допустимые значения (например 'M' и 'F' для столбца gender). Это другой тип ограничения – проверочное ограничение (check constraint), ограничивающее допустимые значения конкретного столбца. MySQL позволяет вводить в описание столбца проверочное ограничение:

gender ENUM('M','F'),

Если требуется убедиться, что таблица person действительно существует, можно использовать команду describe (описать) (или desc для краткости) и посмотреть описание таблицы.

mysql> DESC person;

Теперь, после создания таблицы person, следующий шаг – создать таблицу favorite_food:

CREATE TABLE favorite_food

(person_id SMALLINT UNSIGNED,

food VARCHAR(20),

CONSTRAINT pk_favorite_food PRIMARY KEY (person_id, food),

CONSTRAINT fk_person_id FOREIGN KEY (person_id)

REFERENCES person (person_id)

);

Это очень похоже на выражение create table для таблицы person, за несколькими исключениями:

• Поскольку у человека может быть несколько любимых блюд (что и стало причиной создания данной таблицы), одного столбца person_id для обеспечения уникальности в таблице недостаточно. Поэтому первичный ключ данной таблицы состоит из двух столбцов: person_id и food.

• Таблица favorite_food содержит другой тип ограничения – ограничение внешнего ключа (foreign key constraint). Оно ограничивает значения столбца person_id таблицы favorite_food, позволяя ему включать только те значения, которые есть в таблице person. При таком ограничении не получится включить в таблицу favorite_food строку, показывающую, что person_id 27 любит пиццу, если в таблице person нет строки со значением 27 для person_id.

просмотр структуры таблицы:

DESC favorite_food;

Команды модификации.

1. Добавление столбца.

ALTER TABLE favorite_food

ADD recipe VARCHAR(200)

2. Модификация столбца.

Изменение столбца невозможно, если:

• столбец участвует в ограничениях PRIMARY KEY или FOREGIG KEY;

• на столбец наложены ограничения целостности CHECK или UNIQUE

(исключение – столбцы, имеющие тип данных переменной длины, т.е. типы данных, начинающиеся на var);

• со столбцом связано значение по умолчанию.

ALTER TABLE favorite_food

MODIFY recipe VARCHAR(300) NOT NULL

3. Удаление столбца.

Нельзя удалять столбцы с ограничением целостности CHECK, FOREIGN KEY, UNIQUE или PRIMARY KEY,

а также столбцы, для которых определены значения по умолчанию.

ALTER TABLE favorite_food

DROP COLUMN recipe

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

ALTER TABLE favorite_food

CHANGE COLUMN recipe disc VARCHAR(300) NOT NULL;

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

ALTER TABLE favorite_food

RENAME TO Ffavorite_food;

6 Удаление таблицы:

DROP TABLE Ffavorite_food;

Наши рекомендации