Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Операторы защиты и управления даннымиСодержание книги Поиск на нашем сайте
· CREATE ASSERTION - создать ограничение · DROP ASSERTION - удалить ограничение · GRANT - предоставить привилегии пользователю или приложению на манипулирование объектами · REVOKE - отменить привилегии пользователя или приложения Кроме того, есть группы операторов установки параметров сеанса, получения информации о базе данных, операторы статического SQL, операторы динамического SQL. Наиболее важными для пользователя являются операторы манипулирования данными (DML). №23 Оператор SELECT является фактически самым важным для пользователя и самым сложным оператором SQL. Он предназначен для выборки данных из таблиц, т.е. он, собственно, и реализует одно их основных назначение базы данных - предоставлять информацию пользователю. <SELECT ><[ALL|DISTINCT] >< набор_атрибутов ><FROM >< набор_ > отношений ><[WHERE >< условие_отбора_строк] ><[GROUP ><BY >< спецификация >< группировки] ><[HAVING >< спецификация >< выбора_групп] ><[ORDER ><BY >< спецификация >< сортировки] > Раздел >< >< >< FROM ><><><><определяет >< >< ><таблицы >< >< ><или >< >< ><запросы, >< >< >< ><служащие ><источником ><данных. ><В ><случае, ><если ><указано ><более ><одного ><имени ><таблицы ><по ><умолчанию ><предполагается, ><что ><над ><перечисленными ><таблицами ><будет ><выполнена ><операция ><декартова ><произведения. ><Например, ><запрос ><SELECT ><* ><FROM ><А, ><В ><соответствует ><декартову ><произведению ><отношений ><А ><и ><В. Пример. Выбрать все данные из таблицы поставщиков (ключевые слова SELECT … FROM …): SELECT * FROM P №24 < Раздел >< WHERE ><><задает ><условия ><отбора ><строк. ><Имена ><атрибутов, ><входящие ><в ><предложение ><WHERE ><могут ><не ><входить ><в ><набор ><атрибутов, ><перечисленных ><в ><предложении ><SELECT.> <В ><выражении ><условий ><раздела ><WHERE ><могут ><быть ><использованы ><следующие ><предикаты:> ■ <Предикаты ><сравнения ><{=, ><>, ><<, ><>=, ><<=, ><<>.}.> ■ <Предикат ><BETWEEN ><A ><AND ><В. ><Предикат ><истинен, ><когда ■ <Предикат ><вхождения ><в ><множество ><IN ><(множество) ><истинен ><тогда, ><когда ><сравниваемое ><значение ><входит ><в ><множество ><заданных ><значений. ><При ><этом ><множество ><может ><быть ><задано ><простым ■ <Предикаты ><сравнения ><с ><образцом ><LIKE ><и ><NOT ><LIKE. ><Предикат ><LIKE ><требует ><задания ><шаблона, ><с ><которым ><сравнивается ><заданное ><значение.> Пример: Написать запрос, выбирающий из таблицы STUDENT сведения о студентах, фамилии которых начинаются на букву «Р». SELECT * FROM STUDENT WHERE surname LIKE 'Р%';
■ Предикат ><сравнения ><с ><неопределенным ><значением ><IS ><NULL. ><Неопределенное ><значение ><интерпретируется ><в ><реляционной ><модели ><как ><значение, ><неизвестное ><в ><данный ><момент ><времени. ><Это ><значение ><при ><появлении ><некоторой ><дополнительной ><информации ><в ><любой ><момент ><времени ><может ><быть ><заменено ><некоторым ><конкретным ><значением.> <■ ><Предикаты ><существования ><EXISTS ><и ><не ><существования ><NOT ><EXISTS. <<Когда ><запрос ><включает ><предложение ><WHERE, ><СУБД ><просматривает ><всю ><таблицу ><по ><одной ><записи, ><чтобы ><определить ><является ><ли ><предикат ><истинным. ><Предикат ><может ><включать ><неограниченное ><число ><условий, ><содержащих ><булевы ><операторы. ><Стандартными ><булевыми ><операторами ><в ><SQL ><являются >< AND, >< OR ><и >< NOT. №25 Ключевое слово <GROUP BY > > используется ><для ><создания ><итоговых ><запросов. ><Итоговые ><запросы ><имеют ><одно ><общее ><свойство – ><в ><предложении ><SELECT ><<таких ><запросов ><используется, ><по ><крайней ><мере, ><одна ><агрегатная ><функция. <Синтаксис: ><GROUP ><BY >< имя_ >< столбца > <Имя ><столбца ><- ><имя ><любого ><столбца ><из ><любой ><из ><упомянутой ><в ><разделе ><FROM ><таблицы.> <Если ><GROUP ><BY ><расположено ><после ><WHERE ><создаются ><группы ><из ><строк, ><выбранных ><после ><применения ><раздела ><WHERE.> <При ><включении ><раздела ><GROUP ><BY ><в ><инструкцию ><SELECT ><список ><полей ><должен ><состоять ><из ><итоговых ><функций ><SQL ><(AVG, COUNT, ><MAX, MIN, SUM ><и ><др.) ><и ><из ><имен ><столбцов, ><указанных ><в ><разделе ><GROUP ><BY. ><В ><раздел ><GROUP ><BY ><должны ><быть ><включены ><все ><атрибуты, ><входящие ><в ><раздел ><SELECT.> <В ><предложение ><GROUP ><BY ><могут ><быть ><указаны ><одновременно ><несколько ><столбцов. ><Группы ><при ><этом ><определяются ><слева ><направо. ><Предложение ><GROUP ><BY ><автоматически ><устанавливает ><сортировку ><по ><возрастанию ><(если ><надо ><по ><убыванию ><- ><задать ><в ><ORDER ><BY). Раздел ORDER BY . Оператор ORDER BY (сортировать по) применяется для упорядочения (сортировки) записей. Если он используется в запросе, то в самом конце запроса. Этот оператор сортирует строки всей таблицы или отдельных ее групп (в случае применения оператора GROUP BY). Если в выражении запроса оператора GROUP BY нет, то оператор ORDER BY рассматривает все записи таблицы как одну группу. Вслед за ключевым словом ORDER BY указывается столбец, по значениям которого следует произвести сортировку. После имени столбца можно указать ключевое слово, задающее порядок (режим) сортировки: ü ASC – по возрастанию. ü DESC – по убыванию. Если в выражении ORDER BY указаны несколько столбцов сортировки, то сначала записи упорядочиваются по значениям первого столбца, затем для каждого значения первого столбца записи упорядочиваются по значениям второго столбца и т.д. <Ра>< здел >< HAVING >< ><задает ><условие ><отбора ><групп ><строк, ><которые ><включаются ><в ><таблицу, ><определяемую ><инструкцией ><SELECT.> <Условия ><отбора ><применяется ><к ><столбцам, ><указанным ><в ><разделе ><GROUP ><BY, ><к ><столбцам ><итоговых ><функций ><или ><к ><выражениям, ><содержащим ><итоговые ><функции. ><Если ><некоторая ><группа ><не ><удовлетворяет ><условию ><отбора, ><она ><не ><попадает ><в ><набор ><записей.> < Синтаксис: ><HAVING ><условие_отбора> <Разница ><между ><HAVING ><и ><WHERE ><заключается ><в ><том, ><что ><условие ><отбора, ><заданное ><в ><разделе ><WHERE ><применяется ><к ><отдельным ><записям, ><перед ><их ><группировкой, ><а ><условие ><отбора ><раздела ><HAVING ><применяется ><к ><группам ><строк.> <Если ><раздел ><GROUP ><BY ><находится ><перед ><HAVING, ><условие ><отбора ><применяется ><к ><каждой ><из ><групп, ><сформированных ><на ><основе ><совпадения ><значений ><в ><заданных ><столбцах. ><В ><случае ><отсутствия ><раздела ><GROUP ><BY ><условие ><отбора ><применяется ><ко ><всей ><таблице ><определенной ><инструкцией ><SELECT. ><Агрегатные ><функции ><могут ><применяться ><как ><в ><выражении ><вывода ><результатов ><строки ><SELECT, ><так ><и ><в ><выражении ><обработки ><сформированных ><групп ><HAVING.> 26 SQL (англ. Structured Query Language — «язык структурированных запросов») — универсальный компьютерный информационно-логический язык, появившийся в результате разработки реляционной модели данных, применяемый для создания, модификации и управления данными в реляционных базах данных. TRANSLATE nstr Substr Length Replace NULLIF(V1,V2):= CASE WHEN (V1= V2) THEN NULL ELSE V1 END; Это означает, что, если первый параметр равен второму, функция возвращает NULL, иначе — значение первого параметра. Свойства функции позволяют использовать ее с самыми разными целями. Посмотрите на список наиболее важных из этих свойств. Функция COALESCE(<value expression>..., <value expression>) сканирует список всех <value expression> слева направо и возвращает первое не-NULL-значение в нем. Если все они равны NULL, результат также будет NULL. Аналогом этой функции в DB2 и других основанных на ней реализациях SQL является функция VALUE(<value expression>..., <value expression>). ABS(x) — возвращает абсолютное значение х. POWER (х, n) — возводит число х в степень п. SQRT(x) — возвращает квадратный корень из х. ROUND(x, p) — округляет число х до p десятичных знаков. COUNTERS), NUMBER(), IDENTITY() — при каждом обращении к функции в выражении возвращает значение, увеличенное на 1. Таким способом генерируются уникальные идентификаторы. (х MOD m) или M0D(x, m) находит модуль или арифметический остаток.
TO_CHAR Преобразует свои аргументы в символьный тип TO_DATE Преобразует свои аргументы в тип DATE TRANSLATE Функции MySQL · date_format (date,format) - дату в строку; · time_format (time,format) - время в строку; · format (number,precision) - число в cтроку типа '#,###,###.##', где число знаков определяется вторым аргументом. select date_format(date '2010-02-01', '%c месяца %d дней %Y год') as cФункции CAST и CONVERT преобразуют значение (локальную переменную, столбец или выражение) из одного типа данных в другой. Например, приведенная ниже функция CAST преобразует числовое значение $157.27 в строку символов '157.27': CAST ($157.27 AS VARCHAR(10))Рассмотрим перечень агрегирующих функций. - count определяет количество записей данного поля в группе строк. - sum вычисляет арифметическую сумму всех выбранных значений данного поля. - avg рассчитывает арифметическое среднее (усреднение) всех выбранных значений данного поля. - max находит наибольшее из всех выбранных значений данного поля. - min находит наименьшее из всех выбранных значений данного поля. Пример: select sum(Цена) from Туры Подзапрос -это оператор выбора, который содержится внутри другого оператора выбора, вставки, обновления или удаления, внутри условного оператора или внутри другого подзапроса. Простой запрос содержит одно условие, а сложный запрос содержит несколько условий для различных полей. ЗАПРОС – объект БД, который позволяет проводить основные операции по обработке данных – сортировку, фильтрацию, объединение данных из разных источников – и сохранять результаты с некоторым именем, чтобы в дальнейшем применять эти операции по мере необходимости. Оператор UNION принимает две таблицы и строит из них третью. Эти таблицы должны быть совместимы по объединению, т.е. содержать одинаковое количество столбцов, и каждый столбец первой таблицы должен быть того же типа данных (или автоматически приводиться к нему), что и находящийся в том же месте столбец второй таблицы. Это означает, что их строки должны иметь одинаковую структуру, поэтому могут быть размещены в окончательной результирующей таблице. Большинство реализаций при создании результата осуществляют некоторое преобразование данных, но его характер зависит от конкретного продукта. Операторы INTERSECT [имеют более высокий приоритет, чем UNION, так что в цепочке операций сначала выполняется пересечение: INTERSECT удаляет из пересечения все дубликаты строк. (SELECT col1 FROM TableA)INTERSECT (SELECT col1 FROM TableB)EXCEPT. операции соединения таблиц INNER JOIN Таблица Table1
Таблица Table2
SELECT t1.key1, t1.field1 as Name, t1.key2 as T1Key, t2.key2 as T2Key, t2.field1 as City FROM Table1 t1 INNER JOIN Table2 t2 ON t1.key2 = t2.key2;
LEFT OUTER JOIN Дает все запрошенные данные из таблицы в левой части JOIN плюс данные из правой таблицы, пересекающиеся с первой таблицей. На рисунке 4 показана диаграмма Венна, иллюстрирующая LEFT JOIN для двух таблиц. SELECT t1.key1, t1.field1 as Name, t1.key2 as T1Key, t2.key2 as T2Key, t2.field1 as City FROM Table1 t1 LEFT JOIN Table2 t2 ON t1.key2 = t2.key2;
RIGHT JOIN выдает все запрошенные данные из таблицы, стоящей в правой части оператора JOIN, плюс данные из левой таблицы, пересекающиеся с правой SELECT t1.key1, t1.field1 as Name, t1.key2 as T1Key, t2.key2 as T2Key, t2.field1 as City FROM Table1 t1 RIGHT JOIN Table2 t2 ON t1.key2 = t2.key2; 33. Оператор INSERT вставляет новые записи в таблицу. При этом значения столбцов могут представлять собой литеральные константы, либо являться результатом выполнения подзапроса. В первом случае для вставки каждой строки используется отдельный оператор INSERT; Синтаксис оператора следующий: 1. INSERT INTO <имя таблицы>[(<имя столбца>,...)]2. {VALUES (<значение столбца>,…)}3. | <выражение запроса> 4. | {DEFAULT VALUES}34. Обновление записи осуществляется командой UPDATE. Синтаксис команды UPDATE UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2,...] [WHERE where_definition] [LIMIT #]tbl_name - Задает имя таблицы, в которой будут обновляться записи. На момент запуска команды UPDATE таблица с таким именем должна существовать в базе данных. LOW_PRIORITY - Если указан этот параметр, то обновление записи будет отложена до тех пор, пока другие сценарии не закончат чтение из этой таблицы. IGNORE - Если некоторые поля таблицы имеют ключи PRIMARY или UNIQUE, и производится обновление строки, в которой эти поля имеют дублирующее значение, то действие команды аварийно завершается и выдается ошибка №1062 ("Duplicate entry 'val' for key N"). Если в команде INSERT указано ключевое слово IGNORE, то обновление записей не прерывается, а строки с дублирующими значениями просто не изменяются. SET - После этого ключевого слова должен идти список полей таблицы, которые будут обновлены и непосредственно сами новые значения полей в виде: имя поля='значение'Следующий пример производит обновление поля country у ВСЕХ записей в таблице users:
Замечание: Обратите внимание на WHERE в синтаксисисе UPDATE. WHERE определяет какие записи должны быть обновлены, если условие WHERE не прописанно то все записи в таблице будут обновлены!
DELETE используется для удаление записей в таблице. Синтаксис SQL DELETE
Замечание: При составлении запроса на удаление, используйте условие WHERE иначе все записи могут быть удаленны. 35. Синтаксис CREATE TABLE Имя_таблицы CREATE TABLE Clients Оператор DROP TABLE Оператор DROP TABLE удаляет одну или несколько таблиц. Все табличные данные и определения удаляются, так что при работе с этой командой следует соблюдать осторожность. Синтаксис: DROP TABLE [IF EXISTS] имя_таблицы [, имя_таблицы,...] [RESTRICT | CASCADE] Оператор ALTER TABLE Оператор ALTER TABLE обеспечивает возможность изменять структуру существующей таблицы. Например, можно добавлять или удалять столбцы, создавать или уничтожать индексы или переименовывать столбцы либо саму таблицу. Можно также изменять комментарий для таблицы и ее тип. Синтаксис: ALTER [IGNORE] TABLE имя_таблицы alter_specification [, alter_specification...] Можно производить следующие изменения в таблице (все они записываются в alter_specification): · добавление поля: 36. Borland Delphi, версии 7 – это среда быстрой разработки приложений, которая поддерживает технологии доступа к данным: InterBase, BDE, ADO. При использовании механизма доступа к данным InterBase Express для создания программы, кроме работающего сервера, необходимо инсталлировать на клиентских рабочих местах специальное программное обеспечение, выполняющее соединение клиентской программы с сервером. Механизм доступа к данным InterBase Express использует для обращений к серверу возможности клиентского программного обеспечения InterBase, которое должно быть установлено на компьютере [13, c. 199]. Такой механизм доступа к данным как BDE позволяет работать с локальными и файл-серверными форматами баз данных. Основными недостатками данной технологии являются зависимость от специальной библиотеки DLL и использование технологии псевдонима. При разработке данной информационной системы была выбрана такая технология доступа к данным как Microsoft ActiveX Data Objects (ADO). Технология ADO обеспечивает универсальный доступ к источникам данных из приложений базы данных. Такую возможность предоставляют функции набора интерфейсов, созданные на основе общей модели объектов СОМ и описанные в спецификации OLE DB. Технология ADO и интерфейсы OLE DB обеспечивают для приложений единый способ доступа к источникам данных различных типов. Например, приложение, использующее технологию ADO, может применять одинаково сложные операции и к данным, хранящимся на корпоративном сервере SQL, и к электронным таблицам, и локальным системам управления базами данных. Запрос SQL, направленный любому источнику данных через технологию ADO, будет выполнен. Согласно терминологии ADO, любой источник данных (база данных, электронная таблица, файл) называется хранилищем данных, с которым при помощи провайдера данных взаимодействует приложение. Минимальный набор компонентов приложения может включать объект соединения, объект набора данных, объект процессора запросов [15, c. 348]. Технология ADO в целом включает в себя не только сами объекты OLE DB, но и механизмы, обеспечивающие взаимодействие объектов с данными и приложениями. На этом уровне важнейшую роль играют провайдеры технологии ADO, координирующие работу приложений с хранилищами данных различных типов. Провайдеры ADO обеспечивают соединение приложения, использующего данные через ADO, с источником данных. Провайдер знает о местоположении хранилища данных и его содержании, умеет обращаться к данным с запросами и интерпретировать возвращаемую служебную информацию и результаты запросов с целью их передачи приложению. Такая архитектура позволяет сделать набор объектов и интерфейсов открытым и расширяемым. Набор объектов и соответствующий провайдер может быть создан для любого хранилища данных без внесения изменений в исходную структуру ADO. Так как технология ADO основана на стандартных интерфейсах СОМ, которые являются системным механизмом Windows, это сокращает общий объем работающего программного кода и позволяет распространять приложения базы данных без вспомогательных программ и библиотек, поэтому она была выбрана для разработки данной программы.
37. Мощность и гибкость Delphi при работе с базами данных основана на низкоуровневом ядре - процессоре баз данных Borland Database Engine (BDE). Его интерфейс с прикладными программами называется Integrated Database Application Programming Interface (IDAPI). В принципе, сейчас не различают эти два названия (BDE и IDAPI) и считают их синонимами. BDE позволяет осуществлять доступ к данным как с использованием традиционного record-ориентированного (навигационного) подхода, так и с использованием set-ориентированного подхода, используемого в SQL-серверах баз данных. Кроме BDE, Delphi позволяет осуществлять доступ к базам данных, используя технологию (и, соответственно, драйверы) Open DataBase Connectivity (ODBC) фирмы Microsoft. Но, как показывает практика, производительность систем с использованием BDE гораздо выше, чем оных при использовании ODBC. ODBC драйвера работают через специальный “ODBC socket”, который позволяет встраивать их в BDE. Все инструментальные средства баз данных Borland - Paradox, dBase, Database Desktop - используют BDE. Все особенности, имеющиеся в Paradox или dBase, “наследуются” BDE, и поэтому этими же особенностями обладает и Delphi. Таблицы сохраняются в базе данных. Некоторые СУБД сохраняют базу данных в виде нескольких отдельных файлов, представляющих собой таблицы (в основном, все локальные СУБД), в то время как другие состоят из одного файла, который содержит в себе все таблицы и индексы (InterBase). Например, таблицы dBase и Paradox всегда сохраняются в отдельных файлах на диске. Директорий, содержащий dBase .DBF файлы или Paradox .DB файлы, рассматривается как база данных. Другими словами, любой директорий, содержащий файлы в формате Paradox или dBase, рассматривается Delphi как единая база данных. Для переключения на другую базу данных нужно просто переключиться на другой директорий. Как уже было указано выше, InterBase сохраняет все таблицы в одном файле, имеющем расширение .GDB, поэтому этот файл и есть база данных InterBase. Удобно не просто указывать путь доступа к таблицам базы данных, а использовать для этого некий заменитель - псевдоним, называемый алиасом. Он сохраняется в отдельном конфигурационном файле в произвольном месте на диске и позволяет исключить из программы прямое указание пути доступа к базе данных. Такой подход дает возможность располагать данные в любом месте, не перекомпилируя при этом программу. Кроме пути доступа, в алиасе указываются тип базы данных, языковый драйвер и много другой управляющей информации. Поэтому использование алиасов позволяет легко переходить от локальных баз данных к SQL-серверным базам (естественно, при выполнении требований разделения приложения на клиентскую и серверную части). Для создания алиаса запустите утилиту конфигурации BDE (программу BDECFG.EXE), находящуюся в директории, в котором располагаются динамические библиотеки BDE.
Типы данных в таблицах Paradox Type Size Тип Описание A 1-255 Alpha Текстовое поле указанной длины N Number Числа с плавающей запятой в диапазоне от _10307 Свойства таблиц Paradox 7 Type Size Тип Описание $ Money Денежное поле. Содержит вещественные числа S Short Целые числа в диапазоне от _32 768 до +32 767 I Long Integer Целые числа в диапазоне от _2 147 483 648 # 0-32 BCD Двоично-десятичные вещественные числа. D Date Дата в диапазоне от 1.01.0000 до 31.12.9999 T Time Время с точностью до миллисекунд @ Timestamp Дата и время M 1-240 Мемо Мемо-поле для размещения произвольных текстовых F 0-240 Formatted Memo Мемо-поле для размещения форматированного текста G 0-240 Graphic Графическое изображение в формате TIF. Size байтов O 0-240 OLE Объект OLE L Logical Логическое поле. Содержит значение True или False + Autoincrement Автоинкрементное поле B 0-240 Binary Набор байтов произвольной длины. Первые Size байтов Y 1-255 Bytes Набор из Size байтов (целиком хранится в таблице)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-19; просмотров: 410; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.214.244 (0.018 с.) |