ПЛЕЩ. Учебное пособие содержит
Скачать 3.78 Mb.
|
1.7. Стандартизация баз данныхВ области информатики работает более 250 подкомитетов официальных стандартизирующих организаций. Приведем основные стандарты. SQL 2008 расширение SQL92 возможностей управления хранимыми процедурами, объектноориентированными таблицами, средствами определения типов и методов доступа к ним. ODMG93 - обеспечивает независимость прикладных программ от систем управления объектными базами (СУОБД). CORBA управление взаимодействием клиентов и серверов в распределенной сетевой среде с различными типами ОС и компьютеров. SSA (IBM) обеспечивает переносимость операционных систем. ODBC, ADO (Microsoft), BDE (Borland) доступ к базам данных с различными СУБД из прикладных программ (для BDE разработанных в Delphi). 1.8. Язык SQL1.8.1. Введение в SQLSQL (Structured Query Language) – Структурированный Язык Запросов – стандартный язык запросов по работе с реляционными БД. Язык SQL появился после реляционной алгебры, в конце 70-х годов в компании IBM Research. В дальнейшем этот язык применялся во многих коммерческих СУБД и стал стандартом «де-факто» для языков манипулирования данными в реляционных СУБД. Первый международный стандарт языка SQL был принят в 1989 г. (SQL/89 или SQL1 или ANSI/ISO). В настоящее время действует стандарт, принятый в 2008 году (SQL:2008) Операторы SQL встраиваются в базовый язык программирования, которым может быть любой стандартный язык типа C++, C#, Delphi, PHP и др. Кроме того, операторы SQL могут выполняться непосредственно в интерактивном режиме. SQL подразделятся на два подмножества команд: DDL (Data Definition Language - язык определения данных) и DML (Data Manipulation Language - язык обработки данных). Команды DDL используются для создания новых баз данных, таблиц и столбцов, а команды DML - для чтения, записи, сортировки, фильтрования, удаления данных. Существуют два типа языков описания запросов: язык запросов по образцу QBE (Query By Example) и структурированный язык запросов SQL (Structured Query Language). Язык QBE предполагает использование визуальных средств построения результирующей таблицы из первоначально пустой таблицы путем выборки и связывания нужных исходных таблиц и запросов, перетаскивания мышкой нужных колонок, формирования мастерами расчетных колонок и условий отбора записей, сортировки, группировки и агрегирования данных. Примером использования QBE является запросная форма СУБД Access. Язык SQL предполагает использование командных средств. Хотя синтаксис команд языка SQL и достаточно унифицирован для различных СУБД, но есть некоторые отличия в деталях. Существуют статический SQL (команды SQL включаются в выполняемый модуль после компиляции) и динамический SQL (команды SQL формируются в процессе выполнения программы и выполняются в интерпретирующем режиме). В результате выполнения запроса на выборку формируется новая таблица, называемая представлением (View), к которой устанавливается соответствующий указатель, называемый курсором (Cursor). Курсор служит для ссылки на нужное представление в командах открытия, перемещения по записями и закрытия нужного представления (п. 4.3.6). Приведем классификацию основных команд SQL Операторы определения данных DDL CREATE TABLE - создает новую таблицу в БД. DROP TABLE - удаляет таблицу из БД. ALTER TABLE - изменяет структуру существующей таблицы или ограничения целостности, задаваемые для данной таблицы. CREATE VIEW - создает виртуальную таблицу, соответствующую. некоторому SQL-запросу. ALTER VIEW - изменяет ранее созданное представление. DROP VIEW - удаляет ранее созданное представление. CREATE INDEX - создает индекс для некоторой таблицы для обеспечения быстрого доступа по атрибутам, входящим в индекс. DROP INDEX - удаляет ранее созданный индекс. Операторы манипулирования данными (DML) DELETE - удаляет одну или несколько строк, соответствующих условиям фильтрации, из базовой таблицы. INSERT - вставляет одну строку в базовую таблицу. Допустимы модификации оператора, при которых сразу несколько строк могут быть перенесены из одной таблицы или запроса в базовую таблицу. UPDATE - обновляет значения одного или нескольких столбцов в одной или нескольких строках, соответствующих условиям фильтрации. Язык запросов Data Query Language (DQL) SELECT - оператор, заменяющий все операторы реляционной алгебры и позволяющий сформировать результирующее отношение, соответствующее запросу. Средства управления транзакциями COMMIT - завершить комплексную взаимосвязанную обработку информации, объединенную в транзакцию. ROLLBACK - отменить изменения, проведенные в ходе выполнения транзакции. SAVEPOINT - сохранить промежуточное состояние БД, пометить его для того, чтобы можно было в дальнейшем к нему вернуться. Средства администрирования данных ALTER DATABASE - изменить набор основных объектов в базе данных, ограничений, касающихся всем базы данных. ALTER DBAREA - изменить ранее созданную область храпения. ALTER PASSWORD - изменить пароль Изменить пароль для всей базы данных. CREATE DATABASE - создать новую базу данных, определив основные параметры для нее. CREATE DBAREA - создать новую область хранения и сделать ее доступной для размещения данных. DROP DATABASE - удалить существующую базу данных (только в том случае, когда вы имеете право выполнить это действие). DROP DBAREA - удалить существующую область хранения (если в ней на настоящий момент не располагаются активные данные). GRANT - предоставить нрава доступа на ряд действий над некоторым объектом БД. REVOKE - лишить прав доступа к некоторому объекту или некоторым действиям над объектом. Программный SQL DECLARE - задает некоторое имя и определяет связанный с ним запрос к БД, который соответствует виртуальному набору данных. OPEN - формирует виртуальный набор данных (курсор), соответствующий описанию указанного курсора и текущему состоянию БД. FETCH - считывает очередную строку, заданную параметром команды из виртуального набора данных, соответствующего открытому курсору. CLOSE - прекращает доступ к виртуальному набору данных, соответствующему указанному курсору. PREPARE - сгенерировать план выполнения запроса, соответствующего заданному оператору SQL. EXECUTE - выполнить оператор SQL, ранее подготовленный к динамическому выполнению. . В коммерческих СУБД набор основных операторов расширен. В большинство СУБД включены операторы определения и запуска хранимых процедур и операторы определения триггеров. Рассмотрим еще несколько команд. CREATE TABLE<имя таблицы> (<поле> <тип поля> [NotNull], ...) создание таблицы (Create Table Kadr (Tab Integer, Fam Char (30) Not Null Primary Key (Tab))). Обязательное присутствие значения в поле задается параметром Not Null. Основные типы полей в SQL в Delphi: SmallInt (Short), Integer (Long Integer), Numeric(x,y), Float (x,y), Char (n), Data, Boolean, Time, Money, Autoinc. Для других СУБД типы полей могут быть другими. CREATE VIEW<имя представления> [(<имя столбца>,...)] AS <оператор SELECT> создание представления с новыми именами столбцов (Create View NameStroek As Select Stroiki.Ns FROM Stroiki). ALTER TABLE<имя таблицы> {ADD | MODIFY | DROP} <поле> [<тип поля>] [NOT NULL, ... изменение структуры таблицы: включение (Add), изменение (Modify) и удаление (Drop, тип поля не указывается) полей таблицы (Alter Table Stroiki Add Gorod Integer Drop Kp). UPDATE<таблица> Set <имя поля>={<новое значение>|NULL}, ... [WHERE <условие>] изменение значений полей (Update Kadr Set Oklad=1.5*Oklad Where Cex=”Цех N2”). CREATE TABLE<имятаблицы> (<поле> <типполя> [NOT NULL], ...) создание таблицы (Create Table Kadr (Tab Integer, Fam Char (30) Not Null Primary Key (Tab))). Обязательное присутствие значения в поле задается параметром Not Null. Основные типы полей в SQL в Delphi: SmallInt (Short), Integer (Long Integer), Numeric(x,y), Float (x,y), Char (n), Data, Boolean, Time, Money, Autoinc. Для других СУБД типы полей могут быть другими. ALTER TABLE<имятаблицы> {ADD | MODIFY | DROP} <поле> [<типполя>] [NOT NULL, ... изменение структуры таблицы: включение (Add), изменение (Modify) и удаление (Drop, тип поля не указывается) полей таблицы (Alter Table Stroiki Add Gorod Integer Drop Kp). UPDATE <таблица> SET <имя поля>={<новое значение>|NULL}, ... [WHERE <условие>] изменение значений полей (Update Kadr Set Oklad=1.5*Oklad Where Cex=”Цех N2”). INSERT INTO<имя таблицы>(<список полей>) {VALUES (<список значений>)| SELECT...} включение новой записи или группы записей из другой таблицы. Примеры Insert Into Zakazhiki (Kz,Nz) Values (3,’ЗИЛ’); // включение одной записи Insert Into Podrjdhiki (Kp,Np) Select KPodr, NPodr From SpravPodr Where DSozd >01.01.80; //включение группы записей из таблицы SpravPodr CREATE [UNIQUE] INDEX <имяиндекса> ON <таблица> (<поле> [{ASC|ESC}],...) создание индекса (Create index indproba on stroiki (kz, kp)). DROP TABLE/VIEW <имя> удаление таблицы/представления (Drop Table Stroiki). DROP INDEX[“<имя таблицы>”.]<имя индекса> удаление индекса. DROP INDEX [“<имя таблицы>”.]PRIMARY удаление главного индекса. DELETE FROM <имя таблицы> [WHERE<условие>] удаление записей. |