Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД.docx
Скачиваний:
3
Добавлен:
07.09.2019
Размер:
45.51 Кб
Скачать

Элементы языка sql

Важнейшая часть любой системы, применяющей БД — языковые средства, обеспечивающие возможность доступа и действий над данными, определение их структур, способов использования и интерпретации. Язык sql появился в 70-е гг., как одно из таких средств. Его прототип был разработан фирмой IBM под названием Sequel — структурный английский язык запросов. Sql вобрал в себя достоинства реляционной модели и в частности достоинства, лежащие в основе математического аппарата реляционной алгебры и реляционного исчисления. Используя при этом сравнительно небольшое число операторов и относительно простой синтаксис. Благодаря своим качествам, sql стал стандартным языком работы с реляционными данными. Этот стандарт поддерживается всеми мировыми фирмами, действующими в сфере технологий БД. Использование эффективного стандартного языка позволило обеспечить высокую степень независимости разрабатываемых прикладных систем от конкретного типа используемой СУБД, а также существенно поднять уровень и унификацию инструментальных средств разработки приложений, работающих с реляционными БД. Язык sql в большинстве его коммерческих реализаций имеют большие или меньшие отличия от стандарта. С одной стороны это уменьшает совместимость систем, использующих различные диалекты sql, с другой стороны полезные расширения реализации языка обеспечивают его развитие и со временем включаются в новые редакции стандарта. В настоящее время ни одна система не реализует стандарт sql в полном объеме. Во всех диалектах языка имеются возможности, не являющиеся стандартными, поэтому каждый диалект — надмножество некоторого подмножества стандарта sql. Sql относится к классу непроцедурных языков программирования, в отличие от универсальных процедурных языков, которые также могут быть использованы для работы с БД, sql ориентирован не на записи, а на множества (отношения). Это значит, что в качестве входной информации для формируемого на языке запроса к БД используется множество кортежей одной или нескольких таблиц отношений. В результате выполнения запроса также формируется множество кортежей результирующего отношения. Запрос sql задает не процедуру, а условие, которым должны удовлетворять кортежи результирующего отношения. Существуют и используются две формы языка sql: 1) интерактивный sql;

  1. Встроенный sql.

Интерактивный sql используется для создания sql-запросов пользователей и получения результатов в интерактивном режиме. Встроенный sql состоит из команд sql, встроенных внутрь программ, обычно написанных на каком-то другом языке. Это делает программу, использующей такие языки более мощными, гибкими и эффективными, обеспечивая их применение для работы с данными, хранящимися в реляционных БД. При этом требуются дополнительные средства интерфейса sql с языком, в который он встроен. Язык sql подразделяется на две составные части: 1) язык определения данных — дает возможность создания, изменения и удаления различных объектов БД (таблицы, индексы, пользователи).

2) Язык манипулирования данных — дает возможность выборки информации из бд и ее преобразование.

Типы данных в sql

В языке sql выделяют средства, позволяющие для каждого атрибута указывать тип данных, которому должны соответствовать все значения этого атрибута. Определения типов данных, является той частью языка, в которой коммерческие реализации языка не полностью совпадают с требованиями официального стандарта. Это объясняется желанием обеспечить совместимость sql с другими языками программирования. Первый тип данных — строка символов. Стандарт поддерживает только один тип представления текста — CHARACTER [(длина)] либо CHAR [(длина)]. Длина — от 1 до 255. Если длина не указана явно, то она равна одному символу. Если вводимая в поле текстовая константа будет меньше заданного числа символов, то константа автоматически дополнится пробелами. VARCHAR[(длина)] — в отличие от CHAR не дополняется пробелами строка, если вводимая строка меньше длины. Числовые типы данных: INTEGER - используется для определения целых чисел в диапазоне от -2^31 до +2^31. SMALLINT — для представления целых чисел от -2^15 до +2^15. DECIMAL (точность[,масштаб]) — десятичное число с фиксированной точкой. Точность определяет количество значащих цифр в числе. Масштаб определяет максимальное число цифр справа от точки. NUMERIC(точность[,масштаб]) — аналогичен. FLOAT[(точность)] — число с плавающей точкой, с указанной минимальной точностью. REAL — число с плавающей точкой, точность определена по умолчанию. DOUBLE PRECISION — число аналогичной REAL, но точность в два раза выше. Дата/время — нестандартный тип данных, но в большинстве поддерживает типы DATE и TIME. Неопределенные и пропущенные данные — для обозначения пропущенных, отсутствующих или неизвестных значений атрибутов в sql используется ключевое слово NULL, это приводит к ряду особенностей, которые необходимо учитывать при работе с новыми значениями. В агрегирующих функциях NULL значения атрибута игнорируется. Условные операторы от булевой двухзначной логики расширяются до 3-ех значной логике (true, false, unknown). Все операторы за исключением оператора конкатенации строк, возвращает null — значение. Для проверки на пустое значение используется оператор is null, is not null. Функция преобразования типа, имеющая null в качестве аргумента. Квадратные скобки означают необязательные параметры синтаксиса; многоточие — выражение предшествующее ему может повторяться любое число раз; фигурные скобки — объединяют последовательность элементов в логическую группу, один из элементов которой должен обязательно использоваться; вертикальная черта — указывает, что часть определения, следующая за этим символом, является одним из возможных вариантов; треугольные скобки — заключаются элементы, объясняемые по мере того, как они вводятся.

Выборка данных с использованием предложения SELECT

Вывести города, где проживают студенты:

SELECT DISTINC город FROM Студенты;

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

SELECT*FROM Студенты WHERE Фамилия=”Петров”; Учатся на первом курсе и получают стипендию: AND стипендия IS NOT NULL;

При задании логического условия WHERE могут использоваться IN, LIKE, IS NOT NULL, BETWEEN.

Оператор IN используется для сравнения проверяемого значения с заданным списком. Этот список значений. Этот список указывается справа от оператора IN в круглых скобках. Построенный предикат считается истинным, если значение поля, имя которого указано слева от IN, совпадает с одним из значений, перечисленных в списке. NOT противоположно IN. Выведем фамилии студентов, которые учатся в университете под кодом: 1, 6, 28, 16: SELECT фамилии FROM студенты WHERE №_университета IN (1,6,28,16);

Оператор between используется для проверки условия вхождения в заданный интервал, т.е. вместо списка значений этот оператор задает границы его изменения, граничные изменения входят в интервал. Вывести предметы в промежутке от 30 до 70 часов: SELECT название FROM предметы WHERE часы BETWEEN(30 AND 70);

Оператор LIKE применим только к символьным значениям. Этот оператор просматривает строковые значения с целью определения, входит ли в заданное в операторе like строка в символьную строку проверяемого поля. Для выборки строковых значений по заданному образцу подстроки можно применять шаблоны искомого образца строки, использую следующие символы: нижнее подчеркивание - ….., % - допускает присутствия в указанном месте последовательность любых символов произвольной длинны.

Вывести студентов, проживающих в девятом доме:

SELECT фамилия FROM студенты WHERE адрес LIKE ’ %д9’;

Несмотря на то, что sql работает с данными понятия строк и столбцов таблиц, имеется возможность применения значений выражений, построенных с использованием встроенных функций, констант, имен столбцов, определяемых, как своего рода виртуальные столбцы. Они помещаются в списки столбцов и могут сопровождаться псевдонимами. Если в запросе вместо спецификации столбца sql обнаруживает число, то оно интерпретируется, как числовая константа. SELECT ‘фамилия’, Surname, ’Имя’, Name, 100 FROM Student;

Select фамилия, имя, -(стипендия*курс)/2 FROM студенты; Оператор AS для переименования. Пишется после столбца, который нужно переименовать.