double arrow

Отличие SQL от процедурных языков программирования

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

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

Основные категории команд языка SQL:

· DDL-язык определения данных, позволяет создавать и изменять структуру объектов базы данных, например, создавать и удалять таблицы;

· DML – язык манипулирования данными, используется для манипулирования информацией внутри объектов реляционной базы данных посредством трех основных команд: INSERT(вставка), UPDATE(изменения), DELETE (удаление);

· DQL – язык запросов, его основная команда SELECT, которая вместе со своими многочисленными опциями и предложениями используется для формирования запросов к реляционной БД;

· DCL – язык управления данными. Команды управления данными позволяют управлять доступом к информации, находящейся внутри БД. Они используются для создания объектов, связанных с доступом к данным, а также служат для контроля над распределением привилегий между пользователями;

· команды администрирования данных. С помощью команд администрирования данных пользователь осуществляет контроль за выполняемыми действиями и анализирует операции базы данных; они также могут оказаться полезными при анализе производительности системы;

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

Основные достоинства языка SQL:

· стандартность;

· независимость от конкретных СУБД;

· возможность переноса с одной вычислительной системы на другую;

· реляционная основа языка;

· возможность создания интерактивных запросов;

· возможность программного доступа к БД;

· обеспечение различного представления данных;

· возможность динамического изменения и расширения структуры БД;

· поддержка архитектуры клиент-сервер.


Опишите назначение оператора SELECT. Запишите синтаксис оператора SELECT в общем виде. Опишите назначение ключевого слова FROM. Приведите примеры использования оператора SELECT с ключевым словом FROM. Опишите назначение аргумента DISTINCT и приветите пример.

Оператор SELECT предназначен для выборки информации из таблиц базы данных.

Синтаксис оператора SELECT:

SELECT [[ALL]|DISTINCT] <список атрибутов>

FROM <список таблиц>;

В квадратных скобках указаны элементы, которые могут отсутствовать в запросе. Ключевое слово SELECT сообщает базе данных, что данное предложение является запросом на извлечение информации. После слова SELECT через запятую перечисляются наименования полей (список атрибутов), содержимое которых запрашивается. Обязательным ключевым словом, которое вместе с SELECT должно обязательно присутствовать в запросе является слово FROM (из). За слово FROM указывается список имен таблиц разделенных запятыми, из которых извлекается информация. Любой SQL-запрос должен заканчиваться символом «;» (точка с запятой). Точка с запятой используется, чтобы сообщать БД что запрос сформирован и готов к выполнению.

Например, нужно вывести авторов всех книг, которые имеются в книжном магазине.

SELECT Автор

FROM КНИГИ;

Результатом данного запроса будет таблица

Автор
Набоков
Пушкин
Булгаков
Зощенко
Пушкин
……..

В результате получили таблицу с повторяющимися строками. Для того чтобы исключить дублирующиеся строки из таблицы необходимо дополнить запрос ключевым словом DISTINCT (отличный). Если запрос SELECT извлекает множество полей, то DISTINCT исключает дубликаты строк, в которых значения всех выбранных полей идентичны. Ключевое слово ALL (все), в отличие от DISTINCT, оказывает противоположное действие, т.е. при его использовании повторяющиеся строки включаются в состав выходных данных. Режим, задаваемый ключевым словом ALL, действует по умолчанию.

Предыдущий запрос можно записать в следующем виде:

SELECT DISTINCT Автор

FROM КНИГИ;

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

Автор
Набоков
Пушкин
Булгаков
Зощенко
……..

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

SELECT *

FROM КНИГИ;

В данном случае результатом выполнения запроса будет вся таблица КНИГИ.

Оператор SELECT может содержаться не только перечень столбцов таблицы или символ *, но и выражения, а также отдельные числовые или текстовые константы. Текстовые константы должны заключаться в одинарные кавычки.

Например

SELECT ’Книга’,Наз_Кн, Ст_Кн AS Старая_Цена, Ст_Кн*1.5 AS Нов_Цена

FROM КНИГИ;

В результате получим

Книга Наз_Кн Старая_Цена Нов_Цена
Книга Крестоносцы    
Книга Доктор Живаго    
Книга Мастер и Маргарита    
Книга Молодая гвардия    
…. …. …. ….

Опишите назначение ключевого слова WHERE оператора SELECT. Охарактеризуйте основные операторы, используемые при задании логического условия в предложении WHERE. Приведите примеры использования оператора SELECT с ключевым словом WHERE.

Предложение WHERE определяет, какие строки указанных таблиц должны быть выбраны. Использование в операторе SELECT предложения, определяемого ключевым словом WHERE (где), позволяет задавать выражение условия, принимающее значение истина или ложь для некоторой строки таблицы. В таблицу, являющуюся результатом запроса, включаются только те строки, для которых условие, указанное в предложении WHERE, принимает значение истина.

В синтаксисе в предложении WHERE для отбора нужных строк таблицы можно использовать операторы сравнения = (равно), <> (не равно), <(меньше), <= (меньше или равно), > (больше), >=(больше или равно).

Также можно использовать несколько условий, соединенных логическими операторами:

AND - когда должны удовлетворяться оба условия;

OR - когда должно удовлетворяться одно из условий;

AND NOT - когда должно удовлетворяться первое условие и не должно второе;

OR NOT - когда или должно удовлетворяться первое условие или не должно удовлетворяться второе.

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

SELECT *

FROM Студенты

WHERE Город=‘Кобрин’ OR Город=‘Жабинка’ OR Город=‘Пинск’;

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

Оператор BETWEEN... AND... (находится в интервале от... до...) обеспечивает выборку строк, в которых значение какого-либо столбца находятся в заданном диапазоне. Оператор NOT BETWEEN … AND … наоборот обеспечивает выборку строк, значения которых находятся за пределами заданного диапазона. Первое значение в предложении c BETWEEN должно предшествовать второму в смысле алфавитной или числовой упорядоченности.

Например, выдать сведенья о картинах, стоимость которых находится в пределах от 80000 до 150000.

SELECT *

FROM Картины

WHERE Цена BETWEEN 80000 AND 150000;

В результате получим таблицу:

Наз_картины Художник Цена
Домовой Зирок Д.Л.  
Закат Литов Д.Е.  
Отражение Катов Л.А.  

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

SELECT *

FROM Студенты

WHERE Город IN (‘Кобрин’, ‘Жабинка’, ‘Пинск’);

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

Для выборки строковых значений по заданному образцу подстроки можно применять шаблон искомого образца строки, использующий символы: • символ подчеркивания «_»заменяет один любой символ. Например, 'б_к' будет соответствовать словам 'бык', 'бок' или 'бак';

• знак процента «%»замещает последовательность любого числа символов. Например 'р%' будет соответствовать словам 'рак' или 'рубашка' и т.д.

Например, чтобы получить список книг, в названии которых есть подстрока «Delphi», надо записать

SELECT Код_книги, Название, Автор

FROM Книги

WHERE Название LIKE ‘%Delphi%’;

Если при загрузке данных не введено значение в какое-либо поле таблицы, то СУБД поместит в него NULL-значение. Обнаружить эти значения можно с помощью IS NULL. Оператор IS NOT NULL наоборот обеспечивает выборку только тех строк, поля которых имеют определенные значения данных.

Например, запрос, приведенный ниже, возвратит строки из таблицы Поставщики, в которых отсутствуют сведения в столбцах Адрес или Телефон:

SELECT *

FROM Поставщики

WHERE Адрес IS NULL OR Телефон IS NULL;


Опишите функции преобразования символов в строке (LOWER, UPPER, INITCAP), строковые функции (LPAD, LTRIM, SUBSTR, INSTR, LENGTH и др.), функции работы с числами. Приведите примеры.

Функции преобразования символов в строке:

