Краткое пособие по языку sql


Содержание

Справочник Transact-SQL – основы для новичков

В данном материале я попытался объединить все основные моменты Transact-SQL, которые помогут начинающим программистам баз данных освоить данный язык и писать запросы и приложения на языке Transact-SQL.

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

Для того чтобы потренироваться писать SQL запросы или создавать объекты базы данных, можете использовать бесплатную редакцию SQL Server Express, на момент составления справочника последней версией является Microsoft SQL Server 2014 Express.

Transact-SQL справочник для начинающих — описание справочника

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

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

Для детального изучения языка T-SQL рекомендую почитать мою книгу «Путь программиста T-SQL. Самоучитель по языку Transact-SQL», в которой я максимально подробно, с большим количеством примеров рассказываю о языке T-SQL.

База данных

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

Создание

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

где, test это название базы данных.

Подробней о создании базы данных на SQL сервере, мы разговаривали в материале Как создать базу данных в MS Sql 2008

Удаление

Если Вам необходимо удалить базу данных, то можете использовать запрос:

Изменение

Для изменений параметров базы данных можно использовать графический интерфейс Management Studio, в котором все параметры подробно описаны, а можно посылать запросы ALTER DATABASE, например, для включения автоматического сжатия базы данных test, используем следующий запрос

Надеюсь понятно, ALTER DATABASE команда на изменение, test название изменяемой базы данных, SET команда, указывающая на то, что мы будем изменять параметры базы данных, AUTO_SHRINK непосредственно сам параметр, ON/OFF значение параметра.

Типы данных

Самые распространенные и часто используемые

Точные числа

  • tinyint — 1 байт
  • smallint — 2 байта
  • int — 4 байта
  • bigint — 8 байт
  • numeric и decimal (тип с фиксированной точностью и масштабом)
  • money — 8 байт
  • smallmoney — 4 байт

Приблизительные числа

  • float [ (n) ] – размер зависит от n (n может быть от 1 до 53, по умолчанию 53)
  • real — 4 байта

Дата и время

  • date – дата
  • time — время
  • datetime — дата, включающая время дня с долями секунды в 24-часовом формате.

Символьные строки

  • char [ ( n ) ] – строка с фиксированной длиной, где n длина строки (от 1 до 8000). Размер при хранении составляет n байт.
  • varchar [ ( n | max ) ] — строка с фиксированной длиной, где n длина строки (от 1 до 8000). Если указать max, то, максимальный размер при хранении составит 2^31-1 байт (2 ГБ), а при указании n то фактическая длина введенных данных плюс 2 байта.
  • text – строковые данные переменной длины, максимальный размер 2 147 483 647 байт (2 ГБ).
  • nchar [ ( n ) ] — строка с фиксированной длиной в Юникоде, где n длина строки (от 1 до 4000). Размер при хранении составляет удвоенное значение n в байтах
  • nvarchar [ ( n | max ) ] — строка с фиксированной длиной в Юникоде, где n длина строки (от 1 до 4000). При указании max, максимальный размер при хранении составит 2^31-1 байт (2 ГБ), а если n, то удвоенная фактическая длина введенных данных плюс 2 байта.
  • ntext — строковые данные переменной длины, с максимальной длиной строки 1 073 741 823 байт.

Двоичные данные

  • binary [ ( n ) ] — двоичные данные с фиксированной длиной, размером n байт, где n значение от 1 до 8000. Размер при хранении составляет n байт.
  • varbinary [ ( n | max) ] — двоичные данные с переменной длиной, где n может иметь значение от 1 до 8000. Если указать max то максимальный размер при хранении составит 2^31-1 байт(2 ГБ). При указании n то размер хранения это фактическая длина введенных данных плюс 2 байта.
  • image — двоичные данные переменной длины, размером от 0 до 2^31 – 1 (2 147 483 647) байт.

Другие

  • xml –хранение xml данных. Подробно рассматривали в материале Transact-sql – работа с xml, а если Вы вообще не знаете что такое XML, то об это мы разговаривали в статье Основы XML для начинающих.
  • table – хранение результирующего набора строк.

Таблицы

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

Создание

Добавление колонки

  • test_table — это название таблицы;
  • add — команда на добавление;
  • prosto_pole – название колонки;
  • pole numeric(18, 0) – тип данных новой колонки;
  • NULL – параметр означающий что в данном поле можно хранить значение NULL.

Изменение типа данных

Давайте изменим, тип данных нового поля, которое мы только что создали (prosto_pole) с numeric(18, 0) на bigint и увеличим длину поля comment до 300 символов.

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

Удаление колонки

Для удаления определенной колонки используем команду drop, например, для удаления поля prosto_pole используем следующий запрос

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

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

Представления

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

Создание

Пример обращения к представлению:

Изменение

Удаление

Системные представления

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

  • sys.all_objects – содержит все объекты базы данных, включая такие параметры как: название, тип, дата создания и другие.
  • sys.all_columns – возвращает все колонки таблиц с подробными их характеристиками.
  • sys.all_views – возвращает все представления базы данных.
  • sys.tables – все таблицы базы данных.
  • sys.triggers – все триггеры базы данных.
  • sys.databases – все базы данных на сервере.
  • sys.sysprocesses – активные процессы, сессии в базе данных.

Их на самом деле очень много, поэтому все разобрать, не получиться. Если Вы хотите посмотреть, как их можно использовать на практике, то это мы уже делали, например, в материалах Как узнать активные сеансы пользователей в MS Sql 2008

Функции

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

Создание

  • CREATE FUNCTION – команда на создание объекта функция;
  • test_function – название новой функции;
  • @par1 и @par2 – входящие параметры;
  • RETURNS varchar(300) – тип возвращаемого результата;
  • DECLARE @rezult varchar(300) – объявление переменной с типом varchar(300);
  • Инструкция select в нашем случае и есть действия функции;
  • RETURN @rezult – возвращаем результат;
  • BEGIN и END – соответственно начала и конец кода функции.

Пример использования ее в запросе:

Изменение

Удаление

Встроенные функции

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

Системные функции

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

  • @@VERSION – возвращает версию SQL сервера;
  • @@SERVERNAME – возвращает имя сервера;
  • SUSER_NAME() – имя входа пользователя на сервер, другими словами, под каким логином работает тот или иной пользователь;
  • user_name() – имя пользователя базы данных;
  • @@SERVICENAME – название сервиса СУБД;
  • @@ >Функции, которые вычисляют какое-то значение на основе набора (группы) значений. Если при вызове этих функций нужно указать колонку для вывода результата, то необходимо выполнить группировку данных (group by) по данному полю. Подробно данную конструкцию мы рассматривали в статье Transact-SQL группировка данных group by
  • avg – возвращает среднее значение;
  • count – количество значений;
  • max – максимальное значение;
  • min – минимальное значение;
  • sum – сумма значений.

Строковые функции

Данный вид функций соответственно работает со строками.

Left (строковое выражение, количество символов) – возвращает указанное число символов строки начиная слева.

