sql запросы, запросы sql примеры, язык sql запросов, sql server запросы
|
Содержание
Запросы написаны без экранирующих ковычек, так как у MySQL, MSSQL и PostGree они разные.
Вывод нужны полей. Выводим только указанные поля из указанной таблицы
SELECT name_last, name_first, salary FROM table_name
Вывод всех полей из таблицы. * обозначает все поля
SELECT * FROM table_name
Задание псевдонима таблице. Таблице table_name в качестве псевдонима задано t. Выводим всех служащих с окладом свыше 35000
SELECT * FROM table_name AS t WHERE t.salary>35000
Исключение дубликатов. Хотим знать из каких стран поставляют продукцию продавцы
SELECT DISTINCT country FROM vendors
Постановка условия. Выводим поставщиком из России
SELECT * FROM vendors WHERE country="Россия"
Использование логических операторов. Хотим знать из каких стран поставляют продукцию продавцы выводим только предпочитаемых поставщиков из России. Когда используется оператор AND, то должны удовлетворяться оба условия
SELECT * FROM vendors WHERE country="Россия" AND preferred="true"
Использование логических операторов. Хотим видеть только тех животных, которые обитают в Тюменской области или в Московской области. Когда используем оператор OR, то должно удовлетворяться хотя бы одно условие
SELECT * FROM animals WHERE area="Тюменская область" OR area="Московская область"
Использование логических операторов. Выводим животных, обитающих в Тюменской области с весом не менее 7 кг. Когда используется оператор AND NOT должно удовлетворять первое условие и не должно второе
SELECT * FROM animals WHERE area="Тюменская область" AND NOT massa<7
Упорядочивание записей по возрастанию. Выводим животных в порядке увелицения веса: с начала самые легкие, в конце самые тяжелые.
SELECT * FROM animals ORDER BY massa
Упорядочивание записей по убыванию. Выводим животных в порядке уменьшения веса: с начала самые тяжелые, в конце самые легкие.
SELECT * FROM animals ORDER BY massa DESC
Упорядочивание записей по возрастанию. Упорядочить по третьему столбцу (отсчет начинается с 1)
SELECT * FROM animals ORDER BY 3
Вывести ограниченное количество записей. Выводим записи с первой, всего 10 записей. Остальные отсекаются
SELECT * FROM animals LIMIT 0,10
Объединение нескольких запросов
SELECT * FROM animals WHERE area="Тюменская область" UNION SELECT * FROM animals WHERE area="Московская область"
Выводим тех животных, которые обитают в Тюменской области, а также тех, которые обитают в Московской области. Оператором UNION можем объеденить несколько запросов.
SELECT * FROM animals WHERE area="Тюменская область" AND area="Московская область"
Подсчеты значений поля
SELECT MAX(salary) FROM employee // Выводим максимльный оклад из таблицы служащих SELECT MIN(salary) FROM employee // Выводим минимальный оклад из таблицы служащих SELECT SUM(salary) FROM employee // Выводим сумма всех окладов SELECT AVG(salary) FROM employee // Выводим среднию сумма всех окладов SELECT COUNT(*) FROM employee // Выводим количество сотрудников имеющих оклад SELECT COUNT(*) FROM employee WHERE office="310а" // Выводим количество сотрудников в 310а кабинете
Это важные команды. Рекомендуется, где это возможно, использовать для подсчета именно SQL запросы такого рода, так как ни одна среда программирования не сравнится в скорости обработки данных, чем SQL сервер при обработке своих же данных.
Группировка записей. C помощью конструкции ORDER BY можем узнать какая страна занимает самую большую площадь для каждого континента
SELECT continent, MAX(area) FROM country GROUP BY continent
Конструкция IN. Выводим покупателей из России, Болгари и Китая
SELECT * FROM customer WHERE country IN ("Россия", "Болгария", "Китай")
Конструкция NOT IN. Выводим всех покупателей за исключением тех, кто проживает в России и Китае
SELECT * FROM customer WHERE country NOT IN ("Россия","Кита")
Вывод пустых / не пустых значений
SELECT * FROM customer WHERE state IS NULL // Выводим те записи, где НЕ введено значение state SELECT * FROM customer WHERE state IS NOT NULL // Выводим те записи, где введено значение state
Вывод значений приблизительно соответствующих нужным. Выводим только тех служащих, у которых фамилия начинается на букву А. Знак % означает любые символы
SELECT * FROM employee WHERE name_last LIKE "А%"
Вывод значений приблизительно соответствующих нужным. Например, мы не помним как правильно пишется «Кабанов» или «Кобанов», тогда нужно будет воспользоваться знаком подчеркивания, который означает любой символ
SELECT * FROM employee WHERE name_last LIKE "К_банов"
Диапозон значений. Можем вывести только тех, кто получает от 25000 до 50000 включительно
SELECT * FROM salary BETWEEN 25000 AND 50000
Использование нескольких таблиц
SELECT o.order_no, o.amount_paid, c.company FROM orders AS o, customer AS с WHERE o.custno=c.custno AND c.city="Тюмень"
Выводим номер и сумму заказа из таблицы заказов и компанию сделавшую заказ из таблицы покупателей.
На самом деле, при правильном запроектированной базе данных данного вида запрос является самым частым, поэтому в MySQL был введен специальный оператор, который рабтоает в разы быстрее, чем выше написанный код.
SELECT o.order_no, o.amount_paid, с.company FROM orders AS o LEFT JOIN customer AS с ON (с.custno=o.custno)
Настоятельно рекомендую использовать в своих запросах именно этот код
Вложенные подзапросы
SELECT * FROM employee WHERE salary=(SELECT MAX(salary) FROM employee)
Мы научились выводить максимальное значение, например, можем узнать максимальный оклад у служащих, но куда было бы интереснее узнать, кто тот счастливчик. Именно здесь используется механизм вложенных подзапросов
Внимание! Вложенные подзапросы являются одним из самых узких мест в SQL серверах. Совместно со своей гибкостью и мощьностью, они также существенно увеличивают нагрузку на сервер. Что приводит к катастрофическому замедлению работы других пользователей. Очень часты случаи рекурсивных вызовов при вложенных запросах. пожтому настоятельно рекомендую НЕ использовать вложенные запросы, а разбивать их на более мелкие. Либо использовать вышеописанную комбинацию LEFT JOIN. Помимо этого данного вида запросы являются повышенным очагом нарушения безопасности.. Если все таки вы решили использовать вложенные подзапросы, то проектируйте их очень внимательно и первоначальные запуски сделать на копиях баз.
Группировка данных на основе даты.
Рекомендуется!
- Все поля рекомендуются писать с маленьких букв и разделять через принудительный пробел «_» для совместимости с разными языками таких как Delphi, PHP, Perl, Phytoh и Ruby.
- SQL команды писать БОЛЬШИМИ буквами для удобочитаемости.
- Называть поля сначало существительно потом действие.
- Стараться избегать слов резервных в разных языках которые могут вызывать проблемы в языках SQL, PHP или Perl. Например: name, count, link. Подробнее link можно использовать в MS SQL, но в MySQL зарезервировано.
- Данный материал является короткой справкой для повседнейвной работы и не претендует на супер мега авторитетный источник, коим является первоисточник SQL запросов той или иной базы данных.