Популярные услуги

Все письменные КМ под ключ за 7 суток! (КМ-1 + КМ-2 + КМ-3 + КМ-4 + КМ-5)
КМ-6. Динамические массивы. Семинар - выполню любой вариант!
КМ-2. Разработка простейших консольных программ с использованием ООП + КМ-4. Более сложные элементы ООП - под ключ!
Оба семинара по программированию под ключ! КМ-2. Разработка циклических алгоритмов + КМ-3. Функции и многофайловые программы в Си
Одно любое задание в mYsql
Любая задача на C/C++
Сделаю ваше задание: Лабораторная работа на Pascal / Lazarus
Любой тест по базам данных максимально быстро на хорошую оценку - или верну деньги!
Любой реферат по объектно-ориентированному программированию (ООП)
Повышение уникальности твоей работе

Операторы определения данных

2021-03-09СтудИзба

Лекция 20. Операторы определения данных

Определение таблиц

Для создания и модификации объектов в языке SQL определена группа операторов DDL (Data Definition Language – язык описания данных). В группе DDL определены операторы для создания, удаления и изменения таблиц, представлений и индексов. Рассмотрим операторы для работы с таблицами.

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

CREATE TABLE  имя таблицы (

Поле_1:          тип_данных        ограничения,

Поле_2:          тип_данных        ограничения)

Главное в команде создания таблицы – определение имени таблицы и описание набора имен полей, которые указываются в соответствующем порядке. Кроме того, этой командой оговариваются типы данных и размеры полей таблицы.

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

Рекомендуемые материалы

CREATE TABLE  TOVAR

(ID INT NOT NULL  PRIMARY KEY,

Name          VARCHAR(50) NOT NULL,

Price MONEY NOT NULL,

Type  VARCHAR(25) NOT NULL,

Sort   VARCHAR(50),

City   VARCHAR(50))

Ключевое слово NULL используется для указания того, что в данном столбце могут содержаться пустые значения NULL. Значение NULL отличается от пробела или нуля – к нему прибегают, когда необходимо указать, что данные неизвестны. Если указано ключевое слово NOT NULL, то будут отклонены любые попытки пропустить ввод данных в данное поле. По умолчанию стандарт SQL предполагает наличие ключевого слова NULL.

PRIMARY KEY – определяет поле первичного ключа, в некоторых реализациях СУБД может использоваться другой способ определения первичного ключа:

CREATE TABLE  TOVAR

(ID INT NOT,

. . .

    City   VARCHAR(50),

PRIMARY KEY (ID));

Подобным образом можно определить сложный первичный ключ:

PRIMARY KEY (поле_1, …, поле_n)

Структура существующей таблицы может быть модифицирована, для модификации таблицы используется команда ALTER TABLE, которая позволяет: добавлять и удалять поля, переопределять первичные и внешние ключи и переопределять ограничения. Объявление начинается с команды ALTER  TABLE  Имя_таблицы, а далее следует объявление модификации. Внутри команды может быть только одна модификация. Возможные модификации:

ALTER COLUMN  Имя_поля  SET  DEFAULT  Выражение

ALTER COLUMN  Имя_поля  DROP  DEFAULT

ADD Имя_поля

DROP  COLUMN  Имя_поля

ADD CONSTRAINT Имя_ограничения

DROP CONSTRAINT  Имя_ограничения

Например, добавим к таблице товар новое поле – единица (Unit):

ALTER  TABLE  TOVAR

ADD  Unit VARCHAR(10)  NOT NULL

Если таблица не пуста, то добавляемый столбец не может быть определен с атрибутом NOT NULL. Этот атрибут означает, что для каждой строки данных соответствующий столбец должен содержать некоторое значение, поэтому добавление столбца с атрибутом NOT NULL приводит к появлению противоречия – уже существующие строки данных таблицы не будут иметь в новом столбце ненулевых значений.

Придется добавить в таблицу новое, необязательное (NULL) поле и заполнить это поле какими-либо значениями для каждой записи и только после этого сделать поле обязательным для заполнения, т.е. установив атрибут NOT NULL.

Изменение поля (в частности, типа данных) может быть выполнено следующим образом:

ALTER  TABLE  TOVAR

ALTER COLUMN  City CHAR(30)  NOT NULL

Добавить внешний ключ (ключ связи) можно следующим способом:

ALTER  TABLE  TOVAR

    ADD CONSTRAINT  FK_Сategory

    FOREIGN KEY (ID_Сategory)

REFERENCES Сategory

Удаление таблицы осуществляется командой DROP TABLE, при этом используется простой и понятный синтаксис:

DROP TABLE   TOVAR

Оператор DROP TABLE дополнительно позволяет указывать, следует ли операцию удаления выполнять каскадом. Если в операторе указано ключевое слово RESTRICT, то при наличии в базе данных хотя бы одного объекта, существование которого зависит от удаляемой таблицы, выполнение оператора DROP TABLE будет отменено. Если указано ключевое слово CASCADE, автоматически удаляются и все прочие объекты базы данных, чье существование зависит от удаляемой таблицы, а также другие объекты, зависящие от удаляемых объектов. Общий эффект от выполнения оператора DROP TABLE с ключевым словом CASCADE может оказаться весьма ощутимым, поэтому подобные операторы следует использовать с максимальной осторожностью.

Определение индексов

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

Физически индекс – это упорядоченный набор значений из индексированного столбца с указателями на места физического размещения исходных строк в структуре базы данных. Когда пользователь выполняет обращающийся к индексированному столбцу запрос, СУБД автоматически анализирует индекс для поиска требуемых значений.

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

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

CREATE [ UNIQUE ] INDEX имя_индекса

  ON имя_таблицы (имя_столбца[ASC|DESC][,...n])

Указанные в операторе столбцы составляют ключ индекса. Индексы могут создаваться только для базовых таблиц, но не для представлений. Если в операторе указано ключевое слово UNIQUE, уникальность значений ключа индекса будет автоматически поддерживаться системой. Требование уникальности значений обязательно для первичных ключей, а также возможно и для других столбцов таблицы (например, для альтернативных ключей). Хотя создание индекса допускается в любой момент, при его построении для уже заполненной данными таблицы могут возникнуть проблемы, связанные с дублированием данных в различных строках. Следовательно, уникальные индексы (по крайней мере, для первичного ключа) имеет смысл создавать непосредственно при формировании таблицы. В результате система сразу возьмет на себя контроль за уникальностью значений данных в соответствующих столбцах. Пример создания индекса для поля «Название товара»:

CREATE INDEX      New_index

  ON      TOVAR (Name)

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

DROP INDEX          New_index

Контрольные вопросы

1. Какие операторы определения данных вы знаете?

2. Какой синтаксис имеет оператор создания таблицы?

3. Что такое NOT NULL и NULL?

4. Какие проблемы могут быть при добавлении в таблицу поля с ограничением NOT NULL?

5. Как изменить имя поля таблицы?

6. Как удалить таблицу БД?

Информация в лекции "1.2 Организация управления процессом" поможет Вам.

7. Что такое индекс и в чем его назначение?

8. Как объявить индекс?

9. Как удалить индекс?

Задания для самостоятельной работы

Напишите запросы на создание таблиц и связей для БД «Библиотека»

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5120
Авторов
на СтудИзбе
444
Средний доход
с одного платного файла
Обучение Подробнее