Структура языка SQL
Сущность и виды баз данных, основными функциями которых являются систематизация информации и вероятность взаимосвязи объектов между собой. Типы данных и идентификаторы языка SQL. Скалярные типы. Поддержка целостности данных. Ограничения для доменов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 08.11.2011 |
Размер файла | 41,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Курсовая работа по дисциплине - Базы данных
Тема - Структура языка SQL
Бочаров Алексей Валерьевич
Содержание
Введение
1. Типы данных языка SQL
2. Средства поддержки целостности данных
3. Определение данных
Заключение
Глоссарий
Список использованных источников
Введение
В настоящее время объемы информации все время растут. Более комфортным методом хранения информации, на основе опыта нескольких десятилетий, был признан способ хранения информации в виде баз данных.
База данных - это, прежде всего, хранилище объектов данных, т.е. набора возможных понятий или событий, описываемых базой данных (БД), совместно с этим основными функциями БД являются систематизация информации и вероятность взаимосвязи объектов между собой.
В нашем все более и более корреляционном компьютерном мире, пользователь снабженный таким языком, имеет гигантское преимущество в использовании и обобщении информации из ряда источников с помощью большого количества способов.
Стандарт SQL определяется ANSI (Американским Национальным Институтом Стандартов) и в данное время также принимается ISO (Международной организацией по стандартизации). Но,большая часть коммерческих программ баз данных расширяют SQL без уведомления ANSI, добавляя разные другие особенности в этот язык, которые, как они считают, будут весьма полезны.
Иногда они несколько нарушают стандарт языка, хотя хорошие идеи имеют тенденцию развиваться и вскоре становиться стандартами "рынка" сами по себе в силу полезности своих качеств.
Любую структуру данных можно преобразовать в простую двумерную таблицу. Главная идея реляционного подхода состоит в том, чтобы представить произвольную структуру данных в типе простой двумерной таблицы или, как говорят, нормализовать структуру. И как последствие появилась необходимость использования универсального языка для доступа и управления данными в разных базах данных. Таким языком стал SQL.Язык для взаимодействия с БД SQL возник в середине 70-х и был изобритен в рамках проекта экспериментальной реляционной СУБД System R. Исходное название языка SEQUEL (Structered English Query Language) лишь отчасти отражает суть этого языка. Естественно, язык был нацелен главным образом на удобную и понятную пользователям формулировку запросов к реляционной БД, но на самом деле уже являлся полным языком БД, содержащим кроме операторов формулирования запросов и манипулирования БД средства определения и манипулирования схемой БД. В языке отсутствовали средства синхронизации доступа к объектам БД со стороны параллельно выполняемых транзакций: с самого начала предполагалось, что подходящую синхронизацию неявно выполняет система управления базами данных СУБД.
Принципиально характерной чертой SQL является его самостоятельность от компьютерной среды (операционной системы и архитектуры). SQL является инвертарем, предназначенным для обработки и чтения информации, содержащейся в компьютерной базе данных.
При организации языка запросов нового поколения разработчики старались сделать его простым и понятным в освоении инструментом для обращения к БД. В итоге SQL стал слабо структурированным языком, особенно по сравнению с такими языками, как С или Pascal, и в то же время достаточно мощным и относительно легким для изучения [1, с.9].
Одним из наиболее основных шагов на пути к признанию SQL на рынке стало выхол в свет стандартов на данный язык. Традиционно при упоминании эталона SQL предпологают в виду официальный стандарт, утвержденный Американским институтом национальных стандартов (American National Standards Institute -- ANSI) и Международной организацией по стандартам (International Standards Organization-- ISO). Однако находятся и другие важные стандарты SQL, подключая SQL, реализованный в системе DB2 компании IBM, и стандарт X/OPEN для SQL в среде UNIX. Этот стандарт, незначительно пересмотренный в 1989 году, обыкновенно именуют стандартом «SQL-89», или «SQLI».
Язык SQL считается главным и покуда единственным стандартным языком работы с базами данных, который получил довольно обширное распространение. Есть еще один стереотипный язык работы с базами данных, NDL (Network Database Language), который построен на использовании сетевой модели CODASYL, но он применяется лишь в немногих разработках. Практически все крупнейшие разработчики СУБД в настоящее время создают свои продукты с использованием языка SQL либо интерфейса SQL, и большинство таких компаний участвуют в работе, по меньшей мере, одной организации, которая занимается разработкой стандартов этого языка. В SQL сделаны огромные инвестиции как со стороны разработчиков, так и со стороны пользователей. Он стал частью архитектуры приложений (например, такой как System Application Architecture (SAA) корпорации IBM), а также является стратегическим выбором многих крупных и влиятельных организаций (например, консорциума Х/Open, занятого разработкой стандартов для среды UNIX), Язык SQL также принят в качестве федерального стандарта обработки информации (Federal Information Processing Standard -- FIPS), который должен соблюдаться в СУБД для получения разрешения продавать ее на территории США. Консорциум разработчиков SQL Access Group прилагает усилия по созданию расширений языка SQL, которые позволят обеспечить взаимодействие разнородных систем. Язык SQL употребляется в других стандартах и даже оказывает воздействие на разработку почти всех стандартов как инструмент их определения. В качестве примера можно привести стандарты ISO "Information Resource Dictionary System" (IRDS) и "Remote Data Access" (RDA). Разработка языка вызвала определенную заинтересованность научных кругов, выразившуюся как в выработке необходимых теоретических основ, так и в подготовке успешно реализованных технических решений. Это в особенности верно в отношении оптимизации запросов, методов распределения данных и реализации средств защиты.
1. Типы данных языка SQL
Идентификаторы
Идентификаторы языка SQL предусмотрены для обозначения объектов в базе данных и являются именами таблиц, представлений и столбцов. Знаки, которые могут применяться в разрабатываемых пользователем идентификаторах языка SQL, должны быть определены как набор символов А.В.Фролов, Г.В.Фролов Базы данных в Интернете. Практическое руководство по созданию Web-приложений с базами данных.:2000. Стандарт ISO задает набор символов, который обязан использоваться сообразно умолчанию; он включает строчные и прописные буквы латинского алфавита (A-Z, a-z), цифры (0-9) и символ подчеркивания (_). Позволяет использование и альтернативного набора символов.
На формат идентификаторов употребляются следующие ограничения:
*может иметь длину до 128 символов (большая часть диалектов предусматривает более жесткие ограничения);
*должен начинаться с буквы;
*не может содержать пробелов.
Скалярные типы
В табл. 1(смотрите приложение Б) перечислены скалярные типы данных языка SQL, которые определены стандартом ISO. В неких вариантах в целях упрощения манипулирования и преоражения, а еще в следствии схожести главных свойств данные типов character и bit объединяются под названием "строковые типы данных", а данные типов exact numeric и approximate numeric -- под названием "числовые типы данных". В стандарте SQL3 определены еще огромные символьные и двоичные объекты.
Логические данные (тип boolean).
Логические данные состоят из различимых истинностных значений TRUE (настоящий) и FALSE (ложный). Логические данные поддерживают еще истинностное значение UNKNOWN (неопределенный), заданное как значение NULL, ежели использование неопределенных значений-не запрещено ограничением NOT NULL. Все значения данных логического типа и истинностные значения SQL могут совместно применяться в операторах сравнения и присваивания. Значение TRUE в арифметических операторах сравнения больше значения FALSE, а любое сравнение, в котором участвует значение NULL или истинностное значение UNKNOWN, отдает итог UNKNOWN.
Символьные данные (тип character). (См приложение А)
Символьные данные состоят из последовательностей символов, вступающих в единый создателями СУБД набор символов. Поскольку наборы символов являются специфическими для разных диалектов языка SQL, список символов, которые могут включаться в состав значений данных символьного типа, также зависит от конкретной реализации. В настоящее время чаще всего применяется наборы символов ASCII и EBCDIC. Для определения данных символьного типа применяется следующий формат:
CHARACTER [VARYING] [length]
CHARACTER (может. быть сокращено до СНАЕ.) и
CHARACTER VARYING (может быть- сокращено до VARCHAR)
При определении столбца с символьным типом данных параметр length используется для указания максимального количества символов, которые могут быть помещены в данный столбец (по умолчанию принимается значение 1).
Символьная строка может существовать идентифицирована как имеющая фиксированную либо переменную (VARYING) длину. Если строка определена с фиксированной длиной, то при вводе в нее наименьшего количества символов строковое значение дополняется до указанной длины пробелами, добавляемыми справа. Если строка определена с переменной длиной, то при вводе в нее меньшего количества знаков в базе данных будут сохранены только введенные символы, что позволяет достичь определенной экономии внешней памяти. Например, столбец branchNo таблицы Branch с обозначением номера отделения имеет фиксированную длину четыре символа и может быть объявлен следующим образом:
branchNo CHAR(4)
Столбец address таблицы PrivateOwner имеет переменную длину значения {максимум до 30 символов), поэтому он может быть объявлен следующим образом:
address VARCHAR(30)
Битовые данные (тип bit)
Битовый тип данных применяется для определения битовых строк, т.е. последовательности двоичных цифр (битов), любая из которых может иметь значение либо 0, либо 1. Для определения данных битового типа используется формат, сходный с определением символьных данных:
OBIT IVARYING] {length].
Например, для сохранения битовой строки с фиксированной длиной и значением ' ООН ' может быть объявлен столбец bitstring:
bitString BIT(4)
Точные числовые данные (тип exact numeric).
Тип точных числовых данных употребляеться для определения чисел, какие имеют точное представление в компьютере. Числа состоят из цифр и необязательных символов (десятичной точки, знака "плюс" или "минус"). Данные точного числового типа определяются значностью (precision) и длиной, дробной части (scale). Маркин А.В. Построение запросов и программирование на SQL.:2008 -c.15 Значность задает общее количество значащих десятичных цифр числа, в которое вступают длина целой и дробной частей, но без учета самой десятичной точки. Дробная часть указывает количество дробных десятичных разрядов числа. К примеру, точное число -12 .345 имеет значность, равную 5 цифрам, и дробную часть длиной 3. Особой разновидностью точных чисел являются целые числа. Есть некоторое количество способов определения данных точного числового типа:
NUMERIC [ precision - [, scale] ]
DECIMAL [ precision [, scale] ]
INTEGER
SMALLXNT
INTEGER . (может быть сокращено до INT) и DECIMAL (до DEC)
Типы NUMERIC и DECIMAL предназначены для хранения чисел в десятичном формате. По умолчанию длина дробной части равна нулю, а принимаемая по умолчанию значность зависит от реализации. Тип INTEGER используется для хранения больших положительных или отрицательных целых чисел. Тип SMALLINT используется для хранения небольших положительных или отрицательных целых чисел. При использовании этого типа данных расход внешней памяти существенно сокращается. Например, максимальное абсолютное значение числа, которое может сохраняться в столбцах с типом данных SMALLINT, чаще всего составляет 32 767. Для столбца rooms таблицы PropertyForRent, в котором сохраняются сведения о количестве комнат сдаваемого в аренду объекта, можно выбрать тип SMALLINT и объявить его следующим образом:
rooms SMALLINT Столбец salary таблицы Staff может быть объявлен следующим образом:
salary DECIMAL(7,2)
В этом случае максимальное значение заработной платы составит 99 999.99 фунтов стерлингов,
Округленные числовые данные (тип approximate numeric)
Тип округленных числовых данных используется для описания данных, которые нельзя точно представить в компьютере, например действительных чисел. Для представления округленных чисел или чисел с плавающей точкой используется экспоненциальная система обозначений, в которой число записывается с помощью мантиссы, умноженной на определенную степень десяти (порядок), на пример: 10ЕЗ, +5.2Е6, -0.2Е-4. Существует несколько способов определения данных с типом округленных числовых данных:
FLOAT [precision]
REAL
DOUBLE PRECISION
Параметр precision задает значность мантиссы. Значность определений типа REAL и DOUBLE PRECISION зависит от конкретной реализации.
Дата и время (тип datetime)
Тип данных "дата/время" используется для определения моментов времени с некоторой установленной точностью. Примерами являются даты, отметки времени и время суток. Стандарт ISO разделяет тип данных "дата/время" на подтипы YEAR (Год), MONTH (Месяц), DAY (День), HOUR (Час), MINUTE (Минута), SECOND (Секунда), TIMEZONE_HOUR (Зональный час) и TIMEZONE_MINUTE (Зональная минута). Два последних типа определяют час и минуты сдвига зонального времени по отношению к всеобщему скоординированному времени (прежнее название -- гринвичское время). Поддерживаются три типа полей даты/времени.
DATE
TIME [timePrecision] [WITH TIME 2ONS]
TIMESTAMP [timePrecision] [WITH TIME ZONE]
Тип данных DATE используется для хранения календарных дат, включающих поля YEAR, MONTH и DAY. Тип данных TIME используется для хранения отметок времени, включающих поля HOUR, MINUTE и SECOND. Тип данных TIMESTAMP служит для совместного хранения даты и времени. Параметр timePrecision задает количество дробных десятичных знаков, определяющих точность представления значений в поле SECOND. Если этот параметр опущен, по умолчанию его значение для столбцов типа TIME принимается равным нулю (т.е. сохраняется целое количество секунд), тогда как для полей типа TIMESTAMP он принимается равным 6 (т.е. отметки времени сохраняются с точностью до микросекунд). Наличие ключевого слова WITH TIME ZONE определяет использование полей TIMEZONE_HOUR и TIMEZONE_MINUTE. Например, столбец date таблицы Viewing, представляющий дату (день, месяц и год) осмотра клиентом сдаваемого в аренду объекта, может быть определен следующим образом:
viewDate DATE
Интервальный тип данных interval( смотрите приложения А)
Данные с интервальным типом используются для представления периодов времени. Любой интервальный тип данных состоит из набора полей: YEAR, MONTH, DAY, HOUR, MINUTE и SECOND. Существуют два класса данных с интервальным типом: интервалы год-месяц и интерналы сутки-время суток. В первом случае данные включают только два поля -- YEAR и/или MONTH. Данные второго типа могут состоять из произвольной последовательности полей DAY, HOUR, MINUTE, SECOND.
2. Средства поддержки целостности данных
база данный язык скалярный
В этой главе рассмотрим функции, предназначенными для поддержки целостности данных, которые предусмотрены стандартом языка SQL. Поддержка целостности данных включает средства задания ограничений, которые вводятся с целью защиты базы от нарушения согласованности сохраняемых в ней данных. В разделе 2 определено пять типов ограничений поддержки целостности:
* обязательные данные;
* ограничения для доменов;
* целостность сущностей;
* ссылочная целостность;
* требования конкретного предприятия.
Эти ограничения могут быть определены в операторах CREATE TABLE и ALTER TABLE.
Обязательные данные
Для некоторых столбцов требуется наличие в каждой строке таблицы конкретного и допустимого значение, отличного от неопределенного значения (или значения NULL). Значение NULL не следует путать с пустыми строковыми значениями или нулевыми числовыми значениями; оно служит для представления данных, которые в данный момент недоступны, отсутствуют или не определены. Например, каждый работник обязательно занимает ту или иную должность: менеджер, заместитель и т.п. Для задания ограничений подобного типа стандарт ISO предусматривает использование спецификатора NOT NULL, указываемого в операторах CREATE TABLE и ALTER TABLE. Если для столбца задан спецификатор NOT NULL, система отвергает любые попытки вставить в такой столбец пустое значение. А если при определении характеристик столбца задан спецификатор NULL, то система допускает размещение в этом столбце значений NULL. В соответствии со стандартом ISO по умолчанию применяется спецификатор NULL. Например, для указания того, что столбец position (Должность) в таблице Staff (Персонал) не может содержать пустых значений, следует определить его, как показано ниже. position VARCHAR(IO) NOT NULL
Ограничения для доменов
Каждый столбец имеет собственный домен, т.е. некоторый набор допустимых значений. Например, для определения пола работника достаточно всего двух значений, поэтому домен для столбца sex (Пол) таблицы Staff можно определить как набор из двух строк длиной в один символ со значением либо 'М', либо ' F ' . Стандарт ISO предусматривает два различных механизма определения доменов в операторах CREATE TABLE и ALTER TABLE. Первый состоит в использовании конструкции CHECK, позволяющей задать требуемые ограничения для столбца или таблицы в целом. Конструкция CHECK имеет следующий формат:
CHECK {searchCandition}
При определении ограничений для отдельного столбца в конструкции CHECK можно ссылаться только на определяемый столбец. Например, для указания того, что столбец sex может содержать лишь два допустимых значения ( ' М ' и 'F'), следует объявить его таким образом:
Sех CHAR NOT NULL CHECK {sex IN CM1 , ' F 1 } )
Однако стандарт ISO позволяет определять и более сложные домены, для чего предназначен второй механизм -- использование оператора CREATE DOMAIN, имеющего следующий формат:
CREATE DOMAIN domainWame [AS] datatype
[DEFAULT defaultOption]
[CHECK (searcftCoriditicn)]
Каждому создаваемому домену присваивается имя, задаваемое параметром domainName, тип данных, определяемый параметром dataType необязательное значение по умолчанию, устанавливаемое параметром defaulCOption, и необязательный набор допустимых значений, определяемый в конструкции CHECK. Следует отметить, что приведенный формат оператора CREATE DOMAIN является неполным, однако его достаточно для демонстрации основных возможностей. Таким образом, в условиях предыдущего примера мы могли бы определить домен для столбца sex с помощью следующего оператора:
CREATE DOMAIN SexType AS CHAR
DEFAULT 'M'
CHECK (VALUE IN { ' M ' , ' F ' ) ) ;
В результате обработки этого оператора в базе данных будет создан домен под именем SexType, состоящий из двух отдельных символов, имеющих значения "М1 и 'F'. Теперь столбец sex в таблице Staff можно будет описать, используя домен SexType вместо определителя типа данных CHAR:
sex SexType NOT NULL
Значение параметра searchCondicion может предусматривать обращение к справочной таблице. Например, можно создать домен BranchNumber (Номер отделения), который позволит вводить в соответствующие столбцы различных таблиц только те значения, которые уже существуют в столбце branchNo таблицы Branch. Для этой цели необходимо использовать следующий оператор:
CREATE DOMAIN BranchNumber AS VARCHAR(4)
CHECK (VALUE IN (SELECT branchNo PROM Branch));
Удаление доменов из базы данных выполняется с помощью оператора DROP DOMAIN, имеющего следующий формат:
DROP DOMAIN domainName [RESTRICT | CASCADE]
Целостность сущностей
Первичный ключ таблицы должен иметь уникальное непустое значение в каждой ее строке. Например, каждая строка таблицы PropertyForRent должна содержать уникальное значение номера объекта недвижимости, помещенное в столбец propertyNo; именно оно будет уникальным образом определять объект недвижимости, представленный этой строкой таблицы. Стандарт ISO позволяет задавать подобные требования поддержки целостности данных с помощью конструкции PRIMARY KEY в операторах CREATE TABLE и ALTER TABLE Маркин А.В. Построение запросов и программирование на SQL.:2008 -c.15. Например, для определения первичного ключа таблицы PropertyForRent можно использовать следующую конструкцию:
PRIMARY KEY(staffNo)
В случае составного первичного ключа, например, первичного ключа таблицы Viewing, состоящего из двух столбцов под именами clientNo и propertyNo, конструкция определения первичного ключа PRIMARY KEY будет иметь вид
PRIMARY KEY(clientNo, propertyNo)
Конструкция PRIMARY KEY может указываться в определении таблицы только один раз. Однако существует возможность гарантировать уникальность значений и для любых альтернативных ключей таблицы, для чего предназначено ключевое слово UNIQUE. Кроме того, при определении столбцов альтернативных ключей рекомендуется использовать и спецификаторы NOT NULL. В каждой таблице может быть определено произвольное количество конструкций UNIQUE. База данных отвергает любые попытки выполнения операций INSERT или UPDATE, которые влекут за собой создание повторяющегося значения в любом потенциальном ключе (под этим подразумевается первичный или альтернативный ключ). Например, определение таблицы Viewing можно переписать следующим образом:
clientNo VARCHAR{5) NOT NULL,
propertyNo VARCHAR(S) NOT NULL,
UNIQUE (clientNo, propertyNo) Маркин А.В. Построение запросов и программирование на SQL.:2008 -c.15
Ссылочная целостность.
Внешние ключи представляют собой столбцы или наборы столбцов, предназначенные для связывания каждой из строк дочерней таблицы, содержащей этот внешний ключ, со строкой родительской таблицы, содержащей соответствующее значение потенциального ключа. Понятие ссылочной целостности означает, что если поле внешнего ключа содержит некоторое значение, то оно обязательно должно ссылаться на существующую допустимую строку в родительской таблице. Карпова Т.С. Базы данных: модели, разработка, реализация.:2002-с.27 Например, значение в столбце номера отделения branchNo таблицы PropertyForRent всегда должно связывать данные об объекте недвижимости с конкретной строкой таблицы Branch, соответствующей тому отделению компании, за которым закреплен этот объект недвижимости. Если столбец с номером отделения не пуст, он обязательно должен являться допустимым значением столбца branchNo таблицы Branch. В противном случае объект недвижимости будет закреплен за несуществующим отделением компании.
Стандарт ISO предусматривает механизм определения внешних ключей с помощью конструкции FOREIGN KEY операторов CREATE TABLE и ALTER TABLE. Например, для определения внешнего ключа branchNo в таблице PropertyForRent можно использовать следующуюконструкцию:
FOREIGN KEY(branchNo) REFERENCES Branch
Теперь система отклонит выполнение любых операторов INSERT или UPDATE, с помощью которых будет предпринята попытка создать в дочерней таблице значение внешнего ключа, не соответствующее одному из уже существующих значений потенциального ключа родительской таблицы. Действия системы, выполняемые при поступлении операторов UPDATE или DELETE, содержащих попытку обновить или удалить значение потенциального ключа в родительской таблице, которому соответствует одна или несколько строк дочерней таблицы, зависят от правил поддержки ссылочной целостности, указанных в конструкциях ON UPDATE и ON DELETE конструкции FOREIGN KEY. На тот случай, если пользователь предпринимает попытку удалить из родительской таблицы строку, на которую ссылается одна или несколько строк дочерней таблицы, в языке SQL предусмотрены следующие четыре допустимых варианта действий.
* CASCADE. Удаление строки из родительской таблицы сопровождается автоматическим удалением всех ссылающихся на нее строк дочерней таблицы. Поскольку удаляемые строки дочерней таблицы также могут содержать некоторые потенциальные ключи, используемые в качестве внешних ключей в других таблицах, анализируются и применяются правила обработки внешних ключей этих таблиц, активизируется проверка правил обработки внешних ключей и т.д. Такой способ выполнения операции называется каскадным, поскольку он предусматривает переход с одного уровня иерархии на другой.
* SET NULL. Выполняется удаление строки из родительской таблицы, а во внешние ключи всех ссылающихся на нее строк дочерней таблицы заносятся значения NULL. Этот вариант применим только в том случае, если в определении столбца внешнего ключа отсутствует ключевое слово NOT NULL.
* SET DEFAULT. Выполняется удаление строки из родительской таблицы, а во внешние ключи всех ссылающихся на нее строк дочерней таблицы заносится значение, принимаемое по умолчанию. Этот вариант применим только в том случае если в определении столбца внешнего ключа присутствует ключевое слово DEFAULT и задано значение, используемое по умолчанию.
* NO ACTION. Операция удаления строки из родительской таблицы отвергается. Именно это значение используется по умолчанию в тех случаях, когда в описании внешнего ключа конструкция ON DELETE опущена. Те же правила применяются в языке SQL и тогда, когда значение потенциального ключа родительской таблицы обновляется. В случае использования правила CASCADE в столбцы внешнего ключа дочерней таблицы помещается новое, измененное значение потенциального ключа родительской таблицы. Аналогичным образом, обновления каскадно распространяются на другие таблицы, если их внешние ключи ссылаются на обновленные столбцы дочерней таблицы. Например, в таблице PropertyForRent столбец табельного номера работника staff No является внешним ключом, ссылающимся на таблицу staff. Для этого внешнего ключа можно установить правило удаления, указывающее, что в случае удаления записи о работнике из таблицы staff соответствующее значение в столбце staffNo таблицы PropertyForRent должно быть заменено значением NULL:
FOREIGN KEY (staffNo} REFERENCES Staff ON DELETE SET NULL
Аналогичным образом, столбец с номером владельца объекта недвижимости ownerNo таблицы PropertyForRent является внешним ключом, связывающим ее с таблицей PrivateOwner. Можно установить правило обновления, указывающее, что в случае изменения номера владельца в таблице PrivateOwner соответствующие значения в столбце ownerNo таблицы PropertyForRent также должны быть заменены новым значением:
FOREIGN KEY {ownerNo) REFERENCES PrivateOwner ON UPDATE CASCADE
3. Определение данных
Язык определения данных SQL DDL (Data Definition Language) позволяет создавать и уничтожать такие объекты базы данных, как схемы, домены, таблицы, представления и индексы. Документация Microsoft Office Access 2003. В настоящей главе кратко рассматриваются способы создания и удаления схем, таблиц и индексов, Стандарт ISO предусматривает также возможность создания наборов символов, схем сортировки и преобразования. Ниже перечислены основные операторы языка определения данных SQL.
CREATE SCHEMA
CREATE DOMAIN
CREATE TABLE
CREATE VIEW
ALTER DOMAIN
ALTER TABLE
DROP SCHEMA
DROP DOMAIN
DROP TABLE
DROP VIEW
Эти операторы используются для создания, модификации и уничтожения структур, входящих в состав концептуальной схемы. Во многих СУБД предусмотрены также следующие два оператора, хотя они не рассматриваются в стандарте SQL:
CREATE INDEX DROP INDEX
Кроме того, администратор базы данных может воспользоваться дополнительными командами для уточнения параметров физического хранения данных, но в настоящей книге они не рассматриваются, поскольку зависят от конкретной системы.
Создание баз данных
В различных СУБД процедура создания баз данных существенно отличается. В многопользовательских системах право создания баз данных обычно закрепляется только за администратором базы данных (АБД). В однопользовательских системах предусмотренная по умолчанию база данных может быть создана непосредственно в процессе установки и настройки параметров самой СУБД, а другие базы данных создаются самим пользователем по мере необходимости. Стандарт ISO не определяет, как должны создаваться базы данных, поэтому в каждом из диалектов языка SQL обычно используется собственный подход. В соответствии со стандартом ISO, таблицы и другие объекты базы данных существуют в некоторой среде (environment). Помимо всего прочего, каждая среда состоит из одного или нескольких каталогов (catalog), а каждый каталог -- из набора схем (schema). Схема представляет собой именованную коллекцию объектов базы данных, которые определенным образом связаны друг с другом (все объекты в базе данных должны быть описаны в той или иной схеме). Объектами схемы могут быть таблиц, представления, домены, утверждения, сопоставления, толкования и наборы символов. Все объекты схемы имеют одного и того же владельца и множество общих значений, применяемых по умолчанию.
Этот стандарт оставляет право выбора конкретного механизма создания и уничтожения каталогов за разработчиком СУБД, однако регламентирует механизм создания и удаления схем. Оператор определения схемы имеет следующий формат (упрощенно):
CREATE. SCHEMA [nаше | AUTHORIZATION Creator-Identifier]
Таким образом, если создателем схемы под именем SqlTests является пользователь Smith, то данный оператор будет выглядеть следующим образом:
CREATE SCHEMA SqlTests AUTHORIZATION Smith;
В стандарте ISO также указано, что должна существовать возможность определить в рамках данного оператора диапазон средств, доступных пользователям создаваемой схемы. Однако конкретные способы определения подобных привилегий в разных СУБД различаются. Схема удаляется с помощью оператора DROP SCHEMA, который имеет следующий формат:
DROP SCHEMA Name [ RESTRICT | CASCADE]
Если указано ключевое слово RESTRICT (именно оно принимается по умолчанию), схема должна быть пустой, иначе выполнение операции будет отменено. Если указано ключевое слово CASCADE, при выполнении оператора будут автоматически удалены все связанные с удаляемой схемой объекты, причем в порядке, указанном выше. Если одна из этих операций удаления будет завершена неудачно, выполнение всего оператора DROP SCHEMA будет отменено. Общий эффект от выполнения оператора DROP SCHEMA с параметром CASCADE может затронуть значительную часть базы данных, поэтому подобные операторы должны вводиться с исключительной осторожностью.
В настоящее время операторы CREATE SCHEMA и DROP SCHEMA реализованы в очень немногих СУБД.
Создание таблиц (оператор CREATE TABLE)
После создания общей структуры базы данных можно приступить к созданию таблиц, представляющих отношения, входящие в состав проекта базы данных. Для этой цели используется оператор CREATE TABLE, имеющий следующий общий формат:
CREATE TABLED TableName
{(columName data Type [NOT NULL] [UNIQUE]
[DEFAULT defaultoption] [CHSCK (searchCondition}:] [, …] }
[PRIMARY KEY (ListOfColumns) ]
{ [UNIQUE {listOfCoIumns) ] [,. . .] }
{ [FOREIGN KEY (listOfFdreignKeyColumns)
REFERENCES ParentTabl eName [(listOfCandidateKeyColuims) ],
[MATCH {PARTIAL | FULL}
[ON UPDATE. referentialAction]
[ON DELETE referential Action]} [, , .-.] }
{[CHECK (searchCondtitioa)] [, . , , ] } )
Эта версия оператора CREATE TABLE включает средства определения ограничений ссылочной целостности и других ограничений. Структура самого оператора и степень поддержки тех или иных ограничений в значительной степени зависят от применяемого диалекта языка SQL. Но, как правило, в базе данных следует использовать все поддерживаемые ограничения, поскольку это позволяет повысить качество хранимых данных.
В результате выполнения этого оператора будет создана таблица, имя которой определяется параметром TableName, состоящая из одного или нескольких столбцов типа dataType. Набор доступных типов данных описан в разделе 1.2. Для задания значения, применяемого по умолчанию при вставке данных в конкретный столбец, предусмотрена необязательная конструкция DEFAULT. В базе данных это значение применяется по умолчанию в тех случаях, если в операторе INSERT не задано значение для такого столбца. Кроме прочих значений, опция определения применяемого по умолчанию значения defaultoption может включать литералы. Конструкции КОТ NULL, UNIGUE и CHECK рассматривались в предыдущем разделе. Остальные конструкции известны под названием ограничений таблицы и могут быть дополнительно обозначены с помощью следующей конструкции:
CONSTRAINT ConstraintName
Эта конструкция позволяет в дальнейшем удалить ограничение, указав его имя в операторе ALTER TABLE, как описано ниже. Конструкция PRIMARY KEY определяет один или несколько столбцов, которые образуют первичный ключ таблицы. Если эта конструкция предусмотрена в диалекте SQL, реализованном в конкретной базе данных, то она должна применяться при создании каждой таблицы. По умолчанию для всех столбцов, представляющих первичный ключ, предусмотрено применение ограничения NOT NULL. При создании таблицы разрешено использование только одной конструкции PRIMARY KEY. База данных отвергает все попытки выполнения операций INSERT или UPDATE, которые влекут за собой создание строки с повторяющимся значением в столбце (столбцах) PRIMARY KEY. Таким образом, в базе данных гарантируется уникальность значений первичного ключа. В конструкции FOREIGN KEY определяется внешний ключ (дочерней) таблицы и ее связь с другой (родительской) таблицей. Эта конструкция позволяет реализовать ограничения ссылочной целостности и состоит из следующих частей.
* Список UstOfForeignKeyColumns, содержащий имена одного или нескольких столбцов создаваемой таблицы, которые образуют внешний ключ.
* Вспомогательная конструкция REFERENCES, указывающая на родительскую таблицу (т.е. таблицу, в которой определен соответствующий потенциальный ключ). Если список UstOfCandidateKsyCalumns опущен, предполагается, что определение внешнего ключа совпадает с определением первичного ключа родительской таблицы. В таком случае родительская таблица должна иметь в своем операторе CREATE TABLE конструкцию PRIMARY KEY .
* Необязательное правило обновления (ON UPDATE) для определения взаимосвязи между таблицами, которое указывает, какое действие (referentialAction) должно выполняться при обновлении в родительской таблице потенциального ключа, соответствующего внешнему ключу дочерней таблицы. Бураков П.В., Петров В.Ю. Введение в системы баз данных. Учебное пособие.: СПбГУ ИТМО,2010 В качестве парамйтра referentiaJAcCion можно указать CASCADE, SET NULL, SET DEFAULT ИЛИ NO ACTION. Если КОНСТРУКЦИЯ ON UPDATE опущена, то по умолчанию подразумевается, что никакие действия не выполняются, в соответствии со значением NO ACTION.
* Необязательное правило удаления (ON DELETE) для определения взаимосвязи между таблицами, которое указывает, какое действие (referentialAction) должно выполняться при удалении строки из родительской таблицы, которая содержит потенциальный ключ, соответствующий внешнему ключу дочерней таблицы. Определение параметра referentzalAction совпадает с определением такого же параметра для правила ON UPDATE.
* По умолчанию ограничение ссылочной целостности удовлетворяется, если любой компонент внешнего ключа имеет значение NULL или в родительской таблице есть соответствующая строка. Опция MATCH позволяет ввести дополнительные ограничения, касающиеся применения значений NULL во внешнем ключе. Если задана опция MATCH FULL, то либо все компоненты внешнего ключа должны быть пусты (NULL), либо все должны иметь непустые значения. А если задана опция MATCH PARTIAL, то либо все компоненты внешнего ключа должны быть пусты (NULL), либо в родительской таблице должна существовать хотя бы одна строка, способная удовлетворить это ограничение, если все остальные значения NULL были подставлены правильно. Документация Microsoft Office Access 2003. Некоторые авторы утверждают, что в ограничениях ссылочной целостности следует применять только опцию MATCH FULL.
В операторе создания таблицы может быть задано любое количество конструкций FOREIGN KEY. Конструкции CHECK и CONSTRAINT позволяют определять дополнительные ограничения. Если конструкция CHECK используется в качестве ограничения столбца, то она может ссылаться только на определяемый столбец. Конноли Т., Бегг Л., Страчан А. Базы данных. Проектирование, реализация и сопровождение. Теория и практика. 3-е издание. Вильямс 2003. - Таблицы, картинки. Ограничения фактически контролируются после применения каждого оператора SQL к таблице, на которой они заданы, но такая проверка может быть отложена до окончания той транзакции, в состав которой входит текущий оператор SQL.
Модификация определения таблицы (оператор ALTER TABLE)
В стандарте ISO предусмотрено применение оператора ALTER TABLE для изменения структуры таблицы после ее создания. Определение оператора ALTER TABLE состоит из шести опций, позволяющих выполнить следующие действия:
*ввести новый столбец в таблицу;
*удалить столбец из таблицы;
*ввести новое ограничение та(5лицы;
*удалить ограничение таблицы;
*задать для столбца значение, применяемое по умолчанию;
*удалить опцию, предусматривающую применение для столбца значения, заданного по умолчанию.
Ниже приведен основной формат этого оператора.
ALTER TABLE TableName
[ADD [COLUMN] columneName [RESTRICT | CASCADE]]
[DROP [COLUMN] columnName [RESTRICT | CASCADE]]
[ADD [CONSTRAINT [ConstreintName]] tableConstraintDefinition]
[DROP CONSTRAINT ConstraintName [RESTRICT | CASCADE]]
[ALTER [COLUMN] SET DEFULT defaultOption]
[ALTER [COLUMN] DROP DEFAULT] Документация Microsoft SQL Server 2000.
Заключение
Стандарт ISO предусматривает внедрение восьми базовых типов данных: логических, символьных и битовых строк, точных и округленных чисел, даты/времени и временного интервала, а еще символьных и двоичных огромных объектов.
Операторы языка SQL DDL позволяют сформировать новейшие объекты базы данных. Операторы CREATE и DROP SCHEMA разрешают формировать и устранять схемы. Операторы CREATE, ALTER и DROP TABLE обеспечивают создание, трансформацию и удаление таблиц базы данных. Операторы CREATE и DROP INDEX позволяют создавать и удалять индексы для указанной таблицы.
Стандарт ISO языка SQL предугадывает внедрение в операторах CREATE TABLE и ALTER TABLE особенных конструкций, предназначенных для определения требований поддержки целостности данных, к которым относятся ограничение обязательности наличия данных; ограничения для доменов атрибутов; требования поддержки целостности сущностей; требования поддержки ссылочной целостности данных и требования (бизнес-правила) данного предприятия. Обязательность наличия данных указывается с помощью ключевого слова NOT NULL. Ограничения для доменов атрибутов задаются либо с помощью конструкций CHECK, либо посредством создания соответствующих доменов с помощью операторов CREATE DOMAIN. Первичные ключи определяются с помощью конструкции PRIMARY KEY, а альтернативные ключи описываются с поддержкой композиции главных слов NOT NULL и описателей UNIQUE. Внешние ключи описываются с помощью конструкции FOREIGN KEY, а также задания правил удаления и обновления с использованием конструкций ON UPDATE и ON DELETE. Бизнес-правила предприятия могут быть заданы с помощью конструкций CHECK и UNIQUE. Ограничения, определяемые самим предприятием, могут быть также созданы с поддержкой оператора CREATE ASSERTION.
Представлением именуется виртуальная таблица, включающая некое подмножество столбцов и/или строк, и/или вычисляемых столбцов, выбранных из одной либо нескольких таблиц базы данных либо других представлений. Представления формируются с поддержкой оператора CREATE VIEW посредством задания определяющего запроса. Представление не является физически сохраняемой таблицей, а создается заново при обработке каждой очередной ссылки на него.
Представления имеют все шансы употребляться с целью упрощения структуры базы данных с точки зрения пользователя и формулирования запросов к базе данных. Не считая такого, представления могут использоваться для защиты определенных столбцов и/или строк таблицы от несанкционированного доступа. Не все виды представлений допускают обновление содержащихся в них данных.
Оператор COMMIT указывает на успешное завершение транзакции и необходимость фиксации в базе данных всех изменений, внесенных при ее выполнении. Оператор ROLLBACK указывает, что выполнение транзакции должно быть прекращено, а все внесенные в ходе ее выполнения изменения должны быть отменены.
В языке SQL управление доступом к данным построено на базе концепций идентификаторов пользователей, прав владения и предоставления привилегий. Идентификаторы пользователей назначаются всем пользователям базы данных ее администратором (АБД) и предназначены для идентификации отдельных пользователей. Каждый создаваемый в базе данных объект SQL имеет своего владельца. Владелец объекта может предоставить другим пользователям базы данных те или иные привилегии доступа к данному объекту, для чего используется оператор G^ANT. Предоставленные привилегии могут быть впоследствии отменены с помощью оператора REVOKE. К предоставляемым привилегиям относятся USAGE, SELECT, DELETE, INSERT, UPDATE и REFERENCES, причем три последние могут быть ограничены отдельными столбцами таблицы или представления.
Глоссарий
№ п/п |
Понятие |
Определение |
|
1. |
Администратор базы данных (АБД) |
человек, отвечающий за выработку требований к базе данных, её проектирование, реализацию, эффективное использование и сопровождение, включая управление учётными записями пользователей БД и защиту от несанкционированного доступа. |
|
2. |
Домен |
некоторый набор допустимых значений. |
|
3. |
Значность |
Данные точного числового типа |
|
4. |
Каскадный способ выполнения операции |
Способ ,предусматривающий удаление строки из родительской таблицы сопровождается автоматическим удалением всех ссылающихся на нее строк дочерней таблицы. |
|
5. |
Система управления базами данных (СУБД) |
комплекс программных и лингвистических средств общего или специального назначения, реализующий поддержку создания баз данных |
|
6. |
Ссылочная целостность |
необходимое качество реляционной базы данных, заключающееся в отсутствии в любом её отношении внешних ключей, ссылающихся на несуществующие кортежи. |
|
7. |
Стандарт ISO |
международная организация, занимающаяся выпуском стандартов. |
|
8. |
Схема (Schema) |
коллекция объектов базы данных, которые определенным образом связаны друг с другом (все объекты в базе данных должны быть описаны в той или иной схеме). |
|
9. |
Транзакция |
группа последовательных операций, которая представляет собой логическую единицу работы с данными. |
|
10. |
язык SQL |
универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. |
Список использованных источников
1.А.В.Фролов, Г.В.Фролов Базы данных в Интернете. Практическое руководство по созданию Web-приложений с базами данных.:2000
2.В.В.Кириллов, Г.Ю.Громов Структуризированный язык запросов (SQL.: СПГИТМО
3.Документация Microsoft Office Access 2003
4.Документация Microsoft SQL Server 2000.
5.Дэн Тоу Настройка SQL. Для профессионалов.:2004
6.Карпова Т.С. Базы данных: модели, разработка, реализация.:2002-с.27
7.Конноли Т., Бегг Л., Страчан А. Базы данных. Проектирование, реализация и сопровождение. Теория и практика. 3-е издание. Вильямс 2003. - Таблицы, картинки
8.Крис Фиайли SQL. Руководство по изучению языка.: ДМК Пресс, 2004
9.Маркин А.В. Построение запросов и программирование на SQL.:2008 -c.15
10.Ф. Андон, В. Резниченко Язык запросов. Учебный курс.:2004 -с.12
Размещено на Allbest.ru
Подобные документы
Типы данных языка SQL, определенные стандартом ISO. Средства поддержки целостности данных. Введение ограничений для доменов. Разработка рабочего проекта для автосалона. Построение информационной схемы базы. Создание форм для занесения данных в таблицы.
курсовая работа [2,5 M], добавлен 29.01.2012Различия между существующими диалектами SQL. Стандартизация языка SQL. Концепция баз данных. Эффективность организации данных. Структура языка SQL. Приближенные числовые типы. Интервальный тип данных. Обработка сложно структурированной информации.
курсовая работа [50,7 K], добавлен 29.05.2014Ознакомление со структурой, комментариями, переменными и типами данных, константами, перечислениями, преобразованием типов языка программирования высокого уровня С++. Ключевые понятия языка, идентификаторы, ключевые слова, функции, операторы, выражения.
контрольная работа [31,2 K], добавлен 12.12.2009Язык структурированных запросов SQL (Structured Query Language) и его место в сфере доступа к информации в реляционных базах данных. Структура и основные типы данных языка. Синтаксис и семантика главных операторов SQL, последние стандарты языка.
реферат [98,7 K], добавлен 29.03.2012Понятие и концепция базы данных и СУБД. Независимость приложений от организации данных во внешней памяти. Типы данных SQL, таблицы, структура языка и операторы. Преимущества модели реляционного подхода к организации баз данных и ее эффективность.
курсовая работа [69,6 K], добавлен 30.11.2009Структура и функции системы управления базами данных (СУБД). Управление хранением данных и доступом к ним. Защита и поддержка целостности данных. Надежность хранения данных во внешней памяти. Классификация СУБД по способу доступа к базе данных.
презентация [3,7 M], добавлен 05.06.2014Изучение и анализ функциональных возможностей СУБД. Структура языка реляционных БД SQL (Structured Query Language). Типы данных SQL. Операторы DDL - операторы определения объектов базы данных. Примеры использования операторов манипулирования данными.
курсовая работа [39,6 K], добавлен 21.07.2012Сущность и функциональные особенности баз данных, их классификация и типы, внутренняя структура и элементы. Модели данных, хранящихся в базах: иерархическая, сетевая, реляционная, многомерная, объектно-ориентированная. Виды запросов и типы таблиц.
дипломная работа [66,7 K], добавлен 06.01.2014Элементы языка Object Pascal: идентификаторы, константы, переменные, выражения. Структура проекта Delphi. Операторы и метки. Типы данных языка OPascal. Статические и динамические массивы. Записи с вариантными полями. Совместимость и преобразование типов.
курс лекций [385,4 K], добавлен 18.02.2012Формы представляемой информации. Основные типы используемой модели данных. Уровни информационных процессов. Поиск информации и поиск данных. Сетевое хранилище данных. Проблемы разработки и сопровождения хранилищ данных. Технологии обработки данных.
лекция [15,5 K], добавлен 19.08.2013