Основы работы с базой данных — презентация
logo
Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • ОСНОВНЫЕ ПОНЯТИЯ РЕЛЯЦИОННОЙ АЛГЕБРЫ
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Над таблицами (отношениями) в БД определены следующие операции:
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • ДОСТУП К SQL -ОРИЕНТИРОВАННЫМ СУБД
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Каждый запрос к СУБД проходит следующие стадии:
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • При написании запросов к реляционным СУБД следует иметь в виду следующее:
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Необходимо иметь в виду следующее:
  • Основы работы с базой данных
  • Основы работы с базой данных
  • ОСНОВНЫЕ ОПЕРАТОРЫ ЯЗЫКА SQL ОБЩИЕ ПОЛОЖЕНИЯ
  • ОПЕРАТОР SELECT
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Опция FROM оператора SELECT
  • ... FROM {< Таблица > [AS < Алиас >] | (SELECT...) AS < Алиас >} [{INNER|LEFT|RIGHT} JOIN < Другая таблица >... [ ON <Условие соединения>]]
  • SELECT FIOS.FAMILIYA, FIOS.IMYA, FIOS.OTCHESTVO FROM (SELECT FAM AS FAMILIYA, NAM AS IMYA, OTCH AS OTCHESTVO FROM FIO_ORG) AS FIOS
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Список выборки оператора SELECT
  • Основы работы с базой данных
  • Основы работы с базой данных
  • ОПЦИЯ WHERE ОПЕРАТОРА SELECT
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
  • Основы работы с базой данных
1/66

Первый слайд презентации: Основы работы с базой данных

Лекция 8

Изображение слайда

Слайд 2

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

Изображение слайда

Слайд 3

Способы обеспечения конфиденциальности информации достаточно разнообразны – начиная от разграничения доступа к данным и заканчивая шифрованием информации, передаваемой по линиям связи.

Изображение слайда

Слайд 4

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

Изображение слайда

Слайд 5

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

Изображение слайда

Слайд 6: ОСНОВНЫЕ ПОНЯТИЯ РЕЛЯЦИОННОЙ АЛГЕБРЫ

Реляционная модель данных базируется на строгом математическом аппарате. Реляционная база данных, в общем случае состоит из набора таблиц (в реляционной алгебре таблица носит название отношение).

Изображение слайда

Слайд 7

Каждая таблица (отношение) состоит из записей (которые называются кортежами), а записи – из полей (которые называются атрибутами). Каждый атрибут имеет имя и значение. Значение атрибута может быть определенного типа (принадлежать определенному домену). Значение атрибута не обязано присутствовать в каждой записи (кортеже) – в некоторые кортежи этот атрибут может не входить. Факт отсутствия атрибута в кортеже обозначается специальной конструкцией NULL. Конструкция NULL обозначает не кошелек, в котором нет ни копейки денег, а отсутствие кошелька как такового.

Изображение слайда

Слайд 8

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

Изображение слайда

Слайд 9

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

Изображение слайда

Слайд 10

Помимо собственно отношения (таблицы) в базе данных обязана присутствовать и схема отношения (описание таблицы). Схема отношения является метаданными, т.е. данными, описывающими данные. Таблиц (отношений) и схем (описаний) в базе данных может быть произвольное число (ограничения накладываются только конкретной реализацией той или иной СУБД), но каждой таблице (отношению) обязательно должна соответствовать ровно одна схема (описание) отношения и наоборот.

Изображение слайда

Слайд 11: Над таблицами (отношениями) в БД определены следующие операции:

операция ограничения отношения; операция проекции отношения; операция прямого (или декартова) произведения отношений; операция соединения отношений; операция объединения отношений; операция пересечения отношений; операция взятия разности отношений.

Изображение слайда

Слайд 12

Операция ограничения отношения включает в результирующую таблицу (отношение) только те записи (кортежи), которые удовлетворяют заданным условиям. В языке SQL этой операции соответствует конструкция WHERE оператора SELECT.

Изображение слайда

Слайд 13

Операция проекции отношения включает в результирующую таблицу (отношение) только те поля (атрибуты), которые были явно заданы в операции. В языке SQL список полей (атрибутов) явно задается в списке выборки оператора SELECT.

Изображение слайда

Слайд 14

Операция прямого произведения отношений является фундаментальной операцией реляционных СУБД. Если имеется две таблицы (отношения), то эта операция выполняется следующим образом : прямое произведение таблиц (отношений) представляет собой поочередную комбинацию каждой записи из Табл1 с каждой записью Табл2.

