Структура языка SQL
Типы данных языка SQL (Structured English Qeury Language - структурированный английский язык запросов). Идентификаторы языка, средства поддержки целостности данных. Обязательные данные и ограничения. Создание баз данных, запросы и права доступа.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 27.12.2012 |
Размер файла | 68,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Курсовая работа
Базы данных
Тема
Структура языка SQL
Фамилия студента
Шилов Илья Михайлович
Содержание
- Введение
- 1. Типы данных языка SQL
- 1.1 Идентификаторы языка SQL
- 1.2 Средства поддержки целостности данных
- 1.3 Обязательные данные
- 1.4 Ограничения
- 2. Определение данных
- 2.1 Создание баз данных
- 2.2 Изменение содержимого базы данных
- 2.3 Создание таблиц
- 2.4 Модификация определения таблицы
- 2.5 Удаление таблиц
- 3. Запросы и права доступа
- 3.1 Представления
- 3.2 Транзакции в SQL
- 3.3 Управление доступом к данным
- 3.4 Идентификаторы пользователей и права владения
- 3.5 Привилегии
- Заключение
- Глоссарий
- Список использованных источников
- Приложения
Введение
В последние годы наблюдается значительный рост объемов и усложнение структурной сложности данных, также диверсификация в сфере пользователей БД (баз данных) и постоянное улучшение производительности технической базы. Так как база данных это по сути хранилище различных объектов (данных), возникла необходимость в структуризации и систематизации хранящейся в БД информации, а также возможности создания взаимосвязей между объектами.
Для удобства любые данные в БД можно представить как совокупность двумерных таблиц. Эта идея легла в основу реляционной модели представления данных (англ. relation). Для управления данными и осуществления доступа к ним используются информационно-поисковые языки (или языки запросов). Одним из них является SQL (англ. Structured Query Language - "язык структурированных запросов").
Язык SQL был создан британскими учеными в компании IBM в середине 70-х для взаимодействия с базами. Первоначально язык именовался SEQUEL (англ. Structured English Qeury Language - структурированный английский язык запросов) и был ориентирован в основном на простых, неискушенных в программировании пользователей для формирования запросов, хотя и содержал достаточный инструментарий для средств определения и манипулирования схемой БД.
Первым официальным стандартом языка стал SQL-86, принятый ANSI (англ. American National Standards Institute) в 1986 году и ISO (англ. International Organization for Standardization) в 1987 году и незначительно уточненный в 1989 году.
В силу разнообразия функционала и наличия расширенных версий стандарта у разных производителей СУБД (систем управления баз данных) в целях придания языку SQL большей универсальности форма стандарта была преобразована в модульную структуру. Базовая часть стандарта была вынесена в отдельный раздел "SQL/Foundation", остальные были распределены в отдельные модули. Таким образом, для всех СУБД существует только один уровень совместимости, называемый Core и означающий поддержку только основного модуля стандарта. Поддержка остальных возможностей оставлена на усмотрение производителей СУБД. Все версии стандарта, начиная с SQL: 1999, придерживаются данной политики.
Язык SQL является самым первым и на сегодняшний день единственным стандартным языком работы с базами данных, который получил столь широкое распространение. Существует еще один стандартный язык для работы с базами данных, NDL (Network Database Language), который построен на использовании сетевой модели CODASYL, но он применяется лишь в немногочисленных разработках. Большинство крупнейших разработчиков СУБД в настоящее время разрабатывают свои продукты с использованием языка SQL, либо интерфейса SQL, и значительная часть таких компаний являются участниками, по меньшей мере, одной организации, которая занимается разработкой стандартов этого языка. В SQL делаются огромные инвестиции как со стороны разработчиков, так и со стороны пользователей. Он активно используется как часть архитектуры приложений (в качестве примера можно привести System Application Architecture (SAA) корпорации IBM), а также является приоритетной стратегией выбора многих крупных и влиятельных организаций (например, консорциума X/Open, занимающегося разработкой стандартов для среды UNIX), язык SQL также принят в качестве федерального стандарта обработки информации (Federal Information Processing Standard - FIPS), который должен соблюдаться в СУБД как непременное условие возможности продавать ее на территории США. Консорциум разработчиков SQL Access Group прилагает усилия по созданию расширенных версий языка SQL, которые позволят обеспечить взаимодействие разнородных систем.
Язык SQL используется в разработке других стандартах и используется как инструмент их определения (например, стандарты ISO "Information Resource Dictionary System" (IRDS) и "Remote Data Access" (RDA)). Разработка языка вызывает достаточную заинтересованность научных кругов, выражающуюся как в выработке необходимой теоретической базы, так и в подготовке технических решений, которые можно было бы успешно реализовать в этой сфере. Это в большей степени касается работ по оптимизации запросов, разработке методов распределения данных и реализации средств защиты. Начали появляться специализированные реализации языка SQL, предназначенные для новых рынков, такие как OnLine Analytical Processing (OLAP).
SQL нельзя в полной мере отнести к традиционным языкам программирования, он не содержит обычные операторы, управляющие ходом выполнения программы, операторы декларации типов и т.п., он содержит исключительно набор стандартных операторов доступа к данным, хранящимся в базе данных. Операторы SQL могут встраиваются в любой базовый язык программирования, который является стандартным языком типа C++.
язык запрос база структурированный
1. Типы данных языка SQL
В этом разделе будут рассмотрены типы данных SQL, определяемые стандартом ISO.
1.1 Идентификаторы языка SQL
В языке SQL идентификаторы выполняют функцию обозначения объектов в базе данных, т.е. являются именами таблиц, представлений и столбцов. Символы, которые допустимо использовать в идентификаторах языка SQL, которые создает пользователь, должны быть четко определены. Стандарт ISO однозначно определяет набор символов, который должен использоваться по умолчанию; в него входят строчные и прописные буквы латинского алфавита (A-Z, a-z), цифры (1-9) и символ подчеркивания (_). Допустимо использование альтернативного набора символов.
На формат идентификаторов накладываются следующие ограничения:
должен начинаться с буквы;
может иметь длину до 128 символов;
не может содержать пробелов.
В языке SQL/89 поддерживаются следующие типы данных:
CHARACTER (n) или CHAR (n) - символьные строки постоянной длины в n символов. При задании данного типа под каждое значение всегда отводится п символов, и если реальное значение занимает менее, чем n символов, то СУБД автоматически дополняет недостающие символы пробелами.
NUMERIC [ (n,m)] - точные числа, здесь n - общее количество цифр в числе, m - количество цифр слева от десятичной точки.
INTEGER или INT - целые числа.
SMALLINT - целые числа меньшего диапазона.
FLOAT [ (n)] - числа большой точности, хранимые в форме с плавающей точкой.
Здесь n - число байтов, резервируемое под хранение одного числа. Диапазон чисел определяется конкретной реализацией.
REAL - вещественный тип чисел, который соответствует числам с плавающей точкой, меньшей точности, чем FLOAT.
DOUBLE PRECISION специфицирует тип данных с определенной в реализации точностью большей, чем определенная в реализации точность для REAL.
В стандарте SQL92 добавлены следующие типы данных:
VARCHAR (n) - строки символов переменной длины.
BIT (n) - строка битов постоянной длины.
BIT VARYING (n) - строка битов переменной длины.
DATE - календарная дата.
ТIMESТАМР (точность) - дата и время.
INTERVAL - временной интервал.
В стандарте SQL1 не были определены встроенные функции, однако в большинстве коммерческих СУБД такие функции были реализованы, и в стандарт SQL2 уже введен ряд стандартных встроенных функций:
BIT_LENGTH (cтpoкa) - количество битов в строке;
САSТ (значение AS тип данных) - значение, преобразованное в заданный тип данных;
CHAR_LENGTH (cтpoкa) - длина строки символов;
CURRENT_DATE - текущая дата;
CURRENT_TIME (точность) - текущее время с указанной точностью;
CURRENT_TIMESTAMP (точность) - текущие дата и время с указанной точностью;
LOWER (cтpокa) - строка, преобразованная к верхнему регистру;
SUBSTRING (cтpoкa FROM n FOR длина) - часть строки, начинающаяся с n-го
символа и имеющая указанную длину;
UPPER (строка) - строка, преобразованная к верхнему регистру.
1.2 Средства поддержки целостности данных
Средства поддержки целостности данных включают в себя средства задания ограничений, которые накладываются для защиты базы от нарушения структурной стройности данных, помещенных в базу. Подобные ограничения задаются с помощью операторов CREATE TABLE и ALTER TABLE [Документация Microsoft SQL Server 2000].
1.3 Обязательные данные
Предположим, что в некоторых столбцах наличие соответствующего и удовлетворяющего всем условиям заполнения и отличного от неопределенного значения, обязательно для каждой строки. В таком случае используется значение NULL, не являющееся ни пустым строковым значениям, ни нулевым числовым значениями; оно служит для замещения данных, которые определенный момент отсутствуют в таблицы, но чье наличие обязательно. Чтобы задавать ограничения подобного рода стандарт ISO также допускает использование идентификатора NOT NULL, (задается в указанных выше операторах). В таком случае, система не позволяет поместить в данный столбец пустое значение. По умолчанию применяется спецификатор NULL.
1.4 Ограничения
Каждый столбец имеет собственный определнный набор допустимых значений, или домен. В стандарт ISO существует два отличных друг от друга механизма определения доменов. Один из них это использование конструкции CHECK, которая позволяет задать необходимые ограничения для любого столбца или всей таблицы в целом. Вышеописанная конструкция CHECK имеет следующий формат: CHECK {search Condition}
В случае применения этой конструкции для отдельного столбца позволяется ссылаться только на определяемый столбец. Впрочем, стандарт ISO дает возможность определять и немного более сложные домены. Для этого используется альтернативный механизм - применяется оператор CREATE DOMAIN. Каждый домен, который был создан, получает уникальное имя, которое задается параметром domain Name, тип данных, задаваемый параметром dataType, а также необязательные атрибуты - характеристики по умолчанию, определяемые параметром defaulCOption, и набор допустимых значений, который, как было указано выше, декларируется в конструкции CHECK. Нужно заметить, что описанный формат оператора CREATE DOMAIN не является полным, но в достаточной степени демонстрирует базовые возможности.
Для удаления доменов из базы данных применяется оператор DROP DOMAIN. Для однозначного задания способа удаления домена используются отдельные спецификаторы (RESTRICT или CASCADE) определяющие, какие действия должны выполнятся в базе данных, если домен используется в момент удаления. В случае задания спецификатора RESTRICT, домен, задействованный в существующей таблице (в представлении или определении проверки), то в таком случае операция удаления оканчивается неудачей. Если применен спецификатор CASCADE, то изменения автоматически вносятся в любой столбец таблицы, основанный на определении домена, таким способом, чтобы в нем использовался базовый тип данных домена, а любые ограничения или применяемые по умолчанию конструкции операторов для этого домена заменяются в случае необходимости ограничениями самого столбца.
2. Определение данных
Язык определения данных SQL DDL (Data Definition Language) позволяет создавать и уничтожать такие объекты базы данных, как схемы, домены, таблицы, представления и индексы. В настоящем разделе кратко рассматриваются способы создания и удаления схем, таблиц и индексов, а в следующем разделе показано, как создавать и удалять представления Конноли Т., Бегг Л., Страчан А. Базы данных. Проектирование, реализация и сопровождение. Теория и практика. 2-е изд.М. Вильямс 2000., 20 с.. Стандарт ISO допускает дополнительные возможности создания наборов символов, схем их сортировки и преобразования. К основным операторам определения данных относятся:
CREATE SCHEMA
CREATE DOMAIN
CREATE TABLE
CREATE VIEW
ALTER DOMAIN
ALTER TABLE
DROP SCHEMA
DROP DOMAIN
DROP TABLE
DROP VIEW
Данные транзакции применяются для создания, изменеия и удаления структур, которые входят в состав оригинальной схемы. Во некоторых СУБД зарезервированы также дополнительные операторы, не предусмотренные стандартом ISO - CREATE INDEX и DROP INDEX.
Помимо этого, администратор базы данных имеет возможность воспользоваться и другими дополнительными командами для более точного уточнения характеристик хранимых данных.
2.1 Создание баз данных
За счет широкого спектра форматов СУБД процедура создания в них баз данных может существенно отличаться. В многопользовательских системах возможность создания баз данных делегируется исключительно администратору БД. В системах однопользовательского режима база данных, предусмотренная по умолчанию, может быть создана прямо непосредственно в процессе установки и настройки параметров самой СУБД. Все другие базы данных могут создаваться пользователем по мере возникновения необходимости Федоров А., Елманова Н. Базы данных для всех. - М.: Компьютер - пресс,2001. 12 с.. Стандарт ISO не задает строгих рамок, как нужно создавать БД, поэтому в каждом из диалектов языка SQL может применяться индивидуальный подход. Согласно стандарту ISO, все таблицы и прочие объекты базы данных организованы в определенной среде (environment). Каждая среда обязательно имеет структуру, представленную наличием каталогов (catalog), каждый из которых состоит из набора схем (schema). Схема представляет собой полный поименованный список объектов базы данных, связанных друг с другом определенным образом (т.е. все объекты в базе данных должны быть задекларированы в какой-нибудь схеме). Объектами схемы могут являться домены, представления, таблицы, утверждения, сопоставления, толкования и наборы символов. Все объекты схемы принадлежат одному и тому же владельцу и обладают множеством общих значений.
Этот стандарт оставляет право выбора конкретного способа написания и удаления каталогов за разработчиком СУБД, но регламентирует механизм создания и удаления схем. Оператор определения схемы представлен следующим форматом:
CREATE. SCHEMA [nаmе | AUTHORIZATION Creator-Identifier]
В стандарте ISO также указано, что должна существовать возможность наделения строго определяемым диапазоном средств в рамках данного оператора каждого пользователя разрабатываемой схемы. Разумеется, конкретные способы задания этих привилегий в разных СУБД различаются. Схема должна удаляться с помощью оператора DROP SCHEMA, который имеет следующий формат:
DROP SCHEMA Name [RESTRICT | CASCADE]
В случае, если указано ключевое слово RESTRICT, то схема должна быть пустой, в противном случае выполнение операции будет отменено. Если же указано ключевое слово CASCADE, то при выполнении оператора автоматически будут удаляться все связанные с удаляемой схемой объекты. Если одна из этих операций удаления завершится неудачно (вне зависимости от ключевого слова), выполнение всего оператора будет отменено. Суммарный эффект от выполнения оператора с параметром CASCADE может затронуть значительную часть базы данных, поэтому подобные операторы следует использовать с особой осторожностью.
В настоящее время операторы CREATE SCHEMA и DROP SCHEMA реализованы в весьма узком кругу СУБД.
2.2 Изменение содержимого базы данных
SQL является многофункциональным языком работы с данными, который может использоваться не только для выборки данных из базы, так и для модификации ее содержимого. В операции манипулирования данными входят три операции:
операция удаления записей, осуществляется оператором DELETE;
операция добавления новых записей, соответствующий оператор INSERT;
операция обновления (изменения записей) - ей соответствует оператор UPDATE.
Для всех операторов манипулирования данными допустимо изменения данных только в одной таблице.
2.3 Создание таблиц
Вторым этапом после создания общей структуры базы данных является создание таблиц, которые будут представлять отношения, связывающие входящую в базу информацию. Для этого применяется оператор CREATE TABLE, имеющий следующий общий формат:
CREATE TABLED TableName
{ (Colum Name data Type [NOT NULL] [UNIQUE]
[DEFAULT default option] [CHSCK (search Condition}:] [, …] }
[PRIMARY KEY (List Of Columns)]
{ [UNIQUE {list Of Columns)] [,.] }
{ [FOREIGN KEY (list Of Fdreign Key Columns)
REFERENCES Parent Table Name [ (list Of Candidate Key Coluims)],
[MATCH {PARTIAL | FULL}
[ON UPDATE. Referential Action]
[ON DELETE referential Action] } [,,. - .] }
{ [CHECK (search Condition)] [,.,,] })
В данном случае оператор CREATE TABLE включает в себя средства описания ограничений (например, ссылочной целостности). Функциональность самого оператора и степень затребованности тех или иных ограничений в значительной степени зависят от использованного администратором диалекта языка SQL. По "правилам хорошего тона" в базе данных надлежит использовать все поддерживаемые ограничения, без исключения, так как это позволяет повысить качество создаваемой БД.
Результатом работы декларированного выше оператора будет таблица, ее имя будет определяется параметром Table Name, а структура будет состоять из столбцов типа data Type. Для определения значения, которое будет применятся по умолчанию при вставке данных в соответствующий столбец, дополнительно введена необязательная конструкция DEFAULT. В базе данных это значение применяется по умолчанию в случаях, когда в операторе INSERT не задано значение для такого столбца. Помимо других значений, функция определения применяемого по умолчанию значения default option может включать литеры. Другие подобные конструкции называются ограничениями таблицы и могут быть введены в качестве дополнения с помощью следующей конструкции:
CONSTRAINT Constraint Name
Данная конструкция позволяет удалить ограничение в процессе дальнейшего использования таблицы, указав его имя в операторе ALTER TABLE. Транзакция PRIMARY KEY дефинирует один или несколько столбцов, образующих первичный ключ таблицы. В случае, когда данная конструкция включается в диалект SQL, реализованный в конкретной базе данных, то она обязана применяться при создании каждой из таблиц. По умолчанию, для всех столбцов, образующих первичный ключ, предусмотрено применение ограничения NOT NULL. При создании таблицы позволяется использование строго только одной конструкции PRIMARY KEY. База данных пресекает все попытки запуска транзакций UPDATE или INSERT, так как они могут повлечь за собой появление строк с задвоенной информацией в столбце (нескольких столбцах) PRIMARY KEY. Таким образом, в базе данных обеспечивается уникальность значений для первичного ключа. В конструкции FOREIGN KEY дефинируется внешний ключ одной таблицы и ее связь с другой (родительской) таблицей. Эта конструкция позволяет осуществлять ограничения ссылочной целостности и структурирована на несколько частей:
Список ListOfForeignKeyColumns, содержащий имена одного или нескольких столбцов создаваемой таблицы из числа тех, которые образуют внешний ключ.
Необязательная функция обновления ON UPDATE, служащая для определения взаимосвязи между таблицами, которая управляет порядком выполнения действий (referential Action) при обновлении в родительской таблице некоторого потенциального ключа определенного отношения, являющегося внешним ключом дочерней таблицы. В качестве характеристики referential Action можно указать CASCADE или NO ACTION. Если вышеописанная не использована, то по умолчанию подразумевается, что никакие действия выполнятся не будут в соответствии со значением NO ACTION.
Так же необязательное правило удаления ON DELETE, определяющее взаимосвязи между таблицами, которое управляет порядком выполнения действий (referential Action) при удалении в родительской таблице некоторого потенциального ключа определенного отношения, являющегося внешним ключом дочерней таблицы. Определение параметра referential Action аналогично заданию этого параметра для функцииы ON UPDATE.
По умолчанию ограничение ссылочной целостности выполянется, если какой-либо компонент внешнего ключа содержит значение NULL или в родительской таблице присутствует соответствующая строка. Функция MATCH позволяет ввести опциональные ограничения, касающиеся применения значений NULL во внешнем ключе. Если был задан параметр MATCH FULL, то возможны два варианта: либо все составляющие внешнего ключа должны быть пусты (NULL), либо все должны иметь непустые значения. А если был задан параметр MATCH PARTIAL, тогда ситуация следующая: либо все составляющие внешнего ключа должны быть пусты (NULL), либо же в родительской таблице существует хотя бы одна строка, удовлетворяющая этому ограничению, если все остальные значения NULL были подставлены правильно.
Оператор создания таблицы может содержать любое количество конструкций FOREIGN KEY. Функции CHECK и CONSTRAINT дают возможность вводить дополнительные ограничения. Если конструкция CHECK применяется как ограничение столбца, то она может ссылаться только на определяемый столбец. В действительности ограничения контролируются после применения любого оператора SQL к таблице, для которой они заданы, но эта проверка может быть отсрочена до окончания выполнения той транзакции, в состав которой входит данный оператор SQL.
2.4 Модификация определения таблицы
В стандарте ISO дополнительно существует оператор ALTER TABLE, служащий для изменения табличной структуры после ее создания. Декларация оператора ALTER TABLE содержит шесть позиций, предоставляющих пользователю следующие функции:
добавить в таблицу новый столбец;
удалить из таблицы столбец;
добавить дополнительное ограничение для таблицы;
удалить из таблицы существующее ограничение;
задать в столбце значение по умолчанию;
удалить в столбце функцию применения значения, заданного по умолчанию.
Практически все параметры этого оператора совпадают с параметрами вышеуказанного оператора CREATE TABLE. В качестве параметра с определением ограничения таблицы Table Constraint Definition может применяться одна из конструкций PRIMARY KKY, UNIQUE, FOREIGN KEY или CHECK. Конструкция ADD COLUMN подобна конструкции определения столбца в операторе CREATE TABLE. В функции DROP COLUMN задается имя удаляемого из определения таблицы столбца, и имеется необязательная опция, дающая возможность указать, является ли действие операции DROP каскадным или нет, чуть ниже поясняется, как.
RESTRICT - операция DROP отклоняется, если на данный столбец ссылается какой-либо объект базы данных (например, в описании ограничения). Это значение функции является значением по умолчанию.
CASCADE - функционирование операции DROP продолжается в любом случае и ссылки на столбец принудительно удаляются из любых объектов базы данных, где они имеются. Так как операция выполняется каскадно, поэтому после удаления столбца из объекта, в котором содержалась ссылка, в базе данных выполняется проверка того, имеются ли ссылки на этот столбец в любом другом объекте, такие ссылки удаляются также и в этом объекте, и т.д.
2.5 Удаление таблиц
Постепенно с течением времени структура базы данных меняется: добавляются новые таблицы, а в прежних надобность отпадает. Ненужные таблицы удаляются из базы данных с помощью функции DROP TABLE,
Например, чтобы удалить таблицу "Название таблицы" можно использовать следующую конструкцию:
DROP TABLE Название таблицы;
Но следует заметить, что эта функция удалит помимо указанной таблицы, еще и все входящие в нее строки с данными. Если потребуется удалить из таблицы только строки данных, оставив в базе описание собственно таблицы нетронутым, то надлежит применить оператор DELETE. Оператор DROP TABLE дополнительно позволяет уточнять параметр каскадного выполнения функции.
RESTRICT - операция DROP отклоняется, если на данный столбец ссылается какой-либо объект базы данных (например, в описании ограничения). Это значение функции является значением по умолчанию.
CASCADE - функционирование операции DROP продолжается в любом случае и ссылки на столбец принудительно удаляются из любых объектов базы данных, где они имеются. Так как операция выполняется каскадно, поэтому после удаления столбца из объекта, в котором содержалась ссылка, в базе данных выполняется проверка того, имеются ли ссылки на этот столбец в любом другом объекте, такие ссылки удаляются также и в этом объекте, и т.д.
3. Запросы и права доступа
3.1 Представления
Представление (англ. view, в сленге программистов иногда используется в качестве заимствования из английского - "вьюха", "вьюшка") - виртуальная логическая таблица, представляющая собой поименованный запрос (алиас к запросу), который будет подставлен в качестве подзапрос при использовании представления.
В отличие от обычных таблиц реляционной БД, представление не является самодостаточной частью объема данных, хранящегося в базе. Результат представления динамически вычисляется исходя из имеющихся данных, находящихся в реальных таблицах. Изменение данных в реальной таблице БД моментально отражается в содержимом всех представлений, построенных на основании этой таблицы.
Наиболее типичным способом создания представлений для СУБД, поддерживающих язык запросов SQL, является наделение представления с определённым SQL-запросом. Таким образом, содержимое представления - это результат выполнения этого запроса, а возможности построения представления ограничиваются только степенью сложности диалекта SQL, поддерживаемого конкретной СУБД. Так, для стандартных СУБД, таких как PostgreSQL, Oracle, Interbase, FireBird, Microsoft SQL Server, представление может включать:
подмножество записей из таблицы БД, отвечающее определённым условиям (например, в условиях наличии одной таблицы "Леса" можно создать два представления "Лиственные" и "Хвойные", в каждом из которых будут записи только о лесах соответствующего типа);
подмножество столбцов таблицы БД, необходимое программе (например, из реальной таблицы "Телефонный справочник" представление может содержать по каждому человеку только ФИО и телефонный номер);
результат обработки данных таблицы различными функциями (например, представление может содержать все данные реальной таблицы, но с изменением кодировки строк и удаление специальных знаков);
результат объединения (join) нескольких таблиц (например, при наличии таблиц "People", "Address", "Street", "Company" возможно построение представления, которое будет представлять собой таблицу, в которой каждому человеку поставлены в соответствие его личные данные, адрес места жительства, название организации, в которой он работает, и адрес этой организации);
результат слияния нескольких таблиц с идентичными именами и типами полей, когда в представлении попадают все записи каждой сливаемой таблицы (опционально - с удалением дублей);
результат группировки записей в таблице (например, в случае таблицы "доходы" с записями по каждому входящему платежу можно построить представление, содержащее счета, с которых поступала каждая сумма);
3.2 Транзакции в SQL
Стандарт ISO содержит дефиницию модели транзакций, построенной на использовании двух специализированных операторов - COMMIT и ROLLBACK. Большая часть коммерческих реализаций языка SQL поддерживает эту модель. Впервые она была реализована в СУБД DB2 компании IBM. Транзакция это группа последовательных операций, которая сути является логической единицей работы с данными. Транзакция может быть выполнена либо полностью и успешно, сохраняя целостность данных и независимо от параллельно запущенных других транзакций, либо не выполнена в целом, не произведя никакого эффекта. Транзакции фиксируются транзакционными системами, во время работы которых создаётся история транзакций. В стандарте ISO уточняется, что в языке SQL транзакция автоматически запускается любым инициализирующим транзакцию оператором SQL, который выполняется пользователем или программой. Изменения, вносящиеся в базу данных в ходе функционирования транзакции, не будут восприниматься любыми другими транзакциями, выполняющимися параллельно, до тех пор, пока данная транзакция не будет явным образом завершена. Завершение транзакции возможно осуществить одним из следующих четырех способов.
Запуск оператора COMMIT означает успешное завершение транзакции. После его завершения, изменения, которые были внесены в базу данных, приобретают постоянный характер. После окончания работы оператора COMMIT ввод любого инициирующего транзакцию оператора автоматически спровоцирует запуск новой транзакции.
Ввод оператора ROLLBACK означает отказ от завершения транзакции, в результате чего выполняется откат всех изменений в базе данных, внесенных при выполнении этой транзакции. После окончания работы оператора ROLLBACK ввод любого инициирующего транзакцию оператора автоматически спровоцирует запуск новой транзакции.
При внедрении операторов SQL в тело программы успешное окончание ее работы автоматически спровоцирует завершение последней вызванной программой транзакции, даже в том случае, если оператор COMMIT для нее не был введен явно.
В случае внесения операторов SQL в тело программы экстренное завершение ее работы автоматически вызовет откат транзакции, запущенной последней.
В языке SQL запрещается использование вложенных транзакций. При помощи оператора SET TRANSACTION все пользователи имеют возможность настраивать различные характеристики хода процесса обработки транзакций.
Наличие квалификаторов READ ONLY и READ WRITE означают, что в транзакциях допустимо выполнение только операций чтения или чтения и записи. По умолчанию предполагается употребление квалификатора READ WRITE (за исключением случаев, когда выбран уровень изоляции READ UNCOMMITTED). В формате режима READ ONLY в транзакциях разрешается запуск операторов INSERT, UPDATE и DELETE для временных таблиц (и только для них). Показатель уровня изоляции определяет возможности взаимодействия с другими транзакциями, которые разрешаются при выполнении транзакции.
Наивысшая безопасность гарантируется только уровнем изоляции SERIALIZABLE, в возможности которого входит генерация временных графиков сериализации. Любой другой уровень изоляции требует, чтобы СУБД предоставляла соответствующий механизм, который будет использован программистами для обеспечения сериализации данных. В этом же уровне даются дополнительные разъяснения касательно механизмов исполнения транзакций и сериализации.
3.3 Управление доступом к данным
Язык SQL содержит операторы GRANT и REVOKE, служащие для организации защиты таблиц в базе данных Мамаев Е. Microsoft SQL Server 2 - СПБ.: БХВ-Петербург, 2002. 43 с.. Используемый механизм защиты построен на использовании идентификаторов пользователей, а так же предоставляемых им прав владения и привилегий.
3.4 Идентификаторы пользователей и права владения
Идентификатором пользователя в языке SQL считается обычный идентификатор, который используется для обозначения произвольного пользователя базы данных. Каждому пользователю базы данных обязательно должен быть присвоен собственный идентификатор, назначаемый администратором базы данных. По естественным соображениям защиты данных идентификатор пользователя, чаще всего, защищен паролем. Любой выполняемый СУБД оператор SQL запускается от имени определенного пользователя. Идентификатор пользователя служит для определения того, на какие объекты базы данных он может ссылаться и на какие операции с этими объектами он имеет право. Каждый созданный в среде SQL объект обязан иметь своего владельца. Владелец присваивается идентификатором пользователя, определенным в конструкции AUTHORIZATION принадлежащей той схеме, которой данный объект принадлежит. Первоначально только владелец объекта владеет информацией о существовании данного объекта и имеет обладает правом выполнять с этим объектом какие-либо операции.
3.5 Привилегии
Каждый пользователь в SQL базе данных обладает набором привилегий. Это - то, что разрешено делать пользователю (или это файл регистрации, который может восприниматься как минимальная привилегия). Эти привилегии могут со временем претерпевать изменения - добавляются новые, удаляться старые. Часть из них определены в ANSI SQL, но существуют и дополнительные привилегии, которые также являются необходимыми. SQL-привилегии как определено в ANSI, не достаточны в большей части ситуаций реальной жизни. С другой стороны, необходимые типы привилегий могут видоизменяться соответственно с системой, используемой пользователем - в случае которой ANSI не может дать никаких рекомендаций. Привилегии, не являющиеся частью стандарта SQL, могут использовать схожий синтаксис, не всегда полностью совпадающий со стандартом. В стандарте ISO определяется следующий набор привилегий:
SELECT - позволяет выбирать данные из таблицы;
INSERT - позволяет вставлять в таблицу новые строки;
UPDATE - позволяет изменять данные в таблице;
DELETE - позволяет удалять строки из таблицы;
REFERENCES - позволяет ссылаться на столбцы из указанной таблицы в описаниях требований поддержки целостности данных;
USAGE - позволяет применять домены, проверки, наборы символов и трансляции.
Привилегии INSERT и UPDATE могут быть ограничены лишь некоторыми столбцами таблицы; в таком случае пользователь имеет возможность изменять значения указанных столбцов, но не затрагивать значения остальных столбцов таблицы. Подобным образом, привилегия REFERENCES может касаться только определенных столбцов таблицы, что позволит использовать их имена в декларациях требований защиты целостности данных (например, в конструкциях CHECK и FOREIGN KEY), входящих в дефиниции других таблиц, в то время как использование для подобных целей остальных столбцов будет запрещено.
Заключение
Стандарт ISO предусматривает применение 8 базовых типов данных: логических, символьных и битовых строк, точных и округленных чисел, даты и времени и временного интервала, и помимо этого больших двоичных объектов.
Функции языка 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 DELETE и ON UPDATE.
Представления могут применятся с целью придания структуре базы данных более простого вида с точки зрения пользователя и менее сложного формулирования запросов к базе данных. Помимо этого, представления могут использоваться для формирования защиты определенных столбцов и/или строк таблицы от неразрешенного доступа. Лишь некоторые виды представлений дают возможность обновлять данные, содержащиеся в них.
Функция COMMIT обозначает успешное окончание транзакции и необходимость фиксации в базе данных всех внесенных при ее выполнении изменений. Оператор ROLLBACK дает команду, что выполнение транзакции должно быть завершено, а все совершенные при ее выполнении изменения должны быть откачены.
В языке SQL регулирование доступа в языке SQL к данным основано на базе концепции идентификаторов для пользователей, предоставления привилегий и прав владения. Идентификаторы пользователей выделяются каждому пользователю базы данных ее администратором и служат для идентификации каждого из пользователей. В базе данных SQL любой создаваемый объект должен обладать своим владельцем. Владелец объекта имеет право предоставить другим пользователям базы данных различные привилегии доступа к этому объекту, для чего применяется оператор GRANT. После предоставления привилегий есть возможность их удаления при помощи функции REVOKE. Привилегии имют следующие декларации: USAGE, SELECT, DELETE, INSERT, UPDATE и REFERENCES, однако, следует заметить, что 3 последние могут быть ограничены лишь некоторыми столбцами таблицы или представления. Пользователь можно предоставить быть право передавать назначенные ему привилегии другим пользователям базы данных с помощью конструкции WITH GRANT OPTION. Откат данного режима осуществляется применением конструкции GRANT OPTION FOR в операторе REVOKE.
Таким образом, SQL универсальным компьютерным языком, используемом в целях создания, модификации и управления данными в реляционных базах данных. Несмотря на уже широкое распространение перспективы его развития достаточно высоки, но и в настоящее время практически во всех новых СУБД обязательным условием является поддержка стандарта SQL.
Глоссарий
№п/п |
Новое понятие |
Определение |
|
1 |
Двойное назначение SQL |
Использование языка SQL как интерактивного и как встроенного |
|
2 |
Идентификатор пользователя |
Обычный идентификатор языка SQL, используемый для обозначения некоторого пользователя базы данных |
|
3 |
Представление |
Динамически сформированный результат одной или нескольких реляционных операций, выполненных над отношениями базы данных с целью получения нового отношения |
|
4 |
Привилегии |
Определения действий, которые пользователь имеет право выполнять в отношении данной таблицы базы данных или представления |
|
5 |
Транзакция |
Логическая единица работы, состоящая из одного или нескольких операторов SQL, которая с точки зрения восстановления данных будет рассматриваться, и обрабатываться системой как единое неделимое действие |
|
6 |
Распределение транзакции |
Транзакция, осуществляемая доступ к данным, сохраняемых более чем в одном местоположение |
|
7 |
ISO |
Национальная Организация Стандартов |
|
8 |
SQL |
универсальный язык, применяемый для создания, модификации и управления данными в реляционых базах данных |
|
9 |
SELECT |
выбор данных из таблицы |
|
10 |
INSERT |
вставка в таблицу новой строки |
|
11 |
UPDATE |
изменение данных в таблице |
|
12 |
DELETE |
удаление строки из таблицы |
|
13 |
REFERENCES |
ссылка на столбцы указанной таблицы |
|
14 |
USAGE |
использование доменов, проверок, наборов символов и трансляций |
Список использованных источников
1. Агальцов В.П. Базы данных / В.П. Агальцов. - СПБ.: БХВ - Петербург, 2009. - 300 с.
2. Андон Ф. Язык запросов SQL. Учебный курс / Ф. Андон. - СПБ.: БХВ - Петербург, 2006. - 550 с.
3. Астахова И.Ф. СУБД. Язык SQL в примерах и задачах / И.Ф. Астахова, В.М. Мельников, А.П. Толстоборов, В.В. Фертиков. - СПБ.: ФИЗМАТЛИТ-Петербург, 2007. - 450 с.
4. Дунаев В.В. Базы данных. Язык SQL для студента / В.В. Дунаев. - СПБ.: БХВ - Петербург, 2007. - 230 с.
5. Дунаев В.В. Базы данных. Язык SQL для студента / В.В. Дунаев. - СПБ.: БХВ - Петербург, 2007. - 230 с.
6. Кузнецов С.Д. Основы баз данных / С.Д. Кузнецов. - СПБ.: БВХ - Петербург, 2007. - 300с.
7. Малыхина М.П. Базы данных. Основы, проектирование, использование / М.П. Малыхина. - СПБ.: БХВ - Петербург, 2006. - 528 с.
8. Рудникова Л.В. Базы данных. Разработка приложений / Л.В. Рудникова. - СПБ.: БХВ - Петербург, 2006. - 496 с.
9. Советов Б.Я. Базы данных. Теория и практика / Б.Я. Советов, В.В. Цехановский, В.Д. Чертовский. - СПБ.: БХВ - Петербург, 2005. - 464 с.
10. Харрингтон Д.Л. Проектирование реляционных баз данных / Д.Л. Харрингтон. - М.: Лори, 2006. - 400 с.
Приложения
Приложение А
Таблица №1 - Типы операторов
Оператор Назначение |
Оператор Назначение |
|
BIT_LENGTH |
Возвращает длину заданной строки в битах. Например, результат вычисления выражения BIT_LENGTH (X'FFFF') равен 16 |
|
OCTET_LENGTH |
Возвращает длину заданной строки в октетах (длина в битах, деленная на 8}. Например, результат вычисления выражения OCTET_LENGTH (X'FFFF') равен 2 |
|
CHAR__LENGTH |
Возвращает длину заданной строки в символах (или в октетах, если строка является битовой). Например, результат вычисления выражения CHAR_LENGTH (' Beech') равен 5 |
|
CAST |
Преобразует значение выражения, построенного из данных одного типа, в значение данных другого типа. В качестве примера можно привести выражение CAST (Б.2Е6 AS INTEGER) |
|
| | |
Операция конкатенации, Соединенные с помощью этой операции две символьные или битовые строки преобразуются в одну строку. Например, выражение f Name j | IName позволяет объединить в одну символьную строку имя и фамилию работника |
|
CURRENTJJSER ИЛИ USER |
Функция возвращает символьную строку, представляющую собой текущий идентификатор в системе авторизации (или, как принято говорить, имя учетной записи) текущего пользователя |
|
SESSION_USER |
Функция возвращает символьную строку, представляющую собой идентификатор текущего сеанса SQL |
|
SYSTEMJJSER |
Функция возвращает символьную строку, представляющую собой идентификатор пользователя, активизировавшего текущий модуль |
|
LOWER |
Функция преобразует в заданной строке все прописные буквы в строчные. Например, в результате вычисления выражения |
|
LOWER (SELECT fName FROM Staff WHERE staffNo = 'SL21') будет получено значение 'john' |
||
UPPER |
Функций преобразует в заданной строке все строчные буквы в прописные. Например, в результате вычисления выражения UPPER (SELECT fName FROM Staff WHERE staffNo = SL21') будет получено значение 'JOHN' |
|
TRIM |
Функция удаляет указанные ведущие (LEADING), конечные (TRAILING) или те и другие (BOTH) символы из заданной строки. Например, вычисление выражения TRIM (BOTH ' * ' FROM ' *** Hello World * * * ') даст результат 'Hello World1 |
|
POSITION |
Функция возвращает позицию одной строки в другой строке. Например, в результате вычисления выражения POSITION (' ее' IN 'Beech') будет получено значение 2 |
|
SUBSTRING |
Функция выполняет выделение подстроки из заданной строки. Например, в результате вычисления выражения SUBSTRING! 'Beech' FROM 1 то з) будет получено значение 'Bee1 |
|
EXTRACT |
Функция возвращает значение указанного поля из значения типа даты, времени или интервала. В качестве примера можно указать Выражение EXTRACT (YEAR FROM Registration. dateJoined) |
|
CASE |
Оператор возвращает одно из значений заданного набора исходя из результатов проверки выполнения указанных условий. Например |
|
CASE type |
||
WHEN 'House' THEN 1 |
||
WHEN 'Flat' THEN 2 |
||
ELSE |
||
END |
||
CURRENT_DATE |
Функция возвращает текущую дату того часового пояса, в котором |
|
находится пользователь |
||
CURRENTJTIME |
Функция возвращает текущее время того часового пояса, который в настоящее время применяется по умолчанию для текущего сеанса, Например, выражение CTJRRENTJTIME (6) возвращает текущее время с точностью до микросекунд |
|
CURRENT_TIME_STAMP |
функция возвращает текущую дату и время того часового пояса, |
|
который в настоящее время применяется по умолчанию для |
||
текущего сеанса. Например, выражение CURRENT_TIMESTAMP (O) |
||
возвратит временную отметку с точностью до целых секунд |
Приложение Б
Таблица № 2 - Скалярные типы данных языка SQL
Типы данных |
Объявления |
|
boolean |
BOOLEAN |
|
(Логический) |
||
character |
CHAR VARCHAR |
|
(Символьный) |
||
bit |
BIT |
|
(Битовый) |
BIT VARYING |
|
exact numeric |
NUMERIC |
|
(Точные числа) |
DECIMAL |
|
INTEGER |
||
SMALLINT |
||
approximate numeric |
FLOAT |
|
(Округленные числа) |
REAL |
|
DOUBLE |
||
PRECISION |
||
datetime |
DATE |
|
(Дата/время) |
TIME |
|
TIMESTAMP |
||
interval |
INTERVAL |
|
(Интервал) |
Размещено на Allbest.ru
...Подобные документы
Язык структурированных запросов SQL (Structured Query Language) и его место в сфере доступа к информации в реляционных базах данных. Структура и основные типы данных языка. Синтаксис и семантика главных операторов SQL, последние стандарты языка.
реферат [98,7 K], добавлен 29.03.2012Понятие и концепция базы данных и СУБД. Независимость приложений от организации данных во внешней памяти. Типы данных SQL, таблицы, структура языка и операторы. Преимущества модели реляционного подхода к организации баз данных и ее эффективность.
курсовая работа [69,6 K], добавлен 30.11.2009Изучение и анализ функциональных возможностей СУБД. Структура языка реляционных БД SQL (Structured Query Language). Типы данных SQL. Операторы DDL - операторы определения объектов базы данных. Примеры использования операторов манипулирования данными.
курсовая работа [39,6 K], добавлен 21.07.2012Типы данных языка SQL, определенные стандартом ISO. Средства поддержки целостности данных. Введение ограничений для доменов. Разработка рабочего проекта для автосалона. Построение информационной схемы базы. Создание форм для занесения данных в таблицы.
курсовая работа [2,5 M], добавлен 29.01.2012Работа с хранящейся в базах данных информацией. Язык описания данных и язык манипулирования данными. Распространение стандартизованных языков. Структурированный язык запросов SQL. Язык запросов по образцу QBE. Применение основных операторов языка.
презентация [76,2 K], добавлен 14.10.2013Различия между существующими диалектами SQL. Стандартизация языка SQL. Концепция баз данных. Эффективность организации данных. Структура языка SQL. Приближенные числовые типы. Интервальный тип данных. Обработка сложно структурированной информации.
курсовая работа [50,7 K], добавлен 29.05.2014Назначение языка SQL. Операторы манипулирования данными. Группировка записей, объединение таблиц, многотабличные и вложенные запросы. Добавление, удаление, определение и обновление данных. Типы данных языка SQL. Методики проектирования, ER-моделирование.
реферат [84,8 K], добавлен 15.12.2015Ознакомление со структурой, комментариями, переменными и типами данных, константами, перечислениями, преобразованием типов языка программирования высокого уровня С++. Ключевые понятия языка, идентификаторы, ключевые слова, функции, операторы, выражения.
контрольная работа [31,2 K], добавлен 12.12.2009Объекты модели хранения данных базы данных ORACLE. Взаимосвязь между логическими структурами. Средства манипулирования данными языка SQL, данными языка SQL. Структура выполнения простейших запросов. Формирование критерия отбора. Сортировка данных.
презентация [120,1 K], добавлен 14.02.2014Общие сведения о системах управления базами данных MS Access. Использование языка QBE для создания запросов на выборку данных. Параметрические и перекрестные запросы. Запросы с автоподстановкой, на выборку дубликатов и записей, не имеющих соответствия.
курсовая работа [32,8 K], добавлен 03.06.2015Обработка распределенных данных и запросов. Многопотоковые и многосерверные архитектуры. Основные типы параллелелизма при обработке запросов. Структура компонентов поддержки удаленного доступа. Доступ к базам данных в двухзвенных моделях клиент-сервер.
презентация [123,1 K], добавлен 19.08.2013Создание простого непроцедурного языка, которым может воспользоваться любой пользователь. Разработка языка запросов. Стандартный язык реляционных баз данных. Вопросы практического программирования. Фиксированный исполняемый код SQL и типы команд SQL.
доклад [1,9 M], добавлен 12.01.2011Основные конструкции структурированного языка запросов SQL. Изучение среды MS SQL Server Management Studio, проверка подлинности. Создание таблиц базы данных. Таблица specialit, сourse, group, discipline, account. Проектирование структур данных.
лабораторная работа [963,2 K], добавлен 14.01.2016Разновидности систем управления базами данных. Анализ предметной области. Разработка структуры и ведение базы данных. Структурированный язык запросов SQL. Организация выбора информации из базы данных. Общие принципы проектирования экранных форм, макросов.
курсовая работа [3,1 M], добавлен 26.02.2016Общие данные об основных операторах языка SQL. Интерактивный режим работы. Использование языка SQL для выбора информации из таблиц, для вставки, редактирования и удаления данных в них. Связь между операциями реляционной алгебры и операторами языка SQL.
реферат [146,5 K], добавлен 06.02.2015Структура и функции системы управления базами данных (СУБД). Управление хранением данных и доступом к ним. Защита и поддержка целостности данных. Надежность хранения данных во внешней памяти. Классификация СУБД по способу доступа к базе данных.
презентация [3,7 M], добавлен 05.06.2014Традиционные, специальные и дополнительные реляционные операции. Синтаксис и конструкции языка структурированных запросов SQL, типы данных. Запросы, выполняющие реляционные операции вычитания, пересечения и деления. Создание и обслуживание таблиц.
контрольная работа [57,1 K], добавлен 21.06.2016Разработка структуры базы данных в приложении Access. Создание запросов. Создание отчета для эффективного представления данных в печатном формате. Панель элементов, используемых при создании формы. Обработка данных с помощью языка запросов в SQL.
курсовая работа [1,7 M], добавлен 09.05.2012Основы работы с языком программирования Visual Basic 6.0, разработка и обработка созданных баз данных. Создание экранной формы и запросов по таблице VIP. Алгоритм совместного запроса по таблицам VIP и PROD. Методика разработки пользовательского меню.
курсовая работа [2,7 M], добавлен 04.06.2009Классификация моделей построения баз данных. Работа с реляционными базами данных: нормализация таблиц, преобразование отношений полей, преобразование функциональной модели в реляционную. Понятие языка определения данных и языка манипуляции данными.
реферат [123,0 K], добавлен 22.06.2011