Реферат по предмету "Программирование, Базы данных"


Язык SQL

федеральное агентство по образованию
государственноеобразовательное учреждение высшего профессионального образования
Российский государственный гуманитарныйуниверситет
институт ИНФОРМАЦИОННЫХ  НАУКИ ТЕХНОЛОГИЙ БЕЗОПАСНОСТИ
Факультет информатики
Специальность: прикладная информатика Математическая логикаЯзык SQL
                           Выполнил
Романов А.Н.                                                         
                                                                                Москва 2007
Содержание
Язык запросов SQL                                                                                                                       3         
Основные инструменты                                                                                                               9
Оператор SELECT                                                                                                                         11
Использование имён и вложенныхзапросов                                                                             12
Объединения и внешние соединения                                                                                         13
Математические функции и средстваработы с датами                                                            15       
Группы и агрегатные функции                                                                                                   17
Оператор CASE                                                                                                                             18
Создание таблиц и манипуляции сданными                                                                            20
Язык запросов SQL
Первыми попытками уйти от пост­роения баз данных (БД) на основе физическойструктуры их разме­щения на носителях являлисьиндексные файлы. Они обеспечивали доступ кзапи­санной в них информации посредством индексных ключей, то есть для поискане­ких конкретных записей в файлеисполь­зовалась совокупность указателей. К недо­статкам такого подхода можно отнести, в частности, неоптимальноехранение ин­формации (дублирование, недостаточное структурирование) и значительное время поиска вбольших файлах, не говоря уже о существенныхтребованиях, предъявляемых каппаратному обеспечению.
Одним из решений упомянутых проблем стали иерархические БД. В таких базах элементы строго упорядочены, причем так, что данные одного уровня подчиняются (являетсяподмножеством) данным друго­го,вышестоящего уровня. В такой модели связи могут быть отражены в виде дерева, причем допускаются только односторон­ние — от старших уровней к младшим. Подобная структура все еще напоминает древовидную файловую систему, где ди­ректорииявляются верхними уровнями, а файлы —нижними. Несмотря на то что по сравнениюс индексными файлами это был существенный шаг вперед, иерархические БДнаследовали многочисленные недостаткипредыдущих систем, заключав­шиеся всложности алгоритмов доступа к даннымнижних уровней и повышенных аппаратныхтребованиях.
Иерархические БД не получили широкогораспространения, уступив место новой кон­цепциихранения данных (реляционные БД). Оназаключалась в использовании таб­личногометода хранения и доступа к кон­кретным записям, который используются и в настоящее время.
Прогресс в области сетевых технологий поспособствовал возникновению проблеморганизации доступа к данным, располо­женным на серверах, с удаленных компью­теров— участников сети. Для оптимизации этого процесса и снижения сетевого трафи­каМеждународной организацией по стан­дартизации(ISO) был разработан и внедрен структурированныйязык запросов SQL.
Сразвитием Глобальной сети и ростом объемов обращающейся в ней информации задачи предоставления доступа к последней практически повсеместно сталирешаться с помощью технологий БД в общем и SQLв ча­стности. В настоящее время рядовой пользо­ватель,сам того не зная, активно работает с базами данных, даже просто просматривая веб-странички и форумы, или пользуясь сер­висами электронной почты и ICQ.
            Несмотря на то что иерархические БД еще не канули в лету окончательно, они, какупоми­налось выше, используются крайне редко — в основном при решении неких специализи­рованных задач, вследствие чего неимеет смысла подробноостанавливаться на их уст­ройстве. Гораздо интереснее рассмотреть реляционныеБД.
Итак,данные в таких базах размещены во взаимосвязанных таблицах, строки которыхназываются записями, а столбцы — полями. Приэтом данные в ячейках одного поля долж­ны
быть одинакового типа. Вкаждой таблице, как правило, имеются специальныеполя, кото­рые позволяют однозначно идентифицировать ту или иную запись — они называются пер­вичнымиключами или первичными индекса­ми. Такиеполя помогают отличать одну запись отдругой, даже если все остальные поля не­скольких таких записей абсолютно идентичны. Например, представьте, что вы разрабатываете справочник сотрудников своей организации, и при этом каждая запись хранит данные об од­ном сотруднике, а их выборка осуществляется по полю «Фамилия». Может оказаться так, что в организации работает несколько человек с одинаковой фамилией. Чтобы отличить эти за­писи друг от друга, применяются первичные индексные поля. Чаще всего за тип данных первичного ключа берется целочисленное зна­чение счетчика — в таком случае при добав­ленииновой записи в таблицу значения этого полязаполняются автоматически. Однако не запрещается использовать в качестве первич­ногоключа поле, имеющее, к примеру, сим­вольный тип данных, хотя подобные ситуации возникают крайне редко.
Помимозадачи идентификации записей первичные индексы также часто используют­ся длясвязывания между собой данных из разных таблиц. Кроме первичных индексов существуют и вторичные индексы, которые обеспечиваютмеханизм быстрого поиска и доступа к данным таблицы. Чтобы получить ответ назапрос к таблице, не имеющей ин­дексного поля, SQL-серверу придется скани­ровать полностью всю таблицу,считывая строки целиком.Очевидно, что такой подход прибольших объемах информации слишком расточителен с точки зрения затрат аппарат­ных ресурсов. Тем не менее необходимопо­мнить, что с увеличением количества индек­сов растет и объем базы данных.
По признаку метода доступа БД делятсяна локальные, сетевые ираспределенные.
К локальным базам доступ возможентолько с того компьютера, на котором они расположены. Сетевые базы призваны обеспечитьработу с данными с других компьюте­ровпосредством локальной сети или Интернета. Распределенные БД — это, по сути,подвид сетевых баз с той лишь разни­цей, что различные части информации на­ходятсяна множестве разных компьютеров.
Насегодняшний день основным видом являетсявторой тип БД — сетевые базы. Именно ониприменяются в Интернете для организации доступа пользователей к ин­формации сайтов, форумов, гостевых книг и каталогов товаров.
Такие БД делятся на файл-серверные и клиент-серверные. В файл-серверной мо­делипри подключении СУБД клиента к удаленной базе все данные скачиваются на локальный компьютер, а после их обработ­ки или изменения снова закачиваются на сервердля обновления в полном составе. Таким образом, происходит весьма интен­сивный информационный обмен с серве­ром,что чрезвычайно нагружает сеть. Кро­ме того, в такой модели весьма сложно организовать одновременную работу не­сколькихпользователей, поэтому в настоя­щее время она используется редко и толь­ко для простых баз. Клиент-серверная модельорганизована совершенно иначе. Системауправления такой базой состоит издвух частей — клиента и сервера. Кли­ентская часть программы посылаетзапро­сы с помощью языка запросов SQL,
сервер­ная частьобрабатывает их и отправляет обратно только те данные, которые были нужны пользователю. Информация об из­менении этих данных возвращается на сер-
вер, который обрабатывает ее ификсирует в общей базе.Нагрузка на сеть при такой организацииработы минимальна, а органи­зацию одновременной работы нескольких пользователей берет на себя сервер.
Целью любойСУБД являться предоставление пользователю простых механизмов доступа и манипулирования данными.Существует много различных методов ее достижения, одним из которых являетсяязык SQL. Расши­фрованнаяи переведенная на русский язык эта аббревиатура будет выглядеть как Струк­турированный Язык Запросов.
Стандарт языка SQL. определяется Аме­риканским национальным институтомстан­дартов (ANSI) и Международной органи­зацией постандартизации (ISO). Однако некоторые производители БД вносят в язык свои изменения идополнения. Например, компания Огас1есоздала язык PL/SQL, кото­рыйявляется процедурным расширением оригинальногоSQL.
Однако истандартный SQLможет исполь­зоваться в двух различныхвариантах — интерактивном и вложенном.Первый пред­ставляется собойотдельный программный модуль на SQL,который сам выполняет за­просы и отображаетрезультаты работы. Второй — этовнедрение элементов SQLв другойязык высокого уровня, например С или Delphi. В этом случае основная про­грамма самостоятельно формируетзапросы для сервера SQL, а потом использует ре­зультатывыборок из базы, не предъявляя их пользователю в чистом виде.
В целом же SQL— это язык, ориентиро­ванный на работу с реляционными базами    данных. Егоиспользование позволяет на по­рядок сократить объем работ, который пона­добился бы в случае созданияприложений, использующих БД на универсальном языке программирования, например на том жеС.
Действительно,чтобы сформировать ре­ляционнуюбазу данных на С, нужно было бы описать как минимум один объект (дву­мерный массив), называемый в SQL.табли­цей, который должен иметь возможность менятьразмер для вмещения любого необ­ходимогочисла строк. Затем пришлось бы создавать процедуры для помещения зна­чений в такую таблицу, а также поиска и извлечения этих значений. Это непросто даже напервый взгляд. Так, если бы вы захотели найти все строки в таблице «TAB», в которых значения некоего поля «num» равно 5, то необходимо было бывыполнить по шагам весьмасложную про­цедуру.
Грамотный листинг программы, реализую­щий такой алгоритм на С исоблюдающий все подобающиепроверки займет, пожалуй, всю эту страницу. В случае же использования SQLдостаточно написать вот такой запрос:
SELECT *
FROM tab
WHERE num = 5
Дело в том, чтокоманды SQLмогут ра­ботать со всеми записями таблицы как с единым объектом. Необходимость органи­зации циклов и проверок значений вруч­ную отпадает.
Упомянутый в примере оператор SELECTявляется основным и наиболее часто ис­пользуемымдля выборки данных из таб­лиц. Все обращения к таблицам происхо­дят в видезапросов, которые состоят из таких же операторов, — меняются только условия поиска.
В настоящеевремя трудно найти язык программированиявысокого уровня, кото­рыйбы не поддерживал работу с SQL. Для этих целей разработчиками различных компиляторов предусмотрены специаль­ные библиотеки компонентов, которыеобеспечивают связь между приложения­ми, написанными на их языке, и сервера­миSQL, в результате чего данные, которые будут выбираться из базы, можно исполь­зовать в клиентской программеобработки по своему усмотрению.
Сразупредупредим, что SQLServer2000 возможно установить только на сервер­ные версии операционной системы Windows— 2000 Serverи 2003 Server. Попытки инсталляции ее на пользовательские версии ОС, такие как WindowsХР Professional, если только речь не идет о клиентскойчасти, не увенчаются успехом. Если же вы непременно хотите пользо­ваться языком запросов, работая под пользовательской ОС, существует MSDE— это урезанная версия SQLServer, которая входит в дистрибутив МSOffice2003.
После запуска инсталлятора скомпакт-диска в двух первых окнах мастера уста­новки необходимо последовательновы­брать пункты «Components» и «InstallDatabaseServer». Результатом этих дейст­вий станет появление окна спредложением указать расположение будущегосервера. Здесь возможны следующие варианты: «LocalComputer» — локальный компьютер, «Remotecomputer» — удаленный компью­тер в вашейсети, «VirtualServer» — вирту­альный серверсети. Этот выбор зависит только от конкретнойзадачи, которую вы решаете в данныймомент.
Если вывыбрали компьютер, где до этого уже существовала некая версия SQLServer, тов следующем окне будет доступен пункт «Upgrade, removeoraddcomponentstoanexistinginstanceofSQLServer» — добавле­ние, изменение и удалениесуществующих компонентовсервера. Иначе здесь можно будетвыбрать лишь «CreateanewinstanceofSQLServerorinstallClientTolls» — со­здать новый экземпляр SQL-сервера или ус­тановить клиентскую часть. Кстати, этопо-
следнее «или» способствует появлениюеще одного ветвления в дереве вариантов установки. Следующее окно «InstallationDefinition» предоставляет на выбор пункты: «ClientToolsOnly» — поставить клиентскую часть, которая используется дляорганиза­ции доступа к серверу с клиентскихмашин; «ServerandClientTools» — серверную и клиентскую части, атакже «Connectivityonly» — только драйверы для присоедине­ния к базе. Последний тип установки при­меняется исключительно на клиентскихма­шинах, которые должны работать с базами данных, то есть утилиты для работы ссер­вером, подобные EnterpriseManadger, ин­сталлироваться не будут. Поскольку мы устанавливаем именно сервер — здесь следует выбрать второй вариант.
Ввод имени («InstanceName») в следу­ющем окне недолжен вызвать затрудне­ний. Поумолчанию оно будет идентично NETBIOS-имени вашей машины. Если тре­буется его изменить, придется снять га­лочку в пункте «Default», после чего мож­но будет ввести другое название.
Из предложенныхдалее вариантов уста­новки «Typical», «Minimum» и «Custom» полезно использовать именно последний вариант. При этомвыбирать что-то из спискапредложенных компонентов не придется — пунктов, отмеченных здесь по умолчанию, более чем достаточно дляначала работы сервера.
ОднакопараметрамзапускасервисовSQL Server вследующемокнестоитуделитьбо­леепристальноевнимание: «Auto start SQL Service» — всесервисыстартуютавтомати­чески; «Customizethe setting for each Service» — каждомусервисуназначитьсвоипараметрызапуска. Если вы выберете второй вариант, то в левой части окна на панели «Services» станут доступны элемен­ты «SQLServer» и «SQLServerAgent». При выборе любого из них вправой части окна на панели «ServiceSetting» можно будет настроить параметры запуска, выбраводин из трех стандартных вариантов: отключено, автоили вручную.
На этомнастройки самого сервера факти­чески завершены, осталось только указать параметры учетных записей,авторизации и режималицензирования. Итак, «UsetheLocalSystemaccount» — использовать учетную запись локальной системы, «UseaDomainUseraccount» — использовать доменную учетную запись. Выбор целиком зависит от вашихпредпочтений.
Дляуказания метода авторизации (AuthenticationMode) необходимо вы­брать: «WindowsAuthenticationMode» — использоватьавторизацию WindowsNT или«MixedMode (Windows Authentication and SQL Server Authentication)» — использо­ватьсмешаннуюавторизациюWindowsNTи SQL-сервера). При использовании второ­го метода не забудьте указать парольучетной записиадминистратора «sа»,которая создается по умолчанию.
И, наконец, последнее окно мастера «ChooseLicensingMode» посвящено выбору режима лицензирования, который зависитот условий, на которых вы приобрели дан­ную версию SQL Server2000.
Основныеинструменты
Наиболее часто используемой утилитой для работы с SQLServerявляется EnterpriseManager. Этот инструмент создавался с це­лью облегчения выполнения наиболее сложных административных задач, сочетая простоту работы с высокой функциональ­ностью. Среди них такие какуправление системой безопасности, создание баз дан­ных и ее объектов, создание и восстановле­ние резервных копий, запуск и установка служб, атакже конфигурирование связан­ных иудаленных серверов.
Например, создание новой базыданных с помощью EnterpriseManagerсводится к нескольким кликам мыши и вводу имени БД. В левой части экрана утилиты необхо­димо выбрать тот SQLServer, на котором она будет размещена, и нажать правой кнопкой мыши на папке Database, после че­го в контекстном меню выбрать пункт «NewDatabase». В появившемся окне «DatabaseProperties» в поле «Name» необходимо впи­сатьназвание базы и нажать кнопку «ОК». Описаниеэтого процесса заняло больше времени,чем он длился бы на деле.
Созданиетаблиц происходит совершен­ноаналогично: клик сначала правой кнопкой мыши на значке «Table», затем левой — на пункте «NewTable» в контек­стном меню. Выше был приведен пример алгоритма выборки из базы данных для классического языка высокого уровня. Просто представьте, сколько времени и сил заняло бы описание на нем такойструктуры как БД с несколькими взаимо­связанными таблицами.
Как бы хорошо не была настроена база данных, всегда существует вероятность потери информации по независящим от администратора причинам. Для сведения подобных потерь к разумному минимуму EnterpriseManagerсодержит инструмент резервного копирования БД.
Чтобы выполнить резервное копирова­ниебазы вручную, нужно щелкнуть правой кнопкой мыши по названию базы и выбрать «Все задачи • > BackupDatabase». Далее в появившемся окне надо нажать кнопку «Аdd'», после чего выбрать каталог для со­хранения и в поле «Filename» ввести имя файла, в котором будет содержаться база. Имя этого файла с названием базы может быть никак не связано. После подтвержде­ния намерения остается только дожидаться конца процесса копирования.
Для того чтобы восстановитьданные из ранее сохраненного файла,необходимо иметь на SQLServerбазу данных с названи­ем,идентичным имени родительской базы. Другими словами, если вы сохранялиБД как Data_Base, то для восстановления дан­ных необходимо создать на серверебазу с таким же названием (не путать с именем файла резервной копии).
Для восстановления информации изфайла нужно нажатьправой кнопкой мыши на базу, предназначенную для приема данных и вы­брать «Все задачи – RestoreDatabase». Да­лее в
последовательно сменяющих друг дру­га окнах нужно выбрать пункты «FromDevise», «SelectDevise» и «Аdd» и указать ката­лог, в котором расположен резервныйфайл.
 Вторая по важности и частоте использо­вания утилита после EnterpriseManagerэто QueryAnalyzer. Она предназначена для выполнения, отладки и анализа запросов.Окно «QueryAnalizer» разделенона три части. Слева находится браузер объектов (ObjectBrowser), с помо­щью которого можно посмотреть списоквсех объектов, расположенных в любой базе дан­ных сервера, а также переченьвсех функций и типов данных. Правая часть разделена на верхнюю и нижнюю, при этом верхняяполо­вина является полемдля ввода запросов, а нижняяиспользуется для вывода результатов их работы и отладочной информации.
При отладкехранимых процедур весьма удобнавозможность трассировки их вы­полнения: для этого необходимо кликнуть на нужной процедуре правой кнопкой мыши и в появившимся контекстном меню выбрать пункт «Debug».
Помимовыполнения процедур и запросов в QueryAnalyzerпредусмотрена возможность оценки скорости работы. Эту функциюмож­но включить, еслиоткрыть меню «Query» и выбрать в нем, соответственно, пункты «DisplayEstimated», «ExecutionPlan» или «DisplayExecutionPlan».
Оператор SELECT
         Основной оператор языка SQL, предназначенный для выборки данных,- SELECT:
SELECT * FROM Table 1
Звёздочка означает все столбцы, а Table1 – имя таблицы, из которой мы этистолбцы хотим извлечь. Практическуюцен­ность оператору SELECTпридает ключевое слово WHERE, позволяющее выводить ис­ключительно те строки таблицы,которые соответствуютусловию. Предположим, у насесть таблица с информацией о персона­ле (Employees), где указаны имя работника (Name) и его заработная плата (Salary). Если нам нужно увидеть данные обо всех работ­никах, получающих заработную платуболее 30 000 рублей, мыформулируем запрос:
SELECT Name FROM Employees WHERE Salary > 30000
На практикесуществует необходимость за­прашивать информацию одновременно из нескольких таблиц. Предположим, что у нас есть таблица Agentsс информацией о торговых агентах: идентификационныйномер (Agent_id), имя (Name) и дата рож­дения (Birth_Date). Есть еще одна табли­ца — Contacts, где содержатся данные о контрактах, заключенных агентами: идентификационный номер клиента (Client_id),номер агента (Agent_id),да­та заключения контракта (CDate) и сум­ма сделки (Gross_Income).
Предположим, необходимо премировать агентов, заключавших с начала года кон­тракты на сумму более 500 000 рублей. Запрос к базе данных будет выглядеть так:
SELECT Name, Bitth_Date FROM Agents, Contacts WHEREAgents.Agent_id = Contracts.Agent_id AND Contracts.CDate >`31.12.2004` ANDCONTRACTS.Gross_Income > 500000
Условия WHEREсвязывает друг с другом две таблицы через номер агента,отбрасы­вает старые достижения и выбирает значи­тельные контракты. Логический оператор ANDпозволяет задавать несколько условий.Запись . применяется для того, чтобы раз­личать столбцы с одним и тем женазвани­ем из разныхтаблиц.
Поскольку один агент может заключитьне­сколько больших контрактов, его данные могут быть несколько раз продублированы. Чтобы избежатьэтого, необходимо исполь­зоватьключевое слово DISTINCT:
SELECTDISTINCT Name, Birth_Day From …
Использованиеимен и вложенных запросов
В SQL-конструкциях назначение новых имен применяется, чтобы сохранить длядальнейших операцийрезультаты, возвра­щаемые запросами ивстроенными функ­циями, и сделать текстзапроса более ком­пактным за счетсокращений. Для демонстрации эффектов переназна­чения имен, возьмем, кпримеру, таблицу Roomsс информацией о жилых комнатах вмногоквартирном доме со следующими столбцами: идентификатор комнаты (Room_id), тип (Room_type), длина (Length) и ширина (Width). Предположим, мы хотим получить информацию о жилой площади всех спален игостиных в доме. Дляэтогоформулируемзапрос:
SELECTRoom_Type, Length * Width AS
Living_Space
FROM Rooms
WHERERoom_Type = `ГостинаяOR Room_Type =`Спальня`
В результирующей таблице не будетдан­ных о длине и ширине, зато появитсястолбец с информацией о площади, ко­тораябыла вычислена непосредственно приисполнении запроса
Второй вариантприменения ключевого слова ASможно проиллюстрировать на примере о торговых агентах изпредыду­щей заметки, который теперь будет вы­глядетьтак:
SELECT DISTINCT Name, Birth_Date
FROM Agents AS A1, Contracts AS C1
WHERE A1.Agent_id = C1.Agent_id AND C1.CDate
>`31.12.2004` AND C1.Gross_Income > 500000
Дав с помощью ключевого слова АSтабли­цам Agentsи Contactsсокращенные име­на, мы сделали текст болеекомпактным. Запрос можно сделать многоступенчатым, тогда результат вложенного запроса ста­нетисходными данными. Тотже самый пример с агентами можно выполнить ввиде вложенного запроса:
SELECT Name, Birth_Day
FROM Agents
WHERE Agent_id IN(SELECT Agent_id
                        FROM Contracts
                        WHERE CDate >`31.12.2004` AND
Gross_Income >500000
В данном случае предикат INпоследова­тельно проверяет, имеется ли среди ре­зультатоввложенного запроса по базе кон­трактов идентификатор каждого из аген­тов. Если он есть, то в результирующую таблицу головногозапроса добавляются его данные (для противоположного резуль­тата можно использовать предикат NOTIN). В большинстве случаев предпочти­тельнее вместо вложенных запросов при­менять соединение таблиц по общим столбцам (...WHERE Agents.Ag_Num= Contracts.Ag_Num...), однако иногда быва­ет, что все-таки без вложений необойтись.
Объединенияи внешние соединения
Выше мы вос­пользовались оператором ORдля выборки данных о спальнях и гостиных. Можнопой­ти другим путем ииспользовать оператор UNIONдля объединения двух запросов:
(SELECT Room_Type, Length1 * Width1 AS
Living_Space FROM Rooms WHERE Room_Type =
`Гостиная`)   UNION(SELECT Room_Type, Length1 *
Width1 AS Living_Space FROM Rooms WHERE
Room_Type = `Спальня`)
Оператор UNIONстроит на основе двух таблиц третью, куда попадают строки,ко­торые есть либо в первой исходной, либо во второй, либо в обеих вместе; строки-дубликаты при этом удаляются. Иногда для подобных целей удобнеепользоваться оператором OR, однако если условия объе­диняемых подзапросов сложные, UNIONдля их составления подходит больше. Суть такого инструмента как внешнеесо­единение можно пояснить на следующем примере. Допустим, нам необходимо сде­латьвыборку по контрактам, заключенным агентами в июне 2005 года. Мы можем вос­пользоваться для этого такимзапросом:
SELECT Name, CDate, Gross_Income
FROM Agents AS A1, Contracts AS C1
WHERE A1.Agent_id = C1.Agent_id ANDC1.CDate
BETWEEN `01.06.2005`AND`30.06.2005`
Он, разумеется, выдаст правильныерезуль­таты, однаконаличие имени агента после обработки запроса зависит от того, заклю­чил ли он сделку в этот период. Еслинеоб­ходимо, чтобы в результирующей таблице всегда присутствовали все агенты,необхо­димо использовать так называемое левое внешнее соединение (LEFTOUTERJOIN). Его смысл состоит в том, что все строки таб­лицы, указанной слева от оператора LEFTOUTERJOIN, попадают в таблицу-результат, а из таблицы справа берутся толькодан­ные, которыесоответствуют условию:
SELECT Name, CDate, Gross_Income
FROM Agents LEFT OUTER JOINContracts ON
Agents.Agent_id = Contracts.Agent_id
AND Contracts.CDate BETWEEN`01.06.2005` AND
`30.06.2005`
Каждый агент из таблицы Agentsзаписан­ной слева от LEFTOUTERJOIN, попадет в результат запроса, даже если емунельзя будет подобратьсоответствующих строк из правойтаблицы (поскольку не все агенты заключали контракты в июне 2005 года). Необходимо обратить внимание, что вместо ключевого слова WHEREздесь используется слово ON. Если использовать слово WHERE, результат будет тот же самый, что и с обыч­ным запросом. Следует также помнить,что синтаксис левого внешнего соединения мо­жет сильно различаться в разных системах.
Математическиефункции и средства работы с датами
Поскольку SQLориентирован на выборку данных, а нена управление вычисления­ми, егоматематический инструментарий довольноограничен. Впрочем, перечень доступныхфункций в продуктах различ­ных разработчиков может варьироваться. Как правило, в большинстве реализаций присутствуют следующие функции: POWER(возведение в степень), SQRT(квад­ратный корень), АВS(модуль), LNи LOG10 (натуральныйи десятичный логарифмы), ЕХР(экспоненциальная функция). Функ­ция ROUND(х, р) округляет число х до р десятичных знаков, TRUNCATE(х, р) — усекает. Функции FLOOR(х) и CEILING(х) возвращают ближайшие к нецелому х це­лые


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.