Выбрать все данные из таблицы sql. Основное SQL-выражение для выборки данных. Как добавить информацию


Запрос - объект базы данных, используемый для выборки или модификации хранимых данных.

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

Для подготовки запросов используются:

    QBE (Query By Example) - язык запросов по образцам,

    SQL (Structured Query Language) - язык структурированных запросов.

Sql- язык структурированных запросов

Язык структурированных запросов SQL является наиболее распространенным языком управления базами данных клиент/сервер. содержит операторы:

    описания данных (DDL - Data Definition Language). Основные операторы DDL - Create Domain (Создание домена), Alter Domain (Изменение домена), Drop Domain (Уничтожение домена), Create Table, Alter Table, Table Drop;

    управления данными (DML - Data Manipulation Language). Основные операторы DML - Select (Выбор), Insert (Вставка), Update (Обновление), Delete (Удаление);

    формирования запросов.

Ключевые слова sql

    Команды – представляют собой глаголы определяющего действия, которые необходимо выполнить (SELECT, ALTER, CREATE, DROP)

    Условия (квалификатор)-ограничивают диапазон значений элементов, входящих в запрос (WHERE)

    Модификаторы (предложения)-модифицируют выполнение инструкций (ORDER BY)

    Предикаты – представляют собой выражения, такие как IN. Могут возвращать в качестве результата значения True, False, в некоторых случаях Null (неизвестный результат)

    Операторы (=, <,>)- сравнивают значения или применяются для создания объединений в синтаксисе предложений WHERE. Эти операторы наз предикатами сравнения.

    Статистические функции (агрегаты)- возвращают одно результирующее значение на основе набора данных (SUM (сумма), COUNT (количество), MIN (минимальное значение), MAX (максимальное значение) или AVG (среднее значение)

    Функции преобразования типа данных – изменяют тип данных с одного на др.(CAST, CONVERT)

    Другие ключевые слова (зарезервированные)-изменяющие действие команд или управляющие курсором (указателем текущей записи в наборе)

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

звездочка (*) для обозначения "все" - употребляется в обычном для программирования смысле, т.е. "все случаи, удовлетворяющие определению";

квадратные скобки () – означают, что конструкции, заключенные в эти скобки, являются необязательными (т.е. могут быть опущены);

фигурные скобки ({}) – означают, что конструкции, заключенные в эти скобки, должны рассматриваться как целые синтаксические единицы, т.е. они позволяют уточнить порядок разбора синтаксических конструкций, заменяя обычные скобки, используемые в синтаксисе SQL;

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

прямая черта (|) – означает наличие выбора из двух или более возможностей. Например обозначение ASC|DESC указывает, можно выбрать один из терминов ASC или DESC; когда же один из элементов выбора заключен в квадратные скобки, то это означает, что он выбирается по умолчанию (так, |DESC означает, что отсутствие всей этой конструкции будет восприниматься как выбор ASC);

точка с запятой (;) – завершающий элемент предложений SQL;

запятая (,) – используется для разделения элементов списков;

пробелы () – могут вводиться для повышения наглядности между любыми синтаксическими конструкциями предложений SQL;

прописные жирные латинские буквы и символы – используются для написания конструкций языка SQL и должны (если это специально не оговорено) записываться в точности так, как показано;

строчные буквы – используются для написания конструкций, которые должны заменяться конкретными значениями, выбранными пользователем, причем для определенности отдельные слова этих конструкций связываются между собой символом подчеркивания (_);

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

Синтаксис инструкции:

SELECT [ ALL │ DISTINCT │DISTINCTROW ] список_выбора

FROM имена таблиц

[ HAVING условие поиска]

[ ORDER BY критерий столбца ];

SELECT - выбрать (директива) данные из указанных столбцов и (если необходимо) выполнить перед выводом их преобразование в соответствии с указанными выражениями и (или) функциями

FROM - из (условие) перечисленных таблиц, в которых расположены эти столбцы

WHERE - где (условие) строки из указанных таблиц должны удовлетворять указанному перечню условий отбора строк

GROUP BY - группируя по (условие) указанному перечню столбцов с тем, чтобы получить для каждой группы единственное агрегированное значение, используя во фразе SELECT SQL – функции: SUM (сумма), COUNT (количество), MIN (минимум), MAX (максимум), AVG (среднее значение)

HAVING - имея в результате лишь те группы, которые удовлетворяют указанному перечню условий отбора групп (условие)

ORDER BY - спецификация сортировки (условие) определяет порядок сортировки: ASC – сортировка по возрастанию, DESC - сортировка по убыванию.

ПРЕДИКАТЫ:

1. Сравнения =, <>, >=, <, <=

2. В интервале - “между” BETWEEN a1 and a2

3. Входит в множество IN (=[Товар] IN (“Мука”,“Крупа”…..)

4. Подобие < имя > Like < образец >

(что) (с чем сравнивать)

Запросы написаны без экранирующих кавычек, так как у 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 запросов той или иной базы данных.

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

Когда человек впервые начинает читать обзоры про базы данных, то его голова просто разрывается от огромной массы технических терминов. Все эти первичные и вторичные ключи, таблицы, связи, процедуры, представления, индексы, условия, подзапросы, колонки, типы данных и прочее. И все это "как бы" необходимо учитывать. Как говорится, "А-а-а-а-а".

Однако, в этом и состоит одна из самых больших ошибок - читать термины, а не понимать их суть . Поэтому, многие из таких любознательных и нетерпеливых либо бросают это дело, либо вскользь осваивают материал и потом пишут невесть что. Изучать базу данных нужно с самого простого - с основы. И уже только затем остальные возможности.

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

Примечание : Материал предназначен для начинающих, но часть вещей может быть полезна и остальным.

Основа любой базы данных - таблицы и 4 типа запросов

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

Первым делом, рассмотрим что такое таблица . Хоть раз, но каждый открывал эксельный файл или электронную таблицу OpenOffice (см. обзор офисных пакетов). Так вот это, по сути, и есть база данных. У вас есть колонки и строки, в пересечении которых вы заполняете данные (числа, текст, даты и прочее).

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

1. Каждая колонка имеет уникальное некое имя (аналогично A, B, C).

2. В каждой колонке могут располагаться данные только одного типа. К примеру, в любой ячейке колонки B только числа, в колонке C только текст, в колонке F только даты.

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

4. Единицей измерения таблицы принято считать не отдельную ячейку, а каждую строку. К примеру, если у вас в таблице три колонки "Имя (Name) / День рождения (Date) / Возраст (Age)", то единицей измерения считается "Вася / 12.12.2012 / 7", а не какое-либо отдельное значение. Конечно, редактировать или просматривать отдельные ячейки этой строки можно, но добавлять данные в таблицу можно только построчно.

5. Существует специальное значение NULL, которое обозначает отсутствие данных в ячейке. Понять суть можно из следующего момента - далеко не у всех типов данных можно установить такое значение, которое можно было бы считать отсутствием данных. К примеру, для текста отсутствие данных можно как-то сравнить с пустой строкой (хотя и это не всегда корректно), а вот для чисел такого значения просто не существует (0 это число; к примеру, "осталось 0 яблок"). Поэтому и было введено специальное значение NULL.

Пример таблицы somedata:

Рассмотрим основные 4 типа запросов . Не сложно догадаться, что подобную таблицу хотелось бы каким-то образом составлять под конкретные задачи, а так же получать отфильтрованные данные. Просто представьте, что в таблице выше не 3 строки, а целых 10 000. Найти что-либо или подкорректировать будет весьма проблематично. Именно поэтому и были введены следующие 4 типа запросов:

1. Вставка (insert) - позволяет вставлять в таблицу единицы измерения, то есть строки.

2. Удаление (delete) - позволяет удалять из таблицы строки данных.

3. Обновление (update) - позволяет изменять отдельные ячейки строк.

4. Выборка (select) - позволяет из данных таблицы получать произвольного вида подтаблицы с необходимыми результатами, которые так же называют выборками.

Рассмотрим все типы более подробно.

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

Запрос вставки (insert)

Запрос вставки строится следующим образом:

insert into table (col1, col2, ..., colN) values (val11, val12, ..., val1N), (val21, val22, ..., val2N), ..., (valM1, valM2, ..., valMN);

где insert into - это начало запроса, table (col1, col2, ..., colN) - это названия колонок в нужном порядке (сделано для удобства), values - указывает, что далее будут указаны строки для вставки, (val11, val12, ..., val1N), (val21, val22, ..., val2N), ..., (valM1, valM2, ..., valMN) - это конкретные значения для вставки (в соответствующем порядке с колонками). Важно, что после каждого sql-запроса необходимо ставить точку с запятой. Это позволяет отделять одни запросы от других.

К примеру, если бы потребовалось добавить две строки в таблицу из примера somedate, то sql-запрос выглядел бы так:

insert into somedata (Name, Age, Date) values ("Коля", 10, "04.05.2009"), ("Анастасия", 22, "12.02.1997");

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

Запрос для удаления данных (delete)

SQL-запрос для удаления данных строится следующим образом:

где delete from - это начало запроса, table - это конкретное название таблицы, where - указывает, что далее будут указаны фильтры строк, которые необходимо удалить, clause - это сами фильтры для выборки строк. После sql-запроса ставится точка с запятой.

Важно отметить, что фильтр может быть весьма сложным и состоять из большого количества условий. Для его составления используются три операнда - and (И) , or (ИЛИ) и скобки (для отделения сложных выражений) . Логика здесь аналогична самой простой математики.

Примечание

К примеру, представим, что вам необходимо удалить все строки, где возраст больше 1 и меньше 5, или же строки, в которых указывается имя Масяня. Тогда запрос выглядел бы так:

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

Запрос обновления данных (update)

Запрос обновления данных строится следующим образом:

где update - это начало sql-запроса, table - это конкретное имя таблицы, set - обозначает, что далее будет список требуемых изменений, col1 = val1, col2 = val2, ..., colN = valN - это перечисление через запятую колонок с присваиваемыми им значениями, where - указывает, что далее будут перечислены условия отбора, clause - условие фильтра (аналогично delete). Запрос так же заканчивается точкой с запятой.

Примечание : Важно отметить, что часть where с clause являются необязательными. То есть, если фильтр не требуется, то их можно не писать. Однако, если фильтр нужен, то обе составляющих необходимо использовать в запросе.

К примеру, если необходимо не удалить все строки из примера ранее, а указать для всех этих строк дату рождения 31.12.2222 и возраст -203, то sql-запрос выглядел бы так:

Обратите внимание, что поля Age и Date изменяются только после проверки условий фильтра. Это важно, так как запрос позволяет использовать текущие значения колонок при фильтрации (иначе бы могли возникать несоответствия).

Запрос для выборки данных (select)

Это, пожалуй, один из самых часто используемых типов sql-запросов (ведь данные составляются не для хранения, а для их использования) и поэтому у него имеется масса дополнительных возможностей (сортировка, группировка и так далее; о них читайте в прочих обзорах, в рамках этого обзора они не столь важны).

Строится данный запрос следующим образом:

где select - это начало запроса, col1, col2, ..., colN - это перечисление колонок, которые необходимо отобразить (важно знать, что если требуются все колонки таблицы, то вместо перечисления можно указывать просто символ звездочки * , что очень удобно, особенно, если структура таблицы постоянно корректируется или же заранее не известны все доступные колонки, кроме тех, что в фильтре), from - обозначает, что далее будет указано имя таблицы, where - обозначает, что далее будет указан фильтр, clause - сам фильтр (аналогично delete и update). После sql-запроса ставится точка с запятой.

Примечание : Важно отметить, что часть where с clause являются необязательными. То есть, если фильтр не требуется, то их можно не писать. Однако, если фильтр нужен, то обе составляющих необходимо использовать в запросе.

Рассмотрим пример. Допустим, нам необходимо получить возраст и имя всех тех, чье день рождение было до 1-го января 1999 года. Тогда sql-запрос будет выглядеть так:

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

Послесловие

Стоит знать, что каждая из баз данных позволяет использовать рассмотренные sql-запросы с расширенными возможностями. К примеру, одновременное удаление из нескольких таблиц или же вставка строк с использованием запросов выборки. Поэтому, если у вас возникает необходимость в чем-то специфическом, то стоит более подробно изучать возможности каждой базы данных.


В предыдущих статьях были рассмотрены вопросы . Рассмотрена технология создания структуры таблиц базы данных «sql_training_st.mdb» на основе SQL запросов. Кроме того, с помощью SQL запросов было осуществлено заполнение таблиц СУБД ACCESS "sql_training_st.mdb".

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

Язык SQL состоит из четырех групп:

  • язык манипулирования данными DML;
  • язык определения данных DDL;
  • язык управления данными DCL;
  • язык управления транзакциями TCL.

К группе DML относятся четыре основных типа запросов SQL:

  • INSERT - предназначен для добавления одной или нескольких записей в конец таблицы;
  • UPDATE - предназначен для изменения уже существующих записей в столбцах таблицы или модификации данных в таблице;
  • DELETE - предназначен для удаления записей из таблицы;
  • SELECT - предназначен для выборки данных из таблиц.

Первые три типа SQL запросов (INSERT, UPDATE, DELETE), которые относятся к корректирующим запросам к базе данных, были рассмотрены на страничке

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

Для извлечения информации, хранящейся в базе данных БД Access 2003 или 2007, можно применить запрос SELECT на выборку данных из таблиц.

Составим следующий SQL запрос (инструкцию SQL) на выборку, для этого выберем режим SQL, выполнив команду Вид/Режим SQL. Вводим с клавиатуры следующую инструкцию SQL:

SELECT *
FROM Студенты;

Эта инструкция состоит из двух предложений "SELECT *" и "FROM Студенты". Первое предложение содержит оператор SELECT и идентификатор * ("идентификатор *" означает вывод всех столбцов таблицы). Второе предложение содержит оператор FROM и идентификатор "Студенты".

FROM - определяет таблицу "Студенты", которая содержат поля, указанные в предложении SELECT. Следует отметить, что в запросе на выборку всегда присутствуют два оператора: SELECT и FROM. В зависимости от условий отбора в запросе на выборку могут присутствовать и другие операторы. На рисунке 1 представлен скриншот запроса на выборку данных.


Рис. 1. SQL запрос SELECT на выборку данных

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

Сохраняем запрос с именем "Студенты-запрос1". В результате выполнения команды "Сохранить" в «Области переходов» появится объект - «Запросы: Студенты-запрос1».

После сохранения запроса на выборку необходимо выполнить этот запрос, щелкая на пиктограмме «Выполнить». Результаты выполнения команды «Выполнить» представлены на рис. 2.



Рис. 2. Выборка данных из всех столбцов таблицы Студенты

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

Что такое база данных SQL?

Структурированный язык запросов (Structured Query Language) – стандарт коммуникации с базой данных, который поддержан ANSI. Самая последняя версия – SQL-99, хотя новый стандарт SQL-200n уже находится в разработке. Большинство баз данных твердо придерживается стандарта ANSI-92. Было много обсуждений по поводу введения более современных стандартов, но изготовители коммерческих баз данных отклоняются от этого, развивая свои новые концепции манипуляции хранимыми данными. Почти каждая отдельная база данных использует некоторый уникальный набор синтаксиса, хоть и очень сильно подобного стандарту ANSI. В большинстве случаев, этот синтаксис является расширением базового стандарта, хотя бывают случаи, когда такой синтаксис приводит к различным результатам для разных баз данных. Всегда неплохой идеей будет просмотр документации к базе данных, особенно, если получаются неожиданные результаты.

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

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

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

Каждый столбец представляет собой атрибут или совокупность атрибутов объектов, например идентификационные номера служащих, рост, цвет машин и т.п. Часто в отношении столбца используется термин поле с указанием имени, например «в поле Name». Поле строки является минимальным элементом таблицы. Каждый столбец в таблице имеет определенное имя, тип данных и размер. Имена столбцов должны быть уникальны в пределах таблицы.

Каждая строка (или запись) представляет собой совокупность атрибутов конкретного объекта, например, в строке может содержаться идентификационный номер служащего, размер его зарплаты, год его рождения и т.д. Строки таблиц не имеют названий. Чтобы обратиться к конкретной строке, пользователю необходимо указать какой-то атрибут (или набор атрибутов), уникально ее идентифицирующий.

Одной из важнейших операций, которые выполняются при работе с данными, является выборка хранящейся в базе данных информации. Для этого пользователь должен выполнить запрос (query).

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

Типы запросов данных

Есть четыре основных типа запросов данных в SQL, которые относятся к так называемому языку манипулирования данными (Data Manipulation Language или DML):
SELECT – выбрать строки из таблиц;
INSERT – добавить строки в таблицу;
UPDATE – изменить строки в таблице;
DELETE – удалить строки в таблице;

Каждый из этих запросов имеет различные операторы и функции, которые используются для того, чтобы произвести какие-то действия с данными. Запрос SELECT имеет самое большое количество опций. Существуют также дополнительные типы запросов, используемых вместе с SELECT, типа JOIN и UNION. Но пока, мы сосредоточимся только на основных запросах.

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

Чтобы получить информацию, хранящуюся в базе данных используется запрос SELECT. Базовое действие этого запроса ограничено одной таблицей, хотя существуют конструкции, обеспечивающие выборку с нескольких таблиц одновременно. Для того, чтобы получить все строки данных для специфических столбцов, используется запрос такого вида:
SELECT column1, column2 FROM table_name;

Также, можно получить все столбцы из таблицы, используя подстановочный знак «*»:
SELECT * FROM table_name;

Это может быть полезно в том случае, когда вы собираетесь выбрать данные с определенным условием WHERE. Следующий запрос возвратит все столбцы со всех строк, где «column1» содержит значение «3»:
SELECT * FROM table_name WHERE column1=3;

Кроме «=» (равно), существуют следующие условные операторы:

Условные операторы:
= Равно
<> Не равно
> Больше
< Меньше
>= Больше или равно
<= Меньше или равно

Дополнительно можно использовать условия BITWEEN и LIKE для сравнения с условием WHERE, а так же комбинации операторов AND и OR.
SELECT * FROM table_name WHERE ((Age >= 18) AND (LastName BETWEEN ‘Иванов’ AND ‘Сидоров’)) OR Company LIKE ‘%Motorola%’;

Что в переводе на русский язык означает: выбрать все столбцы из таблицы table_name, где значение столбца age больше или равно 18, а также значение столбца LastName находится в алфавитном промежутке от Иванов до Сидоров включительно, или же значением столбца Company является Motorola.

Использование запроса INSERT для вставки новых данных

Запрос INSERT используется для создания новой строки данных. Для обновления уже существующих данных или пустых полей строки нужно использовать запрос UPDATE.

Примерный синтаксис запроса INSERT:
INSERT INTO table_name (column1, column2, column3) VALUES (‘data1’, ‘data2’, ‘data3’);

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

Изменяется уже существующая информация в базе данных очень похожим образом.

Запрос UPDATE и условие WHERE

UPDATE используется для того, чтобы изменить существующие значения или освободить поле в строке, поэтому новые значения должны соответствовать существующему типу данных и обеспечивать приемлемые значения. Если вы не хотите изменить значения во всех строках, то нужно использовать условие WHERE.
UPDATE table_name SET column1 = ‘data1’, column2 = ‘data2’ WHERE column3 = ‘data3’;

Вы можете использовать WHERE для любого столбца, включая тот, который хотите изменить. Это используется когда необходимо заменить одно определенное значение на другое.
UPDATE table_name SET FirstName = ‘Василий’ WHERE FirstName = ‘Василий’ AND LastName = ‘Пупкин’;

Будьте осторожны! Запрос DELETE удаляет целые строки

Запрос DELETE полность удаляет строку из базы данных. Если вы хотите удалить одно единственное поле, то нужно использовать запрос UPDATE и установить для этого поля значение, которое будет являться аналогом NULL в вашей программе. Будьте внимательны, и ограничивайте ваш запрос DELETE условием WHERE, иначе вы можете потерять все содержимое таблицы.
DELETE FROM table_name WHERE column1 = ‘data1’;

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

Теперь вы знаете основы SQL запросов

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