23. Способы создания таблиц в субд Microsoft Access.
В Access используются три способа создания таблиц: путем ввода данных, с помощью Конструктора таблиц и с помощью Мастера создания таблиц. Для каждого из этих способов существует специальный ярлык новых объектов в списке таблиц. Если вы создали новый файл базы данных, то, кроме этих ярлыков, в списке таблиц больше ничего нет.
Для создания новой таблицы можно воспользоваться любым из описанных способов. Обычно создание таблиц путем ввода данных используют тогда, когда структура таблицы очень проста, например справочник. Тогда Access сама догадывается о том, как установить свойства полей. Потом можно переключить таблицу в режим Конструктора и посмотреть, как эти свойства будут установлены. Использование Мастера таблиц оправдано, если нужно создать какую-то типовую таблицу, пользуясь шаблонами, которые он предложит. Режим Конструктора наиболее часто применяется пользователями и может вам тоже потребоваться для просмотра структуры таблицы или для изменения данной структуры. Поэтому знать его небесполезно.
24. Способы создания форм в субд Microsoft Access.
В Microsoft Access поддерживаются три метода создания Базы данных Access:
Можно создать базу данных с помощью мастера создания баз данных. Этот мастер позволяет выбирать один из встроенных шаблонов и настраивать его требуемым образом. Затем создается набор таблиц, запросов, форм и отчетов, а также кнопочная форма базы данных. Таблицы не содержат данных. Этот метод используется, если встроенный шаблон полностью удовлетворяет требованиям.
Загрузка шаблона — это самый быстрый способ создания базы данных. Если удалось найти шаблон, полностью удовлетворяющий требованиям, используйте метод, описанный выше. Шаблон представлен файлом Access (*.mdb) и содержит таблицы, запросы, формы и отчеты. Таблицы не содержат данных. После открытия базы данных можно настроить ее и ее объекты.
Если требуется начать создание базы данных по собственному проекту, создайте пустую базу данных, а затем добавьте в нее таблицы, формы, отчеты и другие объекты — это наиболее гибкий способ, но он требует отдельного определения каждого элемента базы данных.
25.Способы создания форм в субд Microsoft Access.
Выделяют два типа запросов:
- QBE-запросы (Query by Example -Запрос по образцу). Пользователь дает им определения, специфицируя отдельные параметры в окне проектирования с использованием подсказок(образцов).
- SQL — запросы (Structured Query Language-Структурированный язык запросов ). Пользователь формулирует их с использованием инструкций и функций, выстраивая описание. QBE-запрос Access легко транслирует в соответствующий SQL-запрос. Обратная операция тоже не составляет труда. Вообще для Access безразлично, с каким типом запроса работает пользователь.
Запросы можно создавать с помощью Конструктора запросов. Он ускоряет проектирование нескольких специальных типов запросов:
- Запросы кросс-таблиц. Представляют Ваши данные в компактном суммированном формате.
- Запросы нахождения дубликатов. Находят дубликатные записи в выбранной Вами таблице или запросе.
- Запросы нахождения несоответствия. Находят все записи в таблице которые не связаны с записями в другой таблице.
- Запросы архивов. Копируют записи из существующей таблицы в новую и затем удаляют (по желанию) эти записи из таблицы оригинала.
Но для большинства общеиспользуемых запросов не нужна помощь Конструктора запросов.
Другой тип создания запросов – Без помощи конструктора.
Создание таблиц в классических базах данных Access с помощью средства чтения с экрана
Эта статья предназначена для людей с нарушениями зрения или когнитивных функций, использующих программы чтения с экрана, такие как WindowsЭкранный диктор, JAWS или NVDA, с продуктами Microsoft 365. Эта статья входит в набор содержимого поддержки средства чтения с экрана Microsoft 365, где содержатся дополнительные сведения о специальных возможностях в наших приложениях. Чтобы получить справку общего характера, посетите службу поддержки Майкрософт.
Используйте Access с клавиатурой и средством чтения с экрана для добавления таблиц в базу данных Access рабочего стола. Мы протестировали его с помощью экранного диктора и NVDA, но он может работать с другими средствами чтения с экрана, если они следуют общим стандартам и методам специальных возможностей. Вы также узнаете, как сохранять, переименовывать и удалять таблицы.
- Новые возможности Microsoft 365 становятся доступны подписчикам Microsoft 365 по мере выхода, поэтому в вашем приложении эти возможности пока могут отсутствовать. Чтобы узнать о том, как можно быстрее получать новые возможности, станьте участником программы предварительной оценки Office.
- Дополнительные сведения о средствах чтения с экрана см. в статье О работе средств чтения с экрана в Microsoft 365.
В этом разделе
- Таблицы в Access
- Добавление таблицы
- Переименование заголовка поля
- Вставка поля
- Добавление поля
Таблицы в Access
Таблицы — это неотъемлемая часть любой базы данных, так как именно в них содержатся все сведения и данные. Например, база данных для бизнеса может содержать таблицу Контактов , в ней хранятся имена поставщиков, адреса электронной почты и номера телефонов. Перед созданием таблиц проанализируйте свои требования и определите, какие именно таблицы могут вам понадобиться. Справочные сведения о планировании и разработке базы данных см. в статье Основные сведения о создании баз данных.
Реляционная база данных, например Access, обычно содержит несколько логически связанных таблиц. В хорошо спроектированной базе данных в каждой таблице хранятся сведения о конкретном объекте, например о работниках или товарах. Таблица содержит записи (строки), поля (столбцы) и значения полей (ячейки) для каждой записи.
- Запись (строка) содержит конкретные данные, например информацию об определенном работнике или продукте.
- Поле (столбец) содержит данные об одном аспекте элемента таблицы, например имя, адрес электронной почты или цену.
- Значение поля (ячейка) для записи содержит данные разных типов, например текст, числа, даты и гиперссылки.
Хотя в каждой таблице хранятся данные о определенной теме, в таблицах в реляционной базе данных, такой как Access, хранятся данные о связанных субъектах. Например, база данных может содержать следующее:
- Таблица «Клиенты», в которую перечислены клиенты вашей компании и их адреса.
- Таблица Products, в которую перечислены продукты, которые вы продаете, включая цены и изображения для каждого элемента.
- Таблица Orders, которая отслеживает заказы клиентов
Для этого используются связи. Связь — это логическое отношение между двумя таблицами, основанное на их общих полях. Сведения о создании связей между таблицами в базе данных Access рабочего стола см. в статье Создание, изменение или удаление связи.
Добавление таблицы
- Откройте новую или существующую базу данных.
- Чтобы создать таблицу, нажмите клавиши ALT+C, T, N, чтобы выбрать Таблица на вкладке Создание ленты. Будет добавлена новая таблица, и вы услышите сообщение «Таблица N». Основное внимание уделяется второму значению поля первой записи. (По умолчанию первое поле имеет название Код.)
- Введите данные в таблицу. Вы также можете вставить данные из другого источника, например из книги Excel. Дополнительные сведения см. в статье Копирование и вставка с помощью буфера обмена Office. При вводе значения поля в новое поле и переходе к следующему значению поля с помощью клавиш со стрелками Access автоматически присваивает поле имя FieldN.
Переименование заголовка поля
Можно переименовать заголовок поля (столбца) в таблице.
- Чтобы выбрать поле, в любой записи поместите фокус в поле и нажмите клавиши CTRL+ПРОБЕЛ. Выбран столбец.
- Чтобы открыть контекстное меню, нажмите клавиши SHIFT+F10.
- Чтобы выбрать команду Переименовать поле, нажмите клавишу N. Фокус переместится на заголовок поля, и вы услышите фразу «Вывод меню, таблица, строка N», имя поля и «Тип и текст». Введите новое имя поля.
Совет: Понятные имена заголовков, такие как Название продукта или Цена, помогают узнать, что содержит каждое поле, не видя его содержимое.
Вставка поля
Поле (столбец) можно вставить слева от любого существующего поля в таблице.
- Чтобы выбрать поле, которое нужно вставить слева, в любой строке поместите фокус в поле и нажмите клавиши CTRL+ПРОБЕЛ. Выбран столбец.
- Чтобы открыть контекстное меню, нажмите клавиши SHIFT+F10.
- Чтобы выбрать Вставить поле, нажмите клавишу F четыре раза, а затем нажмите клавишу ВВОД. Фокус переместится на первую запись нового поля.
Добавление поля
Вы можете создать новое поле (столбец) в правой части таблицы.
- Перейдите к записи, вокруг которой нужно добавить новое поле.
- Чтобы перейти к первой записи таблицы, нажмите клавиши CTRL+HOME.
- Чтобы перейти к последней записи последнего поля в таблице, нажмите клавиши CTRL+END.
- Чтобы создать новое поле в правой части таблицы, нажимайте клавишу СТРЕЛКА ВПРАВО, пока не услышите номер строки и «Столбец, щелкните, чтобы добавить».
- Введите значение поля для текущей записи. При переходе в другую ячейку новое поле добавляется с именем FieldN по умолчанию.
- Чтобы перейти к первой записи нового поля, нажмите клавиши CTRL+СТРЕЛКА ВВЕРХ.
Сохранение таблицы
После создания новой таблицы или изменения существующей таблицы сохраните свою работу.
-
Чтобы сохранить таблицу, нажмите клавиши CTRL+S или ALT+F, S. При первом сохранении таблицы откроется диалоговое окно Сохранить как , и вы услышите сообщение «Сохранить как» и имя таблицы по умолчанию.
- При попытке закрыть таблицу без сохранения изменений появится диалоговое окно подтверждения. Чтобы сохранить таблицу перед ее закрытием, нажмите клавиши ALT+Y. Чтобы отменить изменения, нажмите клавиши ALT+N.
- При сохранении изменений в существующей таблице таблица имеет имя, присвоенное ранее. Чтобы изменить имя таблицы при сохранении, нажмите клавишу F12. Откроется диалоговое окно Сохранить как , и вы можете ввести новое имя.
Совет: Договоритесь о том, по какому принципу будете называть объекты в базе данных, и следуйте этим правилам.
Переименование таблицы
Примечание: Нельзя переименовать открытую таблицу. Чтобы закрыть активную таблицу, нажмите клавиши CTRL+W. Фокус переместится на следующую открытую таблицу. Если открытых таблиц не осталось, фокус переместится в область навигации .
- В области навигации нажимайте клавишу TAB, пока не услышите сообщение «Таблицы», а затем нажимайте клавишу СТРЕЛКА ВНИЗ, пока не услышите нужную таблицу.
- Чтобы открыть контекстное меню для таблицы, нажмите клавиши SHIFT+F10.
- Чтобы выбрать команду Переименовать в контекстном меню, дважды нажмите клавишу M, а затем нажмите клавишу ВВОД. Прозвучит фраза «Переименовать».
- Введите новое имя и нажмите клавишу ВВОД.
Удаление таблицы
- В представлении таблицы закройте все таблицы. Фокус переместится в область навигации.
- Нажимайте клавишу СТРЕЛКА ВНИЗ, пока не услышите таблицу, которую нужно удалить.
- Нажмите клавишу DELETE. Откроется окно с запросом на подтверждение удаления. Фокус помещается на кнопку Да.
- Чтобы удалить таблицу, нажмите клавишу ВВОД.
Примечание: Чтобы перейти в представление таблицыиз конструктора , нажмите клавиши ALT+H, W, а затем — H. Чтобы перейти в режим конструктора из представления таблицы , нажмите клавиши ALT+H, W, а затем — D.
См. также
Техническая поддержка пользователей с особыми потребностями
Корпорация Майкрософт стремится к тому, чтобы все наши клиенты получали наилучшие продукты и обслуживание. Если у вас ограниченные возможности или вас интересуют вопросы, связанные со специальными возможностями, обратитесь в службу Microsoft Disability Answer Desk для получения технической поддержки. Специалисты Microsoft Disability Answer Desk знакомы со многими популярными специальными возможностями и могут оказывать поддержку на английском, испанском, французском языках, а также на американском жестовом языке. Перейдите на сайт Microsoft Disability Answer Desk, чтобы узнать контактные сведения для вашего региона.
Если вы представитель государственного учреждения или коммерческой организации, обратитесь в службу Disability Answer Desk для предприятий.
Как создавать таблицы в MySQL (Create Table)
Рассказываем о типах данных, атрибутах, ограничениях и об изменениях в уже созданной таблице.
Эта инструкция — часть курса «MySQL для новичков».
Смотреть весь курс
Введение
В данной статье мы рассмотрим, как правильно создавать таблицы в MySQL. Для этого разберем основные типы данных, атрибуты, ограничения, и что можно исправить в уже созданной таблице. Чтобы сократить последующие изменения, стоит заранее продумать структуру таблицы и ее содержимое. Наиболее важные пункты:
- Названия таблиц и столбцов.
- Типы данных столбцов.
- Атрибуты и ограничения.
Ниже разберем подробнее, как реализовать этот короткий список для MySQL наиболее эффективно.
Синтаксис Create table в MySQL и создание таблиц
Поскольку наш путь в базы данных только начинается, стоит вспомнить основы. Реляционные базы данных хранят данные в таблицах, и каждая таблица содержит набор столбцов. У столбца есть название и тип данных. Команда создания таблицы должна содержать все вышеупомянутое:
CREATE TABLE table_name ( column_name_1 column_type_1, column_name_2 column_type_2, . column_name_N column_type_N, );table_name — имя таблицы;
column_name — имя столбца;
column_type — тип данных столбца.
Теперь разберем процесс создания таблицы детально.
Названия таблиц и столбцов
Таблицы и столбцы стоит называть осмысленно и прозрачно, чтобы было понятно, как другому разработчику, так и вам самим спустя полгода. Даже если это учебная база только для вашего пользования, рекомендуем сразу привыкать делать правильно.
Имена могут содержать символы подчеркивания для большей наглядности. Классический пример непонятных названий — table1, table2 и т. п. Использование транслита, неясных сокращений и, разумеется, наличие орфографических ошибок тоже не приветствуется. Хороший пример коротких информативных названий: Customers, Users, Orders, так как по названию таблицы должно быть очевидно, какие данные таблица будет содержать. Эта же логика применима и к названию столбцов.
Максимальная длина названия и для таблицы, и для столбцов — 64 символа.
Типы данных столбцов
Для каждого столбца таблицы будет определен тип данных. Неправильное использование типов данных увеличивает как объем занимаемой памяти, так и время выполнения запросов к таблице. Это может быть незаметно на таблицах в несколько строк, но очень существенно, если количество строк будет измеряться десятками и сотнями тысяч, и это далеко не предел для рабочей базы данных. Проведем краткий обзор наиболее часто используемых типов.
Числовые типы
- INT — целочисленные значения от −2147483648 до 2147483647, 4 байта.
- DECIMAL — хранит числа с заданной точностью. Использует два параметра — максимальное количество цифр всего числа (precision) и количество цифр дробной части (scale). Рекомендуемый тип данных для работы с валютами и координатами. Можно использовать синонимы NUMERIC, DEC, FIXED.
- TINYINT — целые числа от −127 до 128, занимает 1 байт хранимой памяти.
- BOOL — 0 или 1. Однозначный ответ на однозначный вопрос — false или true. Название столбцов типа boolean часто начинается с is, has, can, allow. По факту это даже не отдельный тип данных, а псевдоним для типа TINYINT (1). Тип настолько востребован на практике, что для него в MySQL создали встроенные константы FALSE (0) или TRUE (1). Можно использовать синоним BOOLEAN.
- FLOAT — дробные числа с плавающей запятой (точкой).
Символьные
- VARCHAR(N) — N определяет максимально возможную длину строки. Создан для хранения текстовых данных переменной длины, поэтому память хранения зависит от длины строки. Наиболее часто используемый тип строковых данных.
- CHAR(N) — как и с varchar, N указывает максимальную длину строки. Char создан хранить данные строго фиксированной длины, и каждая запись будет занимать ровно столько памяти, сколько требуется для хранения строки длиной N.
- TEXT — подходит для хранения большого объема текста до 65 KB, например, целой статьи.
Дата и время
- DATE — только дата. Диапазон от 1000-01-01 по 9999-12-31. Подходит для хранения дат рождения, исторических дат, начиная с 11 века. Память хранения — 3 байта.
- TIME — только время — часы, минуты, секунды — «hh:mm:ss». Память хранения — 3 байта.
- DATETIME — соединяет оба предыдущих типа — дату и время. Использует 8 байтов памяти.
- TIMESTAMP — хранит дату и время начиная с 1970 года. Подходит для большинства бизнес-задач. Потребляет 4 байта памяти, что в два раза меньше, чем DATETIME, поскольку использует более скромный диапазон дат.
Бинарные
Используются для хранения файлов, фото, документов, аудио и видеоконтента. Все это хранится в бинарном виде.
Подробный разбор типов данных, включая более специализированные типы, например, ENUM, SET или BIGINT UNSIGNED, будет в отдельной тематической статье.
Практика с примерами
Для лучшего понимания приведем пример, создав простую таблицу для хранения данных сотрудников, где
- id — уникальный номер,
- name — ФИО,
- position — должность
- birthday — дата рождения
Синтаксис create table с основными параметрами:
CREATE TABLE Staff ( id INT, name VARCHAR(255) NOT NULL, position VARCHAR(30), birthday Date );Тут могут появиться вопросы. Откуда MySQL знает, что номер уникален? Если еще нет должности для этого сотрудника, что будет, если оставить поле пустым?
Все это (как и многое другое) придется указать с помощью дополнительных параметров — атрибутов.Часто таблицы создаются и заполняются скриптами. Если мы вызовем команду CREATE TABLE Staff, а таблица Staff уже есть в базе, команда выдаст ошибку. Поэтому перед созданием разумно проверить, содержит ли уже база таблицу Staff. Достаточно добавить IF NOT EXISTS, чтобы выполнить эту проверку в MySQL, то есть вместо
CREATE TABLE StaffCREATE TABLE IF NOT EXISTS StaffПовторный запуск команды выведет предупреждение:
1050 Table 'Staff' already existsЕсли таблица уже создана и нужно создать таблицу с тем же именем с «чистого листа», старую таблицу можно удалить командой:
DROP TABLE table_name;Облачные базы данных
Готовые к работе кластеры баз данных в облаке с развертыванием в несколько кликов.
Атрибуты (ATTRIBUTES) и ограничения (CONSTRAINTS)
PRIMARY KEY
Предназначение индексов — обеспечить быстрый доступ к табличным данным. Основная идея — существенное ускорение поиска. Создание первичного ключа, внешних ключей, определение уникальных значений в столбце — во всех этих случаях будут созданы индексы. Существуют определенные ограничения на построения индексов в зависимости от типов данных, но разбор этих нюансов будет в других статьях.
Пользы индексов на примерах: для поиска уникального значения среди 10000 строк придется проверить, в худшем случае, все 10000 без индекса, с индексом — всего 14. Поиск по миллиону записей займет не больше в 20 проверок — это реализация идеи бинарного поиска.
Создадим таблицу Staff с номером сотрудника в качестве первичного ключа. Первичный ключ гарантирует нам, что номер точно будет уникальным, а поиск по нему — быстрым.
CREATE TABLE Staff ( id INT PRIMARY KEY, name VARCHAR(255), position VARCHAR(30), birthday Date, has_children BOOLEAN );NOT NULL
При заполнении таблицы мы утверждаем, что значение этого столбца должно быть установлено. Если нет явного указания NOT NULL, и этот столбец не PRIMARY KEY, то столбец позволяет хранить NULL, то есть хранение NULL — поведение по умолчанию. Для первичного ключа это ограничение можно не указывать, так как первичный ключ всегда гарантирует NOT NULL.
Изменим команду CREATE TABLE, добавив NOT NULL ограничения: таким образом, мы обозначим обязательные для заполнения столбцы (т.е. столбцы, поля в которых не могут оставаться пустыми при наличии записи в таблице):
CREATE TABLE Staff ( id INT PRIMARY KEY, name VARCHAR(255) NOT NULL, position VARCHAR(30), birthday DATE NOT NULL, has_children BOOLEAN NOT NULL );DEFAULT
Можно указать значение по умолчанию, т.е. текст или число, которые будут сохранены, если не указано другое значение. Применяется не ко всем типам: BLOB, TEXT, GEOMETRY и JSON не поддерживают это ограничение.
Эта величина должна быть константой, функция или выражение не допустимы.Продолжим изменять команду, установив ограничение DEFAULT для поля BOOLEAN.
CREATE TABLE Staff ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, position VARCHAR(30), birthday DATE NOT NULL, has_children BOOLEAN DEFAULT(FALSE) NOT NULL );Для типа данных BOOLEAN можно использовать встроенные константы FALSE и TRUE. Вместо DEFAULT(FALSE) можно указать DEFAULT(0) — эти записи эквивалентны.
AUTO_INCREMENT
Каждый раз, когда в таблицу будет добавлена запись, значение этого столбца автоматически увеличится. На всю таблицу этот атрибут применим только к одному столбцу, причем этот столбец должен быть ключом. Рекомендуется использовать для целочисленных значений. Нельзя сочетать с DEFAULT.
CREATE TABLE Staff ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, position VARCHAR(30), birthday DATE NOT NULL, has_children BOOLEAN DEFAULT(FALSE) NOT NULL );Теперь номер сотрудника будет автоматически последовательно увеличиваться при каждой новой записи в таблицу.
Интересно, что при CREATE TABLE MySQL не позволяет установить стартовое значение для AUTO_INCREMENT. Можно назначить стартовое значение для счетчика AUTO_INCREMENT уже созданной таблицы.
ALTER TABLE Staff AUTO_INCREMENT=10001;Первая запись после такой модификации получит >
UNIQUE
Это ограничение устанавливает, что все значения данного столбца будут уникальны в пределах таблицы, и создает индекс. Можно применять к столбцам с поддержкой NULL, но так как NULL будет считаться уникальным значением, возможна только одна NULL-запись.
CREATE TABLE Staff ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, position VARCHAR(30), birthday DATE NOT NULL, has_child BOOLEAN DEFAULT(0) NOT NULL, phone VARCHAR(20) UNIQUE NOT NULL );CHECK
Позволяет установить дополнительную проверку данных для столбца или набора столбцов. Это тоже CONSTRAINT, так как накладывает ограничение.
На примере ограничим дату рождения сотрудника.Синтаксис позволяет устанавливать CHECK как в описании столбца при CREATE TABLE:
birthday DATE NOT NULL CHECK (birthday > ‘1900-01-01’),так отдельно от описания столбцов:
CHECK (birthday > ‘1900-01-01’),В этих случаях название проверки будет определено автоматически. При вставке данных, не прошедших проверку, будет сообщение об ошибке Check constraint ‘staff_chk_1’ is violated. Ситуация усложняется, когда установлено несколько CHECK, поэтому рекомендуется давать понятное имя.
Воспользуемся полной командой для создания CHECK и определим не только ограничение даты рождения, но и допустимые форматы телефона через регулярное выражение.
CREATE TABLE Staff ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, position VARCHAR(30), birthday DATE NOT NULL, has_child BOOLEAN DEFAULT(0) NOT NULL, phone VARCHAR(20) UNIQUE NOT NULL, CONSTRAINT staff_chk_birthday CHECK (birthday > '1900-01-01'), CONSTRAINT staff_chk_phone CHECK (phone REGEXP '[+]?[0-9] ?\\(?[0-9]\\)? ?[0-9][0-9 -]+[0-9]') );Для добавления ограничений используем оператор CONSTRAINT, при этом, все названия уникальны, как и имена таблиц. Учитывая, что по умолчанию названия включают в себя и имя таблицы, рекомендуем придерживаться этого правила. Если используется CONSTRAINT, мы обязаны дать имя ограничению, которое вводим.
FOREIGN KEY или внешний ключ
Внешний ключ — это ссылка на столбец или группу столбцов другой таблицы. Это тоже ограничение (CONSTRAINT), так как мы сможем использовать только значения, для которых есть соответствие по внешнему ключу. Таблицу с внешним ключом называют зависимой.
FOREIGN KEY (column_name1, column_name2) REFERENCES external_table_name(external_column_name1, external_column_name2)Сначала указывается выражение FOREIGN KEY и набор столбцов таблицы, откуда строим FOREIGN KEY. Затем ключевое слово REFERENCES указывает на имя внешней таблицы и набор столбцов этой внешней таблицы. В конце можно добавить операторы ON DELETE и ON UPDATE, с помощью которых настраивается поведение при удалении или обновлении данных в главной таблице. Это делать не обязательно, так как предусмотрено поведение по умолчанию. Поведение по умолчанию запрещает удалять или изменять записи из внешней таблицы, если на эти записи есть ссылки по внешнему ключу.
Возможные опции для ON DELETE и ON UPDATE:
CASCADE: автоматическое удаление/изменение строк зависимой таблицы при удалении/изменении связанных строк главной таблицы.
SET NULL: при удалении/изменении связанных строк главной таблицы будет установлено значение NULL в строках зависимой таблицы. Столбец зависимой таблицы должен поддерживать установку NULL, т.е. параметр NOT NULL в этом случае устанавливать нельзя.
RESTRICT: не даёт удалить/изменить строку главной таблицы при наличии связанных строк в зависимой таблице. Если не указана иная опция, по умолчанию будет использовано NO ACTION, что, по сути, то же самое, что и RESTRICT.Рассмотрим пример:
Для таблицы Staff было определено текстовое поле position для хранения должности.
Так как список сотрудников в компании обычно больше, чем список занимаемых должностей, есть смысл создать справочник должностей.CREATE TABLE Positions ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL );Поскольку из Staff мы будем ссылаться на Positions, таблица персонала Staff будет зависимой от Positions. Изменим синтаксис CREATE TABLE для таблицы Staff, чтобы должность была ссылкой на запись в таблице Positions.
CREATE TABLE Staff ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, position_id int, birthday DATE NOT NULL, has_child BOOLEAN DEFAULT(0) NOT NULL, phone VARCHAR(20) UNIQUE NOT NULL, FOREIGN KEY (position_id) REFERENCES Positions (id) );При CREATE TABLE, чтобы не усложнять описание столбца, рекомендуется указывать внешний ключ и все его атрибуты после перечисления создаваемых столбцов.
Можно ли добавить внешний ключ, если таблица уже создана и в ней есть данные? Можно! Для внесения изменений в таблицу используем ALTER TABLE.ALTER TABLE Staff ADD FOREIGN KEY (position_id) REFERENCES Positions(id);Или в развернутой форме, определяя имя ключа fk_position_id явным образом:
ALTER TABLE Staff ADD CONSTRAINT fk_position_id FOREIGN KEY (position_id) REFERENCES Positions(id);Главное условие в этом случае — согласованность данных. Это значит, что для всех записей внешнего ключа position_id должно найтись соответствие в целевой таблице Positions по столбцу id.
Создание таблиц на основе уже существующих, временные таблицы
Мы рассмотрели создание таблицы с «чистого листа», но есть два других способа:
LIKE
Создание таблицы на основе уже существующей таблицы. Копирует структуру — количество, названия и типы столбцов, индексы, все ограничения, кроме внешних ключей. Как мы помним, внешний ключ создает индекс. При создании через LIKE индексы в новой таблице будут построены также, как и в старой, но внешние ключи не скопируются. Таблица будет создана без записей и без счетчиков AUTO_INCREMENT.
CREATE TABLE new_table LIKE source_table;SELECT
Можно создать таблицу на основе SELECT-запроса — результат этой выборки будет записан в новую таблицу. Такая таблица не будет иметь индексов, ограничений и ключей. Все столбцы, с учетом порядка, типов данных и названий, будут взяты из запроса — поля из SELECT станут столбцами новой таблицы. При этом можно переопределить изначальные названия полей, что особенно актуально, когда в выборку попадают столбцы с одинаковыми названиями (на уровне таблицы названия столбцов всегда уникальны).
CREATE TABLE new_table [AS] SELECT * FROM source_table;Разберем пример создания новой таблицы через SELECT, используя две таблицы в выборке — Staff и Positions. В запросе определим три поля: id, staff, position — это будут столбцы новой таблицы StaffData211015 (срез сотрудников на определённую дату). Без присвоения псевдонимов (name as staff, name as position) в выборке получилось бы два одинаковых поля name, что не позволило бы создать таблицу из-за duplicate column name ошибки.
CREATE TABLE StaffData211015 SELECT s.Id, s.name as staff, p.name as position FROM Staff s JOIN Positions p ON s.position_id = p.idTEMPORARY
При подготовке отчетов или обработке данных на стороне базы, нередко может потребоваться сохранять промежуточные результаты в отдельные таблицы.
После завершения всех вычислений внутри скрипта эти вспомогательные таблицы нам будут уже не нужны. В таких ситуациях удобно использовать временные таблицы, которые будут существовать до завершения работы скрипта.Чтобы обозначить таблицу как временную, нужно добавить TEMPORARY в CREATE TABLE:
CREATE TEMPORARY TABLE table_name;Работа с уже созданной таблицей
Когда таблица создана, работа с ней только начинается. Операторы и команды для работы с данными рассмотрены в другой статье, а сейчас посмотрим, что же можно исправить, если потребовалось внести изменения.
Переименование
Ключевая команда — RENAME.
- Изменить имя таблицы:
RENAME TABLE old_table_name TO new_table_name;- Изменить название столбца:
ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name;Удаление данных
- DELETE FROM Staff; — удалит все записи из таблицы. Условие в WHERE позволит удалить только определенные строки, в примере ниже удалим только одну строку с DELETE FROM Staff WHERE TABLE Staff; — используется для полной очистки всей таблицы. При TRUNCATE счетчики AUTO_INCREMENT сбросятся. Если бы мы удалили все в строки командой DELETE, то новые строки учитывали бы накопленный за время жизни таблицы AUTO_INCREMENT.
- DROP TABLE Staff; — команда удаления таблицы.
Изменение структуры таблицы
Команда ALTER TABLE включает в себя множество опций, рассмотрим основные вместе с примерами на таблице Staff.
Добавление столбцов
Добавим три столбца: электронную почту, возраст и наличие автомобиля. Так как в таблице уже есть записи, мы не можем пока что отметить эти поля как NOT NULL, по умолчанию они будут позволять хранить NULL.
ALTER TABLE Staff ADD email VARCHAR(50), ADD age INT, ADD has_auto BOOLEAN;Удаление столбцов
Удалим столбец с возрастом, так как сейчас возраст сотрудников в базе всегда статичен, а должен быть вычисляемым полем в зависимости от текущей даты.
ALTER TABLE Staff DROP COLUMN age;Значение по умолчанию
Выставим значение по умолчанию для столбца has_auto:
ALTER TABLE Staff ALTER COLUMN has_auto SET DEFAULT(FALSE);Изменение типа данных столбца
Для столбца name изменим тип данных:
ALTER TABLE Staff MODIFY COLUMN name VARCHAR(500) NOT NULL;Максимальная длина поля была увеличена. Если не указать NOT NULL явно, то поле станет NULL по умолчанию.
Установка CHECK
Добавим ограничение формата для email через регулярное выражение:
ALTER TABLE Staff ADD CONSTRAINT staff_chk_email CHECK (email REGEXP '^[^@]+@[^@]+\\.[^@]$');Заключение
Любой путь начинается с первых шагов. В работе с базами данных этими шагами является создание структуры таблиц. Продуманная композиция сущностей (таблиц) и связей между ними — основа проектирования любого вашего приложения от интернет-магазинов до мощных систем управления предприятиями.
5 Создание таблиц
· с помощью Мастера создания таблиц (by using wizard).
5 .1 Создание таблицы путем ввода данных
Если для пользователя сложно сразу определить структуру таблицы, Microsoft Access позволяет создать таблицу путем ввода данных в окно с традиционной табличной формой (рис. 5.1).
Рисунок 5.1 — Создание таблицы путем ввода данных
Для этого необходимо:
1) Открыть окно новой или существующей базы данных и в нем открыть список таблиц.
2) Выделить в списке таблиц ярлык Создание таблицы путем ввода данных (Create table by entering data) и дважды щелкнуть по нему левой кнопкой мыши. Появится пустая таблица со стандартными названиями столбцов: Поле1 (Field 1), Поле2 (Field2) и т. д. По умолчанию для создания таблицы предоставляется десять полей.
3) В поля этой таблицы нужно ввести требуемые данные. Тип данных в одном поле (столбце) во всех записях должен быть одинаковым.
4) Можно ввести свои собственные заголовки столбцов, для чего щелкнуть правой кнопкой мыши по заголовку столбца и выбрать из контекстного меню команду Переименовать столбец (Rename Column). После этого стандартное название столбца подсвечивается, и можно вводить свое название.
5) По окончании ввода данных нажать кнопку Закрыть (в верхнем правом углу окна таблицы).
6) В ответ на вопрос Сохранить изменения макета или структуры таблицы ? (Do you want to save changes to the design of table < имя таблицы >?) нажать кнопку Да (Yes).
7) В окне Сохранение (Save As) в поле Имя таблицы (Table Name) ввести имя новой таблицы и нажать кнопку ОК (рис. 5.2).
Рисунок 5.2 — Диалоговое окно Сохранение
Microsoft Access выдаст сообщение Ключевые поля не заданы (There is no primary key defined) и вопрос Создать ключевое поле сейчас? (Do you want to create a primary key now?). Нажать кнопку Нет (No), если одно или несколько полей в таблице могут однозначно идентифицировать записи в таблице и служить первичным ключом, или кнопку Да (Yes), и тогда Access создаст дополнительное поле, которое сделает ключевым.
5 .2 Создание таблиц с помощью Мастера таблиц
Для этого необходимо:
1) Дважды щелкнуть левой кнопкой мыши на ярлыке Создание таблицы с помощью мастера (Create table by using wizard).
2) В диалоговом окне Создание таблиц (Table Wizard) (рис. 5.3) выбрать назначение таблицы: Деловые (Business) (для иных целей можно выбрать и Личные (Personal)).
3) В поле Образцы таблиц (Sample Tables) выбрать подходящую таблицу — Список рассылки (MailingList).
4) Переместить нужные поля из списка Образцы полей (Sample Fields) в список Поля новой таблицы (Fields in my new table). Для этого следует воспользоваться кнопками со стрелками: > — переместить одно поле, » — переместить все поля.
Рисунок 5.3 — Диалоговое окно Мастера таблиц
5. Повторять описанные в пп. 3—4 действия до тех пор, пока не будет создан подходящий перечень полей для новой таблицы.
6. При необходимости переименовать какое-либо поле, нужно выделить его в списке Поля новой таблицы (Fields in my new table) и нажать кнопку Переименовать поле (Rename Field), затем ввести в диалоговом окне Переименование поля (Rename Field) новое имя поля и нажать кнопку ОК (рис. 5.4). Нажать кнопку Далее (Next).
Рисунок 5.4 — Диалоговое окно Переименование поля
7. В следующем диалоговом окне в поле Необходимо задать имя для новой таблицы (What do you want to name your table?) ввести имя новой таблицы «Список рассылки оповещений» (рис. 5.5).
Рисунок 5.5 — Второе диалоговое окно Мастера таблиц
8. Выбрать способ определения ключа Microsoft Access автоматически определяет ключ (Yes, set a primary key for me) (имеется альтернатива Пользователь определяет ключ самостоятельно (No, I’ll set the primary key)). Тогда в таблицу будет добавлено поле автоматической нумерации. Нажать кнопку Далее (Next).
Если было выбрано самостоятельное определение ключа, в поле со списком Необходимо выбрать поле с уникальными для каждой записи данными (What field will hold data that is unique for each record?) необходимо выбрать имя поля, которое станет ключевым. Затем нужно определить тип данных, которые будут содержаться в ключевом поле.
9. В следующем окне Мастер таблиц предлагает установить связи между существующими таблицами и создаваемой таблицей (рис. 5.6). Он пытается сам создать связи между таблицами и предоставляет информацию о создаваемых связях пользователю в виде списка. При необходимости исправить связи нужно выбрать соответствующую строку списка и нажать кнопку Связи (Relationship).
Рисунок 5.6 — Третье диалоговое окно Мастера таблиц
Рисунок 5.7 — Диалоговое окно Связи
Рисунок 5.8 — Четвертое окно Мастера таблиц
10. В окне Связи (Relationships) нужно выбрать тип связи с данной таблицей (рис. 5.7).
11. В диалоговом окне Мастера таблиц (см. рис.5.6) нажать кнопку Далее (Next).
12. В последнем диалоговом окне, пользователю необходимо выбрать, что он будет делать с таблицей дальше(Изменить структуру таблицы) и нажать кнопку Готово( Finish ) (рис.5.8).
5 .3 Создание таблицы с помощью Конструктора таблиц
В режиме Конструктора таблицы создаются путем задания имен полей, их типов и свойств. Чтобы создать таблицу в режиме Конструктора, необходимо:
1. Дважды щелкнуть левой кнопкой мыши на ярлыке Создание таблицы с помощью конструктора (Create table in Design View) или нажать на кнопку Создать (New) в верхней части окна базы данных, выбрать из списка в окне Новая таблица (New Table) элемент Конструктор (Design View) (рис. 5.9).
Рисунок 5.9 — Окно новой таблицы в режиме Конструктора
2. В окне Конструктора таблиц в столбец Имя поля (Field Name) ввести имена полей создаваемой таблицы.
3. В столбце Тип данных (Data Type) для каждого поля таблицы выбрать из раскрывающегося списка тип данных, которые будут содержаться в этом поле.
4. В столбце Описание (Description) можно ввести описание данного поля (не обязательно).
5. В нижней части окна Конструктора таблиц на вкладках Общие (General) и Подстановка (Lookup) ввести свойства каждого поля или оставить значения свойств, установленные по умолчанию.
6. После описания всех полей будущей таблицы нажать кнопку Закрыть (в верхнем правом углу окна таблицы).
7. На вопрос Сохранить изменения макета или структуры таблицы ? (Do you want to save changes to the design of table < имя таблицы >?), нажать кнопку Да (Yes).
8. В окне Сохранить как (Save As) в поле Имя таблицы (Table Name) ввести имя создаваемой таблицы и нажать кнопку ОК.
9. В ответ на. сообщение Ключевые поля не заданы (There is no primary key defined) и вопрос Создать ключевое поле сейчас? (Do you want to create a primary key now?) нажмите кнопку Да (Yes) если ключевое поле необходимо, или кнопку Нет (No) если такого не требуется.
Печать таблицы
Самым простым способом вывода таблицы на печать является использование кнопки Печать (Print) на панели инструментов База данных (Database). Чтобы вывести таблицу на печать таким способом, необходимо:
1. Выделить таблицу в окне базы данных.
2. Нажать кнопку Печать (Print) на панели инструментов База данных (Database).
При этом производится печать всей таблицы. Для вывода всей таблицы можно также щелкнуть правой кнопкой мыши на значке таблицы в окне базы данных и из контекстного меню выбрать команду Печать (Print).