Изображение слайда

Слайд 15

Следует иметь в виду, что таким и только таким образом соединяются в реляционной СУБД все таблицы. Если в одной таблице у Вас имеется 1000 строк, и в другой таблице имеется 1000 строк, в итоговой таблице у Вас будет 1000000 записей. Три таблицы по 1000 записей дадут 1000000000 (миллиард!) записей. Такая особенность работы – главная причина невысокой производительности реляционных СУБД на многотабличных запросах. В языке SQL операция прямого произведения задается в виде списка соединяемых таблиц в опции FROM оператора SELECT.

Изображение слайда

Слайд 16

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

Изображение слайда

Слайд 17

Поскольку операция соединения является разновидностью операции прямого произведения, в языке SQL она задается в виде списка соединяемых таблиц (как операция прямого произведения) и в виде специальных конструкций INNER JOIN, LEFT JOIN и RIGHT JOIN, в которых задается условие (способ) соединения таблиц. В некоторых диалектах SQL (в частности, в СУБД ORACLE ) вместо этих конструкций условия соединения можно указывать непосредственно в опции WHERE оператора SELECT.

Изображение слайда

Слайд 18

Операция объединения отношений представляет по сути своей слияние двух отношений (таблиц), т.е. результирующая таблица (отношение) будет содержать все записи и из первой, и из второй таблицы. Существует две разновидности операции объединения, одна из которых представлена конструкцией UNION, а другая – UNION ALL оператора SELECT. В первом случае требуется, чтобы в результирующей выборке не было одинаковых записей (кортежей) их двух разных таблиц (отношений). Вторая разновидность – это слияние двух таблиц «не глядя». Следует отметить, что не во всех диалектах SQL эти операции реализованы в полном объеме. В любом случае операция UNION (в отличие от UNION ALL ) – гораздо более медленная, что необходимо учитывать при проектировании базы данных.

Изображение слайда

Слайд 19

Операция пересечения отношений – это слияние данных из двух и более отношений (таблиц), причем в результирующее отношение попадают только те записи, которые есть в обоих таблицах (отношениях). В языке SQL эта операция представлена конструкцией INTERSECT. Эта конструкция реализована не во всех диалектах SQL и, как и UNION, достаточно медленная.

Изображение слайда

Слайд 20

Операция взятия разности отношений заключается в выборке кортежей (записей) из первого отношения (таблицы), а затем исключении из нее всех записей, которые встречаются в другой таблице (отношении). В языке SQL эта операция представлена конструкцией MINUS оператора SELECT. Эта конструкция реализована не во всех диалектах SQL и также достаточно медленная. Как и обычная операция вычитания, операция MINUS некоммутативна, т.е. в отличие от UNION и INTERSECT результат ее работы зависит от порядка следования таблиц (отношений).

Изображение слайда

Слайд 21: ДОСТУП К SQL -ОРИЕНТИРОВАННЫМ СУБД

Каждая СУБД обеспечивает пользователя различными средствами доступа к информации, находящейся в базе данных. Помимо специфических средств доступа, таких как SQL * Plus СУБД ORACLE или Microsoft Access, существует и ряд общепринятых способов доступа к информации, находящейся в БД.

Изображение слайда

Слайд 22

Протокол ODBC ( Open DataBase Connection ) или аналогичную систему BDE (фирма Borland ). Доскональное знание этих средств доступа не является обязательным для работы с SQL-ориентированными СУБД, но общее понимание принципа их работы позволит повысить эффективность работы с СУБД, а также искать и устранять тонкие ошибки, неизбежно возникающие при написании программного обеспечения, взаимодействующего с СУБД. Порядок работы с СУБД будем рассматривать на примере протокола ODBC

Изображение слайда

Слайд 23

Изображение слайда

Слайд 24

первое действие при работе с реляционными СУБД – установка соединения. В момент установки СУБД проверяет права пользователя (требуется указывать имя пользователя и пароль) и настраивает программное обеспечения для работы с новым соединением. В протоколе ODBC этим действиям соответствует вызов следующих функций: SQLAllocEnv(...) SQLAllocConnect(...) SQLSetConnectOption(...) // Может повториться многократно. SQLConnect(...) или SQLDriverConnect(...)

Изображение слайда

Слайд 25

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

Изображение слайда

Слайд 26: Каждый запрос к СУБД проходит следующие стадии:

разбор ( parse ), во время которого проверяется синтаксис запроса, подтверждаются права пользователя на выполнение этого запроса и строится т.н. план запроса. В протоколе ODBC этому этапу соответствует функция SQLAllocStmt (...) и SQLPrepare (...) Приведенные здесь имена функций соответствуют версии 2 протокола ODBC. В версию 3 протокола внесены достаточно существенные изменения (в частности, и в имена некоторых функций), но общий принцип работы с СУБД остался прежний.

Изображение слайда

Слайд 27

ограничение переменных-параметров. Указанная возможность позволяет использовать ранее разобранный запрос многократно, просто подставляя в него все новые и новые значения определяющих параметров. В синтаксисе SQL для указания параметров-переменных существуют специальные конструкции (при работе через ODBC – знак вопроса, при работе через OCI - конструкция вида :<Имя> или :<Номер> и т.д.). Этот этап не является обязательным. В протоколе ODBC ему соответствует вызов (возможно, многократный) функции SQLBindParameter (...)

Изображение слайда

Слайд 28

собственно выполнение запроса. В протоколе ODBC ему соответствует вызов функций SQLExecute (...) или SQLExecDirect (...) подготовка области памяти для приема выбранной информации. Этот этап характерен искючительно для оператора SELECT. В протоколе ODBC ему соответствует вызов (возможно, многократный) функции SQLBindCol (...)

Изображение слайда

Слайд 29

собственно работа с выбранными данными. Физическая пересылка данных из БД в программу выполняется в протоколе ODBC с помощью функций SQLFetch (...) или SQLExtendedFetch (...). Также используется только с оператором SELECT. операции с выбранными данными (например, изменение полей, удаление или добавление записи). Эти операции выполняются в протоколе ODBC функцией SQLSetPos (...).

Изображение слайда

Слайд 30

завершение работы с выборкой – функция SQLFreeStmt (...). Этот порядок многократно повторяется на каждый запрос к СУБД. При завершении работы программы выполняется закрытие соединения с СУБД: SQLDisconnect(...) SQLFreeConnect(...) SQLFreeEnv(...)

Изображение слайда

Слайд 31: При написании запросов к реляционным СУБД следует иметь в виду следующее:

Запросы на сервер базы данных передаются всегда в текстовом виде, т.е. сервер баз данных всегда работает как интерпретатор. Это позволяет формировать текст запроса непосредственно в программе.

Изображение слайда

Слайд 32

Стадия разбора запроса (функции SQLAllocStmt (...) и SQLPrepare (...), а также SQLExecDirect (...)) являются чрезвычайно медленными операциями, поскольку они не только выполняют синтаксический анализ и компиляцию запроса, но и проверяют полномочия пользователя на его выполнения (это требует длительных поисков в словарях данных, в которых расписаны запреты и разрешения для каждого пользователя с точностью до отдельного поля в отдельной таблице).

Изображение слайда

Слайд 33

Операция также строит т.н. план запроса, т.е. последовательность его выполнения (это зачастую требует тонкого анализа по каждой таблице с привлечением автоматически собираемой статистики по количеству записей в таблице, частоте встречи того или иного ключа и т.д). Поэтому при написании программ необходимо, по возможности, выполнять однократную компиляцию запроса.

Изображение слайда

Слайд 34

Поскольку стадия разбора запроса является чрезвычайно медленной, большинство СУБД, не надеясь на грамотность разработчиков ПО, помещает все разобранные запросы в специальный системный кэш. Факт присутствия в различных СУБД проверяется по-разному: СУБД ORACLE требует полного текстуального совпадения, SQL Server – совпадения с точностью до констант и т.д.

Изображение слайда

Слайд 35

Если новый запрос, поступивший от пользователя, уже присутствует в кэше, он повторно не разбирается. Для того, чтобы воспользоваться этой возможностью, существует общее правило – никогда без крайней необходимости не прописывать в часто выполняемых запросах никаких констант. Все вхождения констант следует заменять символом переменной-параметра, и затем ограничивать его с помощью соответствующих функций SQLBindParameter (...).

Изображение слайда

Слайд 36

Выборка, полученная при выполнении оператора SELECT (и только его!) носит название курсора. Существует две разновидности курсоров – т.н. FORWARD _ ONLY и «все остальные». Главная особенность FORWARD _ ONLY -курсоров – то, что по ним возможно движение только вперед на одну запись (по аналогии с xBase – только операция SKIP ). Остальные курсоры допускают движение во всех направлениях и на любое количество записей ( SKIP +/-<Число записей>, GOTO TOP, GOTO BOTTOM, GOTO <Номер записи>).

Изображение слайда

Слайд 37: Необходимо иметь в виду следующее:

курсоры FORWARD _ ONLY работают намного быстрее. Их, по возможности, следует использовать везде, где это допустимо – в первую очередь, при печати итоговых документов. не все СУБД (особенно ранние версии) поддерживают не- FORWARD _ ONLY -курсоры. В этих случаях протокол ODBC (или аналогичные ему средства) моделирует их «поведение» путем «выкачивания» на локальную машину выбранной информации с помощью FORWARD_ONLY- к урсора. Рискнув посмотреть всего-навсего первую запись в «миллионной» таблице, можно в лучшем случае подвесить на несколько часов локальную машину, в худшем – выбить сервер. В любом случае, нельзя организовывать выборки большого размера, не убедившись предварительно, что СУБД (именно СУБД, а не протоколы типа ODBC или BDE ) «умеет» работать с не- FORWARD _ ONLY -курсорами.

Изображение слайда

Слайд 38

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

Изображение слайда

Слайд 39

В силу этого некоторые программные средства добавляют новые записи в таблицы БД весьма экзотическим образом – к примеру, записывая в таблицу запись со всеми пустыми полями, а затем организуя ее поиск и выборку. Именно таким образом, в частности, было организовано добавление записей в ранних версиях BDE. Мало того – предусмотрительные разработчики от Borland специально проверяли, чтобы такая запись в БД была ровно одна – чтобы, не дай Бог, не попортить чужую. Результатом такого решения было, что неудачно «издохшая» программа выводила из строя десятки других программ, работавших с той же базой...

Изображение слайда

Слайд 40: ОСНОВНЫЕ ОПЕРАТОРЫ ЯЗЫКА SQL ОБЩИЕ ПОЛОЖЕНИЯ

Согласно существующему стандарту в языке SQL насчитывается насколько десятков операторов. Синтаксис их весьма пространен и по «болтливости» напоминает КОБОЛ, но разработчику программ для эффективной работы с базой данных достаточно знать всего 8 операторов языка SQL : оператор SELECT оператор INSERT оператор UPDATE оператор DELETE оператор CREATE TABLE оператор DROP TABLE оператор CREATE INDEX оператор DROP INDEX оператор CREATE VIEW оператор DROP VIEW

Изображение слайда

Слайд 41: ОПЕРАТОР SELECT

Оператор SELECT является основным и наиболее часто используемым оператором языка SQL. Назначение его простое – выбрать из базы данных запрошенную информацию и передать ее пользователю для работы. Оператор SELECT – один из наиболее сложных операторов языка.

Изображение слайда

Слайд 42

Синтаксис его описывается следующим образом: SELECT <Список выборки> FROM <Список таблиц> [ WHERE <Условие выборки>] [ GROUP BY <Список группировки> [ HAVING <Условие вторичной выборки>]] {UNION [ALL] < Новый SELECT>... | INTERSECT < Новый SELECT>... | MINUS < Новый SELECT>} [ ORDER BY <Список сортировки>]

Изображение слайда

Слайд 43

Как видно из описания, обязательными частями оператора SELECT является только список выборки и опция FROM. В большинстве диалектов SQL опции должны располагаться именно в том порядке, в котором они здесь описаны. Список выборки соответствует в реляционной алгебре операции проекции отношения, опция FROM используется для реализации операций прямого произведения и соединения отношений, а опция WHERE – для операции ограничения отношения.

Изображение слайда

Слайд 44

Оператор SELECT выполняется как «единая и неделимая» единица. Порядок выполнения частей SELECT следующий: Вначале выполняется опция FROM, т.е. строится либо декартово произведение, либо соединение отношений. В частном случае список опции FROM может состоять всего из одной таблицы, при этом никаких операций на первом шаге не делается.

Изображение слайда

Слайд 45

На полученной результирующей таблице (отношении) выполняется опция WHERE (операция ограничения отношения), если она присутствует. Сформированная на первом шаге и ограниченная на втором шаге результирующая таблица подвергается обработке опцией GROUP BY (если она присутствует). Поскольку опция GROUP BY накладывает определенные ограничения на список выборки, можно утверждать, что при ее наличии выполняется и операция проекции таблицы (отношения), и операция группировки.

Изображение слайда

Слайд 46

Полученная на четвертом шаге итоговая таблица (если четвертый шаг был) повторно ограничивается опцией HAVING (если она присутствует). Опция HAVING без GROUP BY не употребляется. Ее роль в отношении итоговой таблицы в точности такая же, как и опции WHERE в отношении исходных таблиц.

Изображение слайда

Слайд 47

Выполняется она из теоретико-множественных операций ( UNION, INTERSECT, MINUS ) с полученной на первых шагах таблицей и новыми таблицами (если она присутствует). То, что в описании названо <Новый SELECT >, представляет собой в точности новый оператор выборки, из которого просто выброшено ключевое слово SELECT.

Изображение слайда

Слайд 48

Полученная на предыдущих этапах таблица сортируется с помощью опции ORDER BY (если она присутствует). Опция ORDER BY при наличии теоретико-множественных операций может присутствовать только в единственном экземпляре – в самом конце оператора SELECT. Аналога этой операции в реляционной алгебре нет, но смысл ее представляется очевидным. Следует отметить, что опция GROUP BY в силу принципа своей работы тоже фактически выполняет сортировку итоговой таблицы, но применение опции ORDER BY в любом случае приведет к упорядочению таблицы именно так, как указано в ней, независимо от наличия опции GROUP BY.

Изображение слайда

Слайд 49

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

Изображение слайда

Слайд 50

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

Изображение слайда

Слайд 51: Опция FROM оператора SELECT

Опция FROM оператора SELECT наиболее проста, но в различных диалектах SQL она существует в одном из двух вариантов (иногда допустимы оба): ... FROM {< Таблица > [AS < Алиас >] | (SELECT...) AS < Алиас >},... Первый вариант – просто перечисленный через запятую список используемых таблиц (в частном случае – одна таблица).

Изображение слайда

Слайд 52: FROM {< Таблица > [AS < Алиас >] | (SELECT...) AS < Алиас >} [{INNER|LEFT|RIGHT} JOIN < Другая таблица >... [ ON <Условие соединения>]]

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

Изображение слайда

Слайд 53: SELECT FIOS.FAMILIYA, FIOS.IMYA, FIOS.OTCHESTVO FROM (SELECT FAM AS FAMILIYA, NAM AS IMYA, OTCH AS OTCHESTVO FROM FIO ORG) AS FIOS

поскольку таблица, полученная с помощью оператора SELECT, не имеет имени, сразу за закрывающей круглой скобкой появляется конструкция AS <Имя> (в данном примере – AS FIOS). Это – пример применения операции переименования (только в данном случае не атрибутов, а отношений). Теперь, на время выполнения оператора SELECT, таблица, созданная внутренним оператором SELECT, получает имя FIOS, поле FAM из этой таблицы получает имя FAMILIA и т.д. Именно под этими именами эта таблица и эти поля будут известна во внешнем операторе SELECT.

Изображение слайда

Слайд 54

Стандарт SQL позволяет не указывать ключевое слово AS, т.е. конструкция SELECT FAM AS FAMILIYA и SELECT FAM FAMILIYA с точки зрения синтаксиса языка равноценны, но не следует привыкать к такому стилю программирования. Если для внутреннего оператора SELECT мы бы не указали ключевых слов AS, то таблица FIOS имела бы поля FAM, NAM и OTCH. Для всех вложенных подзапросов обязательно следует задавать имена будущих полей в явном виде, не надеясь на «сообразительность» СУБД.

Изображение слайда

Слайд 55

Опция FROM, в которой употреблена конструкция INNER JOIN без опции ON, полностью эквивалентна перечислению таблиц через запятую. В большинстве диалектов SQL, поддерживающих обе конструкции, и та, и другая форма записи являются взаимозаменяемыми. В том случае, когда в конструкции INNER JOIN присутствует опция ON, операция произведения отношений превращается в операцию соединения отношений.

Изображение слайда

Слайд 56

Пример : SELECT... FROM SHAPKA_SCHETA INNER JOIN STROKA_SCHETA... В этом случае в результирующей выборке будет находиться шапка счета №1 в комбинации со всеми строками счета №1, шапка счета №1 в комбинации[ со всеми строками счета №2 (явный бред!), шапка счета №2 в комбинации со всеми строками счета №1 (тоже явный бред!), шапка счета №2 в комбинации со строками счета №2 (нормальные данные) и т.д.

Изображение слайда

Слайд 57

Другой пример: SELECT... FROM SHAPKA_SCHETA INNER JOIN STROKA_SCHETA ON SHAPKA_SCHETA.NOMER_SCHETA=STROKA_SCHETA.NOMER_SCHETA AND SHAPKA_SCHETA.DATA_SCHETA=STROKA_SCHETA.DATA_SCHETA... В этом случае в результирующую выборку попадет шапка счета №1 со всеми строками счета №1 (потому что у них одни и те же номера и даты выписки счетов – условие стыковки двух таблиц), шапка счета №2 со всеми строками счета №2 (у них тоже одинаковые номера) и т.д. В этом основное отличие операций произведения и соединения отношения – первая порождает всевозможные комбинации записей таблиц (в том числе заведомо бессмысленные), вторая – строго определенные.

Изображение слайда

Слайд 58

Конструкция INNER JOIN носит название внутреннего произведения. Кроме внутреннего, существует и т.н. внешнее произведение, для описания которого используются конструкции LEFT JOIN (вариант LEFT OUTER JOIN ) и RIGHT JOIN (вариант RIGHT OUTERT JOIN ).

Изображение слайда

Слайд 59: Список выборки оператора SELECT

Список выборки оператора SELECT, согласно реляционной алгебре, задает проекцию отношения. На самом деле список выборки представляет собой список параметров (в качестве которых используются арифметические или строковые выражения), разделенный запятыми: SELECT { ALL | DISTINCT |<пусто>}<Выражение> [ AS <Алиас>],... FROM...

Изображение слайда

Слайд 60

В качестве арифметических выражений можно использовать все, что обычно используется в таких случаях: константы числовые и символьные (символьные константы в большинстве диалектов SQL ограничиваются апострофами, а не кавычками) имена полей (возможно, квалифицированные, т.е. <Имя таблицы>.<Имя поля>) Поскольку рабочее пространство базы данных делится на схемы данных, которые в свою очередь содержат таблицы, которые содержат поля. Т.е. в качестве имени Вам вполне может встретиться конструкция MySchema.MyTable.MyField@ForeignServer.

Изображение слайда

Слайд 61

знаки арифметических операций: +, -, *, /, % (остаток от деления) знаки конкатенации символьных строк || (только в некоторых диалектах SQL ) функции, записанные по общепринятым правилам: <Имя функции>(<Параметры>,...) круглые скобки для изменения порядка вычисления операций а также все, что можно образовать из всего ранее перечисленного.

Изображение слайда

Слайд 62: ОПЦИЯ WHERE ОПЕРАТОРА SELECT

Основное назначение опции WHERE оператора SELECT – ограничение отношения. Опция WHERE представляет собой логическое выражение, которое поочередно проверяется для каждой записи (кортежа) таблицы (отношения). Если результат проверки истинен, запись (кортеж) оставляется в отношении, в противном случае – исключается из отношения. Так же, как при операции MINUS, исключение записи (кортежа) из таблицы (отношения) не следует понимать так, что она будет откуда-то «удалена».

Изображение слайда

Слайд 63

Логическое выражение в опции WHERE может содержать: любые операции сравнения (они будут описаны позже) знаки логических операций круглые скобки для изменения порядка вычисления выражения

Изображение слайда

Слайд 64

В качестве знаков логических операций используются традиционные операции булевой алгебры, а именно: операция AND, или «логическое И», истинная только если оба ее операнда истинны; операция OR, или «логическое ИЛИ», истинная, если любой из ее операндов истинен; операция NOT, или «логическое НЕ», изменяющая истинность операнда на противоположную.

Изображение слайда

Слайд 65

В качестве операций сравнения в опции WHERE могут быть использованы следующие конструкции: традиционные операции сравнения (проверка на больше/меньше/равно) операции проверки на попадание в диапазон операции проверки на значение из списка операции проверки на значения типа NULL операции проверки на соответствие заданному шаблону Традиционные операции сравнения представлены в языке SQL операциями (>), (>=), (<), (<=), (=), (<>).

Изображение слайда

Последний слайд презентации: Основы работы с базой данных

Спасибо за внимание

Изображение слайда

Похожие презентации

Ничего не найдено