SQL — универсальный язык для работы с базами данных

CAD обзор
SQL - универсальный язык для работы с базами данных

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

SQL часто называют языком эсперанто систем управления базами данных (СУБД). Фактически, в мире не существует другого языка баз данных (ЯБД), широко используемого в программном обеспечении. Первый стандарт SOL появился в 1986 году и в настоящее время принят во всем мире. Он также может быть использован в некоррелированных СБС. В отличие от других программных средств, таких как C или COBOL, которые являются прерогативой профессиональных разработчиков, SQL используется специалистами широкого спектра дисциплин. Разработчики, администраторы SDB, бизнес-аналитики — все они успешно обрабатывают данные SQL. Знание этого языка полезно для всех, кто имеет дело с базами данных.

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

Трудно ли выучить SQL? Это зависит от того, насколько глубоко вы его ищете. Чтобы стать экспертом, нужно многому научиться. Язык SQL был создан в 1974 году как предмет 23-страничной исследовательской работы и с тех пор значительно эволюционировал. Сегодня стандартные тексты — официальные документы & #quot; Международный стандарт языка баз данных SQL& quot-. (обычно называемый SQL-92) — содержит более 600 страниц, но ничего не говорит о специфических особенностях версии Sol, реализованной компаниями Microsoft, Oracle, Sybase и другими. Этот язык настолько развит и разнообразен, что простое перечисление его особенностей потребовало бы нескольких статей в журнале; чтобы собрать все, что написано о SOL, потребовалась бы многотомная библиотека.

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

Что такое SQL?

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

Общие языки обычно имеют средства создания процессов; SQL — нет. В нем не указывается, как выполнить задачу, а только то, в чем эта задача заключается. Другими словами, когда вы манипулируете SQL, вас интересует результат, а не процесс его получения.

Наиболее важной особенностью SQL является возможность доступа к реляционным базам данных. Многие люди до сих пор считают, что выражения ‘sql’ и «база данных соотношений» — это синонимы. Однако вскоре становится очевидным, что между ними есть разница. В стандарте SQL-92 нет даже связи между терминами.

Что такое реляционная БУР?

Без лишних подробностей, реляционная СБ — это система, основанная на реляционной модели управления данными.

Концепция реляционной модели была впервые предложена доктором Э. Ф. КОДД в 1970 году. Он описал математические устройства для построения и управления данными и предложил абстрактную модель для представления фактической информации. До этого при использовании баз данных необходимо было учитывать определенные характеристики хранимой в них информации. Если внутренняя структура базы данных менялась (например, для повышения производительности), приложение приходилось перепроектировать, даже если на разумном уровне изменений не было. Реляционная модель позволила изолировать специфику хранения данных от уровня приложений. На самом деле, модель никак не описывает, как хранится информация и как к ней осуществляется доступ. Подумайте, как эта информация воспринимается пользователями. Появление реляционной модели коренным образом изменило подход к управлению данными и превратилось из искусства в науку, что привело к революции в отрасли.

Основные понятия реляционной модели

Согласно реляционной модели, отношение — это таблица с данными. Отношение имеет один или несколько атрибутов, соответствующих столбцам этой таблицы, и некоторый набор (возможно, пустой) данных, представляющих набор этих признаков (называемых столбцами или регистрами N-Aryy), которые могут соответствовать строкам таблицы.

Для каждого большого числа значения признаков должны принадлежать области SO -Caled. Фактически, одна область — это набор данных, который определяет все допустимые наборы значений.

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

Примечание: Для этой функции требуется одно из допустимых значений. Множественные значения запрещены. Поэтому, помимо требования, что значение характеристики должно принадлежать к определенной области, должно быть выполнено требование индивидуальности. Это означает, что для этих значений разложение не допускается. Это означает, что их нельзя анализировать в небольших местах без потери их основного смысла. Например, если у вас есть функциональное значение, которое одновременно включено в понедельник и вторник, вы можете разделить эти две части и сохранить первоначальную концепцию. Однако если попытаться разделить значение ‘Monday’ по местам, то получится набор независимых символов от "p&quot- до k&quot-. Поскольку они потеряны, значение «понедельник» является индивидуальным.

ЧИТАТЬ ЕЩЁ:  Firewall - не панацея

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

В своей оригинальной работе доктор КОДД определил набор из восьми операторов, названный реляционной алгеброй 4 & # 8212 союз, рациональное распространение, разность, декартово произведение — исходя из традиционной теории ансамблей. Другие операторы были изготовлены специально для работы с отношениями. В последующих работах CODD, Криса Дейта и других были предложены дополнительные операторы. Три реляционных оператора описаны в этом документе & # 8212 — Проекты, Ограничения (выбор, или ограничение) и Объединения.

SQL и реляционная модель

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

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

Статический и динамический SQL

Возможно, вы уже знакомы с такими терминами, как статический и динамический SQL. SQL-запрос является статическим, если он составлен и оптимизирован на этапе, предшествующем выполнению программы. Мы уже упоминали статический формат SQL при описании интеграции команд SQL в программу на Си или Коболе (такое выражение также называется — build -in sql). Как вы можете себе представить, динамические вопросы SQL компилируются и оптимизируются во время выполнения. В целом, обычные пользователи SQL Dynamics могут задавать вопросы в соответствии со своими насущными потребностями. SQL-Asked Dynamics — один из способов использования этих интерактивных или прямых вызовов (существует также специальный термин — DirectSQL). Существуют некоторые различия между статическим и динамическим SQL в синтаксисе и характеристиках используемых структур, но эти вопросы выходят за рамки данной статьи. Следует отметить, что для облегчения понимания примеры приводятся в форме непосредственных вопросов SQL. Это объясняется тем, что таким образом использование SQL может быть освоено не только разработчиками, но и большинством конечных пользователей.

Как изучать SQL

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

Чтобы сделать что-либо в SQL, необходимо выполнить выражение SQL. Существует несколько типов выражений, но есть три основные группы: DDL-команды (— язык определения данных), DML-команды (— язык обработки данных) и элементы управления данными. Таким образом, SQL в некотором смысле объединяет три разных языка.

Обработка данных Команды языка

Начните с одного из базовых DDL & # 8212. Создайте таблицы. В SQL существует несколько типов таблиц, два основных из которых — базовые и проекционные. Базовые таблицы — это таблицы, на которые ссылаются в фактических данных. Представления — это — виртуальные таблицы, созданные на основе информации, извлеченной из базовой таблицы, но которые для пользователя формы выглядят как обычные таблицы. Для создания базовой таблицы используется команда CREATE TABLE.

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

Создайте таблицу (тип данных столбец), а затем

Создание и таблица —, SQL-Tablename, столбец и тип данных — являются типичными параметрами, вместо того, чтобы пользователь вводил фактические значения по одному. Параметры колонок и типы данных заключены в скобки. В SQL скобки обычно используются для группировки отдельных элементов. В этом случае определения столбцов могут быть объединены. Верхняя точка в конце — это разделитель команд. Все выражения SQL должны быть завершены.

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

Создайте встречу для таблицы (appointmentt_date Date).

При выполнении этой команды создается таблица Appointments, содержащая один столбец Appointment_Date. Данные даты могут быть записаны. Количество строк в таблице равно нулю, так как на данный момент данные еще не введены (конфигурация таблицы определяет только таблицу, т.е. данные еще не введены). Фактические значения вводятся командами ввода и будут объяснены позже).

ЧИТАТЬ ЕЩЁ:  Кастомизация скроллбаров в браузере

Параметры Appitionments и Appost_Date называются ID, потому что они определяют имя конкретного объекта базы данных, в данном случае таблицы и столбца соответственно. Существует два типа SQL: обычный и разграниченный. Разделенные идентификаторы заключаются в двойные кавычки и чувствительны к пехоте. Обычные идентификаторы не разграничиваются и не чувствительны к пехоте. В данной статье используются только общепринятые идентификаторы.

Символы, используемые для построения идентификатора, должны соответствовать определенным правилам. В традиционных идентификаторах могут использоваться только буквы (не обязательно латинские, но и другие алфавиты), цифры и подчеркивания. Идентификаторы не должны содержать знаков препинания, пробелов или специальных символов (#, @, % или !). ) и не должны содержать специальных символов (#, @, % или !). Они также не могут начинаться с цифры или подчеркивания. Отдельные ключевые слова SQL могут использоваться для идентификаторов, но это не рекомендуется. Идентификаторы предназначены для идентификации объектов и поэтому требуют уникального (в рамках конкретной структуры) имени. Невозможно создать таблицу, имя которой уже существует в базе данных. В одной таблице не может быть столбцов с одинаковыми именами. Обратите внимание, что одно и то же имя — s — это то же самое имя, что и SQL. Вы не можете создать новую личность, просто изменив пехоту персонажа.

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

create table ИмяТаблицы ( Столбец ТипДанных [ < , Столбец ТипДанных > ] ) ;

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

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

Создайте панель appridtments2 (с
appoint_date дата, appoint_time время, appoint
назначить_время время,.
Описание varchar (256);

Эта команда создает таблицу Appridentments2 (новой таблице нужно другое имя, так как она уже существует в базе данных). Как и в первой таблице, имеется столбец Appoction_Date для записи дат назначений. Кроме того, имеется колонка Appoction_Time для записи времени этих назначений. Параметр description представляет собой текстовую строку, которая может содержать до 256 символов. Этот параметр представляет собой Varchar (сокращение для различных символов), поскольку объем пространства, необходимого для записи, заранее неизвестен, но ясно, что описание не должно превышать 256 символов. При описании параметров символьной строки (и некоторых других типов) указывается длина параметра. Длина определяется в скобках справа от имени типа.

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

Теперь, когда мы знаем основные правила, давайте рассмотрим более сложный пример создания многоколоночной таблицы. В начале этой статьи мы представили таблицу «Сотрудники». Он содержит следующие колонки: фамилия, имя, дата приема на работу, отдел, категория и годовая зарплата. Для назначения этой таблицы используется следующая команда SQL

Создайте таблицу сотрудников (см.
last_name character (13) not null, например.
имя_фамилия символ (10), не null, имя_фамилия символ (10), не null
дата_наема дата, филиал_офиса символ (15)
филиал_офиса символ (15), филиал_офиса_дата_даты, филиал_офиса_дата_даты
Grade_Level Smallint,
Заработная плата десятичная (9, 2));

Команда имеет ряд новых элементов. Первое — это предложение not null в конце определений столбцов last_name и first_name. Такая структура используется для определения требований, которые должны быть выполнены. В этом случае имя и фамилия должны быть заполнены на входе. Не осталось пробелов (это разумно, так как работник не обязан заполнять свою фамилию). Как вы можете идентифицировать работника, не зная его имени?)

Кроме того, этот пример содержит три новых типа данных: буквы, smallint и десятичные числа. До сих пор мы очень мало говорили об этих типах. В SQL нет реляционной области, но есть набор основных типов данных. Эта информация используется при выделении памяти, а список возможных значений для импорта несколько ограничен при сравнении цен, но контроль типов в SQL менее строгий, чем в других языках.

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

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

ЧИТАТЬ ЕЩЁ:  Вникаем в принцип работы HTTP-заголовка

Следующий тип данных, с которым мы уже знакомы, — это & # 8212. Различные символы (или просто Varchar)? принадлежат к группе символьных строк. Тип VARCHAR используется для хранения строк переменной длины, а символьный тип, встречающийся в третьем примере, предназначен для записи строк с фиксированными числами. Например, столбец last_name содержит строку из 13 символов, независимо от того, является ли фамилия По или Пенворт-Чикеринг (для По оставшиеся 10 символов заполнены пробелами).

С точки зрения пользователя, Varchar и Char имеют одинаковое значение. Зачем вводить два типа? На практике обычно приходится искать компромисс между эффективностью работы на диске и экономией места. Как правило, строки фиксированной длины дают некоторый выигрыш в скорости доступа, но очень большие строки занимают много места на диске. Это может быть нецелесообразно, если на одну строку комментария отводится 256 символов. В большинстве случаев линии будут гораздо меньше. С другой стороны, фамилии также различаются по длине, обычно около 13 символов. В этом случае потери минимальны. Если длина строки варьируется незначительно или известно, что относительно короткая строка отличается — varchar, то следует использовать char.

Следующие два новых типа данных — Smallint и Decimal — оба относятся к группе точной арифметики. Smallint — это аббревиатура от small integer. Целочисленные типы данных также предусмотрены в SQL. Существование двух схожих типов и в этом случае иллюстрируется умозаключением об экономии места. В этом примере используется тип данных, поскольку значение параметра Grade_Level может быть представлено двузначным числом. На практике, однако, не всегда известно, каково максимальное значение параметра. Если эта информация недоступна, следует использовать целые числа. Фактический размер доступного пространства для хранения Smallint и целочисленных параметров, а также соответствующие ценовые диапазоны для этих параметров, варьируются от платформы к платформе.

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

Десятичная (p, d),.

Где p — десятичная дробь, d & # 8212. Количество цифр после десятичной точки. Вместо P напишите общее количество цифр, вполне соответствующее используемому значению, вместо d & # 8212. Количество цифр после десятичной точки.

Frame ‘Create Table’ Представляет полное описание команды Create Table. Он содержит новые элементы и показывает формат всех рассматриваемых типов данных (в принципе, существуют и другие типы данных, но в настоящее время они не рассматриваются).

Поначалу написание команд SQL может показаться очень сложным. Однако на приведенном выше примере это легко понять. Диаграмма имеет дополнительный элемент &#8212 (вертикальная линия), который используется для разграничения альтернативных структур. Другими словами, когда вы определяете каждый столбец, вы выбираете правильный тип данных (как вы знаете, скобки необязательны, а скобки — структура, которая может повторяться много раз. В реальной команде SQL эти специальные символы не записываются). (Рис.) Первая часть диаграммы содержит полное имя типа данных, а вторая часть (сокращенное имя) может фактически использовать любое из них.

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

Создание таблиц. Синтаксис для создания массивов: квадратные скобки представляют необязательные параметры, а скобки — повторяющуюся структуру —.

Создайте таблицу table table (
 Символ колонки (длина) [ограничение]|
 Символьная переменная (длина) [ограничение]|
 Дата [ограничение]|
 Время [ограничение]|
 целое число [ограничение]|
 smallint [ограничение] | decimal (точность, десятичные числа) [ограничение] | decimal (точность, десятичные числа) [ограничение
 decimal (точность, десятичные дроби) [ограничение] | float
 float (точность) [ограничение] | varchar (длина) [ограничение
[< , column char (length) [ constraint ] |
 varchar (длина) [constraint] |
 Дата [ограничение]|
 Время [ограничение]|
 int [constraint] | smallint [constraint] | smallint [constraint] | smallint [constraint] | smallint [constraint] | smallint [constraint] | smallint [constraint] | smallint [constraint].
 smallint [ограничение] | decimal (точность, десятичные числа) [ограничение] | decimal (точность, десятичные числа) [ограничение
 dec (точность, десятичная дробь) [ограничение] |
 float (precision) [ constraint ] >]) ;

Тайна имени «sql

В начале 1970-х годов компания IBM начала применять на практике реляционную модель баз данных, предложенную доктором наук, профессором В.В. Cod. Дональд Чемберлин и другие группы в Advanced Research Unit создали прототип языка под названием Structured English Query Language, или его продолжение. В дальнейшем он был расширен и усовершенствован. Новая версия, предложенная IBM, получила название sequel/2. Он был использован в качестве интерфейса программирования (api) для разработки первой реляционной системы баз данных IBM —system/r. По юридическим причинам ibm решила изменить название с Sequential/2 на sql (Structured Query Language). Аббревиатура часто произносится как «к-ку-эл».

Существуют значительные различия между ранними прототипами сиквела и тем, что сейчас принято различными организациями в качестве стандартного SQL. Джим Мелтон, работавший над стандартом sql-92, даже утверждает, что многие люди ошибочно полагают, что термин «структурированный» — это «структурированный». язык правильно (Jim Melton and Alan r. Simon, Understanding the New SQL: The Complete Guide. Сан-Франциско: Морган Кауфман, 1993, ISBN: 1-55860-245-3). Так что, по сути, sql — это просто имя, серия букв s-q-l, не более того.

Оцените статью