Книга: Кляйн Д. «SQL. Справочник». Справочник запросов sql
Структурированный язык запросов SQL
В основе структурированного языка запросов SQL лежит реляционное исчисление кортежей.
Общая характеристика языка запросов SQL
SQL может выполнять операции над таблицами и над данными таблиц.
Язык SQL называют встроенным, т.к. он содержит функций полноценного языка разработки, а ориентируется на доступ к данным, вследствие чего он входит в состав средств разработки приложений. Стандарты языка SQL поддерживают языки программирования Pascal, Fortran, COBOL, С и др.
Существует 2 метода использования встроенного SQL:
- статическое использование языка (статический SQL) – в тексте программы содержатся вызовы функций SQL, которые включают в исполняемый модуль после компиляции.
- динамическое использование языка (динамический SQL) – динамическое построение вызовов функций SQL и их интерпретация. Например, можно обратиться к данным удаленной БД в процессе выполнения программы.
Язык SQL (как и другие языки для работы с БД) предназначен для подготовки и выполнения запросов. В результате выполнения запроса данных из одной или нескольких таблиц получают множество записей, которое называют представлением.
Определение 1
Представление – это таблица, которая формируется в результате выполнения запроса.
Основные операторы языка запросов SQL
Операторы языка SQL условно разделяются на 2 подъязыка:
- Язык определения данных DDL;
- Язык манипулирования данными DML.
В таблице символом * помечены специфические операторы языка.
Рассмотрим важнейшие операторы SQL.
-
Оператор создания таблицы:
Имя таблицы, которая создается, и имя хотя бы одного столбца (поля) являются обязательными операндами. Для имени столбца необходимо указать тип данных, которые будут в нем храниться.
Для отдельных полей можно указывать дополнительные правила контроля значений, которые в них вводятся. Например, NOT NULL обозначает, что поле не может быть пустым и в него должно быть введено значение.
Пример 1
Для создания таблицы books каталога книг, которая содержит поля:
type – тип книги,
author – автор книги,
name – название книги,
price – цена книги
оператор может выглядеть следующим образом:
-
Оператор изменения структуры таблицы:
При изменении структуры таблицы можно добавлять (ADD), изменять (MODIFY) или удалять (DROP) один или несколько столбцов таблицы. Правила записи данного оператора такие же, как и для оператора CREATE TABLE. Чтобы удалить столбец указывать не нужно.
Пример 2
Для добавления к таблице books поля number, в котором будет храниться количество книг, можно записать оператор:
-
Оператор удаления таблицы:
Пример 3
Например, чтобы удалить существующую таблицу с именем books достаточно воспользоваться оператором:
-
Оператор создания индекса:
Оператор создает индекс для одного или нескольких столбцов данной таблицы, который позволяет ускорить выполнение операций запроса и поиска. Для одной таблицы может быть создано несколько индексов.
Необязательная опция UNIQUE отвечает за обеспечение уникальности значений во всех столбцах, которые указаны в операторе.
ASC задает автоматическую сортировку значений в столбцах в порядке возрастания (по умолчанию), а DESC – в порядке убывания.
-
Оператор удаления индекса:
-
Оператор создания представления:
При создании представления можно не указывать имена столбцов. Тогда будут использованы имена столбцов из запроса, который описывается соответствующим оператором SELECT.
-
Оператор удаления представления:
-
Оператор выборки записей:
Оператор SELECT производит выборку и вычисления над данными из одной или нескольких таблиц. Результат выполнения оператора – ответная таблица, которая содержит (ALL) или не содержит (DISTINCT) строки, которые повторяются.
Операнд FROM содержит список таблиц, из которых берутся записи для отбора данных.
-
Оператор изменения записей:
Новые значения полей в записях могут не содержать значений (NULL) или вычисляться согласно арифметическому выражению.
-
Оператор вставки новых записей:
В первой записи оператора INSERT вводятся новые записи с заданными значениями в столбцах.
Во втором записи оператора INSERT вводятся новые строки, отобранные из другой таблицы через предложение SELECT.
-
Оператор удаления записей:
В результате выполнения оператора удаляются из указанной таблицы строки, удовлетворяющие условию, которое определено необязательным операндом WHERE. Если операнд WHERE не указан, то удаляются все записи таблицы.
spravochnick.ru
НОУ ИНТУИТ | Лекция | Справочник SQL
Оператор SELECT
Системы управления базами данных предоставляют для работы с информацией в базе данных язык структурированных запросов SQL. При использовании SQL всю работу выполняет система управления базой данных. Вместо программирования серверных сценариев для доступа к таблицам или для обслуживания данных в базе данных, можно передать эту работу СУБД. Сценарий просто создает запрос SQL для СУБД, которая самостоятельно выполняет задачу. Такой метод способствует использованию трехслойных, клиент-серверных систем, где доступ к данным и обработка базы данных локализованы на сервере базы данных.
Оператор SELECT
Наиболее часто используемым оператором SQL является оператор SELECT. Как предполагает его имя, этот оператор используется для выбора записей из таблицы базы данных. Выборка может охватывать всю таблицу со всеми полями, или она может быть ограничена определенными полями определенных записей, которые соответствуют заданным критериям поиска. При желании выбранные записи можно упорядочить или отсортировать по определенным полям. Группа выбранных записей сама становится множеством записей, которое можно обрабатывать таким же образом, как и при работе со всей таблицей.
Общий формат оператора SELECT показан ниже:
SELECT [TOP n | [PERCENT]] * | [DISTINCT] field1 [,field2]... FROM TableName WHERE criteria ORDER BY FieldName1 [ASC|DESC] [,FieldName2 [ASC|DESC] ]...За ключевым словом SELECT следует одна или две спецификации, определяющие поля данных, которые будут выбраны из таблицы. Звездочка (*) означает, что для каждой записи будут выбраны все поля. Иначе можно определить список имен полей, разделенных запятыми, и будут выбраны только эти поля данных. Предложение FROM определяет таблицу, из которой эти записи и поля будут выбраны.
Например, оператор
выбирает все записи из таблицы MyTable и включает все поля (*), которые составляют запись. Получаемое множество записей идентично тому, которое будет получено при открытии всей таблицы. В противоположность этому, оператор
SELECT LastName, FirstName FROM MyTableвыбирает все записи из таблицы, но предоставляет только поля с именами LastName и FirstName из всех полей записей. В этом случае получаемое множество записей содержит столько строк, сколько имеется записей в таблице, но только с двумя столбцами.
Ключевое слово DISTINCT
Некоторые поля таблицы, вполне вероятно, содержат не уникальные значения данных. То есть, одно и то же значение может появляться более чем в одной записи. Чтобы извлекать только уникальные значения из этих полей, надо перед именем поля поставить ключевое слово DISTINCT. Например, следующий оператор извлекает один столбец данных, содержащий только уникальные значения в поле с именем ItemType:
Предложение WHERE
В обоих приведенных выше случаях из таблицы извлекаются все записи. Различаются только поля, которые составляют запись. Однако могут быть ситуации, когда не требуется извлекать все записи из таблицы. Может быть желательно выбрать только те записи, которые удовлетворяют определенному критерию. Для этих целей оператор SELECT предоставляет дополнительное предложение WHERE.
За ключевым словом WHERE следует один или несколько критериев выбора. Распространенный способ использования этого свойства состоит в проверке равенства, то есть поиска совпадающего значения в одном из полей записи. Например, если множество записей заказчиков обрабатывается на основе штата, в котором они расположены, то может быть желательно выбирать только те записи, где поле State содержит значение "GA". Для этого можно использовать оператор SQL,
SELECT * FROM Customers WHERE State='GA'а система управления базой данных предоставит только те записи, которые имеют совпадающий код штата. Фактически для определения критерия выбора можно выбрать любой из обычных операторов сравнения
= | (равно) |
<> | (не равно) |
< | (меньше) |
> | (больше) |
<= | (меньше или равно) |
=> | (равно или больше) |
Кроме того, можно объединять критерии, используя логические операторы AND, OR и NOT для расширения или сокращения области выбора:
SELECT * FROM Customers WHERE State='GA' OR State='KY'Отметим в этих примерах, что значения критерия выбора заключаются в одиночные кавычки (апострофы). При любом поиске в текстовых полях базы данных значение критерия должно заключаться в одиночные кавычки ( WHERE State = 'GA' ). Если тестируется числовое поле, значение данных в кавычки не заключается ( WHERE Number > 10 ). Если тестируется поле даты/времени, то значение критерия окружается символами # (WHERE TheDate > #1/1/01#).
Предложение ORDER BY
Оператор SELECT может включать также предложение ORDER BY, чтобы организовать или отсортировать извлеченное из таблицы множество записей.
Предложение ORDER BY идентифицирует имена полей, по которым сортируются записи. Если используется более одного имени поля, то сортировка происходит в том порядке, в котором появляются разделенные запятыми имена. Первое поле становится основным полем сортировки, второе поле становится промежуточным полем сортировки, а третье поле — младшим полем сортировки. Поэтому можно упорядочить имена по фамилии, затем по имени, и затем по отчеству, применяя оператор SELECT следующего вида:
SELECT * FROM Customers ORDER By LastName,FirstName,MiddleInitialПредложение WHERE и ORDER BY являются необязательными в операторе SELECT, но также могут появляться. Однако, если применются оба, предложение WHERE должно предшествовать предложению ORDER BY.
Предикат TOP n
Если поставить перед выбранным полем TOP n, то будет возвращено n записей, которые будут находиться вверху или внизу диапазона, определенного предложением ORDER BY. При упорядочивании по возрастанию ( DESC ) извлекается верхняя часть диапазона, при упорядочивании по убыванию ( ASC ) — нижняя часть диапазона.
SELECT TOP 10 ItemName, ItemPrice FROM Products ORDER BY ItemPrice ASCЭтот оператор выбирает 10 самых дешевых продуктов из таблицы. Можно использовать также зарезервированное слово PERCENT, чтобы возвращать определенный процент записей, которые попадают в верхнюю или нижнюю часть диапазона, определенного предложением ORDER BY.
Создание строк SQL
Иногда операторы SELECT могут стать достаточно сложными со всеми полями выбора, критериями выбора и предложениями упорядочивания. Поэтому часто удобно сначала создать оператор в переменной сценария, а затем выполнить оператор с помощью имени переменной.
SQLString = "SELECT * FROM Customers WHERE State='GA' ORDER BY LastName(DESC)"Здесь строка символов, составляющих оператор SELECT, присваивается переменной SQLString. Затем эта переменная используется для выполнения оператора SQL.
Если оператор SELECT является особенно длинным или сложным, то можно составить его по частям, соединяя отдельные строки:
SQLString = "SELECT * FROM Customers " SQLString &= "WHERE State='GA' OR State='KY' " SQLString &= "ORDER BY LastName(DESC), FirstName, MiddleInitial"или применив символ продолжения строки:
SQLString = "SELECT * FROM Customers " _ & "WHERE State='GA' OR State='KY' " _ & "ORDER BY LastName(DESC), FirstName, MiddleInitial"Здесь последующие предложения соединяются, чтобы создать строку SQL (не забывая добавлять необходимые пробелы для разделения предложений).
Апострофы в текстовых полях
Текстовые значения часто содержат апострофы, например, имена (O'Reilly), притяжательный падеж ( Bill's ), сокращения ( it's ) и тому подобное. Однако оператор SQL вида
SELECT * FROM Customers WHERE LastName = 'O'Reilly'будет вызывать ошибку, так как не разрешается кодировать апостроф внутри значения, которое само заключено в апострофы. Решение проблемы состоит в применении двойного апострофа ('') вместо любого одиночного апострофа внутри значения:
SELECT * FROM Customers WHERE LastName = 'O''Reilly'Интегрирование данных переменной
Обычно в операторах SQL используются порождаемые сценарием данные, а не строковые или числовые константы. В этом случае сценарий должен создать соответствующий оператор SELECT, соединяя фиксированную часть оператора SELECT с переменными данными:
SQLString = "SELECT * FROM Customers WHERE State = '$TheState'"Если переменная TheState имеет значение "GA", то SQLString будет содержать оператор SQL:
SQLString = "SELECT * FROM Customers WHERE State = 'GA'"Отметим, что апострофы, включенные в литеральные текстовые строки, окружают переменную, так что значение TheState равное "GA" интерпретируется как строка ( 'GA' ) в операторе SELECT.
При извлечении числовых данных апострофы не требуются:
SQLString = "SELECT * FROM Customers WHERE Age = $TheAge"Значение переменной TheAge добавляется в конце литеральной строки, создавая оператор SELECT следующего вида:
SQLString = "SELECT * FROM Customers WHERE Age = 30"При создании операторов, включающих дату, переменная должна быть заключена в специальные символы "#":
SQLString = "SELECT * FROM Orders WHERE OrderDate = #$TheDate#"Получающая строка в переменной SQLString представляет оператор SELECT следующего вида:
SQLString = "SELECT * FROM Orders WHERE OrderDate = #07/15/04#"Поэтому как общее правило, операторы SQL SELECT для трех типов данных имеют следующие общие конструкции:
SQLString = "SELECT * FROM Table WHERE StringField = '$StringVariable'" "SELECT * FROM Table WHERE NumericField = $NumericVariable "SELECT * FROM Table WHERE DateField = #$DateVariable#"www.intuit.ru
SQL. Язык запросов к базам данных
|
www.literu.ru
Дэниэл Кляйн | SQL. Справочник. 3-е издание | В третьем издании книги «SQL. Справочник» описываются все операторы SQL согласно последнему стандарту ANSI SQL2003, а также особенности реализации этих операторов в наиболее популярных СУБД… — Символ-Плюс, (формат: 70x100/16, 544 стр.) электронная книга Подробнее... | 390 | электронная книга | |
Форта Бен | Oracle PL_SQL за 10 минут | В книге даются простые и практические ответы на вопросы, требующие быстрого решения. Этот краткий справочник состоит из 26 уроков. Потратив не более 10 минут на каждый (или даже меньше!), вы… — Вильямс, (формат: 84x108/32, 336 стр.) Подробнее... | 2016 | 1384 | бумажная книга |
Уильям Р. Станек | Microsoft SQL Server 2005. Справочник администратора | Данная книга - краткий и исчерпывающий справочник, посвященный Microsoft SQL Server 2005. Здесь рассматриваются все основные вопросы, связанные с выполнением стандартных задач администрирования… — Русская Редакция, (формат: 70x100/16, 544 стр.) Справочник администратора Подробнее... | 2006 | 330 | бумажная книга |
Форта Бен | Oracle PL_SQL за 10 минут | В книге даются простые и практические ответы на вопросы, требующие быстрого решения. Этот краткий справочник состоит из 26 уроков. Потратив не более 10 минут на каждый (или даже меньше!), вы… — Альфа-книга, (формат: 70x100/16, 544 стр.) Несерийные Подробнее... | 2016 | 368 | бумажная книга |
Станек У.Р. | Microsoft SQL Server 2008. Справочник администратора | Данная книга - краткий, исчерпывающий справочник, посвященный администрированию новейшей системы управления базами данных SQL Server 2008. Здесь рассматриваются все основные вопросы, связанные с… — Русская Редакция, IT Professional Подробнее... | 2009 | 705 | бумажная книга |
Уильям Р. Станек | Microsoft SQL Server 2012. Справочник администратора | Эта книга - справочник по администрированию новейшей системы управления базами данных Microsoft SQL Server 2012. Здесь содержатся сведения о локальном и удаленном управлениисерверами SQL, создании… — Русская Редакция, БХВ-Петербург, (формат: 70x100/16, 576 стр.) Справочник администратора Подробнее... | 2013 | 642 | бумажная книга |
Станек У.Р. | Microsoft SQL Server 2008. Справочник администратора | Данная книга - краткий, исчерпывающий справочник, посвященный администрированию новейшей системы управления базами данных SQL Server 2008. Здесь рассматриваются все основные вопросы, связанные с… — РУССКАЯ РЕДАКЦИЯ, (формат: 70x100/16, 544 стр.) IT Professional Подробнее... | 2009 | 884 | бумажная книга |
Луни Кевин | ORACLE Database 11g. Полный справочник. В 2-х томах | Вы получите всю информацию о новых возможностях Oracle Database 11g из этого полностью обновленного руководства Oracle Press. Справочник научит использовать новые возможности иинструменты, выполнять… — Лори, (формат: 70x100/16, 544 стр.) Подробнее... | 2018 | 3636 | бумажная книга |
Уильям Р. Станек | Microsoft SQL Server 2008. Справочник администратора | 720 стр. Данная книга - краткий, исчерпывающий справочник, посвященный администрированию новейшей системы управления базами данных SQL Server 2008. Здесь рассматриваются всеосновные вопросы… — РУССКАЯ РЕДАКЦИЯ, (формат: 70x100/16, 544 стр.) IT Professional Подробнее... | 2009 | 709 | бумажная книга |
Кевин Луни | Oracl е Database 11g. Полный справочник. Том 1 | Вы получите всю информацию о новых возможностях Oracle Database 11g из этого полностью обновленного руководства Oracle Press. Справочник научит использовать новые возможности иинструменты, выполнять… — ЛОРИ, (формат: Мягкая глянцевая, 715 стр.) Подробнее... | 2014 | 2434 | бумажная книга |
Форта Б. | Язык T-SQL для Microsoft SQL Server за 10 минут, 2-е издание | В этой книге даются простые и практические ответы на вопросы, требующие быстрого решения. Проработав 30 уроков, длительностью около 10 минут каждый, вы научитесь всему, что требуется знать, чтобы… — Вильямс, (формат: 84х108/32, 384 стр.) Подробнее... | 2017 | 622 | бумажная книга |
Форта Бен | Язык T-SQL для Microsoft SQL Server за 10 минут. Справочное пособие | В этой книге даются простые и практические ответы на вопросы, требующие быстрого решения. Проработав 30 уроков, длительностью около 10 минут каждый, вы научитесь всему, что требуется знать, чтобы… — Альфа-книга, (формат: Мягкая глянцевая, 715 стр.) Подробнее... | 2017 | 294 | бумажная книга |
Форта, Бен | Oracle PL_SQL за 10 минут | В книге даются простые и практические ответы на вопросы, требующие быстрого решения. Этот краткий справочник состоит из 26 уроков. Потратив не более 10 минут на каждый (или даже меньше!), вы… — Вильямс, (формат: 200.00mm x 125.00mm x 15.00mm, 336 стр.) Подробнее... | 2016 | 830 | бумажная книга |
Луни К. | ORACLE DATABASE 11g. Полный справочник (комплект из 2 книг) | Полный справочник в двух томах. Вы получите всю информацию о новых возможностях Oracle Database 11g из этого полностью обновленного руководства Oracle Press. Справочник научит использовать новые… — Лори, (формат: Мягкая глянцевая, 715 стр.) Подробнее... | 2018 | 2541 | бумажная книга |
Бен Форта | Oracle PL_SQL за 10 минут | В книге даются простые и практические ответы на вопросы, требующие быстрого решения. Этот краткий справочник состоит из 26 уроков. Потратив не более 10 минут на каждый (или даже меньше!), вы… — Альфа-книга, Издательский дом "Вильямс", (формат: 84x108/32, 336 стр.) Подробнее... | 2016 | 683 | бумажная книга |
dic.academic.ru