o LOWER (<строка>) - выполняет преобразование прописных букв в строчные (нижний регистр).

o UPPER (<строка>) - выполняет преобразование строчных букв в прописные (верхний регистр).

o INITCAP (<строка>)— перевод первой буквы каждого слова строки в прописную (заглавную).

Например: SELECT UPPER (Ф_Дир), INITCAP (Назв_Фирмы), LOWER (Адрес)

Ф_Дир Назв_Фирмы Адрес
ФОДЕЕВ Сад И Огород г.пинск, ленина 45
ВОЛКОВА Сахарный Завод г.жабинка, савецкая 3

FROM Поставщики;

Результат запроса будет выглядеть следующим образом:

Строковые функции:LPAD (RPAD) (<строка>,<длина>[,<подстрока>]) — дополнение строки слева (справа)ü <строка> дополняется слева (справа) заданной в <подстроке> последовательностью символов до указанной <длины> (возможно, с повторением последовательности);ü если <подстрока> не указана, то по умолчанию <строка> дополняется пробелами;ü если <длина> меньше длины <строки>, то исходная <строка> усекается слева (справа) до заданной <длины>.• LTRIM (RTRIM) (<строка>[,<подстрока>])— удаление левых (правых) граничных символовü из <строки> удаляются слева (справа) символы, указанные в <подстроке>;ü если < подстрока > не указана, по умолчанию удаляются пробелы;ü в <строку> справа (слева) добавляется столько пробелов, сколько символов слева (справа) было удалено, то есть длина <строки> остается неизменной.• SUBSTR (<строка>,<начало>[,<количество>]) — выделение подстроки из строки символовü из <строки> выбирается заданное <количество> символов, начиная с указанной параметром <начало> позиции в строке;ü если <количество> не задано, символы выбираются с <начала> и до конца <строки>;ü если указанное <начало> превосходит длину <строки>, то возвращается строка, состоящая из пробелов.• INSTR (<строка>,<подстрока>[,<начало поиска> [,<номер вхождения>]]) — определяет позицию размещения подстроки в другой строке. <Начало поиска> задает начальную позицию в строке для поиска <подстроки>. Если не задано, то по умолчанию принимается значение 1; <номер вхождения> задает порядковый номер искомой подстроки. Если не задан, то по умолчанию принимается значение 1.• LENGTH (<строка>) — вычисляет длину строки.

Например:

SELECT RPAD(Ф_Дир,10,’?!’) AS Ф_Д, Назв_Фирмы, LENGTH(Назв_Фирмы) AS Длина, SUBSTR(Адрес,12) AS А

FROM Поставщики;

Ф_Д Назв_Фирмы Длина А
Фодеев?!?! Сад и огород   нина 45
Волкова?!? Сахарный завод   Савецкая 3

Результат запроса будет выглядеть следующим образом:

Функции работы с числами:

POWER (число, n) - возводит число в n-ную степень;

ROUND (число[,n]) - округляет число до n знаков справа от десятичной точки;

TRUNC (число[,n]) - усекает число до n знаков справа от десятичной точки;

ABS (число) - получает абсолютное значение числа;

SIGN (число) - принимает значение +1, если число больше нуля, 0, если число равно нулю и -1, если число меньше нуля;

SQRT (число) - вычисляет положительный квадратный корень числа. Если число меньше нуля, тогда результат - пустое значение (NULL);

Тригонометрические функции — COS(число), SIN(число), TAN(число)

Экспоненциальная функция — ЕХР (число)

Логарифмические функции — LN(число), LOG числовое выражение>).

Например: SELECT Рост, ROUND(Рост,1) AS Р_окр, TRUNC(Рост,1) AS Р_урез, Возр, POWER(Возр,2) AS Года

FROM Дети;

Рост Р_окр Р_урез Возр Года
1,17 1,2 1,1    
1,12 1,1 1,1    
1,39 1,4 1,3    

В результате получим



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: