ОСНОВЫ SQL
Запросы на выборку
Для того чтобы отобрать все данные из таблицы используется SQL запрос следующей структуры:
- ключевое слово SELECT; символ « *» ; ключевое слово FROM; имя таблицы.
- ключевое слово SELECT;
- символ « *» ;
- ключевое слово FROM;
- имя таблицы.
Выборка всех данных из таблицы
SQL запрос, который выберет все записи из таблицы genre :
Запрос:
SELECT * FROM genre;
Выборка отдельных столбцов
Для того чтобы отобрать данные из определенных столбцов таблицы используется SQL запрос следующей структуры:
- ключевое слово SELECT ; список столбцов таблицы через запятую; ключевое слово FROM ; имя таблицы.
- ключевое слово SELECT ;
- список столбцов таблицы через запятую;
- ключевое слово FROM ;
- имя таблицы.
Выбрать названия книг и их количества из таблицы book .
Запрос:
SELECT title, amount FROM book;
Выборка столбцов и присвоение им новых имен
Для того чтобы отобрать данные из определенных столбцов таблицы и одновременно задать столбцам новые имена используется SQL запрос следующей структуры:
- ключевое слово SELECT ; имя столбца; ключевое слово AS ; новое название столбца (можно русскими буквами); запятая; имя столбца; .... ключевое слово FROM ; имя таблицы.
- ключевое слово SELECT ;
- имя столбца;
- ключевое слово AS ;
- новое название столбца (можно русскими буквами);
- запятая;
- имя столбца;
- ....
- ключевое слово FROM ;
- имя таблицы.
Выборка столбцов и присвоение им новых имен
Например:
Выбрать все названия книг и их количества из таблицы book , для столбца title задать новое имя Название .
Запрос:
SELECT title AS Название, amount
FROM book;
Выборка данных с созданием вычисляемого столбца
- С помощью SQL запросов можно осуществлять вычисления по каждой строке таблицы с помощью вычисляемого столбца. Для него в списке полей после оператора SELECT указывается выражение и задается имя.
- Выражение может включать имена столбцов, константы, знаки операций, встроенные функции.
- Результатом является таблица, в которую включены все данные из указанных после SELECT столбцов, а также новый столбец, в каждой строке которого вычисляется заданное выражение.
Выборка данных с созданием вычисляемого столбца
Например:
Вывести всю информацию о книгах, а также для каждой позиции посчитать ее стоимость (произведение цены на количество). Вычисляемому столбцу дать имя total .
Запрос:
SELECT title, author, price, amount,
price * amount AS total
FROM book;
Выборка данных, вычисляемые столбцы, математические функции
В SQL реализовано множество математических функций для работы с числовыми данными:
Функция
Описание
CEILING(x)
Пример
возвращает наименьшее целое число, большее или равное x (округляет до целого числа в большую сторону)
ROUND(x, k)
округляет значение x до k знаков после запятой, если k не указано – x округляется до целого
CEILING(4.2)=5 CEILING(-5.8)=-5
ROUND(4.361)=4 ROUND(5.86592,1)=5.9
Выборка данных, вычисляемые столбцы, математические функции
Функция
Описание
FLOOR(x)
POWER(x, y)
Пример
возвращает наибольшее целое число, меньшее или равное x (округляет до целого числа в меньшую сторону)
FLOOR(4.2)=4 FLOOR(-5.8)=-6
возведение x в степень y
SQRT(x)
POWER(3,4)=81.0
квадратный корень из x
DEGREES(x)
конвертирует значение x из радиан в градусы
SQRT(4)=2.0 SQRT(2)=1.41...
DEGREES(3) = 171.8...
Выборка данных, вычисляемые столбцы, математические функции
Функция
Описание
RADIANS(x)
Пример
конвертирует значение x из градусов в радианы
ABS(x)
RADIANS(180)=3.14...
модуль числа x
PI()
ABS(-1) = 1 ABS(1) = 1
pi = 3.1415926...
Выборка данных, вычисляемые столбцы, математические функции
Для каждой книги из таблицы book вычислим налог на добавленную стоимость (имя столбца tax ), который включен в цену и составляет k = 18%, а также цену книги ( price_tax ) без него. Формулы для вычисления:
Запрос:
SELECT title, price,
(price*18/100)/(1+18/100) AS tax,
price/(1+18/100) AS price_tax
FROM book;
Выборка данных, вычисляемые столбцы, математические функции
Запрос:
SELECT title, price,
(price*18/100)/(1+18/100) AS tax,
price/(1+18/100) AS price_tax
FROM book;
?
Что плохо?
Выборка данных, вычисляемые столбцы, математические функции
Запрос:
SELECT title, price, ROUND((price*18/100)/(1+18/100),2) AS tax, ROUND(price/(1+18/100),2) AS price_tax
FROM book;
12
Выборка данных, вычисляемые столбцы, логические функции
- В SQL реализована возможность заносить в поле значение в зависимости от условия. Для этого используется функция IF:
IF(логическое_выражение, выражение_1, выражение_2)
- Все три параметра IF() являются обязательными.
- Допускается использование вложенных функций, вместо выражения_1 или выражения_2 может стоять новая функция IF .
12
Выборка данных, вычисляемые столбцы, логические функции
Пример
Для каждой книги из таблицы book установим скидку следующим образом: если количество книг меньше 4, то скидка будет составлять 50% от цены, в противном случае 30%. Цена по скидке должна отображаться с двумя знаками после запятой
Запрос:
SELECT title, amount, price,
ROUND (IF(amount
12
Выборка данных, вычисляемые столбцы, логические функции
Запрос:
SELECT title, amount, price,
ROUND (IF(amount
12
Выборка данных, вычисляемые столбцы, логические функции
Пример
Усложнить вычисление скидки в зависимости от количества книг. Если количество книг меньше 4 – то скидка 50%, меньше 11 – 30%, в остальных случаях – 10%. Добавить поле Ваша_скидка , в котором указать какая именно скидка на каждую книгу.
Запрос:
SELECT title, amount, price,
ROUND(IF(amount
IF(amount
FROM book;
12
Выборка данных, вычисляемые столбцы, логические функции
Запрос:
SELECT title, amount, price,
ROUND(IF(amount
IF(amount
FROM book;
12
», меньше « », больше или равно« = », меньше или равно « »). 12 " width="640"
Выборка данных по условию
- С помощью запросов можно включать в итоговую выборку не все строки исходной таблицы, а только те, которые отвечают некоторому условию. Для этого после указания таблицы, откуда выбираются данные, задается ключевое слово WHERE и логическое выражение, от результата которого зависит будет ли включена строка в выборку или нет. Если условие – истина, то строка(запись) включается в выборку, если ложь – нет.
- Логическое выражение может включать операторы сравнения (равно « = », не равно « », больше « », меньше « », больше или равно« = », меньше или равно « »).
12
Выборка данных по условию
Пример
Вывести название и цену тех книг, цены которых меньше 600 рублей.
Запрос:
SELECT title, price
FROM book
WHERE price
12
, =, ) NOT AND OR круглые скобки умножение (*), деление (/) сложение (+), вычитание (-) операторы сравнения (=, , =, ) NOT AND OR 12 " width="640"
Выборка данных, логические операции
Логическое выражение после ключевого слова WHERE кроме операторов сравнения и выражений может включать логические операции (И « and », ИЛИ « or », НЕ « not ») и круглые скобки, изменяющие приоритеты выполнения операций.
Приоритеты операций:
- круглые скобки умножение (*), деление (/) сложение (+), вычитание (-) операторы сравнения (=, , =, ) NOT AND OR
- круглые скобки
- умножение (*), деление (/)
- сложение (+), вычитание (-)
- операторы сравнения (=, , =, )
- NOT
- AND
- OR
12
600 AND author = 'Булгаков М.А.'; Пример Вывести название, цену тех книг, которые написал Булгаков или Есенин, ценой больше 600 рублей Запрос: SELECT title, author, price FROM book WHERE (author = 'Булгаков М.А.' OR author = 'Есенин С.А.') AND price 600; 12 " width="640"
Выборка данных, логические операции
Пример
Вывести название, автора и цену тех книг, которые написал Булгаков, ценой больше 600 рублей
Запрос:
SELECT title, author, price
FROM book
WHERE price 600 AND author = 'Булгаков М.А.';
Пример
Вывести название, цену тех книг, которые написал Булгаков или Есенин, ценой больше 600 рублей
Запрос:
SELECT title, author, price
FROM book
WHERE (author = 'Булгаков М.А.' OR author = 'Есенин С.А.') AND price 600;
12
Выборка данных, операторы BETWEEN, IN
- Логическое выражение после ключевого слова WHERE может включать операторы BETWEEN и IN . Приоритет у этих операторов такой же как у операторов сравнения, то есть они выполняются раньше, чем NOT , AND , OR .
- Оператор BETWEEN позволяет отобрать данные, относящиеся к некоторому интервалу, включая его границы.
Пример
Выбрать названия и количества тех книг, количество которых от 5 до 14 включительно.
Запрос:
SELECT title, amount
FROM book
WHERE amount BETWEEN 5 AND 14;
12
Выборка данных, операторы BETWEEN, IN
Оператор IN позволяет выбрать данные, соответствующие значениям из списка.
Пример
Выбрать названия и цены книг, написанных Булгаковым или Достоевским.
Запрос:
SELECT title, price
FROM book
WHERE author IN ('Булгаков М.А.', 'Достоевский Ф.М.');
12
Выборка данных с сортировкой
При выборке можно указывать столбец или несколько столбцов, по которым необходимо отсортировать отобранные строки. Для этого используются ключевые слова ORDER BY, после которых задаются имена столбцов. При этом строки сортируются по первому столбцу, если указан второй столбец, сортировка осуществляется только для тех строк, у которых значения первого столбца одинаковы.
По умолчанию ORDER BY выполняет сортировку по возрастанию. Чтобы управлять направлением сортировки вручную, после имени столбца указывается ключевое слово ASC (по возрастанию) или DESC (по убыванию).
12
Выборка данных с сортировкой
Логический порядок операций для запроса SQL на выборку данных с сортировкой следующий:
- FROM WHERE SELECT ORDER BY
- FROM
- WHERE
- SELECT
- ORDER BY
Поскольку сортировка выполняется позже SELECT, для указания столбцов, по которым выполняется сортировка, можно использовать имена, присвоенные им после SELECT, а также порядковый номер столбца в перечислении.
12
Выборка данных с сортировкой
Пример
Вывести автора, название и количество книг, в отсортированном в алфавитном порядке по автору и по убыванию количества, для тех книг, цены которых меньше 750 рублей.
Запрос:
SELECT author, title, amount AS Количество
FROM book
WHERE price
ORDER BY author, amount DESC;
или
SELECT author, title, amount AS Количество
FROM book
WHERE price
ORDER BY 1, 3 DESC;
12
Выборка данных, оператор LIKE
Оператор LIKE используется для сравнения строк.
В отличие от операторов отношения равно ( = ) и не равно ( ), LIKE позволяет сравнивать строки не на полное совпадение (не совпадение), а в соответствии с шаблоном. Шаблон может включать обычные символы и символы-шаблоны .
При сравнении с шаблоном, его обычные символы должны в точности совпадать с символами, указанными в строке. Символы-шаблоны могут совпадать с произвольными элементами символьной строки.
12
Выборка данных, оператор LIKE
Символ - шаблон
Описание
%
Пример
Любая строка, содержащая ноль или более символов
_
SELECT * FROM book WHERE author LIKE '%М.%' выполняет поиск и выдает все книги, инициалы авторов которых содержат « М. »
Любой одиночный символ
(подчерки-вание)
SELECT * FROM book WHERE title LIKE 'Поэм_' выполняет поиск и выдает все книги, названия которых либо « Поэма », либо « Поэмы » и пр.
12
Выбор уникальных элементов столбца
1 способ:
Чтобы отобрать уникальные элементы некоторого столбца используется ключевое слово DISTINCT, которое размещается сразу после SELECT
Пример
Выбрать различных авторов, книги которых хранятся в таблице book .
Запрос:
SELECT DISTINCT author
FROM book;
Выбор уникальных элементов столбца
2 способ:
Использование оператора GROUP BY, который группирует данные при выборке, имеющие одинаковые значения в некотором столбце.
Столбец, по которому осуществляется группировка, указывается после GROUP BY .
Пример
Выбрать различных авторов, книги которых хранятся в таблице book .
Запрос:
SELECT author
FROM book
GROUP BY author;