Ответы к экзамену по БД, страница 7
Описание файла
PDF-файл из архива "Ответы к экзамену по БД", который расположен в категории "". Всё это находится в предмете "базы данных" из 7 семестр, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "к экзамену/зачёту", в предмете "базы данных" в общих файлах.
Просмотр PDF-файла онлайн
Текст 7 страницы из PDF
Стандарты SQL, способы его реализации. Структура языка SQL.ВведениеSQL - универсальный компьютерный язык, применяемый для создания, модификации и управленияданными в реляционных базах данных. SQL основывается на реляционной алгебре.SQL является, прежде всего, информационно-логическим языком, предназначенным для описанияхранимых данных, для извлечения хранимых данных и для модификации данных. SQL не является языком программирования.Язык SQL представляет собой совокупность операторов.18.2Стандарты SQLПервый официальный стандарт языка SQL был принят ANSI в 1986 году и ISO (Международной организацией по стандартизации) в 1987 году (так называемый SQL-86) и несколько уточнён в 1989 году.Дальнейшее развитие языка поставщиками СУБД потребовало принятия в 1992 году нового расширенного стандарта (ANSI SQL-92 или просто SQL2).
Следующим стандартом стал SQL:1999 (SQL3). Внастоящее время действует стандарт, принятый в 2003 году (SQL:2003) с небольшими модификациями,внесёнными позже.18.3Структура SQL (операторы)Операторы определения данных (Data Definition Language, DDL)1. CREATE создает объект БД (саму базу, таблицу, представление, пользователя и т.д.)2. ALTER изменяет объект3. DROP удаляет объектОператоры манипуляции данными (Data Manipulation Language, DML)1.2.3.4.SELECT считывает данные, удовлетворяющие заданным условиямINSERT добавляет новые данныеUPDATE изменяет данныеDELETE удаляет данныеОператоры определения доступа к данным (Data Control Language, DCL)1.
GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом2. REVOKE отзывает ранее выданные разрешения3. DENY задает запрет, имеющий приоритет над разрешениемОператоры управления транзакциями (Transaction Control Language, TCL)1. COMMIT применяет транзакцию.2. ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции.3. SAVEPOINT делит транзакцию на более мелкие участки.218.4Преимущества и недостаткиПреимущества:1. Независимость от конкретной СУБД2.
Наличие стандартов3. ДекларативностьНедостатки:1.2.3.4.18.5Несоответствие реляционной модели данныхСложностьОтступления от стандартовСложность работы с иерархическими структурамиУровни соответствия стандартуНа текущий момент все усилия по проверке СУБД на соответствие стандарту ложатся на её производителя.До 1996 года вопросами соответствия коммерческих реализаций SQL стандарту занимался в основномНациональный институт стандартов и технологий (NIST), который и устанавливал уровень соответствия стандарту.Впервые понятие «уровня соответствия» было предложено в стандарте SQL-92.
А именно, ANSI иNIST определяли четыре уровня соответствия реализации этому стандарту:1.2.3.4.Entry (базовый)Transitional (переходный)Intermediate (промежуточный)Full (полный)Легко можно понять, что каждый последующий уровень соответствия заведомо подразумевал соответствие предыдущему уровню.
Далее, согласно данной лесенке стандартов любая СУБД, котораясоответствовала уровню Entry, могла заявлять себя как “SQL-92 compliant”, хотя на самом деле переносимость и соответствие стандарту ограничивалось набором возможностей, входящих в этот уровень.Положение изменилось с введением стандарта SQL:1999.
Отныне стандарт приобрёл модульную структуру — основная часть стандарта была вынесена в раздел SQL/Foundation, все остальные были выведены в отдельные модули. Соответственно, остался только один уровень совместимости — Core, что означало поддержку этой основной части. Поддержка остальных возможностей оставлена на усмотрениепроизводителей СУБД. Аналогичное положение имело место и с последующими версиями стандарта.319. Операторы ЯМД в Т-SQL: состав и назначение. Примеры.Язык манипулирования (управления) данными (ЯМД) или Data Manipulation Language (DML) — это семействокомпьютерных языков, используемых в компьютерных программах или пользователями баз данных дляполучения, вставки, удаления или изменения данных в базах данных.Состав и назначениеINSERT — осуществляет вставку строк в таблицуСинтаксисINSERT[INTO][(column_list)][ <OUTPUT Clause> ]{VALUES ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n ]}ПримерINSERT INTO TableVALUES (35, ‘Ivanov’, ‘Ivan’, ‘M’);DELETE — осуществляет удаление строк из таблицыСинтаксисDELETE[ TOP ( expression ) [ PERCENT ] ][ FROM ][ <OUTPUT Clause> ][ FROM <table_source> [ ,...n ] ][ WHERE { <search_condition> }]ПримерDELETE FROM TableWHERE Name != ‘Ivan’;UPDATE — осуществляет изменение данных в таблицеСинтаксисUPDATE { table_alias }SET{ column_name= { expression | DEFAULT | NULL }}[ <OUTPUT Clause> ][ FROM { <table_source> } [ ,...n ] ][ WHERE { <search_condition> ]ПримерUPDATE TableSET Name = ‘Ivan’WHERE Surname LIKE ‘Ivanov’SELECT — осуществляет выборку данных из таблиц по запросу.Синтаксис<SELECT statement> ::=<query_expression>[ ORDER BY { order_by_expression | column_position [ ASC | DESC ] } [ ,...n ] ][ COMPUTE { { AVG | COUNT | MAX | MIN | SUM } (expression )} [ ,...n ][ BY expression [ ,...n ] ]]<query_expression> ::={ <query_specification> | ( <query_expression> ) }[ { UNION [ ALL ] | EXCEPT | INTERSECT }<query_specification> | ( <query_expression> ) [...n ] ]<query_specification> ::=SELECT [ ALL | DISTINCT ]< select_list >[ INTO new_table ][ FROM { <table_source> } [ ,...n ] ][ WHERE <search_condition> ][ <GROUP BY> ][ HAVING < search_condition > ]ПримерSELECT fio, uch_zavedenie, pol, family_status, spec, kat_obucheniya, mp, gp, mo, gokFROM uzbJOIN vuz ON vuz_k = vuz.codJOIN family ON sem_polog_k = family.codJOIN kat_obuch ON kat_obuch_k = kat_obuch.codWHERE kat_obuch_k IN(SELECT codFROM kat_obuchWHERE kat_obucheniya= 'УЧАЩИЙСЯ')AND data_rogden like '%66'AND spec in ('000601','000701','001001','001501','001801')AND gp in ('88', '90')ORDER BY gp, spec, uch_zavedenie20.
Способы определения правил целостности БД в Т-SQL. Задание правилцелостности на уровне домена и таблицы.Самым простым способом поддержки целостности данных является создание правил или контрольныхограничений, причем двух типов:- на уровне поля- на уровне таблицыОграничители это элементарные проверки или условия, которые выполняются для операций вставки имодификации значения столбца.
Если данная проверка не проходит или условие не выполняется, то вставкаили модификация отменяется, а в программу клиента передается ошибка. SQL-серверы, как правило,поддерживают следующие ограничители.• NOT NULL - проверка на непустое значение. NULL - специальное понятие в СУБД, которое означает"пусто".• UNIQUE - проверка на уникальность.• PRIMARY KEY - первичный ключ.
Значение в столбце считается первичным ключом, если оно непустоеи уникально в пределах столбца данной таблицы.SQL-технология позволяет на уровне столбца задавать домены значений, т.е. строго определенные наборыили диапазоны значений, для помещаемых в столбец данных. В частности можно реализовывать ограниченияссылочной целостности и проверки фиксированного условия. Ограничение ссылочной целостности непозволяет значениям из столбца одной таблицы принимать значения кроме как из присутствующих в столбцедругой таблицы. Это делается при помощи ограничителей FOREIGN KEY (внешний ключ) и REFERENCES(указатель ссылки).
Таблица, содержащая FOREIGN KEY, считается родительской таблицей. Таблица,содержащая REFERENCES, считается дочерней таблицей. Внешний ключ и указатель ссылки могут находиться водной таблице, т.е. родительская таблица одновременно является дочерней.• FOREIGN KEY - внешний ключ. Назначает столбец или комбинацию столбцов в текущей (родительской)таблице в качестве внешнего ключа для ссылки из других таблиц.• REFERENCES - указатель ссылки (или родительский ключ). Указывает на столбец (комбинациюстолбцов) в родительской таблице, ограничивающую значения в текущей (дочерней) таблице.CHECK - проверка фиксированного условия. В данном ограничителе явно указывается условие, котороедолжно выполняться для вставляемого или модифицируемого значения в столбце.
Например: check (user in'ALEX','JUSTAS') - в столбце user могут содержаться только значения 'ALEX' и 'JUSTAS', попытка вставкизначения 'SHTIRLITZ' будет интерпретирована как ошибочнаяК одному столбцу можно применять несколько проверочных ограничений. Кроме того, можно применять однопроверочное ограничение к нескольким столбцам. Для этого ограничение нужно создать на уровне таблицы.Например, с помощью проверочного ограничения на несколько столбцов можно подтвердить то, что любаястрока со значением USA в столбце country/region может принимать двухсимвольное значение встолбце state. Это позволяет выполнить проверку сразу нескольких условий из одного выражения.Примерcreate table poss2--ограничения на уровне поля, то есть для каждого конкретного столбца в лоб задаем ограничения(nomer integer check (nomer between 1 and 700000),fio char (40) not null check (fio not like '%.%' or fio not like '%-%'),pol char(1) check (pol like 'M' or pol like 'Ж'),kat_obuch_k char(2) check (kat_obuch_k between '01' and '17'),vuz_k integer check (vuz_k between 128955 and 8199999),gp char(2) check (gp between '00' and '99'),gok char(2) check (gok between '00' and '99'),--ограничения на уровне таблицы, мы тут уже используем не один столбец, а несколькоconstraint kat_obuch_const check((kat_obuch_k in ('01', '02') and(convert (integer, gok) - convert (integer, gp))=1) or(kat_obuch_k='08' and (convert(integer, gok) convert (integer, gp))=4) or(kat_obuch_k in('10', '11') and(convert (integer, gok) - convert (integer, gp)) in (1, 2))))21.