Right (строковое выражение, количество символов) – возвращает указанное число символов строки начиная справа

Len (строка) – возвращает длину строки.

Lower (строка) – возвращает строку, в которой все символы приведены к нижнему регистру.

Upper (строка) — возвращает строку, в которой все символы приведены к верхнему регистру.

Ltrim (строка) – возвращает строку, в которой все начальные пробелы удалены.

Rtrim (строка) – возвращает строку, в которой все пробелы справа удалены

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

Replicate (строка, количество повторений) – повторяет строку (первый параметр) столько раз, сколько указанно во втором параметре.

Reverse (строка) – возвращает все в обратном порядке.

Space (число пробелов) – возвращает строку в виде указанного количества пробелов.

Substring (строка, начальная позиция, сколько символов) – возвращает строку, длиной в число указанное в третьем параметре, начиная с символа указанного во втором параметре.

Про строковые функции мы также разговаривали в материале Сочетание строковых функций на Transact-SQL

Математические функции

Round (число, точность округления) – округляет числовое выражение до числа знаков указанного во втором параметре

Floor (число) – возвращает целое число, округленное в меньшую сторону.

Ceiling (число) – возвращает целое число, округленное в большую сторону.

Power (число, степень) — возвращает число возведенное в степень указанную во втором параметре.

Square (число) – возвращает числовое значение, возведенное в квадрат

Abs (число) – возвращает абсолютное положительное значение

Log(число) – натуральный логарифм с плавающей запятой.

Pi – число пи.

Rand – возвращает случайное число с плавающей запятой от 0 до 1

Функции даты и времени

Getdate() – возвращает текущую дату и время

Day(дата) – возвращает день из даты.

Month(дата) – возвращает номер месяца из даты.

Year (дата) –возвращает год из даты

DATEPART(раздел даты, дата) – возвращает из даты указанный раздел (DD,MM,YYYY и др.)

Isdate (дата) – проверяет введенное выражение, является ли оно датой

Функции преобразование

Cast (выражение as тип данных) – функция для преобразования одного типа в другой. В примере мы преобразуем тип float в int

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

Табличные функции

Создаются, для того чтобы получать из них данные как из таблиц, но после различного рода вычислений. Подробно о табличных функциях мы разговаривали в материале Transact-sql – Табличные функции и временные таблицы

Создание

Изменение

Удаление

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

Пример обращения к этой функции

Процедуры

Процедуры – это набор SQL инструкций, которые компилируются один раз, и могут принимать, как и функции, различные параметры. Используются для упрощения расчетов, выполнения групповых действий.

Создание

Изменение

Удаление

Можно вызывать по разному, например:

Где, EXECUTE и EXEC вызов процедуры, sp_test_procedure соответственно название нашей процедуры, 1 значение параметра

Системные процедуры

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

Их огромное множество, поэтому приведу всего несколько примеров.

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

где, ‘Ad Hoc Distributed Queries’ — это название параметра, 1 соответственно значение, на которое мы хотим изменить, reconfigure применят введенное значение.

На практике мы применяли эту процедуру в материале Межбазовый запрос на Transact-SQL

sp_executesql – выполняет инструкцию или набор инструкций Transact-SQL, которые могут формироваться динамически. Данную процедуры мы использовали в материале журналирование изменений данных в таблице на Transact-SQL

Где, первый параметр — sql инструкция (строка в Юникоде), второй — определение всех параметров встроенных в sql инструкцию, третий — значение параметров.

sp_help – возвращает подробные сведения о любом объекте базы данных.

sp_rename – переименовывает объект в базе данных. Можно использовать для переименования таблиц, индексов, название колонок в таблицах, Не рекомендуется использовать эту процедуру для переименования пользовательских процедур, триггеров, функций.

Пример переименования таблицы

где, первым параметром идет объект со старым названием, а второй параметр — это новое название объекта.


Пример переименования столбца в таблице

Третьим параметром указывается, что переименовывается колонка.

Триггеры

Триггер – это обычная процедура, но вызывается она событием, а не пользователем. Событие, например, может быть вставка новой строки в таблицу (insert), обновление данных в таблице (update) или удаление данных из таблицы (delete).

Создание

Изменение

Удаление

Включение/Отключение

О триггерах мы разговаривали в статье — Как создать триггер на Transact-SQL.

Индексы

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

Кластеризованный индекс — при таком индексе строки в таблице сортируются с заданным ключом, т.е. указанным полем. Данный тип индексов у таблицы в MS SQL сервере может быть только один и, начиная с MS SQL 2000, он автоматически создается при указании в таблице первичного ключа (PRIMARY KEY).

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

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

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

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

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

Columnstore index доступен начиная с 2012 версии SQL сервера в редакциях Enterprise, Developer и Evaluation.

Создание

Где, CREATE CLUSTERED INDEX — это инструкция к созданию кластеризованного индекса, idx_clus_one название индекса, test_table(id) соответственно таблица и ключевое поле для сортировки.

Отключение

Удаление

Курсоры

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

Пример (все это в коде процедуры)

Подробно о курсорах мы разговаривали в материале Использование курсоров и циклов в Transact-SQL.

Запросы DML

DML (Data Manipulation Language) – это операторы SQL, с помощью которых осуществляется манипуляция данными. К ним относятся select, update, insert, delete.

SELECT

Оператор SQL с помощью которого осуществляется выборка данных. Подробно о нем мы разговаривали в материале Язык запросов SQL – Оператор SELECT

UPDATE

Используется для обновления данных

INSERT

Оператор на добавление данных

DELETE

С помощью этого оператора можно удалить данные.

Вот и все, справочник закончился! Надеюсь, он Вам хоть как-то помог. Удачи!

Краткий курс языка запросов SQL

SQL ( Structured Query Language ) — Это Язык Структурированных Запросов. Он не такой богатый, как языки программирования высокого уровня. Тем не менее, это язык, без владения которым программисту, работающему с базами данных, не обойтись. Запросы, написанные на SQL , часто называют скриптами. Как вы уже знаете, эти скрипты можно непосредственно вводить в свойство SQL компонента-запроса в момент проектирования приложения, а можно значение этого свойства менять и в процессе прогона программы. Однако нередко используют и третий способ: программист создает набор скриптовых файлов, в процессе работы программа считывает из них SQL -инструкции в компоненты запросов и выполняет их. Это простые текстовые файлы , созданные в любом редакторе текстов, например, стандартном Блокноте Windows . Расширение может быть любым, но традиционно используется *.sql. Все это позволяет создавать гибкие программы. Если организации, использующей ваше приложение , в дальнейшем потребуются какие-то новые возможности, например, им нужно дополнительно создать еще один отчет, то применение скриптовых файлов избавит вас от необходимости переделывать программу, для этого достаточно будет написать скрипт .

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

Команда SELECT

Команда SELECT является основой запроса. Большинство SQL -запросов начинаются с нее. Множество других команд вкладываются в блок SELECT . Полный синтаксис этой команды таков:

Здесь используются следующие элементы:

Таблица 8.1 . Элементы команды SELECT
Элемент Описание
Выражение, которое производит значение. Оно может включать имена столбцов.
Имя или синоним таблицы или представления
Временный синоним для table name >, определенный в этой таблице и используемый только в этой команде.

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

Команда FROM определяет имена таблиц, из которых осуществляется выборка данных . Если таблиц несколько, их имена разделяются запятыми. Иногда таблицы имеют длинные имена. В этом случае бывает выгодно использовать псевдонимы (alias) имен таблиц, указывая их через пробел после имени таблицы:

Команда WHERE

Команда WHERE позволяет использовать условие, которые может быть верным или нет для каждой записи БД . Если условие верное, то запись добавляется в набор данных, иначе отвергается. Давайте рассмотрим пример. Загрузите SQL -монитор из прошлой лекции. Предположим, нам нужно получить следующие данные на каждого сотрудника: Фамилия, Имя, Отдел, Должность. Пишем соответственный SQL — запрос :

Выполнив этот запрос , вы получите нечто непонятное. В полученном наборе данных всем сотрудникам подряд присваивается вначале первая должность, затем вторая, и так до конца. Другими словами, если у вас 10 сотрудников и 10 должностей, то вместо ожидаемых десяти записей вы получите 10 * 10 = 100 записей! Полученные данные называют недостоверными. Чтобы избежать этого, существует команда WHERE , которая позволяет задать условие выборки данных:

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

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

Как и в любом условии, здесь можно применять различные операторы сравнения:

Таблица 8.2 . Операторы сравнения
Оператор Описание
= Равно
> Больше
= Больше или равно
Не равно

Кроме того, мы можем использовать логические операторы AND , OR и NOT , формируя более сложные запросы:

Логические операторы имеют более высокий приоритет, поэтому в приведенном примере можно обойтись и без скобок. Данный запрос выдаст нам данные только на бухгалтеров. Как вы могли заметить, в отличие от Delphi , строка в SQL заключается не в одинарные, а в двойные кавычки! Однако SQL более демократичен, одинарные кавычки тоже принимаются. Обычно их используют, если внутри строки требуется указать кавычки, например, ‘Строка «в кавычках» будет отображена’.

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

Команда ORDER BY

Команда ORDER BY позволяет сортировать записи по определенному полю как в возрастающем, так и в убывающем порядке. Воспользуемся предыдущим примером, и отсортируем записи по полю «Фамилия»:

Как уже говорилось, мы можем сортировать данные как по возрастанию ( ASC ), так и по убыванию ( DESC ) значений. Сортировка по возрастанию установлена «по умолчанию», а вот чтобы сортировать записи по убыванию, после имени поля следует поставить служебное слово DESC :

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

В этом случае мы получим набор данных, в котором записи отсортированы вначале по фамилии сотрудника, затем по его номеру телефона:

Оператор IN

Оператор IN позволяет определить набор значений. Предположим, нам нужны сотрудники, проживающие в городах Москва и Санкт-Петербург. Мы можем сформировать сложный запрос :

Последнюю строку запроса можно упростить, если использовать оператор IN :

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

Оператор BETWEEN

Оператор BETWEEN работает примерно так же, как IN , но задает не список , а диапазон значений. Предположим, нам нужно выявить сотрудников, которые имеют стаж работы от 4 до 10 лет включительно. Подобный запрос выглядит так:

SQL

Русский

Работа с MySQL, MS SQL Server и Oracle в примерах. С. Куликов

Эта книга посвящена практике использования SQL для решения типичных задач. .

Понимание SQL. Мартин Грубер

«ПОНИМАНИЕ SQL» — это полный учебник по программированию на Структурированном .

SQL для простых смертных. Мартин Грабер

SQL ДЛЯ ПРОСТЫХ СМЕРТНЫХ — это полное введение в структурированный .

Работа с PostgreSQL: настройка и масштабирование. Ю. Васильев

PostgreSQL невероятно мощная и гибкая СУБД, она имеет схожий функционал .

Введение в реляционные базы данных. Владимир Кириллов

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

Основы реляционных баз данных. Райордан Ребекка

Книга посвящена вопросам проектирования и внедрения современных компьютерных систем, работающих .

SQL. Сборник рецептов. Энтони Молинаро

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

Язык SQL. Базовый курс. Е. П. Моргунов

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

Изучаем SQL. Алан Бьюли

Язык SQL включает несколько категорий. Выражения, с помощью которых создаются .

Программирование для SQL server 2000 с использованием XML. Малкольм

Эта книга — практическое руководство по разработке бизнес-приложений на основе .

MySQL 5.0. Библиотека программиста. Виктор Гольцман

Эта книга предназначена для всех, кто желает освоить СУБД MySQL. .

Изучаем SQL. Линн Бейли

В современном мире наивысшую ценность имеет информация, но не менее .

English

Learning MySQL and MariaDB. R. J.T. Dyer

MySQL is the most popular open source database system available. .

SQL Queries for mere mortals. John L. Viescas, Michael J. Hernandez

The book is great for learning SQL queries.
The .

Healthy SQL. Robert Pearl

Healthy SQL is a book about how to design the .

The Art of SQL (2008). Peter Robson, Stephane Faroult

There used to be a time when what is known .

Simply SQL. Rudy Limeback

SQL has a fairly simple and clear syntax, but this .

MySQL Cookbook: Solutions for Database Developers and Administrators. Paul DuBois

There are a lot of good books on SQL, so .

SQL Practice Problems. S. M. Vasilik

This edition of SQL Practice Problems assumes that you have .

The Language of SQL. Larry Rockoff

Despite the simplicity and availability of SQL, there are queries .

SQL For Dummies. 9 Edition. A. Taylor

Welcome to database development using SQL, the industry-standard database query .

Data Modeling for MongoDB. S. Hoberman

How do you design for a database platform which doesn’t .

Pro SQL Server Internals 2-Ed. D. Korotkevitch

The book is logically separated into eight different parts. Even .

Pro SQL Server 2012 Relational Database Design and Implementation. L. Davidson

This book is written for professional programmers who have the .

Как изучить язык баз данных SQL?

Если ты совсем ноль, то самое первое – это скачивай книгу “Освой самостоятельно SQL за 10 минут”.
Далее. Заходишь на сайты: 1) sql-ex.ru (выбираешь синтаксис); 2) sql-tutorial.ru (там синтаксис T-SQL). Решаешь около 60 обучающих задач на DML и около 20 на DDL.
Далее. Скачиваешь книгу Святослава Куликова “Работа MYSQL, MS SQL SERVER и ORACLE в примерах”. Тут определяешься с базой данных. Если это SQL Server, то скачиваешь на торренте данную СУБД. Если Oracle, то скачиваешь образ для WMvare с их сайта, или используешь их online СУБД.
Далее. Находишь в зависимости от СУБД серьезные книжки. Если ты хочешь быть базистом, то, чтобы проверить потянешь ли, сдай на sql-ex экзамен на базовый сертификат, для этого нужно решить рейтинговые задачи. Если не сможешь, то будут большие трудности в работе программистом БД.
Далее, последний этап. Сдаешь экзамены от вендора.

Если ты просто программист, не базист, то тебе просто азы нужны.

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

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

А самый логичный способ что-то изучить — это практика, практика и еще раз практика. Если нет реального проекта с реальными проблемами — рекомендовал бы пару ресурсов: sql-ex и pgexercises, там можно поработать как с совсем простыми и примитивными запросами, так и с гораздо более сложными.

Ну а овладев азами можно уже и книгу брать, чтобы закрыть пробелы, либо документацию по конкретной СУБД

большинство книги либо забрасывает, либо просто читает и не особо новые знания впитывает

А самый логичный способ что-то изучить — это практика, практика и еще раз практика.

Не стоит быть таким начинающим.

В одну руку книгу — другой код писать. Откуда еще же черпать свежие знания для практики? Изучил какой-либо нюанс — попробовал — дальше пошел.

Я перед собеседованием на должность sql-джуна будучи полным нулем за ночь порешал задачки на этом сайте и на следующий день решил все предложенные задачи и был принят) Скажу так — я бы посоветовал порешать эти задачи, они там предлагаются по нарастанию сложности и подкреплены теорией, за которой вам не нужно лишний раз лезть в учебники. Уверяю, с каждым десятком решенных задач Вы будете чувствовать себя гуру sql) Спустя задачек 30, когда у Вас сформируется представление о том, что из себя представляет SQL на деле, тогда можно приступать к литературе, поверьте, после практики гораздо легче воспринимать материал, ибо уже имеется представление, о чем речь.
По литературе(с небольшими пояснениями):

1. Введение в системы баз данных(Автор C.J.Date) — на мой взгляд очень доступное и максимально компактное описание того, на чем базируется SQL, разжеваны основные понятия, рассмотрены нормальные формы, а после предлагаются задачки.

2. SQL Полное руководство — тут понятно по названию, здесь можно найти описание всех возможностей. Ищите наиболее позднее издание(у меня третье, для примера, это 2015 год).

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

Если вы выбрали MS SQL Server:

1. Microsoft SQL Server 2012 Руководство для начинающих — там хоть и не сильно углубляясь, но описано почти все что нужно на начальных этапах. Там и про индексы, и про оптимизацию, и про бизнес-аналитику, в общем, рекомендую.

2. Microsoft SQL Server 2012 Создание запросов — просто и исчерпывающе(на момент издания) о том, как можно и нужно писать запросы на t-sql(расширение sql для MS SQL Server) с закреплением материала предлагаемыми заданиями.

Если Вы выбрали Postgresql, то официальное руководство там исчерпывающее.

По Oracle и MySQL советов дать не могу, ибо дела не имел. Удачи!

К сожалению, чтобы Вам что-то посоветовать — необходимо узнать Ваш личный «фундамент». Хоть указанная Вами книга и будет полезной (даже с учетом того, что она писалась для MySQL версии 4.х, фундаментально как в СУБД, так и в SQL и в конкретном синтаксисе MySQL последнее, наверно, десятилетие, ничего не менялось), я бы посоветовал следующий алгоритм обучения:

1) Знакомство с основами реляционной алгебры, нормальными формами и реляционной моделью. Без фанатизма, прочтение и осознание статей даже на Википедии хватит за глаза.

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

3) Выбор диалекта языка. Подбор литературы (практически любой, за исключением книг из серии » <0>для чайников» и «100 и одно решение для <0>«). На этом этапе важно определиться также с инструментарием, который Вы будете использовать в дальнейшем. Для начала подойдет любой онлайн интерпретатор SQL кода, к примеру sqlfiddle. Но по мере изучения Вам понадобятся более сложные инструменты.

4) Знакомство с UML. Точнее, если по минимуму, с той частью, которая затрагивает прототипирование БД. SQL и СУБД — это инструменты, которые позволяют автоматизировать процессы бизнес логики. UML позволяет эти процессы описать и на основе этих процессов создать прототип схемы БД, от которого уже можно идти к конкретной реализации.

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

Теперь поясню, почему все четыре шага важны.
1) Без базовых фундаментальных знаний вы просто не поймете, почему, к примеру, в ячейке столбца номера нельзя указывать два номера телефона, или как работают ограничения на целостность данных.
2) Хоть диалекты SQL и отличаются от стандарта SQL:2008, следует понимать, что знание стандарта позволит Вам в случае необходимости переключиться с одной СУБД на другую. Также, хорошая реляционная SQL СУБД должна быть совместима с этим стандартом априори.
3) Тут на Ваш вкус. Посмотрите изложение автора перед покупкой, посмотрите списки того или иного программного обеспечения. Но факт остается фактом, что прочтение только стандартов, мануалов и официальной документации — путь явно не для всех. Кому-то просто необходимо «художественное» изложение, да и просто из книг можно почерпнуть реальные примеры из опыта автора.
4) Надо понимать, что реляционные СУБД всего лишь инструмент для хранения и обработки данных, обеспечивающий определенные бизнес-процессы определенной предметной области. И под бизнес-процессами следует понимать не как какую-то эфемерную для простого человека вещь, а то, что закладывается под этим словом в оригинальном языке, т.е. совокупность процессов\действий, направленных на создание продукта\предоставление услуги. А средства UML позволяют все это описать в стандартизированной графической форме. Чтобы знать SQL не надо знать UML, не надо знать, что такое и, к примеру, ЖЦ программного продукта. Но со временем, если Вы захотите расти дальше, Вам нужен будет инструмент прототипирования. Также, как если вы дорастете до архитектора БД, вам нужно будет представление о том, как эти БД проектировать, начиная с описания предметной области и заканчивая организационной точкой зрения. Стандарты ГОСТ 34.601-90 и ISO/IEC 12207:2008.

Я, как и многие, начинал с какого-то полу прочитанного учебника и примеров из сети. Сейчас я понимаю, что просто потратил время практически впустую. Как ни странно, хоть и принято ругать наше образование, но список курсов для специальностей «ПИ» подобран не просто так. Помимо самого языка следует знать математический «бэкенд» и как его использовать для реализации задач предметной области. Я отношусь к SQL потребительски, это не мой основной язык, но сейчас я понимаю, что если бы уделил ему больше внимания не как языку, а, в первую очередь, как к одному из инструментов СУБД, работающих на основе реляционной алгебры для обеспечения бизнес-процессов, я бы избежал кучу потерянного времени, костылей и ошибок. Надеюсь, мой ответ будет Вам полезен.

Синтаксис SQL

В этой статье описывается синтаксис SQL запросов . В следующем операторе задана минимальная структура и синтаксис, необходимый для SELECT .

Ключевые слова SQL

Ключевые слова ( SELECT , GRANT , DELETE или CREATE ) прописаны в синтаксисе SQL и имеют в этом языке предопределенное значение. Можно использовать ключевые слова в верхнем или нижнем регистре. Следующие три запроса равнозначны:

SELECT * FROM EMPLOYEES ;
Select * FROM EMPLOYEES ;
select * FROM EMPLOYEES ;

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

DESCRIBE EMPLOYEES;
DESC EMPLOYEES;

Идентификаторы

Идентификаторы – это имена заданные разработчиками для структурных элементов базы данных: таблицы, столбцы, псевдонимы, индексы, представления. В синтаксисе последнего SQL запроса ‘EMPLOYEES’ — это идентификатор, а ‘ SELECT ‘ — ключевое слово. Правила для создания идентификаторов указываются в спецификации поставщика. Рассмотрим следующую таблицу:

Правила Платформа Описание
Идентификатор должен содержать до SQL2003 128 символов.
DB2 128 символов, в зависимости от платформы.
MySQL 64 символа.
Oracle 30 байт; имена базы данных до 8 байт.
PostgreSQL 31 символ.
Идентификатор может содержать SQL2003 Любые цифры, символы и нижнее подчеркивание.
DB2 Любые цифры, символы в верхнем регистре или символ нижнего подчеркивания.
MySQL Любые цифры или символы.
Oracle Любые цифры, символы и нижнее подчеркивание (_), знак фунта стерлингов (#) или доллара ($).
PostgreSQL Любые цифры, символы и нижнее подчеркивание (_).
Первый символ должен быть SQL2003 Буквой.
DB2 Буквой.
MySQL Буквой или цифрой (но не должен содержать только цифры).
Oracle Буквой.
PostgreSQL Буквой или нижним подчеркиванием (_).
Идентификатор не может содержать SQL2003 Специальные символы или пробелы.
DB2 Специальные символы или пробелы.
MySQL Точку (.), слэш (/) или ASCII(0) и ASCII(255). Кавычки (‘) и двойные кавычки («) допускаются только в ссылающихся идентификаторах.
Oracle Пробелы, двойные кавычки («) или специальные символы.
PostgreSQL Двойные кавычки («).
В синтаксисе SQL запросов символ идентификатора SQL2003 Двойные кавычки («).
DB2 Двойные кавычки («).
MySQL Кавычки ( ‘ ) или двойные кавычки (» ) в режиме совместимости с ANSI.
Oracle Двойные кавычки («).
PostgreSQL Двойные кавычки («).
Идентификатор может быть зарезервирован SQL2003 Нет, кроме ссылающихся идентификаторов.
DB2 Да.
MySQL Нет, кроме ссылающихся идентификаторов.
Oracle Нет, кроме ссылающихся идентификаторов.
PostgreSQL Нет, кроме ссылающихся идентификаторов.
Адресация к схеме SQL2003 Каталог.схема.объект.
DB2 Схема.объект.
MySQL База_данных.объект.
Oracle Схема.объект.
PostgreSQL База_данных.схема.объект.
Идентификатор должен быть уникальным SQL2003 Да.
DB2 Да.
MySQL Да.
Oracle Да.
PostgreSQL Да.

Конвенции имен

Стандарт SQL не содержит никаких точных указаний по наименованиям, поэтому нужно следовать следующим основным принципам ( в том числе и в синтаксисе SQL запросов UPDATE ):

  • Выбирайте имя, которое содержит смысл и имеет описательный характер. Например, таблица сотрудников не должна называться emp, а столбец имени сотрудника должен называться first_name , а не fname , хотя и « emp », и « fname » это допустимые идентификаторы;
  • Используйте для всех объектов в базе данных SQL либо заглавные буквы, либо строчные, поскольку некоторые серверы баз данных чувствительны к регистру.

Литералы SQL

Термин литералы относится к фиксированным значениям данных. SQL распознает четыре типа литералов: числовые значения, строки символов, дата или время, логическое значение. Например, 100 , -120 , 544 , 03 , -458 , 25 , 3e2 , 5E-2 являются действительными числовыми литералами. ‘ США ‘, ‘ 2000 ‘, ‘ SQL Синтаксис ‘, ‘ 1 января 1981 ‘ являются действительными строками символов ( должны быть заключены в одинарные кавычки (‘ ‘) ). Логические литералы и литералы даты/времени выглядят следующим образом: TRUE и ‘ JAN-28-1976 21:12:40:00 ‘.


Операторы

Операторы работают с отдельными элементами данных и возвращают результат. Операторы используются в различных операциях SQL , таких как SELECT , INSERT , UPDATE или DELETE . А также при создании различных объектов базы данных, таких как функции, представления, триггеры и хранимые процедуры. MS SQL синтаксис запросов поддерживает различные типы операторов, хотя не все СУБД поддерживают все операторы.

Смотрите таблицу ниже:

Операторы Работают во
Арифметические операторы Всех базах данных.
Операторы присвоения Всех базах данных.
Побитовые операторы Microsoft SQL Server.
Операторы сравнения Всех базах данных.
Логические операторы DB2, Oracle, SQL Server и PostgreSQL.
Унарные операторы DB2, Oracle и SQL Server.

Приоритетность операторов

Приоритетность — это порядок, в котором база данных оценивает различные операторы в одном выражении. В синтаксисе SQL запросов при выполнении выражения, содержащего несколько операторов ( например, +, -, / ), сначала выполняются операторы с высшей приоритетностью, а затем с более низкой. При оценке операторов с одинаковой приоритетностью операторы выполняются в порядке их расстановки в выражении слева направо.

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

Язык запросов SQL

Одно из обязательных умений современного программиста — это умение работать с языком запросов SQL. Язык SQL (читается «эс-ку-эль») — это фактический стандарт для обращения к базам данных (БД).

Общая идея языка SQL состоит в том, чтобы программист мог обращаться к любым базам данным на одном универсальном языке. В настоящее время все реляционные СУБД поддерживают язык SQL. А самые популярные СУБД MySQL и SQLite даже содержат SQL в своем названии.

1. Описание SQL

Язык SQL говоря упрощенно — это набор операторов к базе данных. Эти операторы позволяют

  • Создать в базе данных новую таблицу;
  • Добавить в таблицу новые записи;
  • Изменить записи;
  • Удалить записи;
  • Сделать выборку.

Давайте сделаем простой пример. Для этого надо запустить менеджер БД SQLiteStudio, который есть в сборке «Си-экспресс». Затем выполнить команду меню «Базы данных — Добавить базу данных».

Назовем базу данных db1 (от database). Далее выполняем команду «Структура — Создать таблицу». Даем название таблицы «Книги» и нажатием Ins добавляем два поля «Автор» и «Название».

Далее нажимаем на вкладку DDL и видим SQL-запрос, которым на самом деле мы и сделали эту таблицу.

Удобство использования менеджера БД в том, что не надо запоминать команды языка SQL. Можно визуально создавать таблицы и поля и потом смотреть SQL-запросы. Что мы видим в этом запросе?

SQL

Русский

Работа с MySQL, MS SQL Server и Oracle в примерах. С. Куликов

Эта книга посвящена практике использования SQL для решения типичных задач. .

Понимание SQL. Мартин Грубер

«ПОНИМАНИЕ SQL» — это полный учебник по программированию на Структурированном .

SQL для простых смертных. Мартин Грабер

SQL ДЛЯ ПРОСТЫХ СМЕРТНЫХ — это полное введение в структурированный .

Работа с PostgreSQL: настройка и масштабирование. Ю. Васильев

PostgreSQL невероятно мощная и гибкая СУБД, она имеет схожий функционал .

Введение в реляционные базы данных. Владимир Кириллов

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

Основы реляционных баз данных. Райордан Ребекка

Книга посвящена вопросам проектирования и внедрения современных компьютерных систем, работающих .

SQL. Сборник рецептов. Энтони Молинаро

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

Язык SQL. Базовый курс. Е. П. Моргунов

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

Изучаем SQL. Алан Бьюли

Язык SQL включает несколько категорий. Выражения, с помощью которых создаются .

Программирование для SQL server 2000 с использованием XML. Малкольм

Эта книга — практическое руководство по разработке бизнес-приложений на основе .

MySQL 5.0. Библиотека программиста. Виктор Гольцман

Эта книга предназначена для всех, кто желает освоить СУБД MySQL. .

Изучаем SQL. Линн Бейли

В современном мире наивысшую ценность имеет информация, но не менее .

English

Learning MySQL and MariaDB. R. J.T. Dyer

MySQL is the most popular open source database system available. .

SQL Queries for mere mortals. John L. Viescas, Michael J. Hernandez

The book is great for learning SQL queries.
The .

Healthy SQL. Robert Pearl

Healthy SQL is a book about how to design the .

The Art of SQL (2008). Peter Robson, Stephane Faroult

There used to be a time when what is known .

Simply SQL. Rudy Limeback

SQL has a fairly simple and clear syntax, but this .

MySQL Cookbook: Solutions for Database Developers and Administrators. Paul DuBois

There are a lot of good books on SQL, so .

SQL Practice Problems. S. M. Vasilik

This edition of SQL Practice Problems assumes that you have .

The Language of SQL. Larry Rockoff

Despite the simplicity and availability of SQL, there are queries .

SQL For Dummies. 9 Edition. A. Taylor

Welcome to database development using SQL, the industry-standard database query .

Data Modeling for MongoDB. S. Hoberman

How do you design for a database platform which doesn’t .

Pro SQL Server Internals 2-Ed. D. Korotkevitch

The book is logically separated into eight different parts. Even .

Pro SQL Server 2012 Relational Database Design and Implementation. L. Davidson

This book is written for professional programmers who have the .

Элементы языка SQL. Операторы DDL

SQL (Structured Query Language) — стандартный язык доступа к БД.

Основу языка SQL составляют операторы, условно разбитые не несколько групп по выполняемым функциям:

­Операторы DDL (Data Definition Language) — операторы определения объектов базы данных.

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

­Операторы защиты и управления данными, и др.

Операторы DDL (Data Definition Language) — операторы определения объектов базы данных:

­CREATE SCHEMA — создать схему базы данных

­DROP SHEMA — удалить схему базы данных

­CREATE TABLE — создать таблицу

­ALTER TABLE — изменить таблицу

­DROP TABLE — удалить таблицу

­CREATE DOMAIN — создать домен

­ALTER DOMAIN — изменить домен

­DROP DOMAIN — удалить домен

­CREATE COLLATION — создать последовательность

­DROP COLLATION — удалить последовательность

­CREATE VIEW — создать представление

­ DROP VIEW — удалить представление

Элементы языка SQL. Операторы DML

SQL (Structured Query Language) – стандартный язык доступа к БД.

Основу языка SQL составляют операторы, условно разбитые не несколько групп по выполняемым функциям:

­Операторы DDL (Data Definition Language) — операторы определения объектов базы данных.

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

­Операторы защиты и управления данными, и др.

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

­SELECT — отобрать строки из таблиц

­INSERT — добавить строки в таблицу

­UPDATE — изменить строки в таблице

­DELETE — удалить строки в таблице

­COMMIT — зафиксировать внесенные изменения

­ ROLLBACK — откатить внесенные изменения

Элементы языка SQL. Операторы защиты и управления данными

SQL (Structured Query Language) – стандартный язык доступа к БД.

Основу языка SQL составляют операторы, условно разбитые не несколько групп по выполняемым функциям:

­Операторы DDL (Data Definition Language) — операторы определения объектов базы данных.

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

­Операторы защиты и управления данными, и др.

­CREATE ASSERTION — создать ограничение

­DROP ASSERTION — удалить ограничение

­GRANT — предоставить привилегии пользователю или приложению на манипулирование объектами

­ REVOKE — отменить привилегии пользователя или приложения

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

Лучшие изречения: На стипендию можно купить что-нибудь, но не больше. 8988 — | 7235 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Краткий курс языка запросов SQL

SQL ( Structured Query Language ) — Это Язык Структурированных Запросов. Он не такой богатый, как языки программирования высокого уровня. Тем не менее, это язык, без владения которым программисту, работающему с базами данных, не обойтись. Запросы, написанные на SQL , часто называют скриптами. Как вы уже знаете, эти скрипты можно непосредственно вводить в свойство SQL компонента-запроса в момент проектирования приложения, а можно значение этого свойства менять и в процессе прогона программы. Однако нередко используют и третий способ: программист создает набор скриптовых файлов, в процессе работы программа считывает из них SQL -инструкции в компоненты запросов и выполняет их. Это простые текстовые файлы , созданные в любом редакторе текстов, например, стандартном Блокноте Windows . Расширение может быть любым, но традиционно используется *.sql. Все это позволяет создавать гибкие программы. Если организации, использующей ваше приложение , в дальнейшем потребуются какие-то новые возможности, например, им нужно дополнительно создать еще один отчет, то применение скриптовых файлов избавит вас от необходимости переделывать программу, для этого достаточно будет написать скрипт .

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

Команда SELECT

Команда SELECT является основой запроса. Большинство SQL -запросов начинаются с нее. Множество других команд вкладываются в блок SELECT . Полный синтаксис этой команды таков:

Здесь используются следующие элементы:

Таблица 8.1 . Элементы команды SELECT
Элемент Описание
Выражение, которое производит значение. Оно может включать имена столбцов.
Имя или синоним таблицы или представления
Временный синоним для table name >, определенный в этой таблице и используемый только в этой команде.

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

Команда FROM определяет имена таблиц, из которых осуществляется выборка данных . Если таблиц несколько, их имена разделяются запятыми. Иногда таблицы имеют длинные имена. В этом случае бывает выгодно использовать псевдонимы (alias) имен таблиц, указывая их через пробел после имени таблицы:

Команда WHERE

Команда WHERE позволяет использовать условие, которые может быть верным или нет для каждой записи БД . Если условие верное, то запись добавляется в набор данных, иначе отвергается. Давайте рассмотрим пример. Загрузите SQL -монитор из прошлой лекции. Предположим, нам нужно получить следующие данные на каждого сотрудника: Фамилия, Имя, Отдел, Должность. Пишем соответственный SQL — запрос :

Выполнив этот запрос , вы получите нечто непонятное. В полученном наборе данных всем сотрудникам подряд присваивается вначале первая должность, затем вторая, и так до конца. Другими словами, если у вас 10 сотрудников и 10 должностей, то вместо ожидаемых десяти записей вы получите 10 * 10 = 100 записей! Полученные данные называют недостоверными. Чтобы избежать этого, существует команда WHERE , которая позволяет задать условие выборки данных:

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

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

Как и в любом условии, здесь можно применять различные операторы сравнения:

Таблица 8.2 . Операторы сравнения
Оператор Описание
= Равно
> Больше
= Больше или равно
Не равно

Кроме того, мы можем использовать логические операторы AND , OR и NOT , формируя более сложные запросы:

Логические операторы имеют более высокий приоритет, поэтому в приведенном примере можно обойтись и без скобок. Данный запрос выдаст нам данные только на бухгалтеров. Как вы могли заметить, в отличие от Delphi , строка в SQL заключается не в одинарные, а в двойные кавычки! Однако SQL более демократичен, одинарные кавычки тоже принимаются. Обычно их используют, если внутри строки требуется указать кавычки, например, ‘Строка «в кавычках» будет отображена’.

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

Команда ORDER BY

Команда ORDER BY позволяет сортировать записи по определенному полю как в возрастающем, так и в убывающем порядке. Воспользуемся предыдущим примером, и отсортируем записи по полю «Фамилия»:

Как уже говорилось, мы можем сортировать данные как по возрастанию ( ASC ), так и по убыванию ( DESC ) значений. Сортировка по возрастанию установлена «по умолчанию», а вот чтобы сортировать записи по убыванию, после имени поля следует поставить служебное слово DESC :

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

В этом случае мы получим набор данных, в котором записи отсортированы вначале по фамилии сотрудника, затем по его номеру телефона:

Оператор IN

Оператор IN позволяет определить набор значений. Предположим, нам нужны сотрудники, проживающие в городах Москва и Санкт-Петербург. Мы можем сформировать сложный запрос :

Последнюю строку запроса можно упростить, если использовать оператор IN :

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

Оператор BETWEEN

Оператор BETWEEN работает примерно так же, как IN , но задает не список , а диапазон значений. Предположим, нам нужно выявить сотрудников, которые имеют стаж работы от 4 до 10 лет включительно. Подобный запрос выглядит так:

Краткая история языка SQL

Читайте также:

  1. I. История обезболивания
  2. Важной особенностью алгоритмических языков типа псевдокодов является их близость к языкам программирования.
  3. Введение: История в системе социально-гуманитарных наук
  4. Виды транспорта, их краткая технико-экономическая характеристика, сферы применения. Роль железных дорог в транспортной системе страны.
  5. Виды управленческих решений и их краткая характеристика
  6. Вопрос 2: История российской страховой науки
  7. Вопрос 3. Литературный язык – высшая форма национального языка
  8. Вопрос 4: История страхования ответственности директоров
  9. Всемирная история новейшего времени. 1945 – начало XXI в.
  10. Глушаченко С.Б., Пузырева Е.В. К вопросу о логической структуре российской правовой нормы // История государства и права, 2005, № 1.
  11. Градация словесного ударения по силе в английском и русском языках.
  12. Градостроительство и управление: подходы к изучению, краткая характеристика

Введение

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

Язык SQL, предназначенный для взаимодействия с базами данных, появился в середине 70-х (первые публикации датируются 1074 г.) и был разработан в компании IBM в рамках проекта экспериментальной реляционной СУБД System R. Исходное название языка SEQUEL (Structured English Query Language) только частично отражало суть этого языка. Конечно, язык был ориентирован главным образом на удобную и понятную пользователям формулировку запросов к реляционным БД. Но на самом деле он почти с самого начала являлся полным языком БД, обеспечивающим, помимо средств формулирования запросов и манипулирования БД, следующие возможности:

· средства определения и манипулирования схемой БД;

· средства определения ограничений целостности и триггеров;

· средства определения представлений БД;

· средства определения структур физического уровня, поддерживающих эффективное выполнение запросов;

· средства авторизации доступа к отношениям и их полям*;

· средства определения точек сохранения транзакции и выполнения фиксации и откатов транзакций.

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

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

Наиболее близкими к System R являлись две системы компании IBM – SQL/DS и DB2**. Разработчики обеих систем использовали опыт проекта System R, а СУБД SQL/DS напрямую основывалась на программном коде System R. Отсюда предельная близость диалектов SQL, реализованных в этих системах, к SQL System R. Из SQL System R были удалены только те части, которые были недостаточно проработаны (например, точки сохранения) или реализация которых вызывала слишком большие технические трудности (например, ограничения целостности и триггеры). Можно назвать этот путь к коммерческой реализации SQL движением сверху вниз.

Другой подход применялся в таких системах, как Oracle, Informix и Sybase. Несмотря на различие в способах разработки этих систем, реализация SQL везде происходила “снизу вверх”. В первых выпущенных на рынок версиях этих систем использовалось очень ограниченное подмножество SQL System R. В частности, в первой известной автору реализации SQL в СУБД Oracle в операторах выборки не допускалось использование вложенных подзапросов, и отсутствовала возможность формулировки запросов с соединениями нескольких отношений.

Тем не менее, несмотря на эти ограничения и на очень слабую, на первых порах, эффективность СУБД, ориентация компаний на поддержку разных аппаратных платформ и заинтересованность пользователей в переходе к реляционным системам позволили компаниям добиться коммерческого успеха и приступить к совершенствованию своих реализаций. В текущих версиях Oracle, Informix, Sybase и Microsoft SQL Server поддерживаются достаточно мощные диалекты SQL, хотя реализация иногда вызывает сомнения.*

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

Деятельность по стандартизации языка SQL началась практически одновременно с появлением его первых коммерческих реализаций. В 1982 г. комитету по базам данных Американского национального института стандартов (ANSI) было поручено разработать спецификацию стандартного языка реляционных баз данных. Первый документ из числа имеющихся у автора проектов стандарта датирован октябрем 1985 г. и является уже не первым проектом стандарта ANSI. Стандарт был принят ANSI в 1986 г., а в 1987 г. был одобрен Международной организацией по стандартизации (ISO). Принято называть этот стандарт SQL/86.

Понятно, что в качестве основы стандарта нельзя было использовать SQL System R. Во-первых, этот вариант языка не был должным образом технически проработан. Во-вторых, его слишком сложно было бы реализовать (кто знает, как бы сложилась дальнейшая история SQL, если бы в проекте System R были полностью реализованы все имевшиеся идеи). Поэтому за основу был взят диалект языка SQL, сложившийся в IBM к началу 1980-х. Грубо говоря, этот диалект представлял собой технически проработанное подмножество SQL System R.

К 1989 г. стандарт SQL/86 был несколько расширен, и был подготовлен и принят следующий стандарт, получивший название ANSI/ISO SQL/89. Анализ доступных документов показывает, что процесс стандартизации SQL происходил очень сложно с использованием далеко не только научных доводов. В результате SQL/89 во многих частях имеет чрезвычайно общий характер и допускает очень широкое толкование. В этом стандарте полностью отсутствуют такие важные разделы, как манипулирование схемой БД и динамический SQL. Многие важные аспекты языка в соответствии со стандартом определяются в реализации.*

Возможно, наиболее важными достижениями стандарта SQL/89 являются четкая стандартизация синтаксиса и семантики операторов выборки данных и манипулирования данными и фиксация средств ограничения целостности БД. Были специфицированы средства определения первичного и внешних ключей отношений и так называемых проверочных ограничений целостности, которые представляют собой подмножество немедленно проверяемых ограничений целостности SQL System R. Средства определения внешних ключей позволяют легко формулировать требования так называемой ссылочной целостности БД. Это распространенное в реляционных БД требование можно было сформулировать и на основе общего механизма ограничений целостности SQL System R, но формулировка на основе понятия внешнего ключа более проста и понятна.

Осознавая неполноту стандарта SQL, на фоне завершения разработки этого стандарта специалисты различных компаний начали работу над стандартом SQL2. Эта работа также длилась несколько лет, было выпущено множество проектов стандарта, пока, наконец, в марте 1992 г. не был принят окончательный проект стандарта (SQL/92). Этот стандарт существенно полнее стандарта SQL/89 и охватывает практически все аспекты, необходимые для реализации приложений: манипулирование схемой БД, управление транзакциями (появились точки сохранения) и сессиями (сессия – это последовательность транзакций, в пределах которой сохраняются временные отношения), подключения к БД, динамический SQL. Наконец, стандартизованы отношения-каталоги БД, что вообще-то не связано с языком непосредственно, но очень сильно влияет на реализацию.**

В 1995 г. стандарт был дополнен спецификацией интерфейса уровня вызова (Call-Level Interface – SQL/CLI). SQL/CLI представляет собой набор спецификаций интерфейсов процедур, вызовы которых позволяют выполнять динамически задаваемые операторы SQL. По сути дела, SQL/CLI представляет собой альтернативу динамическому SQL. Интерфейсы процедур определены на всех основных языков программирования: С, Ada, Pascal, PL/1 и т.д. Следует заметить, что стандарт SQL/CLI явился основой создания повсеместно распространенных сегодня интерфейсов ODBC (Open Database Connectivity) и JDBC (Java Database Connectivity).

В 1996 г. к стандарту SQL/92 был добавлен еще один компонент – SQL/PSM (Persistent Stored Modules). Основная цель этой спецификации состоит в том, чтобы стандартизовать способы определения и использования хранимых процедур, т.е. специальным образом оформленных программ, включающих операторы SQL, которые сохраняются в базе данных, могут вызываться приложениями и выполняются внутри СУБД.

Незадолго до завершения работ по определению стандарта SQL2 была начата разработка стандарта SQL3. Первоначально планировалось завершить проект в 1995 г. и включить в язык некоторые объектные возможности, определяемые пользователями типы данных, поддержку триггеров, поддержку темпоральных свойств данных и т.д. Реально работу над новым стандартом удалось частично завершить только в 1999 г., и по этой причине (а также в связи с проблемой 2000-го года) стандарт получил название SQL:1999.

Приведем краткую характеристику текущего состояния стандарта SQL:1999 и перспектив его развития. Прежде всего, заметим, что каждый новый вариант стандарта языка SQL становился существенно объемнее предыдущих версий. Так, если стандарт SQL/89 занимал около 600 страниц, то SQL/92 был более чем на 300 страниц объемнее. Самые первые проекты SQL3 занимали около 1500 страниц. Это вполне естественно, потому что язык усложняется, а его спецификации становятся более детальными и точными. Но разработчики SQL3 пришли к выводу, что при таких объемах стандарта шансы на его принятие и последующую успешную поддержку весьма уменьшаются. Поэтому было принято решение разбить стандарт на относительно независимые части, которые можно было бы разрабатывать и поддерживать по отдельности.

В 1999 г. были приняты пять первых частей стандарта SQL:1999. Первая часть (SQL/Framework)посвящена описанию концептуальной структуры стандарта. В этой части приводится развернутая аннотация следующих четырех частей, и формулируются требования к реализациям, претендующим на соответствие стандарту.

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

· операторов определения и манипулирования схемой базы данных;

· операторов манипулирования данными;

· операторов управления транзакциями;

· операторов управления подключениями к базе данных и т.д.

Третью часть занимает уточненная по сравнению с SQL/92 спецификация SQL/CLI. В четвертой части специфицируется SQL/PSM – синтаксис и семантика языка определения хранимых процедур. Наконец, в пятой части – SQL/Bindings определяются правила связывания SQL для стандартных версий языков программирования FORTRAN, COBOL, PL/1, Pascal, Ada, C и MUMPS.

В стандарт SQL:1999 должны были войти еще несколько частей. Среди них спецификации следующих средств:

· управление распределенными транзакциями (SQL/Transaction);

· поддержка темпоральных свойств данных (SQL/Temporal);

· управление внешними данными (SQL/MED);

· связывание с объектно-ориентированными языками программирования (SQL/OLB);

· поддержки оперативной аналитической обработки (SQL/OLAP).

В конце 2003 г. был принят и опубликован новый вариант международного стандарта SQL:2003 [A.1]. Многие специалисты считали, что в варианте стандарта, следующем за SQL:1999, будут всего лишь исправлены неточности SQL:1999. Но на самом деле, в SQL:2003 специфицирован ряд новых и важных свойств, некоторые из которых мы затронем в этом курсе.

Претерпела некоторые изменения общая организация стандарта. Стандарт SQL:2003 состоит из следующих частей:

Части 1-4 и 9-10 с необходимыми изменениями остались такими же, как и в SQL:1999 (см. разд. 7.4). Часть 5 (SQL/Bindings) больше не существует; соответствующие спецификации включены в часть 2. Раздел части 2 SQL:1999, посвященный информационной схеме, выделен в отдельную часть 11. Появились две новые части – 13 и 14. Часть 13 полностью называется “SQL Routines and Types Using the Java Programming Language” (“Использование подпрограмм и типов SQL в языке программирования Java”). Появление такой отдельной части стандарта оправдано повышенным вниманием к языку Java со стороны ведущих производителей SQL-ориентированных СУБД. Наконец, последняя часть SQL:2003 посвящена спецификациями языковых средств, позволяющих работать с XML-документами в среде SQL.

По мнению автора курса, текущее состояние процесса стандартизации языка SQL отражает текущее состояние технологии SQL-ориентированных баз данных. Ведущие поставщики соответствующих СУБД (сегодня это компании IBM, Oracle и Microsoft) стремятся максимально быстро реагировать на потребности и конъюнктуру рынка и расширяют свои продукты все новыми и новыми возможностями. Очевидна потребность в стандартизации соответствующих языковых средств, но процесс стандартизации явно не поспевает за происходящими изменениями и дополнениями.

Дата добавления: 2014-01-03 ; Просмотров: 940 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

Илон Маск рекомендует:  Нестандартный вид текстовых полей
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL