Часть 3.6: Первая нормальная форма (1NF)
Здравствуйте, уважаемые посетители сайта ZametkiNaPolyah.ru. Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3.…
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. Первая часть у нас будет вводной и мы поговорим о том, как сделать простую выборку данных в базе данных под управлением SQLite. Эта запись поможет разобраться вам с тем, как работает механизм выборки данных в SQL и реляционных базах данных.
В этой записи мы познакомимся с простыми примерами выборки данных из базы данных, но сначала мы дадим краткую характеристику команды SELECT. Так же данная запись познакомит вас с использование псевдонимов: мы можем давать столбцам и результирующей таблице имена, отличные от тех, что хранятся в базе данных, это и называется псевдоним.
Содержание статьи:
Ранее мы уже рассматривали синтаксис команды SELECT, которая относится к командам группы манипуляции данными, теперь давайте немного повторим пройденное и поговорим про SQL запрос SELECT. Мы поговорим о том, как сделать простую выборку данных из базы данных под управлением SQLite3.
Выборка данных в любой реляционной СУБД реализуется при помощи команды SELECT, пожалуй, выборка данных – это одна из самых важных и сложных функций в базах данных. Но, стоит сказать, что на первый взгляд синтаксис выборки данных довольно сложный, а SQL предложения довольно объемные, однако ничего хитрого в том, чтобы сделать выборку данных из базы данных нет.
Главное, нужно понимать в какой последовательности использовать ключевые слова в запросе на выборку и какого результата ждать от того или иного ключевого слова. Наши примеры будут усложняться в каждой последующей части. Сейчас мы разберем самые простые примеры выборки данных из базы данных без использования различных клаузул и предикатов (уточняющих фраз), которые нужны чтобы задать условия на выборку данных, отфильтровать данные выборке, отсортировать значения при выборке.
Чтобы успешно делать выборку данных нужно понимать, что SQL запрос, использующий команду SELECT всегда возвращает данные в виде таблицы, что бы вы не делали, какой бы сложные запрос ни был, SQLite, как и другие РСУБД, всегда будет возвращать таблицу. Это главное правило, которое нужно помнить.
Так же стоит помнить последовательность ключевых слов при выборке данных:
Если вы будете помнить о последовательности ключевых слов и о том, что при выборке данных всегда возвращается таблица, то никаких проблем не будет.
Давайте посмотрим пару простых примеров выборки данных из таблиц баз данных под управлением SQLite. Начнем действительно с самого простого: выборку данных не обязательно делать из таблицы, вместо всего, что указано выше можно написать математическое выражение, SQLite его посчитает и вернет в виде таблицы:
[php]
SELECT 20+15;
20+15
35
SELECT 12*674554;
12*674554
8094648
[/php]
Обратите внимание: мы не делали выборку данных из таблицы мы просто передавали команде SELECT математическое выражение, которое можно даже усложнить скобками:
[php]
SELECT (1+2)*3;
(1+2)*3
9
[/php]
Но всё равно, в итоге мы получаем таблицу с одним столбцом, имя которого – это математическое выражение, а значение в столбце – это результат вычислений. Команде SELECT можно передать и простую строку, в ответ мы получим тоже таблицу:
[php]
SELECT «Hello, World!»;
«Hello, World!»
Hello, World!
[/php]
Это хорошие примеры, которые позволяют действительно понять, что когда мы делаем выборку данных в результате мы получаем таблицу, но давайте сделаем что-нибудь более сложное. Создадим таблицу в базе данных, воспользовавшись командой CREATE:
[php]
CREATE TABLE table1 (a, b, c, d);
[/php]
Мы сейчас создали простую таблицу с четырьмя столбцами, в которой нет ни ограничений уровня столбца, ни ограничений уровня таблицы, нам они сейчас не очень-то нужны, поскольку мы рассматриваем выборку данных из базы данных. Хотя некоторые могут возразить, что ключ или ключевой атрибут, это не только ограничение первичного ключа, но и индекс в базе данных, который необходим для ускорения выборки данных, на что мы можем сказать, что SQLite сама строит индексный столбец ROWID для любой таблицы.
Давайте теперь добавим строки в таблицу базы данных, для этого у нас есть команда INSERT:
[php]
INSERT INTO table1 (a, b, c, d)
VALUES (1, 2, 3, 4);
INSERT INTO table1 (a, b, c, d)
VALUES (5, 6, 7, 8);
INSERT INTO table1 (a, b, c, d)
VALUES (9, 10, 11, 12);
[/php]
Давайте сделаем выборку данных из таблицы table1, получим значение из всех столбцов в нашей таблице, для этого у нас есть две возможности: перечислить имена всех столбцов или использовать символ «*»:
[php]
SELECT * FROM table1;
a b c d
1 2 3 4
5 6 7 8
9 10 11 12
SELECT a, b, c, d FROM table1;
abcd
1 2 3 4
5 6 7 8
9 10 11 12
[/php]
Результаты выборки данных идентичны, но бывают ситуации когда нам не нужно получать данные из всех столбцов, поэтому мы можем указать только те столбцы, значения которых мы хотим получить:
[php]
SELECT a, b, c FROM table1;
a b c
1 2 3
5 6 7
9 10 11
SELECT a, b FROM table1;
a b
1 2
5 6
9 10
SELECT a FROM table1;
a
1
5
9
[/php]
Мы видим, что SQLite3 во всех трех случаях реализовала разную выборку данных и вернула разные таблицы.
Когда мы делаем выборку данных из базы данных, то иногда бывает полезным использовать псевдонимы в качестве имен столбцов и имен таблиц, из которых делается выборка. Псевдонимы можно задать при помощи ключевого слово AS, когда мы пишем команду SELECT, давайте посмотрим простые примеры:
[php]
SELECT 1+1 AS result;
result
2
SELECT (5+2)*12 AS expr;
expr
84
[/php]
В качестве имен столбцов мы задали псевдонимы и теперь, вместо выражение у столбцов есть имена: result и expr. Но мы можем использовать ключевое слово AS с SELECT и тогда, когда мы делаем выборку данных из таблиц баз данных. Давайте посмотрим пример:
[php]
SELECT a AS perviy, b AS vtoroi, c AS tretiy, d AS chetvertiy FROM table1;
perviy vtoroi tretiy chetvertiy
1 2 3 4
5 6 7 8
9 10 11 12
[/php]
Никто не запрещает использовать ключевое слово AS и SELECT, чтобы задать псевдоним для имени таблицы, когда мы делаем выборку, это бывает даже полезно в некоторых случаях:
[php]
SELECT a AS perviy, b AS vtoroi, c AS tretiy, d AS chetvertiy FROM table1 AS mytbl;
perviy vtoroi tretiy chetvertiy
1 2 3 4
5 6 7 8
9 10 11 12
[/php]
В общем и целом, мы разобрались с примерами простой выборки данных из таблиц баз данных, повторим, что ничего сложного и хитрого в этом нет.
Мы можем комбинировать команду SELECT с другими SQL запросами и командами. Отметим, что SELECT мы не сможем комбинировать с командами группы определения доступа к данным, так как их в SQLite3 нет. Так же можно не брать в расчет команды группы управления транзакциями, так как внутри транзакции мы можем использовать любые SQL запросы, в том числе и запросы на выборку данных. Остаются только команды определения данных:
И команды манипуляции данных:
Далее мы будем рассматривать более сложные примеры выборки данных из базы данных SQLite3.
Выберете удобный для себя способ, чтобы оставить комментарий