Тема 3.Язык sql. Формирование запросов к базе данных. Запросы к базам данных sql


Тема 3.Язык sql. Формирование запросов к базе данных

  1. Что такое термин SQL, как он расшифровывается ?

SQL (Structured Query Language) — структурированный язык запросов — стандартный язык запросов по работе с реляционными БД. Язык SQL появился после реляционной алгебры. Его прототип был разработан в конце 70-х гг. в компании IBM Research. Он был реализован в первом прототипе реляционной СУБД фирмы IBM System  R. В дальнейшем этот язык применялся во многих коммерческих СУБД и в силу своего широкого распространения постепенно стал стандартом «де-факто» для языков манипулирования данными в реляционных СУБД.

  1. Какова история возникновения языка SQL ?

Первый международный стандарт языка SQL был принят в 1989 г. (далее мы будем называть его SQL/89 или SQL1). Иногда стандарт SQL1 также называют стандартом ANSI/ISO. Подавляющее большинство доступных на рынке СУБД поддерживают этот стандарт полностью. Однако развитие информационных технологий, связанных с базами данных, и необходимость реализации переносимых приложений потребовали в скором времени доработки и расширения первого стандарта SQL.

В конце 1992 г. был принят новый международный стандарт языка SQL, который в дальнейшем будем называть SQL/92 или SQL2. И он не лишен недостат ков, но в то же время является существенно более точным и полным, чем SQL/89. В настоящий момент большинство производителей СУБД внесли изменения в свои продукты, чтобы они в большей степени удовлетворяли стандарту SQL2.

В 1999 г. появился новый стандарт, названный SQL3. Если отличия между стандартами SQL1 и SQL2 во многом были количественными, то стандарт SQL3 имеет качественные преобразования. В SQL3 введены новые типы данных, при этом предполагается возможность задания сложных структурированных типов данных, которые в большей степени соответствуют объектной ориентации. Наконец, добавлен раздел, который вводит стандарты на события и триггеры, которые ранее не затрагивались в стандартах, хотя давно уже широко использовались в коммерческих СУБД. В стандарте определены возможности четкой спецификации триггеров как совокупности события и действия. В качестве действия могут выступать не только последовательность операторов SQL, но и операторы управления ходом выполнения программы. В рамках управления транзакциями произошел возврат к старой модели транзакций, допускающей точки сохранения (savepoints). Возможность указания в операторе отката ROOLBACK точек возврата позволит откатывать транзакцию не в начало, а в промежуточную ранее сохраненную точку. Такое решение повышает гибкость реализации сложных алгоритмов обработки информации.

  1. Какие стандарты для языка SQLсуществуют и чем они отличаются друг от друга?

  2. Какова общая структура языка SQL, из каких подъязыков состоит данный язык, каково их назначение? Каков синтаксис операции запроса в языкеSQL?

В отличие от реляционной алгебры, где были представлены только операции запросов к БД, SQL является полным языком, в нем присутствуют не только операции запросов, но и операторы, соответствующие DDL (Data Definition Language) — языку описания данных. Кроме того, язык содержит операторы, предназначенные для управления (администрирования) БД. 

Операторы определения данных DDL

Оператор

Смысл

Действие

CREATE TABLE

Создать таблицу

Создает новую таблицу в БД 

DROP TABLE

Удалить таблицу

Удаляет таблицу из БД 

ALTER TABLE

Изменить таблицу

Изменяет структуру существующей таблицы или ограничения целостности, задаваемые для данной таблицы

CREATE VIEW

Создать представление

Создает виртуальную таблицу, соответствующую некоторому SQL-запросу

ALTER VIEW

Изменить представление

Изменяет ранее созданное представление

DROP VIEW

Удалить представление

Удаляет ранее созданное представление

CREATE INDEX

Создать индекс

Создает индекс для некоторой таблицы для обеспечения быстрого доступа по атрибутам, входящим в индекс

DROP INDEX

Удалить индекс

Удаляет ранее созданный индекс

 

Операторы манипулирования данными Data Manipulation Language (DMP)

Оператор

Смысл

Действие

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 к динамическому выполнению

Генерирует план выполнения запроса, соответствующего заданному оператору SQL

EXECUTE

Выполнить оператор SQL, ранее подготовленный к динамическому выполнению

Выполняет ранее подготовленный план запроса

 

В коммерческих СУБД набор основных операторов расширен. В большинство СУБД включены операторы определения и запуска хранимых процедур и операторы определения триггеров.

  1. Что такое операция группировки?

При группировке все множество кортежей отношения разбивается на группы, в которых собираются кортежи, имеющие одинаковые значения атрибутов, которые заданы в списке группировки.

  1. Чем отличается значение функции count(*) от count(A) и count(distinct A) ?

  2. Что такое агрегатные функции и для чего они предназначены ?

ЧТО ТАКОЕ АГРЕГАТНЫЕ ФУНКЦИИ ?

Запросы могут производить обобщенное групповое значение полей точно также как и значение одного пол. Это делает с помощью агрегатных функций. Агрегатные функции производят одиночное значение для всей группы таблицы. Имеется список этих функций: * COUNT- производит номера строк или не-NULL значения полей которые выбрал запрос. *SUM- производит арифметическую сумму всех выбранных значений данного пол. *AVG- производит усреднение всех выбранных значений данного пол. *MAX- производит наибольшее из всех выбранных значений данного пол. *MIN- производит наименьшее из всех выбранных значений данного пол.

  1. Что такое вложенные подзапросы, каков механизм их использования?

С помощью SQL можно вкладывать запросы внутрь друг друга. Обычно внутренний запрос генерирует значение, которое проверяется в предикате внешнего запроса (в предложении WHERE или HAVING), определяющего, верно оно или нет. Схема связывания основного и вложенного подзапросов представлена на рис. 3.1 и 3.2.

Вложенные запросы могут быть зависимыми и независимыми. Зависимыми назовем такие вложенные запросы, результат которых зависит от текущей строки или группы внешнего запроса. В этом случае, если вложенный запрос применяется на уровне предложения WHERE, то он вычисляется для каждой строки внешнего запроса и его значение зависит от значений атрибутов в текущей строке. Если вложенный запрос применяется на уровне предложения HAVING, то его значение зависит от значения постоянных атрибутов текущей группы.

studfiles.net

Запросы к базам данных, язык SQL — Студопедия.Нет

Запрос – ср-во отбора записей из таблиц по определенному условию.

Результатом запроса явл. Виртуальная таблица(хранится в памяти, пока запрос не активен). Запросы не хранят данные, в них хранятся условия для отбора данных.

3 мех-ма создания запросов:

1) SQL-стуктурированный язык запросов

2) QBE-запрос по образцу

3) UDF-функции, определенные пользователем.

SQL: 1-я группу: команды для определения данных

2-я гр. Команды управления данными

3-я команды по упр-ю пользователями

4-я ком-ды по упр-ю транзакциями

5-я ком-ды для отбора данных

QBE – визуальное ср-во выполнения запросы

UDF- программа на процедурном языке, создан. для БД, может использовать команды SQL.

Транзакция(относ. к запросам)- группа операций над данными, кот. Либо все вместе выполняются, либо отменяются.

Есть 2 состояния транзакций:1) Завершение(когда все операции выполняются успешно и результат занесен в БД)

2)Откат(когда люб. из операций не выполняется.Данные возвращ. в первонач. состояние)

20. Защита информации в базах данных

В современных СУБД поддерживается один из двух наиб общих подходов к вопросу обеспеч безопасности данных: избирательный подход и обязательный подход. В обоих подходах единицей данных может быть как вся база данных целиком, так и любой объект внутри базы данных. Эти два подхода отличаются следующими свойствами:

1)В случае избирательного управления некоторый пользователь обладает различными правами при работе с данными объектами. Разные пользователи могут обладать разными правами доступа к одному и тому же объекту. Избирательные права характеризуются значительной гибкостью.

 2)В случае обязательного управления, наоборот, каждому объекту данных присваивается некоторый классификационный уровень, а каждый пользователь обладает некоторым уровнем допуска. При таком подходе доступом к определенному объекту данных обладают только пользователи с соответствующим уровнем допуска.

Для ограничения доступа к данным, в базу данных вводится новый тип объектов — пользователи. Каждому пользователю в БД присваивается уникальный идентификатор. Для доп защиты каждый пользователь кроме уник идентифик снабжается уникальным паролем, причем если идентификаторы пользователей в системе доступны системному администратору, то пароли пользователей хранятся чаще всего в спец кодированном виде и известны только самим пользователям.. Привилегии или полномочия пользователей или групп — это набор действий (операций), которые они могут выполнять над объектами БД. Роль — это поименованный набор полномочий. Существует ряд стандартных ролей, которые определены в момент установки сервера бд. И имеется возможность создавать новые роли, группируя в них произвольные полномочия. Введение ролей позволяет упростить управление привилегиями пользователей, структурировать этот процесс. Кроме того, введение ролей не связано с конкретными пользователями, Объектами БД, которые подлежат защите, являются все объекты, хранимые в БД: таблицы, представления, хранимые процедуры и триггеры. Для каждого типа объектов есть свои действия, поэтому для каждого типа объектов мб определены разные права доступа. Необходимо поддерживать два фундаментальных принципа: проверку полномочий и проверку подлинности (аутентификацию).Проверка полномочий основана на том, что кажд пользователю или процессу информационной сист соответствует набор действий, которые он может выполнять по отношению к определенным объектам. Проверка подлинности означ достоверное подтвержд того, что пользователь или процесс, пытающийся выполнить санкционированное действие, действительно тот, за кого он себя выдает. Проверка подлинности в SQL Server 6.5 может выполняться по одному из трех режимов:  1)Стандартный (standard), 2)Интегрированный (integrated security),3)Смешанный (mixed).

Стандартный режим защиты предполагает, что каждый пользователь должен иметь учетную запись как пользователь домена NT Server. Учетная запись пользователя домена включает имя пользователя и его индивидуальный пароль.. Интегрированный режим предполагает, что для пользователя задается только одна учетная запись в операционной системе, как пользователя домена, a SQL Server идентифицирует пользователя по его данным в этой учетной записи. В этом случае пользователь задает только одно свое имя и один пароль. В случае смешанного режима часть, пользователей может быть подключена к серверу с использованием стандартного режима, а часть с использованием интегрированного режима.

Перспективы развития СУБД

Современ бд явл основой многочисленных информ систем. Информация, накопленная в них, явл ценным материалом, и в настоящ момент широко распространяются методы обработки бд с точки зрения извлечения из них доп знаний, методов, которые связаны с обобщением и различными доп способами обработки данных.

Для работы с «Хранилищами данных» наиб значимым становится интеллектуальный анализ данных (ИАД)— это процесс выявления значимых корреляций, образцов и тенденций в больших объемах данных. В бизнес-приложениях наиб интерес представляет интеграция методов интеллектуального анализа данных с технологией оперативной аналитической обработки данных (OLAP). В основе OLAP лежит многомерное представление данных След новым направлением в развитии систем управления бд явл направление, связанное с отказом от нормализации отношений. Во многом нормализация отношений нарушает естественные иерархические связи м/у объектами, кот. достаточно распространены в нашем мире. Возможность сохранять их на концептуальном (но не на физическом) уровне позвол пользователям более естественно отражать связи предметной области. Дальнейшим расширением в структурных преобразованиях явл объектно-ориентированные бд. В объектно-ориентированной парадигме предметная область моделируется как множество классов взаимодейств объектов. Кажд объект характеризуется набором свойств, кот явл как бы его пассивными характеристиками и набором методов работы с этим объектом. Специфика применения объектно-ориентированного подхода для организации и управления БД потребовала уточненного толкования классических концепций и некоторого их расширения. Возникло направление, которое предполагает возможность хранения объектов внутри реляционной БД, тогда доп необходимо предусмотреть хранение и использование специфич методов работы с этими объектами, а это в свою очередь требует расширения стандарта языка SQL. Частично это уже сделано в новом стандарте SQL3, однако там далеко не все вопросы получили однозначное разрешение. Однако часть разработчиков придерживается мнения о необход полного отказа от реляционной парадигмы и перехода на объектно-ориентированную парадигму. Темпоральные бд, т.е. бд, чувствительные ко времени. Фактически БД моделирует сост объектов предметной области в некотор текущий момент времени. Однако в ряде прикладных областей необходимо исследовать именно изменение состояний объектов во времени. Основной тезис темпоральных систем сост в том, что для любого объекта данных, созданного в момент времени t1 и уничтоженного в момент времени t2, в БД сохраняются все его состояния во временном интервале t1-t2.

Направление, связанное с объединением технологии экспертных систем и бд и развитие дедуктивных бд. Эти базы основаны на выявлении новых знаний из бд не путем запросов или аналитической обработки, а путем использования правил вывода и построения цепочек применения этих правил для вывода ответов на запросы. Для этих бд существуют языки запросов, отличные от классического SQL. Перспектива взаимодействия Web-технологии и бд. С одной стороны, Web представляет собой одну громадную базу данных. Однако до сих пор, вместо того чтобы превратиться в неотъемлемую часть инфраструктуры Web, базы данных остаются на вторых ролях. Во-первых, дизайнеры крупнейших Web-серверов с миллионами страниц содержимого постепенно перекладывают задачи управления страницами с файловых систем на системы баз данных. Во-вторых, системы баз данных используются в качестве серверов электронной коммерции, помогая отслеживать профили, транзакции, счета и инвентарные листы. В-третьих, ведущие Web-издатели примериваются к использованию систем баз данных для хранения информационного наполнения, имеющего сложную природу.В небольших Web-узлах, как правило, используются статические HTML-страницы, хранящиеся в обычных файловых системах.

может уже работать с базой данных, при этом вам все равно, где находится клиент, он может работать как в локальной, так и, в глобальной сети, если технология это позволяет.

studopedia.net

Запросы к базе данных с использованием языка sql. Извлечение данных из нескольких таблиц. Соединения таблиц

Соединение таблиц – это набор результатов от операции соединения, выполненной над двумя или несколькими таблицами. При выполнении соединения имена таблиц перечисляются в предложении запроса FROM, результатом запроса будет декартово произведение таблиц, т.к. не определены связи между таблицами. Связи между таблицами в SQL могут быть установлены с помощью предложений WHERE и INNER JOIN.

Связь между таблицами с помощью предложения WHERE.

Если в качестве критерия поиска в предложении WHERE задаются условия, основанные на равенствах, то выполняется внутреннее соединение 2-х таблиц. Такое соединение называется эквисоединением. Синтаксис запроса на соединение будет иметь вид:

SELECT список_полей

FROM таблица_1 , таблица_2

WHERE таблица_1.поле_1 оператор таблица_2.поле_2

Где:

  • таблица_1, таблица_2 - имена таблиц, записи которых подлежат объединению;

  • поле_1, поле_2 - имена объединяемых полей. Если эти поля не являются числовыми, то должны иметь одинаковый тип данных и содержать данные одного рода, однако, поля могут иметь разные имена;

  • оператор -любой оператор сравнения: "=," "<," ">," "<=," ">=," или "<>".

Множественные соединения (более чем двух) таблиц будут выполняться, если пары связанных полей связать логической операцией AND. Синтаксис запроса на множественное соединение:

SELECT список_полей

FROM таблица_1 , таблица_2 , таблица 3

WHERE таблица_1.поле_1 оператор таблица_2.поле_2 AND таблица_2.поле_1 оператор таблица_3.поле_1

Связь между таблицами с помощью предложения INNER JOIN.

Внутреннее соединение (INNER JOIN) является типом соединений, принятым по умолчанию. В этом случае синтаксис запроса на соединение будет иметь вид:

SELECT список_полей

FROM таблица_1 INNER JOIN таблица_2

ON таблица_1.поле_1 оператор таблица_2.поле_2

Чтобы установить связь по нескольким полям, следует связать несколько предложений ON в инструкции JOIN:

SELECT список_полей

FROM таблица_1 INNER JOIN таблица_2

ON таблица_1.поле_1 оператор таблица_2.поле_1 {AND| OR}

ON таблица_1.поле_2 оператор таблица_2.поле_2

Внутреннее соединение задает набор результатов, в который будут включены лишь те строки, которые соответствуют условию ON, а все несоответствующие строки будут отброшены.

Полные внешние соединения (FULL OUTER JOIN) задают набор результатов, состоящих из строк, соответствующих условию ON, так и из строк, не соответствующих условию ON. Для строк, не соответствующих условию ON, значением колонки станет NULL. В этом случае синтаксис запроса на соединение будет иметь вид:

SELECT список_полей

FROM таблица_1 FULL OUTER JOIN таблица_2

ON таблица_1.поле_1 оператор таблица_2.поле_2

Левые внешние соединения (LEFT OUTER JOIN) возвращают строки, в которых произошло соответствие условию поиска, плюс все строки из таблицы, заданной слева от ключевого слова JOIN. В этом случае синтаксис запроса на соединение будет иметь вид:

SELECT список_полей

FROM таблица_1 LEFT OUTER JOIN таблица_2

ON таблица_1.поле_1 оператор таблица_2.поле_2

Правые внешние соединения (RIGHT OUTER JOIN) возвращают строки, в которых произошло соответствие условию поиска, плюс все строки из таблицы, заданной справа от ключевого слова JOIN. В этом случае синтаксис запроса на соединение будет иметь вид:

SELECT список_полей

FROM таблица_1 RIGHT OUTER JOIN таблица_2

ON таблица_1.поле_1 оператор таблица_2.поле_2

studfiles.net

НОУ ИНТУИТ | Лекция | Язык SQL. Формирование запросов к базе данных

Аннотация: Лекция полностью посвящена языку SQL, являющемуся в настоящее время стандартным базовым языком по работе с БД

История развития SQL

SQL (Structured Query Language) — Структурированный Язык Запросов — стандартный язык запросов по работе с реляционными БД. Язык SQL появился после реляционной алгебры, и его прототип был разработан в конце 70-х годов в компании IBM Research. Он был реализован в первом прототипе реляционной СУБД фирмы IBM System R. В дальнейшем этот язык применялся во многих коммерческих СУБД и в силу своего широкого распространения постепенно стал стандартом "де-факто" для языков манипулирования данными в реляционных СУБД.

Первый международный стандарт языка SQL был принят в 1989 г. (далее мы будем называть его SQL/89 или SQL1). Иногда стандарт SQL1 также называют стандартом ANSI/ISO, и подавляющее большинство доступных на рынке СУБД поддерживают этот стандарт полностью. Однако развитие информационных технологий, связанных с базами данных, и необходимость реализации переносимых приложений потребовали в скором времени доработки и расширения первого стандарта SQL.

В конце 1992 г. был принят новый международный стандарт языка SQL, который в дальнейшим будем называть SQL/92 или SQL2. И он не лишен недостатков, но в то же время является существенно более точным и полным, чем SQL/89. В настоящий момент большинство производителей СУБД внесли изменения в свои продукты так, чтобы они в большей степени удовлетворяли стандарту SQL2.

В 1999 году появился новый стандарт, названный SQL3. Если отличия между стандартами SQL1 и SQL2 во многом были количественными, то стандарт SQL3 соответствует качественным серьезным преобразованиям. В SQL3 введены новые типы данных, при этом предполагается возможность задания сложных структурированных типов данных, которые в большей степени соответствуют объектной ориентации. Наконец, добавлен раздел, который вводит стандарты на события и триггеры, которые ранее не затрагивались в стандартах, хотя давно уже широко использовались в коммерческих СУБД. В стандарте определены возможности четкой спецификации триггеров как совокупности события и действия. В качестве действия могут выступать не только последовательность операторов SQL, но и операторы управления ходом выполнения программы. В рамках управления транзакциями произошел возврат к старой модели транзакций, допускающей точки сохранения ( savepoints ), и возможность указания в операторе отката ROLLBACK точек возврата позволит откатывать транзакцию не в начало, а в промежуточную ранее сохраненную точку. Такое решение повышает гибкость реализации сложных алгоритмов обработки информации.

А зачем вообще нужны эти стандарты? Зачем их изобретают и почему надо изучать их? Текст стандарта SQL2 занимает 600 станиц сухого формального текста, это очень много, и кажется, что это просто происки разработчиков стандартов, а не то, что необходимо рядовым разработчикам. Однако ни один серьезный разработчик, работающий с базами данных, не должен игнорировать стандарт, и для этого существуют весьма веские причины. Разработка любой информационной системы, ориентированной на технологию баз данных (а других информационных систем на настоящий момент и не бывает), является трудоемким процессом, занимающим несколько десятков и даже сотен человеко-месяцев. Следует отдавать себе отчет, что нельзя разработать сколько-нибудь серьезную систему за несколько дней. Кроме того, развитие вычислительной техники, систем телекоммуникаций и программного обеспечения столь стремительно, что проект может устареть еще до момента внедрения. Но развивается не только вычислительная техника, изменяются и реальные объекты, поведение которых моделируется использованием как самой БД, так и процедур обработки информации в ней, то есть конкретных приложений, которые составляют реальное наполнение разрабатываемой информационной системы. Именно поэтому проект информационной системы должен быть рассчитан на расширяемость и переносимость на другие платформы. Большинство поставщиков аппаратуры и программного обеспечения следуют стратегии поддержки стандартов, в противном случае пользователи просто не будут их покупать. Однако каждый поставщик стремится улучшить свой продукт введением дополнительных возможностей, не входящих в стандарт. Выбор разработчиков, следовательно, таков: ориентироваться только на экзотические особенности данного продукта либо стараться в основном придерживаться стандарта. Во втором случае весь интеллектуальный труд, вкладываемый в разработку, становится более защищенным, так как система приобретает свойства переносимости. И в случае появления более перспективной платформы проект, ориентированный в большей степени на стандарты, может быть легче перенесен на нее, чем тот, который в основном ориентировался на особенности конкретной платформы. Кроме того, стандарты — это верный ориентир для разработчиков, так как все поставщики СУБД в своих перспективных разработках обязательно следуют стандарту, и можно быть уверенным, что в конце концов стандарт будет реализован практически во всех перспективных СУБД. Так произошло со стандартом SQL1, так происходит со стандартом SQL2 и так будет происходить со стандартом SQL3.

Для поставщиков СУБД стандарт — это путеводная звезда, которая гарантирует правильное направление работ. А вот эффективность реализации стандарта — это гарантия успеха.

SQL нельзя в полной мере отнести к традиционным языкам программирования, он не содержит традиционные операторы, управляющие ходом выполнения программы, операторы описания типов и многое другое, он содержит только набор стандартных операторов доступа к данным, хранящимся в базе данных. Операторы SQL встраиваются в базовый язык программирования, которым может быть любой стандартный язык типа C++, PL, COBOL и т. д. Кроме того, операторы SQL могут выполняться непосредственно в интерактивном режиме.

Структура SQL

В отличие от реляционной алгебры, где были представлены только операции запросов к БД, SQL является полным языком, в нем присутствуют не только операции запросов, но и операторы, соответствующие Data Definition Language (DDL) — языку описания данных. Кроме того, язык содержит операторы, предназначенные для управления (администрирования ) БД.

SQL содержит разделы, представленные в табл. 5.1:

Таблица 5.1. Операторы определения данных DDL Оператор Смысл Действие
CREATE TABLE Создать таблицу Создает новую таблицу в БД
DROP TABLE Удалить таблицу Удаляет таблицу из БД
ALTER TABLE Изменить таблицу Изменяет структуру существующей таблицы или ограничения целостности, задаваемые для данной таблицы
CREATE VIEW Создать представление Создает виртуальную таблицу, соответствующую некоторому SQL-запросу
ALTER VIEW Изменить представление Изменяет ранее созданное представление
DROP VIEW Удалить представление Удаляет ранее созданное представление
CREATE INDEX Создать индекс Создает индекс для некоторой таблицы для обеспечения быстрого доступа по атрибутам, входящим в индекс
DROP INDEX Удалить индекс Удаляет ранее созданный индекс
Таблица 5.2. Операторы манипулирования данными Data Manipulation Lanquaqe (DML) Оператор Смысл Действие
DELETE Удалить строки Удаляет одну или несколько строк, соответствующих условиям фильтрации, из базовой таблицы. Применение оператора согласуется с принципами поддержки целостности, поэтому этот оператор не всегда может быть выполнен корректно, даже если синтаксически он записан правильно
INSERT Вставить строку Вставляет одну строку в базовую таблицу. Допустимы модификации оператора, при которых сразу несколько строк могут быть перенесены из одной таблицы или запроса в базовую таблицу
UPDATE Обновить строку Обновляет значения одного или нескольких столбцов в одной или нескольких строках, соответствующих условиям фильтрации
Таблица 5.3. Язык запросов Data Query Lanquaqe (DQL) Оператор Смысл Действие
SELECT Выбрать строки Оператор, заменяющий все операторы реляционной алгебры и позволяющий сформировать результирующее отношение, соответствующее запросу
Таблица 5.4. Средства управления транзакциями Оператор Смысл Действие
COMMIT Завершить транзакцию Завершить комплексную взаимосвязанную обработку информации, объединенную в транзакцию
ROLLBACK Откатить транзакцию Отменить изменения, проведенные в ходе выполнения транзакции
SAVEPOINT Сохранить промежуточную точку выполнения транзакции Сохранить промежуточное состояние БД, пометить его для того, чтобы можно было в дальнейшем к нему вернуться
Таблица 5.5. Средства администрирования данных Оператор Смысл Действие
ALTER DATABASE Изменить БД Изменить набор основных объектов в базе данных, ограничений, касающихся всей базы данных
ALTER DBAREA Изменить область хранения БД Изменить ранее созданную область хранения
ALTER PASSWORD Изменить пароль Изменить пароль для всей базы данных
CREATE DATABASE Создать БД Создать новую базу данных, определив основные параметры для нее
CREATE DBAREA Создать область хранения Создать новую область хранения и сделать ее доступной для размещения данных
DROP DATABASE Удалить БД Удалить существующую базу данных (только в том случае, когда вы имеете право выполнить это действие)
DROP DBAREA Удалить область хранения БД Удалить существующую область хранения (если в ней на настоящий момент не располагаются активные данные)
GRANT Предоставить права Предоставить права доступа на ряд действий над некоторым объектом БД
REVOKE Лишить прав Лишить прав доступа к некоторому объекту или некоторым действиям над объектом
Таблица 5.6. Программный SQL Оператор Смысл Действие
DECLARE Определяет курсор для запроса Задает некоторое имя и определяет связанный с ним запрос к БД, который соответствует виртуальному набору данных
OPEN Открыть курсор Формирует виртуальный набор данных, соответствующий описанию указанного курсора и текущему состоянию БД
FETCH Считать строку из множества строк, определенных курсором Считывает очередную строку, заданную параметром команды из виртуального набора данных, соответствующего открытому курсору
CLOSE Закрыть курсор Прекращает доступ к виртуальному набору данных, соответствующему указанному курсору
PREPARE Подготовить оператор SQL к динамическому выполнению Сгенерировать план выполнения запроса, соответствующего заданному оператору SQL
EXECUTE Выполнить оператор SQL, ранее подготовленный к динамическому выполнению Выполняет ранее подготовленный план запроса

В коммерческих СУБД набор основных операторов расширен. В большинство СУБД включены операторы определения и запуска хранимых процедур и операторы определения триггеров.

www.intuit.ru

Основы SQL: запросы к базе данных

Заметки - Новости БД

Вы новичок в программировании или же просто раньше избегали изучения SQL? Тогда вы попали по нужному адресу, так как любой разработчик в конце-концов сталкивается с необходимостью знать этот язык запросов. Пусть вы и не будете главным дизайнером баз данных, но работы с ними избежать практически невозможно. Я надеюсь этот краткий обзор синтаксиса основных SQL-запросов поможет заинтересованному разработчику и любому, кому это понадобится.

Что такое база данных SQL?

Структурированный язык запросов (Structured Query Language) – стандарт коммуникации с базой данных, который поддержан ANSI. Самая последняя версия – SQL-99, хотя новый стандарт SQL-200n уже находится в разработке. Большинство баз данных твердо придерживается стандарта ANSI-92. Было много обсуждений по поводу введения более современных стандартов, но изготовители коммерческих баз данных отклоняются от этого, развивая свои новые концепции манипуляции хранимыми данными. Почти каждая отдельная база данных использует некоторый уникальный набор синтаксиса, хоть и очень сильно подобного стандарту ANSI. В большинстве случаев, этот синтаксис является расширением базового стандарта, хотя бывают случаи, когда такой синтаксис приводит к различным результатам для разных баз данных. Всегда неплохой идеей будет просмотр документации к базе данных, особенно, если получаются неожиданные результаты.

Если вы впервые встречаетесь с SQL, то необходимо ознакомиться с основными концепциями, которые нужно понять.

В общих терминах, «SQL база данных» является общим названием для реляционной системы управления базами данных (РСУБД). Для некоторых систем, «база данных» также относится к группе таблиц, данных, конфигурационной информации, которые являются неотъемлемо отдельной частью от других, подобных конструкций. В этом случае, каждая инсталляция SQL базы данных может состоять из нескольких баз данных. В других системах, они упомянуты как таблицы.

Таблица – конструкция базы данных, которая состоит из столбцов, содержащих строки данных. Обычно таблицы созданы для того, чтобы содержать связанную информацию. В пределах той же самой базы данных могут быть созданы несколько таблиц.

Каждый столбец представляет собой атрибут или совокупность атрибутов объектов, например идентификационные номера служащих, рост, цвет машин и т.п. Часто в отношении столбца используется термин поле с указанием имени, например «в поле Name». Поле строки является минимальным элементом таблицы. Каждый столбец в таблице имеет определенное имя, тип данных и размер. Имена столбцов должны быть уникальны в пределах таблицы.

Каждая строка (или запись) представляет собой совокупность атрибутов конкретного объекта, например, в строке может содержаться идентификационный номер служащего, размер его зарплаты, год его рождения и т.д. Строки таблиц не имеют названий. Чтобы обратиться к конкретной строке, пользователю необходимо указать какой-то атрибут (или набор атрибутов), уникально ее идентифицирующий.

Одной из важнейших операций, которые выполняются при работе с данными, является выборка хранящейся в базе данных информации. Для этого пользователь должен выполнить запрос (query).

Теперь давайте рассмотрим основные типы запросов к базе данных, которые сосредоточены на манипуляции данными в пределах базы. Для наших целей, все примеры приведены в стандартном SQL, дабы соответствовать любой среде.

Типы запросов данных

Есть четыре основных типа запросов данных в SQL, которые относятся к так называемому языку манипулирования данными (Data Manipulation Language или DML):

SELECT – выбрать строки из таблиц; INSERT – добавить строки в таблицу; UPDATE – изменить строки в таблице; DELETE – удалить строки в таблице;

Каждый из этих запросов имеет различные операторы и функции, которые используются для того, чтобы произвести какие-то действия с данными. Запрос SELECT имеет самое большое количество опций. Существуют также дополнительные типы запросов, используемых вместе с SELECT, типа JOIN и UNION. Но пока, мы сосредоточимся только на основных запросах.

Использование запроса SELECT для выборки нужных данных

Чтобы получить информацию, хранящуюся в базе данных используется запрос SELECT. Базовое действие этого запроса ограничено одной таблицей, хотя существуют конструкции, обеспечивающие выборку с нескольких таблиц одновременно. Для того, чтобы получить все строки данных для специфических столбцов, используется запрос такого вида:

Также, можно получить все столбцы из таблицы, используя подстановочный знак «*»:

Это может быть полезно в том случае, когда вы собираетесь выбрать данные с определенным условием WHERE. Следующий запрос возвратит все столбцы со всех строк, где «column1» содержит значение «3»:

Кроме «=» (равно), существуют следующие условные операторы:

Дополнительно можно использовать условия BITWEEN и LIKE для сравнения с условием WHERE, а так же комбинации операторов AND и OR.

Что в переводе на русский язык означает: выбрать все столбцы из таблицы table_name, где значение столбца age больше или равно 18, а также значение столбца LastName находится в алфавитном промежутке от Иванов до Сидоров включительно, или же значением столбца Company является Motorola.

Использование запроса INSERT для вставки новых данных

Запрос INSERT используется для создания новой строки данных. Для обновления уже существующих данных или пустых полей строки нужно использовать запрос UPDATE.

Примерный синтаксис запроса INSERT:

Если вы собираетесь вставлять все значения в порядке, в котором находятся столбцы таблицы, то можно и не указывать имена столбцов, хотя для удобочитаемости это предпочтительнее. Кроме того, если вы перечисляете столбцы, необязательно указывать их по порядку нахождения в базе данных, пока значения, которые вы вводите, соответсвуют этому порядку. Вы не должны перечислять столбцы, в которые не вводится информация.

Изменяется уже существующая информация в базе данных очень похожим образом.

Запрос UPDATE и условие WHERE

UPDATE используется для того, чтобы изменить существующие значения или освободить поле в строке, поэтому новые значения должны соответствовать существующему типу данных и обеспечивать приемлемые значения. Если вы не хотите изменить значения во всех строках, то нужно использовать условие WHERE.

Вы можете использовать WHERE для любого столбца, включая тот, который хотите изменить. Это используется когда необходимо заменить одно определенное значение на другое.

Будьте осторожны! Запрос DELETE удаляет целые строки

Запрос DELETE полность удаляет строку из базы данных. Если вы хотите удалить одно единственное поле, то нужно использовать запрос UPDATE и установить для этого поля значение, которое будет являться аналогом NULL в вашей программе. Будьте внимательны, и ограничивайте ваш запрос DELETE условием WHERE, иначе вы можете потерять все содержимое таблицы.

Как только строка была удалена из вашей базы данных, она не подлежит восстановлению, поэтому желательно иметь столбец по имени «IsActive», или что-то типа того, который вы можете изменить на ноль, что будет указывать на блокировку представления данных из этой строки.

Теперь вы знаете основы SQL запросов

SQL – язык баз данных, и мы рассмотрели наиболее важные и базовые команды, используемые в запросах данных. Множество основных концепций не были затронуты (SUM и COUNT например), но те немногие команды, которые удалось перечислить выше, должны побудить вас к активным действиям и более глубокому изучению замечательного языка запросов под именем SQL.

 
Добавить комментарий

cmsone.ru

Запросы на языке SQL к базам данных SQL Server

⇐ ПредыдущаяСтр 27 из 55Следующая ⇒

 

В запросах на языке SQL используются таблицы, сохраняемые в базе данных на сервере. Эти таблицы не представляются в окне базы данных Access и не могут использоваться при создании запроса средствами конструктора. Запрос должен быть записан на языке сервера — Transact SQL. Запрос передается на сервер через интерфейс ODBC.

Замечание.

Создание запроса на основе имеющихся запросов к серверу может быть выполнено с помощью конструктора.

Создание запроса на выборку

Создайте запрос на выборку данных из таблиц НАКЛАДНАЯ и ОТГРУЗКА, размещенных на SQL Server в базе данных Поставка товаров SQL:

SELECT НАКЛАДНАЯ.*, ОТГРУЗКА.КОД_ТОВ, ОТГРУЗКА.КОЛ_ОТГР

FROM НАКЛАДНАЯ INNER JOIN ОТГРУЗКА ON

(НАКЛАДНАЯ.КОД_СК = ОТГРУЗКА.КОД_СК) AND (НАКЛАДНАЯ.НОМ_НАКЛ = ОТГРУЗКА.НОМ_НАКЛ)

WHERE ДАТА_ОТГР>='09.07.2004';

Запрос возвратит таблицу с полями, указанными в первой строке запроса, и строками с данными об отгрузках, которые были выполнены в период, заданный условием отбора. Выполните следующие действия:

1. Начните создание запроса на языке SQL в окне базы данных на вкладке Запросы(Queries), щелкнув мышью на строке Создание запроса в режиме конструктора.

2. Закройте диалоговое окно Добавлениетаблицы (Show Table), не выбирая таблиц.

3. Выполните команду Запрос | Запрос SQL | К серверу(Query |SQL Specific | Pass Through).

4. В открывшемся окне запроса к серверу введите инструкцию SQL, которая позволит получить данные об отгрузках на заданнуюдату (рис. 10.18).

5. Для выполнения запроса SQL нажмите на панели конструктора запросов кнопку Запуск(Run). Врезультате выведется окно администратора ODBC Выбор источника данных(Select Data Source) (рис. 10.19).

6. Выберите на вкладке Источник данных компьютера(Machine Data Source) ранее созданный пользовательский источник данных Поставка,содержащий сведения о сервере и базе данных, к которой делается запрос. Используя сведения из выбранного источника данных, администратор ODBC выполняет подключение к базе данных. Если в выбранном источнике данных не указано доверительное соединение, у пользователя будут запрашиваться имя и пароль.

 

 

Рис.10.18. Окно запроса SQL

 

Запрос выполняется на сервере, и на компьютер пользователя-клиента возвращается таблица запроса, которая по виду ничем не отличается от таблицы локального запроса.

7. Сохраните запрос. В окне базы данных он будет помечен значком.

 

Рис. 10.19 Выбор источника данных для запроса

SQL к базе данных сервера

Внимание!

В окне Выбор источника данных(Select Data Source) можно создать новый или модифицировать существующий источник данных. Процесс начинается с нажатия кнопки Создать.

8. Чтобы не выбирать источник данных при каждом выполнении запроса, сохраните сведения о нем в свойстве запроса Строка подключения ODBC(ODBCConnectStr). Для этого откройте в режиме SQL окно свойств запроса, нажав на панели инструментов кнопку Свойства(Properties). В окне свойств запроса в строке подключения ODBC введите имя источника данных: ODBC;DSN=Поставка;.При сохранении запроса строка подключения сохранится вместе с ним. Теперь при выполнении запроса для подключения может потребоваться только ввод имени пользователя на сервере и пароля.

mykonspekts.ru