Таблицы SQL

Запрос таблицы

Здравствуйте и вновь добро пожаловать на занятия по теме «SQL для маркетологов».

В этой лекции я познакомлю вас с основной структурой запроса.

Вот простейший случай запроса таблицы:

SELECT *

FROM user_actions;

SELECT со звёздочкой означает выбрать всё; FROM user_actions значит, что выбрать надо из таблицы user_actions.

Тут надо сделать три замечания. Во-первых, слова SELECT и FROM написаны большими буквами, но в действительности это вовсе необязательно, просто некоторым людям это облегчает понимание. Во-вторых, записи с новой строки или через пробел обрабатываются совершенно одинаково, поэтому безразлично, использую ли я пробел, запись с новой строки или через пять пустых строк. Но указанная выше запись является своего рода стандартом записи SQL-запросов. И в-третьих, все операторы SQL должны заканчиваться точкой с запятой, как в Java или С++.

Итак, попробуем проделать то же самое в командной строке:

select * from user_actions;

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

.header on

.mode column

select * from user_actions;

Рассмотрим теперь другой случай. Пусть мы хотим видеть только те строки, в которых в графе «Действие» (action) значится «Добавлено в корзину» (add to cart). Запрос тогда будет выглядеть так:

SELECT *

FROM user_actions

WHERE action = ’addtocart’;

Попробуем теперь проделать это в командной строке.

select * from user_actions where action = ‘addtocart’;

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

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

SELECT name, product

FROM user_actions

WHERE action = ’addtocart’;

И вновь попробуем сделать это в командной строке.

select name, product from user_actions where action = ‘addtocart’;

Теперь мы видим лишь имя и продукт.

Вы также можете указывать множественные условия. Для комбинации условий используются служебные слова AND (и) и OR (или), операторы сравнения =, !=, <, >, а также слова IS и IS NOT, которые обычно используются для проверки нулевого значения. Например:

SELECT *

FROM user_actions;

WHERE product = ‘Mango’ AND action = ’addtocart’;

 

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

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

CREATE TABLE table_name(

  column_name1 TYPE,

  column_name2 TYPE,

  …

);

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

Итак, каковы же типы данных в SQL? Они очень похожи на типы, встречающиеся в других языках программирования, таких как C++ и Java. Тип TEXT предназначен для строк, таких же, как использовавшиеся нами ранее. Для этой же цели можно использовать и тип VARCHAR, так как в SQLite он обрабатывается аналогично, но тип TEXT легче и короче при использовании. Тип INTEGER предназначен для целочисленных значений, тип REAL – для любых целочисленных или дробных значений, а тип BLOB – для хранения двоичных данных. Типы DATETIME/DATE/TIME технически рассматриваются как один из приведенных выше типов в зависимости от вводимых вами данных.

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

 

Изменение структуры таблицы

Одна из мощных особенностей реляционных баз данных заключается в том, что мы не зацикливаемся на одном и том же формате данных раз и навсегда. Предположим, мы хотим добавить новый столбец в уже существующую таблицу – скажем, время действия клиента «created_at». Конечно, мы не можем задним числом заполнить данную графу, если этих данных нет в ещё каком-нибудь месте, зато мы можем добавить новый столбец, содержащий время, и любые вставляемые или извлекаемые в будущем данные будут уже с новым столбцом.

Синтаксис этой операции таков:

ALTER TABLE название_таблицы ADD COLUMN название_столбца тип;

Например:

ALTER TABLE user_actions ADD COLUMN created_at DATETIME;

Попробуем запустить это в командной строке.

alter table user_actions add column created_at datetime;

Посмотрим на нашу таблицу, выбрав все данные:

select * from user_actions;

Мы видим, что создан новый столбец created_at, содержащий пустые значения.

Далее установим дату и время для всех строк с именем Джина (больше об обновлениях таблиц мы поговорим далее в курсе). Запишем:

update user_actions set created_at = datetime(‘’2016-01-01 00:00:00’’) where name = ‘Gina’;

select * from user_actions;

Взглянув на таблицу ещё раз, мы видим, что в строках с именем Джина появились дата и время.

Мы можем также дать запрос с использованием нового столбца:

select * from user_actions where created_at < datetime(‘’now’’);

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

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

Понравилась статья? Поделить с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: