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

Представляю Вашему вниманию вольный перевод статьи SQL for Beginners

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

Что вам нужно

SQL (структурированный язык запросов) - язык разработанный для взаимодействия с реляционными системами управления базами данных (СУБД), таких как MySQL, Oracle, Sqlite и другими. Для выполнения SQL-запросов из этой статьи, я полагаю, что у вас установлен MySQL . Так же рекомендую использовать phpMyAdmin как визуальное средство отображения для MySQL .

Следующие приложения позволят легко установить MySQL и phpMyAdmin на ваш компьютер:

  • WAMP для Windows
  • MAMP для Mac

Приступим к выполнению запросов в командной строке. WAMP уже содержит ее в консоли MySQL . Для MAMP , возможно потребуется прочитать вот это.

CREATE DATABASE: Создание базы данных

Наш самый первый запрос. Мы создадим базу данных, с которой будем работать.

Первым делом откройте консоль MySQL и залогинтесь. Для WAMP , по-умолчанию, используется пустой пароль. Для MAMP пароль должен быть "root".

После входа напечатайте вот этот запрос и нажмите Enter :

CREATE DATABASE my_first_db;

Обратите внимание, точка с запятой (;) добавляется в конце запроса, так же как в конце строки в коде.

Так же, ключевые слова CREATE DATABASE нечувствительны к регистру, как и все ключевые слова в SQL . Но мы будем писать их в верхнем регистре для улучшения читаемости.

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

Если вы хотите установить набор символов и порядок сопоставления по-умолчанию, используйте подобный запрос:

CREATE DATABASE my_first_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Вы найдете список поддерживаемых наборов символов и сопоставлений в MySQL .

SHOW DATABASES: Список всех баз данных

Этот запрос используется для отображения всех баз данных.

DROP DATABASE: Удалить базу данных

С помощью этого запроса вы можете удалить существующую базу данных.

Будьте осторожны с этим запросом, потому что он не выводит никаких предупреждений. Если у вас есть таблицы и данные в базе данных, запрос удалит их все в одно мгновение.

С технической точки зрения это не запрос. Это "оператор" и не требует точки с запятой в конце.

Он сообщает MySQL , что нужно выбрать базу данных по-умолчанию и работать с ней до конца сессии. Теперь мы готовы создать таблицы и остальное в этой базе данных.

Что такое таблица базы данных?

Вы можете думать о таблице в базе данных как о обычной таблице или как о csv-файле, который имеет структурированные данные.

Как в этом примере, в таблице есть имена строк и столбцы с данными. Используя SQL-запросы мы можем создать эту таблицу. Еще мы можем добавлять, считывать, изменять и удалять данные.

CREATE TABLE: Создать таблицу

Этим запросом мы можем создать таблицу в базе данных. К сожалению документация по MySQL не очень дружелюбна к новым пользователям. Структура этого запроса может быть очень сложной, но мы начнем с простого.

Следующий запрос создает таблицу с двумя столбцами.

CREATE TABLE users (username VARCHAR(20), create_date DATE);

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

С первой строкой все просто. Мы создаем таблицу с именем users . Далее, в скобках, перечисляются столбцы таблицы через запятую. После каждого имени столбца идет тип данных, например, VARCHAR или DATE .

VARCHAR(20) означает, что столбец строкового типа и может быть не более 20 символов в длину. DATE - тип данных предназначенный для хранения дат в формате: "YYYY-MM-DD".

Первичный ключ

Перед тем как выполним этот запрос, мы должны вставить столбец user_id , который будет первичным ключом (PRIMARY KEY). Не вдаваясь в подробности, вы можете думать о первичном ключе как о способе распознать каждую строку данных в таблице.

Запрос становится таким:

CREATE TABLE users (user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(20), create_date DATE);

INT - 32х битный целочисленный тип (числовой). AUTO_INCREMENT автоматически создает новый номер id каждый раз при добавлении строки данных. Оно не обязательно, но с ним удобнее.

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

Давайте выполним запрос:

SHOW TABLES: Список всех таблиц

Запрос позволяет получить список всех таблиц в текущей базе данных.

EXPLAIN: Показать структуру таблицы

Используйте этот запрос для того, чтобы посмотреть структуру существующей таблицы.

В результате показаны поля (столбцы) и их свойства.

DROP TABLE: Удалить таблицу

Как и DROP DATABASES , этот запрос удаляет таблицу и ее содержимое без каких либо предупреждений.

ALTER TABLE: Изменить таблицу

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

Благодаря читабельности SQL , этот запрос не нуждается в объяснении.

Удалить так же просто. Используйте запрос с осторожностью, данные удаляются без предупроеждений.

Заново добавим поле email , позже оно еще понадобится:

ALTER TABLE users ADD email VARCHAR(100) AFTER username;

Иногда вам может понадобится изменить свойства столбца, для этого не обязательно его удалять и создавать опять.

Этот запрос переименовывает поле username в user_name и изменяет его тип с VARCHAR(20) на VARCHAR(30) . Такие изменения не влияют на данные в таблице.

INSERT: Добавляем данные в таблицу

Давайте добавим записи в таблицу, используя запросы.

Как вы можете видеть, VALUES() содержит список значений, разделенный запятыми. Строковые значения заключаются в одинарные кавычки. Значения должны следовать в порядке, заданном при создании таблицы.

Обратите внимание, первое значение равно NULL для первичного ключа, поле которого мы назвали user_id . Все потому что поле отмечено как AUTO_INCREMENT и id генерируется автоматически. Первая строка данных будет иметь id равный 1. Следующая добавленная строка - 2 и т.д.

Альтернативный синтаксис

Вот другой синтаксис вставки строк.

На этот раз мы использовали ключевое слово SET вместо VALUES . Отметим несколько вещей:

  • Столбец может быть опущен. Например, мы не присвоили значение полю user_id , потому что оно отмечено как AUTO_INCREMENT . Если не присвоить значение полю с типом VARCHAR , то по-умолчанию оно примет значение пустой строки (если другое значение по-умолчанию не было задано при создании таблицы).
  • К каждому столбцу можно обращаться по имени. Поэтому поля могут идти в любом порядке, в отличии от предыдущего синтаксиса.

Альтернативный синтаксис номер 2

Вот еще один пример.

Как и раньше к полям можно обращаться по имени, они могут идти в любом порядке.

Используйте этот запрос для того, чтобы получить id последней вставленной строки.

NOW()

Пришло время показать вам как использовать функции MySQL в запросах.

Функция NOW() возвращает текущую дату. Используйте ее для автоматического добавления текущей даты в поле с типом DATE .

Обратите внимание, что мы получили предупреждение от MySQL , но это не так важно. Причина в том, что функция NOW() фактически возвращает информацию о времени.

Мы создали поле create_date , которое может содержать только дату, но не время, поэтому данные были усечены. Вместо NOW() мы могли бы использовать CURDATE() , которая возвращает только текущую дату, но в конечном итоге результат был бы тем же.

SELECT: Получение данных из таблицы

Очевидно, что данные которые мы записали бесполезны пока мы не можем их прочитать. На помощь приходит запрос SELECT .

Простейший пример использования запроса SELECT для чтения данных из таблицы:

Звездочка (*) означает, что мы хотим получить все столбцы таблицы. Если вам надо получить только определенные столбцы, используйте что-то вроде этого:

Чаще всего мы хотим получить только определенные строки, а не все. Например, давайте получим E-mail адрес пользователя nettuts .

Он подобен условию IF. WHERE позволяет задать условие в запросе и получить нужный результат.

Для условия равенства используется одиночный знак (=), а не двойной (==), который, возможно, вы используете в программировании.

Так же вы можете использовать другие условия:

AND и OR используются для комбинирования условий:

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

IN()

Применяется для сравнения с несколькими значениями.

LIKE

Позволяет задавать шаблон для поиска.

Знак процента (%) используется для задания шаблона.

Условие ORDER BY

Используйте это условие, если хотите чтобы результат возвращался отсортированным:

По-умолчанию задан порядок ASC (по возрастанию). Добавьте DESC для сортировки в обратном порядке.

LIMIT … OFFSET …

Можно ограничивать количество возвращаемых строк.

LIMIT 2 берет две первых строки. LIMIT 1 OFFSET 2 берет одну строку, после первых двух. LIMIT 2, 1 означает тоже самое, только первое число это смещение, а второе - ограничивает количество строк.

UPDATE: Обновление данных в таблице

Этот запрос используется для обновления данных в таблице.

В большенстве случаев используется вместе с WHERE , для того чтобы обновить определенные строки. Если условие WHERE не задано, то изменения будут применены ко всем строкам.

Для ограничения изменяемых строк, можно использовать LIMIT .

DELETE: Удаление данных из таблицы

Как и , этот запрос часто используется совместно с условием WHERE .

TRUNCATE TABLE

Для удаления содержимого из таблицы, используйте такой запрос:

DELETE FROM users;

Для повышения производительности используйте .

Также сбрасыват счетчик поля AUTO_INCREMENT , поэтому вновь добавленные строки будут иметь id равный 1. При использовании этого не произойдет и счетчик будет дальше рости.

Экранирование строковых значений и специальные слова

Строковые значения

Некоторые символы нужно экранировть, иначе могут быть проблемы.

Обратный слэщ (\) используется для экранирования.

Это очень важно по причинам безопасности. Любые пользовательские данные, перед записью в базу данных, должны быть экранированы. В PHP используйте функцию mysql_real_escape_string() или подготовленные запросы.

Специальные слова

Поскольку в MySQL много зарезервированных слов, таких как SELECT или , во избежании противоречий, заключайте имена столбцов и таблиц в кавычки. Причем нужно использовать не обычные кавычки, а обратные (`).

Допустим, по каким то причинам, вы хотите добавить столбец с именем :

Заключение

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

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

Но, несмотря на постоянное использование баз данных, даже для многих разработчиков программных систем остается много «белых пятен» из-за разного толкования одних и тех же терминов. Мы дадим краткое определение основных терминов баз данных перед рассмотрением языка SQL. Итак.

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

Таблица - представим себе папку, в которой хранятся документы, сгруппированные по определенному признаку, например список заказов за последний месяц. Это и есть таблица в компьютерной Отдельная таблица имеет свое уникальное имя.

Тип данных - вид информации, разрешенной для хранения в отдельном столбце или строке. Это могут быть числа или текст определенного формата.

Столбец и строка - все мы работали с электронными таблицами, в которых также присутствуют строки и столбцы. Любая реляционная база данных работает с таблицами аналогичным образом. Строки иногда называют записями.

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

Что такое SQL?

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

С 1992 г. существует общепринятый стандарт, называемый ANSI SQL. Он определяет базовый синтаксис и функции операторов и поддерживается всеми лидерами рынка СУБД, такими как ORACLE Рассмотреть все возможности языка в одной небольшой статье невозможно, поэтому мы кратко рассмотрим только основные SQL запросы. Примеры наглядно показывают простоту и возможности языка:

  • создание баз и таблиц;
  • выборка данных;
  • добавление записей;
  • модификация и удаление информации.

Типы данных SQL

Все столбцы в таблице базы данных хранят один тип данных. Типы данных в SQL такие же, как и в других языках программирования.

Создаем таблицы и базы данных

Создавать новые базы, таблицы и другие запросы в SQL можно двумя способами:

  • Операторами SQL через консоль СУБД
  • Используя интерактивные средства администрирования, входящие в состав сервера баз данных.

Создается новая база данных оператором CREATE DATABASE <наименование базы данных>; . Как видим, синтаксис прост и лаконичен.

Таблицы внутри базы данных создаем оператором CREATE TABLE со следующими параметрами:

  • наименование таблицы
  • имена и типы данных столбцов

В качестве примера создадим таблицу Commodity со следующими столбцами:

Создаем таблицу:

CREATE TABLE Commodity

(commodity_id CHAR(15) NOT NULL,

vendor_id CHAR(15) NOT NULL,

commodity_name CHAR(254) NULL,

commodity_price DECIMAL(8,2) NULL,

commodity_desc VARCHAR(1000) NULL);

Таблица состоит из пяти столбцов. После наименования идет тип данных, столбцы разделяются запятыми. Значение столбца может принимать пустые значения (NULL) или должно быть обязательно заполнено (NOT NULL), и это определяется при создании таблицы.

Выборка данных из таблицы

Оператор выборки данных - самые часто используемые SQL запросы. Для получения информации необходимо указать, что мы хотим выбрать из такой таблицы. Вначале простой пример:

SELECT commodity_name FROM Commodity

После оператора SELECT указываем имя столбца для получения информации, а FROM определяет таблицу.

Результатом выполнения запроса будут все строки таблицы со значениями Commodity_name в том порядке, в котором они были внесены в базу данных т.е. без всякой сортировки. Для упорядочивания результата используется дополнительный оператор ORDER BY.

Для запроса по нескольким полям перечисляем их через запятую, как в следующем примере:

SELECT commodity_id, commodity_name, commodity_price FROM Commodity

Есть возможность получить как результат запроса значение всех столбцов строки. Для этого используется знак «*»:

SELECT * FROM Commodity

  • Дополнительно SELECT поддерживает:
  • Сортировку данных (оператор ORDER BY)
  • Выбор согласно условиям (WHERE)
  • Группировку срок (GROUP BY)

Добавляем строку

Для добавления строки в таблицу используются SQL запросы с оператором INSERT. Добавление может производиться тремя способами:

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

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

INSERT INTO Commodity VALUES("106 ", "50", "Coca-Cola", "1.68", "No Alcogol ,)

Пример добавляет в таблицу новый товар. Значения указываются после VALUES для каждого столбца. Если нет соответствующего значения для столбца, то необходимо указывать NULL. Столбцы заполняются значениями в порядке, указанном при создании таблицы.

В случае добавления только части строки необходимо явно указать наименования столбцов, как в примере:

INSERT INTO Commodity (commodity_id, vendor_id, commodity_name)

VALUES("106 ", ‘50", "Coca-Cola",)

Мы ввели только идентификаторы товара, поставщика и его наименование, а остальные поля отставили пустыми.

Добавление результатов запроса

В основном INSERT используется для добавления строк, но может использоваться и для добавления результатов оператора SELECT.

Изменение данных

Для изменения информации в полях таблицы базы данных необходимо использовать оператор UPDATE. Оператор может применяться двумя способами:

  • Обновляются все строки в таблице.
  • Только для определенной строки.

UPDATE состоит из трех основных элементов:

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

Рассмотрим пример. Допустим, у товара с ID=106 изменилась стоимость, поэтому эту строку необходимо обновить. Пишем следующий оператор:

UPDATE Commodity SET commodity_price = "3.2" WHERE commodity_id = "106"

Мы указали имя таблицы, в нашем случае Commodity, где будет производиться обновление, затем после SET - новое значение столбца и нашли нужную запись, указав в WHERE нужное значение ID.

Для изменения нескольких столбцов после оператора SET указываются несколько пар столбец-значение, разделенных запятыми. Смотрим пример, в котором обновляется наименование и цена товара:

UPDATE Commodity SET commodity_name=’Fanta’, commodity_price = "3.2" WHERE commodity_id = "106"

Для удаления информации в столбце можно присвоить ему значение NULL, если это позволяет структура таблицы. Необходимо помнить, что NULL - это именно «никакое» значение, а не нуль в виде текста или числа. Удалим описание товара:

UPDATE Commodity SET commodity_desc = NULL WHERE commodity_id = "106"

Удаление строк

SQL запросы на удаление строк в таблице выполняются оператором DELETE. Есть два варианта использования:

  • в таблице удаляются определенные строки;
  • удаляются все строки в таблице.

Пример удаления одной строки из таблицы:

DELETE FROM Commodity WHERE commodity_id = "106"

После DELETE FROM указываем имя таблицы, в которой будут удаляться строки. Оператор WHERE содержит условие, по которому будут выбираться строки для удаления. В примере мы удаляем строку товара с ID=106. Указывать WHERE очень важно т.к. пропуск этого оператора приведт к удалению всех строк в таблице. Это относится и к изменению значения полей.

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

Использование SQL в Microsoft Access

Обычно используется в интерактивном режиме для создания таблиц, баз данных, для управления, изменения, анализа данных в базе данных и с целью внедрить запросы SQL Access через удобный интерактивный конструктор запросов (Query Designer), используя который можно построить и немедленно выполнить операторов SQL любой сложности.

Также поддерживается режим доступа к серверу, при котором СУБД Access может использоваться как генератор SQL-запросов к любому ODBC источнику данных. Эта возможность позволяет приложениям Access взаимодействовать с любого формата.

Расширения SQL

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

Наиболее распространенные диалекты языка:

  • Oracle Database - PL/SQL
  • Interbase, Firebird - PSQL
  • Microsoft SQL Server - Transact-SQL
  • PostgreSQL - PL/pgSQL.

SQL в Интернет

СУБД MySQL распространяется под свободной лицензией GNU General Public License. Имеется коммерческая лицензия с возможностью разработки заказных модулей. Как составная часть входит в наиболее популярные сборки Интернет-серверов, таких как XAMPP, WAMP и LAMP, и является самой популярной СУБД для разработки приложений в сети Интернет.

Была разработана компанией Sun Microsystems и в настоящий момент поддерживается корпорацией Oracle. Поддерживаются базы данных размером до 64 терабайт, стандарт синтаксиса SQL:2003, репликация баз данных и облачных сервисов.

Просто и доступно рассмотрены теоретические основы СУБД SQL Server 2012. Показана установка, конфигурирование и поддержка MS SQL Server 2012. Описан язык манипулирования данными Transact-SQL. Рассмотрены создание базы данных, изменение таблиц и их содержимого, запросы, индексы, представления, триггеры, хранимые процедуры и функции, определенные пользователем.
Показана реализация безопасности с использованием аутентификации, шифрования и авторизации. Уделено внимание автоматизации задач администрирования СУБД. Рассмотрено создание резервных копий данных и выполнение восстановления системы. Описаны службы Microsoft Analysis Services, Microsoft Reporting Services и другие инструменты для бизнес-анализа. Рассмотрены технология работы с документами XML, управление пространственными данными, полнотекстовый поиск и многое другое. Для начинающих программистов.

В современном мире наивысшую ценность имеет информация, но не менее важно уметь этой информацией управлять. Эта книга посвящена языку запросов SQL и управлению базами данных. Материал излагается, начиная с описания базовых запросов и заканчивая сложными манипуляциями с помощью объединений, подзапросов и транзакций. Если вы пытаетесь разобраться в организации и управлении базами данных – эта книга будет отличным практическим пособием и предоставит вам все необходимые инструменты. Особенностью данного издания является уникальный способ подачи материала, выделяющий серию «Head First» издательства O\’Reilly в ряду множества скучных книг, посвященных программированию.

Эта книга расскажет вам, как работать с командами и инструкциями SQL, создавать и настраивать реляционные базы данных, загружать и модифицировать объекты баз данных, выполнять мощные запросы, повышать производительность и выстраивать систему безопасности. Вы узнаете, как использовать инструкции DDL и применять API, интегрировать XML и сценарии Java, использовать объекты SQL, создавать веб-серверы, работать с удаленным доступом и выполнять распределенные транзакции.
В этой книге вы найдете такие сведения, как описания работы с базами данных в памяти, потоковыми и встраиваемыми базами данных, базами данных для мобильных и наладонных устройств, и многое другое.

SQL для простых смертных — это полное введение в структурированный язык запросов, написанное специально для начинающих.

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

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

SQL is older than most of us, so I can’t claim to be conveying some extraordinary stuff through this book. What makes this title unique is its slender size. If you are looking for a real compact practical guide on SQL, then this book is for you. For beginners, I have tried to confine an ocean to a bucket in order to equip them with SQL knowledge in the shortest time possible. SQL language is too voluminous and exposure of every aspect of this huge language is a very tedious task. Keeping aside the least utilized features, this book is rolled out to focus on the more operational areas of the language. It is meant to help you learn SQL quickly by yourself. It follows a tutorial approach wherein hundreds of hands-on exercises are provided, augmented with illustrations, to teach you SQL in a short period of time. Without any exaggeration, the book will expose SQL in record time. The book explicitly covers a free platform of the world’s number 1 DBMS to expose SQL: Oracle Database Express Edition. I have chosen Oracle XE because it is free to develop, deploy, and distribute; fast to download; and simple to administer.

Beginning Oracle PL/SQL gets you started in using the built-in language that every Oracle developer and database administrator must know. Oracle Database is chock-full of built-in application features that are free for the using, and PL/SQL is your ticket to learning about and using those features from your own code. With it, you can centralize business logic in the database, you can offload application logic, and you can automate database- and application-administration tasks.

Author Don Bales provides in Beginning Oracle PL/SQL a fast-paced and example-filled tutorial. Learn from Don\’s extensive experience to discover the most commonly used aspects of PL/SQL, without wasting time on obscure and obsolete features.

Книга «SQL. Библия пользователя» уникальна тем, что в каждой главе проводится сравнение реализаций стандарта языка запросов SQL в трех ведущих СУБД. В результате получился исчерпывающий и практичный справочник для пользователей баз данных, от новичков до профессионалов. Данная книга по SQL удобно сочетает теорию с практикой, содержит описание новых технологий и позволит разобраться с многочисленными нюансами стандарта языка запросов SQL и его реализаций. Её можно использовать в качестве справочника - своего рода настольного пособия.
— Изучите основы языка запросов SQL и реляционных баз данных
— Освойте работу с таблицами, представлениями, последовательностями и прочими объектами баз данных
— Научитесь применять транзакции и блокировки в многопользовательской среде
— Познакомьтесь с функциями, предложенными стандартом SQL и тремя ведущими производителями СУБД
— Узнайте, как получать доступ к метаданным и реализовывать средства защиты базы данных
— Изучите дополнительные темы: интеграция SQL в XML, бизнес-аналитика OLAP и многое другое

Если у вас есть базовые навыки работы с HTML, то с помощью книги Робина Никсона, опытнейшего разработчика и автора многочисленных бестселлеров по веб-мастерингу, вы без особого труда научитесь создавать динамические сайты, характеризующиеся высоким уровнем взаимодействия с пользователями.
Откройте для себя сочетание PHP и MySQL, узнайте, как они облегчают создание современных веб-сайтов, научитесь добавлять к этим технологиям возможности javascript, позволяющего создавать высокотехнологичные приложения.
В данном руководстве каждая технология рассматривается отдельно, показывается, как объединить PHP, MySQL и javascript в единое целое, дается представление о самых современных концепциях веб-программирования. С помощью подробно разобранных примеров и контрольных вопросов, приводимых в каждой главе, вы сможете закрепить изученный материал на практике.

Данное руководство поможет вам:
— освоить основы PHP и объектно-ориентированного программирования;
— основательно изучить MySQL, начиная со структуры баз данных и заканчивая составлением сложных запросов;
— создать веб-страницы, использующие PHP и MySQL для объединения форм и других составных элементов HTML;
— изучить javascript, начиная с функций и обработки событий и заканчивая доступом к объектной модели документов (DOM);
— использовать библиотеки и пакеты программ, включая систему Smarty, хранилище программ PEAR и библиотеку Yahoo! User Interface;
— осуществлять Ajax-вызовы и превратить свой веб-сайт в высокодинамичную информационную среду;
— загружать на веб-сайт файлы и изображения и работать с ними, проверять данные, введенные пользователем;
— обеспечивать безопасность своих приложений.

Queries not running fast enough? Wondering about the in-memory database features in 2014? Tired of phone calls from frustrated users? Grant Fritchey’s book SQL Server Query Performance Tuning is the answer to your SQL Server query performance problems. The book is revised to cover the very latest in performance optimization features and techniques, especially including the newly-added, in-memory database features formerly known under the code name Project Hekaton. This book provides the tools you need to approach your queries with performance in mind.

SQL Server Query Performance Tuning leads you through understanding the causes of poor performance, how to identify them, and how to fix them. You’ll learn to be proactive in establishing performance baselines using tools like Performance Monitor and Extended Events. You’ll learn to recognize bottlenecks and defuse them before the phone rings. You’ll learn some quick solutions too, but emphasis is on designing for performance and getting it right, and upon heading off trouble before it occurs. Delight your users. Silence that ringing phone. Put the principles and lessons from SQL Server Query Performance Tuning into practice today.

Covers the in-memory features from Project Hekaton
Helps establish performance baselines and monitor against them
Guides in troubleshooting and eliminating of bottlenecks that frustrate users
What you’ll learn
— Establish performance baselines and monitor against them
— Recognize and eliminate bottlenecks leading to slow performance
— Deploy quick fixes when needed, following up with long term solutions
— Implement best-practices in T-SQL so as to minimize performance risk
— Design in the performance that you need through careful query and index design
— Take advantage of the very latest performance optimization features in SQL Server 2014
— Understand the new, in-memory database features formerly code-named as Project Hekaton

В книге SQL за 10 минут предлагаются простые и практичные решения для тех, кто хочет быстро получить результат. Проработав все 22 урока, на каждый из которых придется затратить не более 10 минут, вы узнаете обо всем, что необходимо для практического применения SQL. Приведенные в книге примеры подходят для IBM DB2, Microsoft Access, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, SQLite, MariaDB и Apache OpenOffice Base. Наглядные примеры помогут понять, как структурируются инструкции SQL. Советы подскажут короткие пути к решениям. Предупреждения помогут избежать распространенных ошибок. Примечания предоставят дополнительные разъяснения.

Запросы написаны без экранирующих кавычек, так как у MySQL , MS SQL и PostGree они разные.

SQL запрос: получение указанных (нужных) полей из таблицы

SELECT id, country_title, count_people FROM table_name

Получаем список записей: ВСЕ страны и их население. Название нужных полей указываются через запятую.

SELECT * FROM table_name

* обозначает все поля. То есть, будут показы АБСОЛЮТНО ВСЕ поля данных.

SQL запрос: вывод записей из таблицы исключая дубликаты

SELECT DISTINCT country_title FROM table_name

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

SQL запрос: вывод записей из таблицы по заданному условию

SELECT id, country_title, city_title FROM table_name WHERE count_people>100000000

Получаем список записей: страны, где количество людей больше 100 000 000.

SQL запрос: вывод записей из таблицы с упорядочиванием

SELECT id, city_title FROM table_name ORDER BY city_title

Получаем список записей: города в алфавитном порядке. В начале А, в конце Я.

SELECT id, city_title FROM table_name ORDER BY city_title DESC

Получаем список записей: города в обратном (DESC ) порядке. В начале Я, в конце А.

SQL запрос: подсчет количества записей

SELECT COUNT(*) FROM table_name

Получаем число (количество) записей в таблице. В данном случае НЕТ списка записей.

SQL запрос: вывод нужного диапазона записей

SELECT * FROM table_name LIMIT 2, 3

Получаем 2 (вторую) и 3 (третью) запись из таблицы. Запрос полезен при создании навигации на WEB страницах.

SQL запросы с условиями

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

SQL запрос: конструкция AND (И)

SELECT id, city_title FROM table_name WHERE country="Россия" AND oil=1

Получаем список записей: города из России И имеют доступ к нефти. Когда используется оператор AND , то должны совпадать оба условия.

SQL запрос: конструкция OR (ИЛИ)

SELECT id, city_title FROM table_name WHERE country="Россия" OR country="США"

Получаем список записей: все города из России ИЛИ США. Когда используется оператор OR , то должно совпадать ХОТЯ БЫ одно условие.

SQL запрос: конструкция AND NOT (И НЕ)

SELECT id, user_login FROM table_name WHERE country="Россия" AND NOT count_comments<7

Получаем список записей: все пользователи из России И сделавших НЕ МЕНЬШЕ 7 комментариев.

SQL запрос: конструкция IN (В)

SELECT id, user_login FROM table_name WHERE country IN ("Россия", "Болгария", "Китай")

Получаем список записей: все пользователи, которые проживают в (IN ) (России, или Болгарии, или Китая)

SQL запрос: конструкция NOT IN (НЕ В)

SELECT id, user_login FROM table_name WHERE country NOT IN ("Россия","Китай")

Получаем список записей: все пользователи, которые проживают не в (NOT IN ) (России или Китае).

SQL запрос: конструкция IS NULL (пустые или НЕ пустые значения)

SELECT id, user_login FROM table_name WHERE status IS NULL

Получаем список записей: все пользователи, где status не определен. NULL это отдельная тема и поэтому она проверяется отдельно.

SELECT id, user_login FROM table_name WHERE state IS NOT NULL

Получаем список записей: все пользователи, где status определен (НЕ НОЛЬ).

SQL запрос: конструкция LIKE

SELECT id, user_login FROM table_name WHERE surname LIKE "Иван%"

Получаем список записей: пользователи, у которых фамилия начинается с комбинации «Иван». Знак % означает ЛЮБОЕ количество ЛЮБЫХ символов. Чтобы найти знак % требуется использовать экранирование «Иван\%».

SQL запрос: конструкция BETWEEN

SELECT id, user_login FROM table_name WHERE salary BETWEEN 25000 AND 50000

Получаем список записей: пользователи, которые получает зарплату от 25000 до 50000 включительно.

Логических операторов ОЧЕНЬ много, поэтому детально изучите документацию по SQL серверу.

Сложные SQL запросы

SQL запрос: объединение нескольких запросов

(SELECT id, user_login FROM table_name1) UNION (SELECT id, user_login FROM table_name2)

Получаем список записей: пользователи, которые зарегистрированы в системе, а также те пользователи, которые зарегистрированы на форуме отдельно. Оператором UNION можно объединить несколько запросов. UNION действует как SELECT DISTINCT, то есть отбрасывает повторяющиеся значения. Чтобы получить абсолютно все записи, нужно использовать оператор UNION ALL.

SQL запрос: подсчеты значений поля MAX, MIN, SUM, AVG, COUNT

Вывод одного, максимального значения счетчика в таблице:

SELECT MAX(counter) FROM table_name

Вывод одного, минимальный значения счетчика в таблице:

SELECT MIN(counter) FROM table_name

Вывод суммы всех значений счетчиков в таблице:

SELECT SUM(counter) FROM table_name

Вывод среднего значения счетчика в таблице:

SELECT AVG(counter) FROM table_name

Вывод количества счетчиков в таблице:

SELECT COUNT(counter) FROM table_name

Вывод количества счетчиков в цехе №1, в таблице:

SELECT COUNT(counter) FROM table_name WHERE office="Цех №1"

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

SQL запрос: группировка записей

SELECT continent, SUM(country_area) FROM country GROUP BY continent

Получаем список записей: с названием континента и с суммой площадей всех их стран. То есть, если есть справочник стран, где у каждой страны записана ее площадь, то с помощью конструкции GROUP BY можно узнать размер каждого континента (на основе группировки по континентам).

SQL запрос: использование нескольких таблиц через алиас (alias)

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, z.company FROM orders AS o LEFT JOIN customer AS z ON (z.custno=o.custno)

Вложенные подзапросы

SELECT * FROM table_name WHERE salary=(SELECT MAX(salary) FROM employee)

Получаем одну запись: информацию о пользователе с максимальным окладом.

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

SQL запросы изменяющие данные

SQL запрос: INSERT

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

Вариант №1. Часто используется инструкция:

INSERT INTO table_name (id, user_login) VALUES (1, "ivanov"), (2, "petrov")

В таблицу «table_name » будет вставлено 2 (два) пользователя сразу.

Вариант №2. Удобнее использовать стиль:

INSERT table_name SET id=1, user_login="ivanov"; INSERT table_name SET id=2, user_login="petrov";

В этом есть свои преимущества и недостатки.

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

  • Множество мелких SQL запросов выполняются чуть медленнее, чем один большой SQL запрос, но при этом другие запросы будут стоять в очереди на обслуживание. То есть, если большой SQL запрос будет выполняться 30 минут, то в все это время остальные запросы будут курить бамбук и ждать своей очереди.
  • Запрос получается массивнее, чем предыдущий вариант.

Основные преимущества:

  • Во время мелких SQL запросов, другие SQL запросы не блокируются.
  • Удобство в чтении.
  • Гибкость. В этом варианте, можно не соблюдать структуру, а добавлять только необходимые данные.
  • При формировании подобным образом архивов, можно легко скопировать одну строчку и запустить ее через командную строку (консоль), тем самым не восстанавливая АРХИВ целиком.
  • Стиль записи схож с инструкцией UPDATE, что легче запоминается.

SQL запрос: UPDATE

UPDATE table_name SET user_login="ivanov", user_surname="Иванов" WHERE id=1

В таблице «table_name » в записи с номером id=1, будет изменены значения полей user_login и user_surname на указанные значения.

SQL запрос: DELETE

DELETE FROM table_name WHERE id=3

В таблице table_name будет удалена запись с id номером 3.

  1. Все названия полей рекомендуются писать маленькими буквами и если надо, разделять их через принудительный пробел «_» для совместимости с разными языками программирования, таких как Delphi, Perl, Python и Ruby.
  2. SQL команды писать БОЛЬШИМИ буквами для удобочитаемости. Помните всегда, что после вас могут читать код и другие люди, а скорее всего вы сами через N количество времени.
  3. Называть поля с начала существительное, а потом действие. Например: city_status, user_login, user_name.
  4. Стараться избегать слов резервных в разных языках которые могут вызывать проблемы в языках SQL, PHP или Perl, типа (name, count, link). Например: link можно использовать в MS SQL, но в MySQL зарезервировано.

Данный материал является короткой справкой для повседневной работы и не претендует на супер мега авторитетный источник, коим является первоисточник SQL запросов той или иной базы данных.

От автора: вас обозвали чайником? Ну, это дело поправимое! Каждый самовар когда-то был чайником! Или каждый профессионал был когда-то самоваром? Нет, опять что-то не то! В общем, MySQL для начинающих.

Зачем чайникам MySQL

Если вы всерьез собрались связать свою жизнь с интернетом, то сразу на первых же шагах в «паутине» столкнетесь с этой СУБД. MySQL можно смело назвать «всея интернетной» системой управления базами данных. Без нее не обходится ни один более-менее серьезный ресурса, она присутствует в админке каждого хостинга. И большая часть всех популярных CMS и даже «самопальных» движков построены с ее участием.

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

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

Основные понятия

Для начала пройдемся по основным понятиям, которые мы будем упоминать в этой публикации:

База данных (БД) – основная составляющая единица СУБД. БД включает в себя таблицы, которые состоят из столбцов и записей (строк). Образуемые на пересечении ячейки содержат в себе структурированные данные определенного типа.

СУБД (система управления БД) – совокупность всех программных модулей для администрирования баз данных.

SQL – язык структурированных запросов, с помощью которого разработчик «общается» с ядром (сервером) СУБД. Как и любой программный язык, SQL имеет свой синтаксис, набор команд и операторов, поддерживаемые типы данных.

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

Подбор правильного инструмента

Изрядно «порывшись» во всем ассортименте оболочек MySQL для начинающих, понял, что таких просто не существует. Все программные продукты для администрирования СУБД требуют наличия уже установленного сервера БД. В общем, решил в очередной раз не изобретать «самокат», и остановил свой выбор на отечественном пакете Denwer. Скачать его можно на официальном сайте .

В его состав уже входят все составляющие СУБД, позволяющие новичку сразу после несложной и понятной установки приступить к практическому знакомству с MySQL. Кроме этого Denwer включает в себя еще несколько необходимых для начинающего разработчика инструментов: локальный сервер, PHP.

Первые шаги

Не буду описывать процесс инсталляции «джентльменского» набора, поскольку там все происходит автоматически. После запуска инсталяхи успевай только нужные клавиши жать. Как раз то, что нужно в варианте MySQL для чайников .

Когда закончится процесс установки, запускайте локальный сервер, подождите пару секунд. После этого наберите в адресной строке браузера localhost.

На странице «Ура, заработало!» перейдите по одной из указанных на снимке ссылок. После чего вы попадете в phpMyAdmin – оболочку для администрирования баз данных.

Перейдя по ссылке http://downloads.mysql.com/docs/world.sql.zip, вы скачаете пример тестовой БД с официального сайта MySQL. Опять перейдите в phpMyAdmin, в основном меню сверху зайдите во вкладку «Импорт». В окне «Импорт на текущий» в первом разделе («Импортируемый файл») установите значение «Обзор вашего компьютера».

В окне проводника выберите архив со скачанным примером БД. Внизу основного окна не забудьте нажать «Ок».

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

Если все прошло хорошо, то вверху появится сообщение программы, что импорт выполнен успешно, а слева в списке БД — еще одна (word).

Рассмотрим ее структуру изнутри, чтобы вы смогли более наглядно представить, с чем вам придется иметь дело.

Нажмите на название БД MySQL для начинающих. Под ней отобразится список таблиц, из которых она состоит. Кликните по одной из них. Затем перейдите в пункт верхнего меню «Структура». В основной рабочей зоне отобразится структура таблицы: имена всех столбцов, типы данных и все атрибуты.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: