Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Добавление директивы ORDER BY





Достаточно добавить директиву ORDER BY, чтобы отсортировать записи по любому столбцу. Для сортировки в порядке убывания используется ключевое слово DESC.

В Microsoft SQL Server предусмотрено несколько вариантов сортировки. По умолчанию используется словарный порядок, не учитывающий регистр букв (Dictionary Order, Caseinsensitive). Порядок сортировки определяется во время установки SQL Server и позже его переопределить нельзя.

Использование директивы WHERE для объединения таблиц

Не всегда будет достаточно просмотра данных только из одной таблицы. Данные в таблице могут быть связаны с данными других, таблиц базы данных. Для объединения нескольких таблиц вместе в одном операторе SELECT, можно использовать директиву WHERE:

SELECT author.au_Iname, author.au_fname, titles.title

FROM author, titleauthor, titles

WHERE authors.au_id =titleauthor.au_id AND

Titleauthor.title_id=titles.title_id

ORDER BY authors.au_Iname, authors.au_fname, titles.title

Нужно обратить внимание на способ записи имен столбцов в этом операторе. Во избежание ошибки неоднозначности при отборе данных одним оператором SQL из нескольких таблиц (заданных директивой FROM) для столбцов с одинаковыми именами в различных таблицах необходимо задавать в виде префиксов имена соответствующих таблиц.

Использование оператора JOIN для объединения таблиц

Объединение таблиц может быть реализовано и другим способом, а именно – с помощью оператора JOIN. Этот метод объединения таблиц соответствует стандарту ANSI и имеет следующий синтаксис:

SELECT столбец 1, столбец 2, столбец З

FROM таблица 1 оператор_объединения таблица 2

ON критерий_объединения

Рассматриваемый нами оператор JOIN определяет, каким образом должны быть возвращены строки из объединяемых таблиц. Директива ON действует подобно директиве WHERE, указывая в каких полях в объединяемых таблицах должно проверяться равенство значений. Различные операторы объединения описаны в таблице 2.

 

Таблица 2. Операторы объединения таблиц

Оператор объединения   Описание  
   
CROSS JOIN   Возвращает каждую строку из первой таблицы, объединенную с каждой строкой из второй таблицы. Количество строк результата равно произведению числа строк в каждой таблице.
INNER JOIN   Возвращает все строки из каждой таблицы, удовлетворяющие критерию отбора, который задан в директиве where, при условии совпадения значений в объединяемых полях, указанных в директиве ON.
LEFT [OUTER] JOIN   Возвращает все строки таблицы, которые находятся слева в объединении, удовлетворяющие критерию отбора директивы where, и только те строки таблицы, расположенные справа в объединении, в которых существует совпадение по объединяемым полям, заданным в директиве ON    
   
RIGHT [OUTER] JOIN Возвращает все строки таблицы, которые находятся справа в объединении, удовлетворяющие критерию отбора директивы where, и только те строки таблицы, расположенные слева в объединении, в которых существует совпадение по объединяемым полям, заданным директивой ON.
FULL [OUTER] JOIN Возвращает все строки из каждой таблицы, удовлетворяющие критерию отбора директивы where, в которых нет совпадения по объединяемым полям, заданным директивой ON.

 

С помощью оператора объединения команду SQL из предыдущего примера можно записать следующим образом:

SELECT authors.au_Iname, authors. au_fname, titles.title FROM

(authors INNER JOIN titleauthor

ON authors.au_id = titleauthor.au_id) INNER JOIN titles

ON titleauthor.title_id = titles.title_id

ORDER BY authors.au_Iname, authors.au_fname, titles.title

Итоговые функции в операторах SQL

Описываемые в данном разделе функции возвращают итоговые значения для заданных столбцов или выражений в форме итоговых сумм, количества записей, средних значений и т.п. Итоговая функция может возвращать одно значение для всех строк, отобранных запросом. Если же в оператор SQL была добавлена директива GROUP BY, то такое итоговое значение вычисляется на каждом уровне группировки. Список итоговых функций, которые можно использовать в запросах, приведен в таблице 3.

 

Таблица 3. Итоговые функции

Итоговая функция Описание
AVG Возвращает среднее из всех значений в столбце путем вычисления их общей суммы, деленной на количество строк.
COUNT Возвращает количество значений, отличных от NULL, в указанном столбце или выражении. Если в качестве выражения задан символ звездочки (например, count (*)), то результатом является число строк, отобранных запросом.
MIN Возвращает минимальное значение в заданном столбце или выражении.
МАХ Возвращает максимальное значение в заданном столбце или выражении.
SUM Возвращает сумму всех значений в заданном столбце или выражении.

 

В следующем примере функция count применяется ко всем строкам таблицы titles без группировки:

SELECT count (title) 'наименований'

FROM titles

Результат представляет собой количество записей в таблице titles.

Использование директивы GROUP BY

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

В следующем примере директива GROUP BY используется вместе с итоговой функцией, чтобы показать, как эта функция применяется к значениям внутри каждой отдельной группы:

SELECT authors.au_Iname, authors.au_fname, count (titles.title) 'Названий'

FROM authors, titleauthor, titles

WHERE

authors.au_id = titleauthor. au_id AND

titleauthor.title_id = titles.title_id

GROUP BY authors.au_Iname, authors.au_fname

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

Подобно директиве WHERE, директива HAVING используется для задания критерия отбора возвращаемых запросом данных. Различие связано с уровнем, на котором выполняется проверка критерия. В директиве WHERE критерий используется для ограничения количества строк, возвращаемых запросом. А затем директива GROUP BY формирует из этих строк группы и вычисляет заданные значения. После этого критерии директивы HAVING используется для ограничения количества групп в соответствии с данными на уровне группы.

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

SELECT a.au_Iname, a.au_fname, count (c.title) 'Названий'

FROM authors a, titleauthor b, titles с

WHERE a.au_id = b.au_id AND b.title_id = c.title_id

GROUP BY a.au_Iname, a.au_fname

HAVING count (c.title) > 1

Cоздание таблиц

Создание таблиц выполняется инструкцией:

CREATE TABLE имя таблицы

(имя_столбца тип [NULL | NOT NULL] [DEFAULT значение_по_умолчанию]

[ограничение_на_столбец]...;

[, имя_столбца тип [NULL | NOT NULL] [DEFAULT значение_по_умолчанию]

[ограничение на столбец]...]...

[ограничение на таблицу]...)

 

Ограничения на таблицу используют более одного столбца.

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

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

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

Удаление базы данных

При удалении базы данных или объекта базы данных канут в лету все связанные с ними структуры и данные. Поэтому в большинстве систем выполнять команду DROP разрешается только либо владельцу соответствующего объекта, либо лицу, наделенному специальными полномочиями.

Синтаксис команды DROP DATABASE обычно имеет следующий вид:

DROP DATABASE имя_базы_данных

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

Удаление таблиц

Для удаления таблицы из базы данных используется команда DROP TABLE. В большинстве диалектов SQL она имеет следующий вид:

DROP TABLE имя_таблицы

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

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

Добавление, изменение и удаление данных

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

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

- Оператор INSERT добавляет новые строки в базу данных.

- Оператор UPDATE изменяет существующие в базе данных строки.

- Оператор DELETE удаляет строки из базы данных.

Другой метод добавления данных в таблицу подразумевает их загрузку с помощью специальной команды вставки из файла операционной системы. Этот метод особенно подходит для переноса данных из одной системы управления базами данных в другую.

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

Выполнять операторы модификации данных обычно позволяется не всем. Владелец базы данных или владельцы отдельных объектов базы данных с помощью операторов GRANT и REVOKE могут разрешить отдельным пользователям выполнять определенные команды модификации.

С помощью каждого оператора модификации (INSERT, UPDATE, DELETE) за один раз можно изменять данные только в одной таблице. Однако в ряде систем эти изменения могут касаться данных из других таблиц и даже других баз данных. Используя оператор SELECT в команде модификации данных, можно переместить значения из одной таблицы в другую.

Добавление новой строки

Оператор INSERT позволяет добавлять строки в базу данных одним из двух способов: с помощью ключевого слова VALUES или с помощью оператора SELECT. Опишем сначала правила использования ключевого слова VALUES.

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

INSERT INTO имя_таблицы [(столбец1 [, столбец2]...)1]

VALUES (константа1 [, константа2]...)

Значения нужно вводить в том порядке, в котором определялись столбцы в соответствующем операторе CREATE TABLE (другими сло­вами, сначала идентификационный номер, затем имя, адрес, город и, наконец, штат). Данные после ключевого слова VALUES заключаются в круглые скобки. В большинстве систем значения вводятся в двойных или одинарных кавычках и разделяются запятыми.

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

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

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







Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...

Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.