Скачать 0.73 Mb.
|
Межтабличные связи и ключи. Межтабличную связь можно объявить только для пары таблиц (бинарную) и только типа (1:N) – (Родительская таблица : Дочерняя таблица). Связь определяется с помощью пары ключей: родительский ключ (REFERENCES) – один из уникальных ключей родительской таблицы (чаще всего, это ее первичный ключ), внешний ключ (FOREIGN KEY) – ключ дочерней таблицы (как правило, это неуникальный ключ). В этой связи строке родительской таблицы соответствуют все строки дочерней таблицы, у которых значение внешнего ключа равно значению родительского ключа строки родительской таблицы. Одна и та же таблица может быть и родительской и дочерней для нескольких таблиц, но в разных связях. Еще раз отметим, что родительский ключ уникальный, поэтому получаем связь типа 1:N, т.к. в родительской таблице не более одной строки с заданным значением такого ключа. Связь объявляется при дочерней таблице
Ограничения целостности базы данных. Ограничения целостности (Integrity Constraint) – это условия правильности данных. СУБД не допускает внесения изменений в данные таблиц, при которых нарушаются объявленные требования к правильности данных. Ограничения целостности можно классифицировать.
Стратегии поддержания ссылочной целостности. Существуют две основные стратегии поддержания ссылочной целостности.
Эти стратегии являются стандартными и присутствуют во всех СУБД, в которых имеется поддержка ссылочной целостности. В некоторых СУБД имеются дополнительные варианты стратегии поддержания ссылочной целостности. В дополнение к системным стратегиям программист может придумать свои уникальные стратегии поддержания ссылочной целостности и реализовать их, используя триггера и транзакции. Средства описания баз данных (DDL) в SQL. CREATE TABLE ИмяТаблицы (Колонка, ... [, ОграничениеТаблицы, ...]) Колонка = ИмяКолонки ТипКолонки [DEFAULT Константа] [ОграничениеКолонки ...] ОграничениеКолонки = NOT NULL | UNIQUE | PRIMARY KEY | CHECK(Условие) | REFERENCES ИмяРодительскойТаблицы [(ИмяЕеКолонки)] [СтратегияПоддержки] ОграничениеТаблицы = CHECK(Условие) | UNIQUE (ИмяКолонки, ...) | PRIMARY KEY (ИмяКолонки, ...) | FOREIGN KEY (ИмяКолонки, ...) REFERENCES ИмяРодительскойТаблицы [(ИмяЕеКолонки, ...)] [СтратегияПоддержки] СтратегияПоддержки = ON DELETE CASCADE | ON UPDATE CASCADE Оператор CREATE TABLE описывает (и создает пустую) таблицу, ее ограничения целостности и ее связи с родительскими таблицами.
ПРИМЕР. /* Table: PSTS, ПОСТАВЩИКИ */ CREATE TABLE PSTS ( KPST INTEGER DEFAULT 0 NOT NULL PRIMARY KEY, IMPST VARCHAR(20) DEFAULT '', ADRPST VARCHAR(30) DEFAULT '' ); /* Table: DET, ДЕТАЛИ */ CREATE TABLE DET ( KDET INTEGER DEFAULT 0 NOT NULL PRIMARY KEY, IMDET VARCHAR(20) DEFAULT '', CVET VARCHAR(10) DEFAULT '' ); /* Table: DOG, ДОГОВОРА */ CREATE TABLE DOG ( KPST INTEGER DEFAULT 0 NOT NULL REFERENCES PSTS, KDET INTEGER DEFAULT 0 NOT NULL REFERENCES DET, KOL INTEGER, DTN DATE, DTK DATE, PRIMARY KEY (KPST, KDET), CHECK (DTN ); /* Table: PST, ПОСТАВКИ */ CREATE TABLE PST ( KPST INTEGER DEFAULT 0 NOT NULL, KDET INTEGER DEFAULT 0 NOT NULL, KOL INTEGER, DTP DATE CHECK (DTP>'01.01.2000'), FOREIGN KEY (KPST, KDET) REFERENCES DOG ); Средства манипулирования данными (DML) в SQL. Имеется всего четыре, но очень мощных, оператора: SELECT (отбор), INSERT (вставка), DELETE (удаление), UPDATE (обновление).
SELECT [DISTINCT | ALL] СписокКолонок FROM ИмяТаблицы [ПсевдонимТаблицы], ... [WHERE УсловиеОтбора] [GROUP BY КлючГруппировки] [HAVING УсловиеОтбораПослеГруппировки] [ORDER BY КлючУпорядочения] [UNION [ALL] Select-оператор] ПсевдонимТаблицы – произвольное имя. Если псевдоним не указан, то по умолчанию он совпадает с ИменемТаблицы. Семантика оператора SELECT. По исходным FROM-таблицам, назовем их Т1,... строится безымянная выходная таблица.
Строится W3 = в W3 формируется точно по одной строке для каждой группы из W2. Способ формирования такой строки по группе определяется СпискомКолонок, детали рассмотрим позже.
Строки полученного результата добавляются к W4, поэтому результат UNION-фразы должен быть таблицей, совместимой с W4. Если UNION-фраза не имеет уточнения ALL, то добавляются только строки, хотя бы чем-то отличающиеся по значению от строк, уже имеющихся в W4.
Выражения в SQL.
Групповые выражения строятся с помощью групповых функций.
Если указано уточнение DISTINCT, то каждое из полученных для строк группы значений ПростогоВыражения участвует в сумме точно один раз без повторений.
Аргумент = * | DISTINCT ПростоеВыражение имеет значением для Аргумент = * - количество строк в группе, а для другого вида Аргумента –количество различных значений ПростогоВыражения по всем строкам группы. ПРИМЕР. Пусть таблица поставок PST сгруппирована по ключу группировки PST.KDET. COUNT(DISTINCT PST.KPST) – количество разных поставщиков уже поставивших деталь KDET. COUNT(*) – количество партий этой детали уже полученных от всех поставщиков. SUM(PST.KOL) – общее количество в штуках детали KDET уже полученное, суммарно по всем поставщикам. Из вышеприведенных групповых выражений можно строить более сложные групповые выражения, используя дополнительно константы, имена полей и операции базовых типов данных.
Ниже Выражение – простое или групповое выражение.
Набор операций Сравнения для базовых типов данных: = < > и т.п.
SelectOne-оператор должен строить одно колоночную таблицу с одной строкой.
E1 BETWEEN E2 AND E3 в терминах языка Паскаль имеет смысл E1 IN [E2..E3], а NOT – отрицание.
E1 IN (E2,...) в терминах языка Паскаль: E1 IN [E2,...].
SelectList-оператор строит одно колоночную таблицу.
E > ALL (SelectList-оператор) имеет смысл: E строго больше всех значений из строк одно колоночной таблицы. SOME ... хотя бы одного значения...
Имеет смысл: результат Select-оператора непустая таблица. Из вышеприведенных условий можно строить более сложные с помощью операций логики высказываний: AND OR NOT. Теперь вернемся к синтаксису оператора SELECT.
Если надо включить все колонки FROM-таблиц, то качестве элемента СпискаКолонок можно использовать [ПсевдонимТаблицы.]* Имена колонок результирующей таблицы:
ПРИМЕРЫ.
SELECT Psts.ImPst, Pst.Kol FROM Pst, Psts WHERE (Psts.KPst=Pst.KPst) AND (Pst.KDet=1010) AND (Pst.Kol>1000)
SELECT KDet,COUNT(DISTINCT KPst) AS KolPst FROM Pst GROUP BY KDet
SELECT MAX(Det.ImDet), Det.KDet, COUNT(*) AS KolP FROM Det,Pst WHERE Det.KDet=Pst.KDet GROUP BY Det.KDet ORDER BY 1 Замечание: MAX пришлось использовать по техническим причинам – InterBase «не любит неключевые поля там».
SELECT DISTINCT Dog.* FROM Dog,Pst WHERE (Dog.KPst=Pst.KPst)AND(Dog.KDet=Pst.KDet) Замечание: Задачу решает декартово произведение с выборкой (естественное соединение), DISTINCT исключает повторы, появляющиеся от декартова произведения.
SELECT Dog.* FROM Dog WHERE NOT EXISTS ( SELECT Pst.* FROM Pst WHERE (Dog.KPst=Pst.KPst)AND(Dog.KDet=Pst.KDet))
SELECT Dog.KPst,Dog.KDet, SUM(Pst.Kol)-MAX(Dog.Kol) FROM Dog,Pst WHERE (Dog.KPst=Pst.KPst)AND(Dog.KDet=Pst.KDet) GROUP BY Dog.KPst,Dog.KDet HAVING SUM(Pst.Kol)>Dog.Kol Замечание: опять пришлось использовать MAX по техническим причинам. |
Аис поз Установка. Обновление версии. Резервное копирование базы данных. Восстановление базы данных. 5 |
Windows Банк Клиент Инструкция по переходу на версию 1 Для перехода на версию 1 с предыдущих версий системы Банк-Клиент нужно сначала выполнить установку новой версии с созданием пустой... |
||
Финансовая разведка Тем не менее, криминальный рынок полон объявлений, предлагающих приобрести по сходной цене базы данных мвд, гибдд, сотовых операторов,... |
Инструкция по обновлению фк цз Фк цз в администрирование, в авторизации набрать admin, пароль hcadmin. В главном меню выбрать «Операции» – «Резервное копирование... |
||
Инструкция по обновлению фк рир Фк рир в администрирование, в авторизации набрать admin, пароль hcadmin. В главном меню выбрать «Операции» – «Резервное копирование... |
Пояснительная записка Студент Организация данных. Sql дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между... |
||
Пояснительная записка Студент Организация данных. Sql дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между... |
Методические указания к курсовой работе по дисциплине Базы данных... Дисциплина «Базы данных» для направления 230700. 62 «Прикладная информатика» подготовки бакалавра |
||
Методические указания к практическим работам по дисциплине «Базы данных» Методические указания предназначены для проведения практических занятий по дисциплине «Базы данных», для специальности ксиК |
Пер с англ. — М. Издательский Архитектура системы баз данных 65 Глава Введение в реляционные базы данных 92 |
||
Инструкция по установке и работе с программой заполнение базы данных В настоящем документе представлена краткая инструкция пользователю по установке и работе с программой Заполнение базы данных студентов... |
Лекция Язык sql 46 вставка одного запроса внутрь другого 68 как работает... Эти базы данных создаются и функционируют под управлением специальных программных комплексов, называемых системами управления базами... |
||
Методические указания для выполнения лабораторных работ и «Базы данных» Лабораторная работа №1 «Организация хранения данных в субд ms access» |
3. Заполнение базы данных, модификация данных На предыдущем этапе... ... |
||
Лабораторная работа №1: Создание баз данных В этой утилите можно выполнить типовые задачи обслуживания баз данных, такие как резервирование и восстановление. Здесь можно настраивать... |
Программа дисциплины «Информатика» Е дисциплины «Информатика» учебным планом отводится 200 часов, в том числе лекционные занятия – 34 часов, лабораторные работы – 72... |
Поиск |