Оператор SELECT в SQL

В этой статье вы узнаете, как выбирать записи из таблиц базы данных с помощью конструкции SELECT FROM в SQL.

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

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

Синтаксис

Основной синтаксис для выбора данных из таблицы выглядит так:

SELECT имя_столбца1, имя_столбца2, имя_столбцаN FROM имя_таблицы;

имя_столбца1, имя_столбца2 и т.д. — это имена столбцов или полей таблицы базы данных, значения которых вы хотите получить.

Если вам нужно получить значения всех столбцов в таблице, используйте символ *:

SELECT * FROM имя_таблицы;

Символ * после SELECT указывает, что нужно вернуть все столбцы таблицы — в том порядке, в котором они находятся в исходной таблице.

Используем SELECT

Для практики будем использовать данные с сайта data.world.

У них есть статистика по приютам для животных в городе Остине (США) по состоянию на 7 декабря 2017 года. 

Для начала скачайте таблицу Austin_Animal_Center_Intakes.csv (Google Disc →) и установите ее в свою СУБД — с именем austin_animal_center_intakes.

Чтобы посмотреть все содержимое таблицы, воспользуемся SELECT *.

SELECT *
  FROM austin_animal_center_intakes

Вы увидете первые строки таблицы — вот они:

 

animal_id

name

datetime

monthyear

found_location

intake_type

intake_condition

animal_type

sex_upon_intake

age_upon_intake

breed

color

A006100

Scamp

2017-12-07T14:07:00

2017-12

Colony Creek And Hunters Trace in Austin (TX)

Stray

Normal

Dog

Neutered Male

10 years

Spinone Italiano Mix

Yellow/White

A006100

Scamp

2014-12-19T10:21:00

2014-12

8700 Research Blvd in Austin (TX)

Public Assist

Normal

Dog

Neutered Male

7 years

Spinone Italiano Mix

Yellow/White

A191351

Bri-Bri

2015-11-13T15:57:00

2015-11

1912 E William Cannon Rd in Austin (TX)

Stray

Normal

Cat

Intact Female

16 years

Domestic Longhair Mix

Black/White

A322813

Tyson

2015-03-05T14:49:00

2015-03

Austin (TX)

Public Assist

Normal

Dog

Neutered Male

11 years

Rottweiler Mix

Black/Brown

A553074

Jo Jo

2016-03-27T00:04:00

2016-03

3614 Bill Price in Travis (TX)

Public Assist

Normal

Dog

Spayed Female

7 years

Labrador Retriever/German Shepherd

Brown/Black

A672744

Oso

2014-02-17T17:10:00

2014-02

Travis (TX)

Owner Surrender

Normal

Dog

Intact Male

3 years

Rottweiler Mix

Black/Tan

A672744

Oso

2014-02-17T17:10:00

2014-02

Austin (TX)

Public Assist

Normal

Dog

Intact Male

3 years

Rottweiler Mix

Black/Tan

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

SELECT animal_type,
       sex_upon_intake,
       age_upon_intake,
       intake_condition
  FROM austin_animal_center_intakes

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

animal_type

sex_upon_intake

age_upon_intake

intake_condition

Dog

Neutered Male

10 years

Normal

Dog

Neutered Male

7 years

Normal

Cat

Intact Female

16 years

Normal

Dog

Neutered Male

11 years

Normal

Dog

Spayed Female

7 years

Normal

Dog

Intact Male

3 years

Normal

Dog

Intact Male

3 years

Normal

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

Используем SELECT AS

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

Короче: AS позволяет переименовывать столбцы.

Давайте попробуем переименовать все столбцы из прошлого запроса.

SELECT animal_type AS Animal,
       sex_upon_intake AS Sex,
       age_upon_intake AS Age,
       intake_condition AS Condition 
FROM austin_animal_center_intakes 

Теперь таблица стала более читабельной и понятной. Вот первые несколько строк результата: 

Type

Sex

Age

Condition

Dog

Neutered Male

10 years

Normal

Dog

Neutered Male

7 years

Normal

Cat

Intact Female

16 years

Normal

Dog

Neutered Male

11 years

Normal

Dog

Spayed Female

7 years

Normal

Dog

Intact Male

3 years

Normal

Dog

Intact Male

3 years

Normal

Примечание. Если вы используете AS с нечисловыми значениями в новом имени столбца (например, пробелы), нужно заключить новое имяв обратные кавычками. Обратная кавычка (`) находится на клавиатуре на той же клавише, что и тильда (~). И это не одно и то же, что обычная одинарная кавычка. 

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

SELECT animal_type AS `animal type`,
       sex_upon_intake AS `sex upon intake`,
       age_upon_intake AS `age upon intake`,
       intake_condition AS `intake condition`
  FROM austin_animal_center_intakes

Результат:

animal type

sex upon intake

age upon intake

intake condition

Dog

Neutered Male

10 years

Normal

Dog

Neutered Male

7 years

Normal

Cat

Intact Female

16 years

Normal

Dog

Neutered Male

11 years

Normal

Dog

Spayed Female

7 years

Normal

Dog

Intact Male

3 years

Normal

Dog

Intact Male

3 years

Normal

Используем SELECT DISTINCT

Датасет, который мы используем в этой статье, очень большой. За почти три года, охватываемых набором данных, в Техасский центр для животных в Остине доставили 54 724 животных.

Если вы хотите узнать, какие виды животных были взяты в центр (все ли они были собаками и кошками, например), можно воспользоваться удобным модификатором для выражения SELECT под названием DISTINCT. DISTINCT используется с оператором SELECT и возвращает уникальные комбинации данных по всем столбцам из запроса.

Для нашей задачи — узнать, какие виды животных поступали в приют, — напишем такой SQL-запрос:

SELECT DISTINCT animal_type
  FROM austin_animal_center_intakes

Результат:

animal_type
Dog
Cat
Other
Bird
Livestock

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

SELECT DISTINCT animal_type,
       sex_upon_intake,
       age_upon_intake
  FROM austin_animal_center_intakes

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

animal_type sex_upon_intake age_upon_intake
Dog Neutered Male 10 years
Dog Neutered Male 7 years
Cat Intact Female 16 years
Dog Neutered Male 11 years
Dog Spayed Female 7 years
Dog Intact Male 3 years
Dog Spayed Female 2 years

 

codechick

СodeСhick.io - простой и эффективный способ изучения программирования.

2024 ©