Sql select as: Оператор SQL AS: синтаксис, примеры

Содержание

SQL-использование SELECT Alias в WHERE



Мне чертовски трудно заставить этот запрос работать. В принципе, мне нужно сделать заявление CASE, чтобы получить NickName человека, если он у него есть, в противном случае используйте его FirstName. Затем в операторе WHERE выполните оператор LIKE на этом вышеописанном операторе CASE.

Мне удалось заставить его работать, если я делаю только FirstName/NickName, но когда я добавляю другие столбцы, он перестает работать.

Вот что у меня есть

SELECT
    LastName
  , Company
  , Status
  , CASE
      WHEN NickName = '' THEN FirstName
      WHEN NickName IS NULL THEN FirstName
      ELSE NickName
    END AS FName
FROM database
WHERE
       Status = 'Active'
  AND  Company = '@Company'
  AND  FName + ' ' + LastName LIKE '%@search%'
  OR   LastName + ', ' + FName LIKE '%@search%'

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

Msg 207, Level 16, State 1, Line 14
Invalid column name 'FName'.
Msg 207, Level 16, State 1, Line 15
Invalid column name 'FName'.

Любая помощь очень ценится. Спасибо!

sql sql-server alias
Поделиться Источник user3320324     16 января 2015 в 20:28

3 ответа


  • Как использовать "ALIAS" в "WHERE" в MYSQL

    Я не собираюсь использовать ALIAS в WHERE MYSQL, в коде ниже мне нужно сделать что-то вроде: AND ( custo_percapita_regiao + comissao_representante ) < consig . valor_pago_comissao_representante ========================== код =========================== SELECT `consig`.`id`,...

  • Как обновить столбцы ALIAS в SQL Server

    У меня есть запрос, как показано ниже : select <few column names>, 0.0 as 'first alias column name', 0.0 as 'second alias column name' into ##tempTable from (one query UNION second query) where <some conditions> Теперь позже я должен обновить этот ##tempTables ' s эти 2 ALIAS столбцов....



2

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

SELECT *
FROM (
  SELECT
    LastName
    , Company
    , Status
    , CASE
        WHEN NickName IS NULL OR NickName = '' THEN FirstName
        ELSE NickName
      END AS FName
  FROM database
  WHERE Status = 'Active'
  AND  Company = '@Company'
) FNames
WHERE FName + ' ' + LastName LIKE '%@search%'
   OR LastName + ', ' + FName LIKE '%@search%'

Поделиться Daniel Gimenez     16 января 2015 в 20:34



1

Вы можете сделать это без оператора CASE

SELECT *
FROM (
    SELECT
        LastName
      , Company
      , Status
      , ISNULL(NULLIF(NickName, ''), FirstName) AS FName
    FROM database
    WHERE Status = 'Active'
      AND Company = '@Company') data
WHERE (FName + ' ' + LastName LIKE '%' + @search + '%')
   OR (LastName + ', ' + FName LIKE '%' + @search + '%')

Поделиться

Spock     17 января 2015 в 06:40



1

Используйте CROSS APPLY для создания псевдонима

SELECT LastName
     , Company
     , Status
     , FName
FROM database
     CROSS APPLY (
         SELECT CASE WHEN NickName = '' THEN FirstName
                     WHEN NickName IS NULL THEN FirstName
                     ELSE NickName
                END AS FName
     ) AS CA1
WHERE Status = 'Active'
      AND  Company = '@Company'
      AND  FName + ' ' + LastName LIKE '%@search%'
      OR   LastName + ', ' + FName LIKE '%@search%'

Поделиться adrianm     16 января 2015 в 21:34


  • Использование оператора SQL alias в запросе SELECT

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

  • Cakephp 3: Использование "$this->alias()" в условиях "where"

    Чтобы избежать ошибки Column 'xxx' in where clause is ambiguous при выполнении запросов, связанных с несколькими таблицами, имеющими одно и то же имя для данного столбца, я теперь систематически включаю $this->alias() в условия where, например : $table->find()->where([$table->alias() ....


Похожие вопросы:


Использование alias() для 'select as' в SQLAlchemy

Допустим, у меня есть таблица 'shares' со следующими столбцами: company price quantity Microsoft 100 10 Google 99 5 Google 99 20 Google 101 15 Я хотел бы запустить эквивалент оператора SQL следующим...


SQL Select * Query where sum (col_name) < 500

Мне нужен SQL Query , который извлекает все записи из таблицы, где sum конкретного column не превышает 500. например : Существует dish table с dish_name, calorie_value, fat_value, protein_value в...


Использование LIMIT WHERE сразу в SELECT SQL

Возможный Дубликат : mysql_fetch_array() ожидает параметр 1, чтобы быть ресурсом, логический приведены в выберите У меня есть проблема с SELECT SQL, так как я включил LIMIT, поэтому мой код выглядит...


Как использовать "ALIAS" в "WHERE" в MYSQL

Я не собираюсь использовать ALIAS в WHERE MYSQL, в коде ниже мне нужно сделать что-то вроде: AND ( custo_percapita_regiao + comissao_representante ) < consig . valor_pago_comissao_representante...


Как обновить столбцы ALIAS в SQL Server

У меня есть запрос, как показано ниже : select <few column names>, 0.0 as 'first alias column name', 0.0 as 'second alias column name' into ##tempTable from (one query UNION second query)...


Использование оператора SQL alias в запросе SELECT

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


Cakephp 3: Использование "$this->alias()" в условиях "where"

Чтобы избежать ошибки Column 'xxx' in where clause is ambiguous при выполнении запросов, связанных с несколькими таблицами, имеющими одно и то же имя для данного столбца, я теперь систематически...


Несколько запросов select в операторе WHERE IN

У меня есть следующий запрос sql : SELECT `main_table`.* FROM `prd_brand` AS `main_table` INNER JOIN (SELECT DISTINCT value from catalog_product_entity_int where row_id in (select row_id from...


Как выразить это с помощью jOOQ " Select alias.*, otherAlias.Column From .."

Я пытаюсь использовать jOOQ для динамического построения запросов. До сих пор все шло действительно хорошо, но теперь я наткнулся на случай, который, кажется, не могу выразить. Это упрощенная версия...


Предложение WHERE в Embedded SELECT

У меня есть следующий запрос SQL: SELECT *, a calculation here FROM ( three different Selects in here, all UNIONed together ) foo Каков синтаксис добавления предложения WHERE к самому внешнему...

Оператор SELECT. Простой SQL-запрос, синтаксис, примеры

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

Чтобы выполнить простой запрос к базе данных достаточно указать всего 2 условия (предложения):

  • Какие столбцы необходимо выгрузить;
  • Из какой таблицы необходимо выгрузить столбцы.

На языке SQL это выглядит следующим образом:

SELECT <Перечень столбцов>
FROM <Перечень таблиц>

Имена столбцов перечисляются через запятую сразу после ключевого слова SELECT. Затем следует ключевой слово FROM с наименованиями таблиц. Если таблиц несколько, то они так же указываются через запятую.

Запросы к нескольким таблицам не рассматриваются в данном материале, так как это тема относится к соединению таблиц либо требует знания предложения WHERE.

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

Подключение к базе данных

На сервере часто присутствует более одной базы данных. Поэтому, прежде чем выполнить запрос, потребуется подключиться к конкретной базе. Научимся это делать в SQL Server Management Studio:

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

Создание SQL-запроса

Выполним первую задачу:

Необходимо получить Фамилии, Имена и Отчества всех сотрудников.

В поле запроса введите следующий SQL-код:

SELECT Фамилия, Имя, Отчество
FROM Сотрудники

Первая строка запроса содержит выгружаемые столбцы, вторая строка указывает таблицу столбцов. На самом деле, код напоминает обычное предложение: «Выбрать столбцы Фамилия, Имя, Отчество из таблицы Сотрудники».

Нажмите на кнопку «Выполнить» на панели редактора SQL. Внизу окна запроса должен появиться результат его выполнения. Под результатом отображается статус и продолжительность запроса, а также количество выгруженных строк. Если Вы все сделаете правильно, то статус будет сообщать «Запрос успешно выполнен», а количество строк равняться 39.

Пояснения синтаксиса

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

select ФаМиЛия, иМЯ, ОтчествО froM сотрудники

Также можно не начинать каждое условие с новой строки.

Рекомендуем писать запросы аккуратно, чтобы их было проще понимать и искать ошибки.

Иные варианты запроса

Перед написанием кода говорилось о необходимости подключения к БД. Но можно обойтись и без подключения в этом конкретном случае (в некоторых программах это обязательное требование). Достаточно в предложении FROM дополнительно указать имя базы данных и имя схемы (по умолчанию dbo):

SELECT Фамилия, Имя, Отчество
FROM CallCenter.dbo.Сотрудники

Теперь опишем синтаксис простой инструкции SELECT (необязательные части запроса взяты в квадратные скобки):

SELECT [Имя_таблицы.]Имя_столбца[, [Имя_таблицы.]Имя_столбца2 …]
FROM [[Имя_базы_данных.]Имя_Схемы.]Имя_таблицы

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

USE CallCenter

SELECT Фамилия, Имя, Отчество
FROM Сотрудники

Такой подход обеспечит подключение к нужной базе.

Многословные имена столбцов и таблиц могут содержать пробелы между словами. В таких случаях их имена заключаются в квадратные скобки, чтобы запрос сработал корректно. Например, [имя столбца].

  • < Назад
  • Вперёд >

Если материалы office-menu.ru Вам помогли, то поддержите, пожалуйста, проект, чтобы я мог развивать его дальше.

Добавить комментарий

Справочник SQL для выражений запросов, применяемых в ArcGIS—ArcGIS Pro

This topic describes the elements of common selection queries in ArcGIS. Выражения запросов в ArcGIS используют SQL.

Внимание:

Синтаксис SQL не работает при вычислении полей с помощью окна Калькулятора поля .

Часто используемые запросы: поиск строк

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

STATE_NAME = 'California'

Строки в выражениях чувствительны к регистру, кроме случаев работы в базах геоданных в Microsoft SQL Server. Чтобы выполнять не чувствительный к регистру поиск в других источниках данных, можно использовать функцию SQL для преобразования всех значений в один регистр. Для источников данных на основе файлов, таких как файловые базы геоданных или шейп-файлы, для задания регистра выборки можно использовать функции UPPER или LOWER. Например, при помощи следующего выражения выбирается штат, имя которого написано как 'Rhode Island' или 'RHODE ISLAND':

UPPER(STATE_NAME) = 'RHODE ISLAND'

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

NAME = 'Alfie''s Trough'

При помощи оператора LIKE (вместо оператора = ) строится поиск частей строк. Например, данное выражение выбирает Mississippi и Missouri среди названий штатов США:

STATE_NAME LIKE 'Miss%'

Символ процента (%) означает, что на этом месте может быть что угодно – один символ или сотня, или ни одного. Если вы хотите использовать групповой символ, обозначающий один любой символ, используйте символ подчёркивания (_). Следующий пример показывает выражение для выбора имен Catherine Smith и Katherine Smith:

OWNER_NAME LIKE '_atherine Smith'

Можно также использовать операторы больше (>), меньше (<), больше или равно (>=), меньше или равно (<=), не равно (<>) и BETWEEN, чтобы выбирать строковые значения на основании их сортировки. Например, этот запрос выбирает все города в покрытии, названия которых начинаются с букв от М до Z:

CITY_NAME >= 'M'

Строковые функции могут использоваться для форматирования строк. Например функция LEFT возвращает определенное количество символов начиная с левого края строки. Данный запрос возвращает все штаты, начинающиеся на букву A:

LEFT(STATE_NAME,1) = 'A'

Список поддерживаемых функций вы найдете в документации по своей СУБД.

Часто используемые выражения: поиск значений NULL

Вы можете использовать ключевое слово NULL, чтобы отбирать объекты и записи, содержащие пустые поля. Перед ключевым словом NULL всегда стоит IS или IS NOT. Например, чтобы найти города, для которых не была введена численность населения по данным переписи 1996 года, можно использовать следующее выражение:

POPULATION IS NULL

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

POPULATION96 IS NOT NULL

Часто используемые выражения: поиск чисел

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

Вы можете запрашивать цифровые значения, используя операторы равно (=), не равно (<>), больше (>), меньше (<), больше или равно (>=) и меньше или равно (<=), а также BETWEEN (между), например:

POPULATION >= 5000

Числовые функции можно использовать для форматирования чисел. Например функция ROUND округляет до заданного количества десятичных знаков данные в файловой базе геоданных:

ROUND(SQKM,0) = 500

Список поддерживаемых числовых функций см. в документации по СУБД.

Даты и время

Общие правила и часто используемые выражения

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

Поиск полей с датой требует внимания к синтаксису, необходимому для источника данных. Если вы создаете запрос в Конструкторе запросов в режиме Условие, правильный синтаксис будет сгенерирован автоматически. Ниже приведен пример запроса, который возвращает все записи после 1 января 2011, включительно, из файловой базы геоданных:

INCIDENT_DATE >= date '2011-01-01 00:00:00'

Даты хранятся в исходной базе данных относительно 30 декабря 1899 года, 00:00:00. Это действительно для всех источников данных, перечисленных здесь.

Цель этого подраздела – помочь вам в построении запросов по датам, но не по значениям времени. Когда со значением даты хранится не нулевое значение (например January 12, 1999, 04:00:00), то запрос по дате не возвратит данную запись, поскольку если вы задаете в запросе только дату для поля в формате дата – время, недостающие поля времени заполняются нулями, и выбраны будут только записи, время которых соответствует 12:00:00 полуночи.

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

  • Строка, отображаемая в SQL-запросе, может иметь только небольшое сходство со значением, показанным в таблице, особенно когда в нее входит время. Например время, введенное как 00:00:15, отображается в атрибутивной таблице как 12:00:15 AM с региональными настройками США, а сопоставимый синтаксис запроса Datefield = '1899-12-30 00:00:15'.
  • Атрибутивная таблица не имеет сведений об исходных данных, пока вы не сохраните изменения. Она сначала попытается отформатировать значения в соответствии с ее собственным форматом, затем, после сохранения изменений, она попытается подогнать получившиеся результаты в соответствии с базой данных. По этой причине, вы можете вводить время в шейп-файл, но обнаружите, что оно удаляется при сохранении ваших изменений. Поле будет содержать значение '1899-12-30', которое будет отображаться как 12:00:00 AM или эквивалентно, в зависимости от ваших региональных настроек.

Синтаксис даты-времени для многопользовательских баз геоданных

Oracle
Datefield = date 'yyyy-mm-dd'

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

Альтернативный формат при запросах к датам в Oracle следующий:

Datefield = TO_DATE('yyyy-mm-dd hh:mm:ss','YYYY-MM-DD Hh34:MI:SS')

Второй параметр 'YYYY-MM-DD Hh34:MI:SS' описывает используемый при запросах формат. Актуальный запрос выглядит так:

Datefield = TO_DATE('2003-01-08 14:35:00','YYYY-MM-DD Hh34:MI:SS')

Вы можете использовать более короткую версию:

TO_DATE('2003-11-18','YYYY-MM-DD')

И снова записи, где время не равно нулю, не будут возвращены.

SQL Server
Datefield = 'yyyy-mm-dd hh:mm:ss'

Часть запроса hh:mm:ss может быть опущена, когда в записях не установлено время.

Ниже приведен альтернативный формат:

Datefield = 'mm/dd/yyyy'
IBM Db2
Datefield = TO_DATE('yyyy-mm-dd hh:mm:ss','YYYY-MM-DD Hh34:MI:SS')

Часть запроса hh:mm:ss не может быть опущена, даже если время равно 00:00:00.

PostgreSQL
Datefield = TIMESTAMP 'YYYY-MM-DD Hh34:MI:SS'
Datefield = TIMESTAMP 'YYYY-MM-DD'

Вы должны указать полностью временную метку при использовании запросов типа "равно", в или не будет возвращено никаких записей. Вы можете успешно делать запросы со следующими выражениями, если запрашиваемая таблица содержит записи дат с точными временными метками (2007-05-29 00:00:00 или 2007-05-29 12:14:25):

select * from table where date = '2007-05-29 00:00:00';

или

select * from table where date = '2007-05-29 12:14:25';

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

select * from table where date < '2007-05-29';
select * from table where date < '2007-05-29 12:14:25';
Файловые базы геоданных, шейп-файлы, покрытия и прочие файловые источники данных
Datefield = date 'yyyy-mm-dd'

Файловые базы геоданных поддерживают использование времени в поле даты, поэтому его можно добавить в выражение:

Datefield = date 'yyyy-mm-dd hh:mm:ss'

Шейп-файлы и покрытия не поддерживают использование времени в поле даты.

SQL, используемый в файловой базе геоданных, базируется на стандарте SQL-92.

Известные ограничения

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

Запрос к датам левой части соединения будет выполнен успешно, если использовать ограниченную версию SQL, разработанную для файловых источников данных. Если вы не используете такой источник данных, можете перевести выражение для использования этого формата. Нужно обеспечить, чтобы выражение запроса включало поля из более чем одной присоединенной таблицы. Например, если соединены класс пространственных объектов и таблица (FC1 и Table1), и они поступают из многопользовательской базы геоданных, следующее выражение не будет выполнено или не вернет данные:

FC1.date = date #01/12/2001#
FC1.date = date '01/12/2001'

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

FC1.date = date '01/12/2001' and Table1.OBJECTID > 0

Так как запрос включает поля из обеих таблиц, будет использована ограниченная версия SQL. В этом выражении Table1.OBJECTID всегда > 0 для записей, которые сопоставлены в процессе создания соединения, поэтому это выражение всегда верно для всех строк, содержащих сопоставления соединения.

Чтобы быть уверенным, что каждая запись с FC1.date = date '01/12/2001' выбрана, используйте следующий запрос:

FC1.date = date '01/12/2001' and (Table1.OBJECTID IS NOT NULL OR Table1.OBJECTID IS NULL)

Такой запрос будет выбирать все записи с FC1.date = date '01/12/2001', независимо от того, есть ли сопоставление при соединении для каждой отдельной записи.

Комбинированные выражения

Составные запросы могут комбинироваться путем соединения выражений операторами AND (И) и OR (ИЛИ). Вот пример запроса для выборки всех домов с общей площадью более 1500 квадратных футов и гаражом более чем на три машины:

AREA > 1500 AND GARAGE > 3

Когда вы используете оператор OR (ИЛИ), по крайней мере одно из двух разделенных оператором выражений, должно быть верно для выбираемой записи, например:

RAINFALL < 20 OR SLOPE > 35

Используйте оператор NOT (НЕ) в начале выражения, чтобы найти объекты или записи, не соответствующие условию выражения, например:

NOT STATE_NAME = 'Colorado'

Оператор NOT можно комбинировать с AND и OR. Вот пример запроса, который выбирает все штаты Новой Англии за исключением штата Maine:

SUB_REGION = 'New England' AND NOT STATE_NAME = 'Maine'

Вычисления

Вычисления можно включить в запросы с помощью математических операторов +, –, * и /. Можно использовать вычисление между полем и числом, например:

AREA >= PERIMETER * 100

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

POP1990 / AREA <= 25

Приоритет выражения в скобках

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

HOUSEHOLDS > MALES * (POP90_SQMI + AREA)

Вы можете добавить скобки в режиме Редактирование SQL вручную, или использовать команды Группировать и Разгруппировать в режиме Условие, чтобы добавить или удалить их.

Подзапросы

Подзапрос – это запрос, вложенный в другой запрос и поддерживаемый только в базах геоданных. Подзапросы могут использоваться в SQL-выражении для применения предикативных или агрегирующих функций, или для сравнения данных со значениями, хранящимися в другой таблице и т.п. Это может быть сделано с помощью ключевых слов IN или ANY. Например этот запрос выбирает только те страны, которых нет в таблице indep_countries:

COUNTRY_NAME NOT IN (SELECT COUNTRY_NAME FROM indep_countries)

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

Этот запрос возвращает объекты, где GDP2006 больше, чем GDP2005 любых объектов, содержащихся в countries (странах):

GDP2006 > (SELECT MAX(GDP2005) FROM countries)

Поддержка подзапросов в файловых базах геоданных ограничена следующим:

Операторы

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

Арифметические операторы

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

ОператорОписание

*

Арифметический оператор умножения

/

Арифметический оператор деления

+

Арифметический оператор сложения

Арифметический оператор вычитания

Арифметические операторы

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

Операторы сравнения используются для сравнения одного выражения с другим.

ОператорОписание

<

Меньше . Может использоваться со строками (сравнение основывается на алфавитном порядке) и для числовых вычислений, а также дат.

<=

Меньше или равно. Может использоваться со строками (сравнение основывается на алфавитном порядке) и для числовых вычислений, а также дат.

<>

Не равно . Может использоваться со строками (сравнение основывается на алфавитном порядке) и для числовых вычислений, а также дат.

>

Больше . Может использоваться со строками (сравнение основывается на алфавитном порядке) и для числовых вычислений, а также дат.

>=

Больше или равно. Может использоваться со строками (сравнение основывается на алфавитном порядке) и для числовых вычислений, а также дат.

[NOT] BETWEEN x AND y

Выбирает запись, если она имеет значение, которое больше или равно x и меньше или равно y. Если перед ней стоит значение NOT, она выбирает запись, если та имеет значение вне указанного диапазона. Например это выражение выбирает все записи со значениями, которые больше или равны 1 и меньше или равны 10:

OBJECTID BETWEEN 1 AND 10

Вот эквивалент этого выражения:

OBJECTID >= 1 AND OBJECTID <= 10

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

[NOT] EXISTS

Возвращает TRUE (истинно), если подзапрос возвращает хотя бы одну запись; в противном случае возвращает FALSE (ложно). Например, данное выражение вернет TRUE, если поле OJBECTID содержит значение 50:

EXISTS (SELECT * FROM parcels WHERE OBJECTID = 50)

EXISTS поддерживается только в файловых и многопользовательских базах геоданных.

[NOT] IN

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

STATE_NAME IN ('Alabama', 'Alaska', 'California', 'Florida')

IS [NOT] NULL

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

x [NOT] LIKE y [ESCAPE 'escape-character']

Используйте оператор LIKE (вместо оператора = ) с групповыми символами, если хотите построить запрос по части строки. Символ процента (%) означает, что на этом месте может быть что угодно – один символ или сотня, или ни одного. Если вы хотите использовать групповой символ, обозначающий один любой символ, используйте символ подчёркивания (_). Если вам нужен доступ к несимвольным данным, используйте функцию CAST. Например, этот запрос возвращает числа, начинающиеся на 8, из целочисленного поля SCORE_INT:

CAST (SCORE_INT AS VARCHAR(10)) LIKE '8%'

Для включения символа (%) или (_) в вашу строку поиска, используйте ключевое слово ESCAPE для указания другого символа вместо escape, который в свою очередь обозначает настоящий знак процента или подчёркивания. Например данное выражение возвращает все строки, содержащие 10%, такие как 10% DISCOUNT или A10%:

AMOUNT LIKE '%10$%%' ESCAPE '$'
Операторы сравнения

Логические операторы

ОператорОписание

AND

Соединяет два условия и выбирает запись, в которой оба условия являются истинными. Например, выполнение следующего запроса выберет все дома с площадью более 1 500 квадратных футов и гаражом на две и более машины:

AREA > 1500 AND GARAGE > 2

OR

Соединяет два условия и выбирает запись, где истинно хотя бы одно условие. Например выполнение следующего запроса выберет все дома с площадью более 1,500 квадратных футов или гаражом на две и более машины:

AREA > 1500 OR GARAGE > 2

NOT

Выбирает записи, не соответствующие указанному выражению. Например это выражение выберет все штаты, кроме Калифорнии (California):

NOT STATE_NAME = 'California'
Логические операторы

Операторы строковой операции

Оператор Описание
||

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

FIRST_NAME || MIDDLE_NAME || LAST_NAME

Функции

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

Функции дат

ФункцияОписание

CURRENT_DATE

Возвращает текущую дату.

EXTRACT(extract_field FROM extract_source)

Возвращает фрагмент extract_field из extract_source. Аргумент extract_source является выражением даты–времени. Аргументом extract_field может быть одно из следующих ключевых слов: YEAR, MONTH, DAY, HOUR, MINUTE или SECOND.

CURRENT TIME

Возвращает текущую дату.

Функции дат

Строковые функции

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

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

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

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

ФункцияОписание

CHAR_LENGTH(string_exp)

Возвращает длину строкового выражения в символах.

LOWER(string_exp)

Возвращает строку, идентичную string_exp, в которой все символы верхнего регистра изменены на символы нижнего регистра.

POSITION(character_exp IN character_exp)

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

SUBSTRING(string_exp FROM start FOR length)

Возвращает символьную строку, извлекаемую из string_exp, начинающуюся с символа, положение которого определяется символами start и length .

TRIM(BOTH | LEADING | TRAILING trim_character FROM string_exp)

Возвращает string_exp, укороченную на количество символов, указанное в аргументе trim_character, с начала, с конца или с обоих концов строки.

UPPER(string_exp)

Возвращает строку, идентичную string_exp, в которой все символы нижнего регистра изменены на символы верхнего регистра.

Строковые функции

Числовые функции

Все числовые функции возвращают числовые значения.

Аргументы, обозначенные numeric_exp, float_exp или integer_exp могут быть именем столбца, результатом другой скалярной функции или числовой константой, где исходные данные могут быть представлены числовым типом.

ФункцияОписание

ABS(numeric_exp)

Возвращает абсолютное значение numeric_exp.

ACOS(float_exp)

Возвращает угол в радианах, равный арккосинусу float_exp.

ASIN(float_exp)

Возвращает угол в радианах, равный арксинусу float_exp.

ATAN(float_exp)

Возвращает угол в радианах, равный арктангенсу float_exp.

CEILING(numeric_exp)

Возвращает наименьшее целочисленное значение, большее или равное numeric_exp.

COS(float_exp)

Возвращает косинус float_exp, где float_exp - угол, выраженный в радианах.

FLOOR(numeric_exp)

Возвращает наибольшее целое значение, меньшее или равное numeric_exp.

LOG(float_exp)

Возвращает натуральный логарифм float_exp.

LOG10(float_exp)

Возвращает логарифм по основанию 10 float_exp.

MOD(integer_exp1, integer_exp2)

Возвращает результат деления integer_exp1 на integer_exp2.

POWER(numeric_exp, integer_exp)

Возвращает значение numeric_exp в степени integer_exp.

ROUND(numeric_exp, integer_exp)

Возвращает numeric_exp, округленное до integer_exp знаков справа от десятичной точки. Если integer_exp отрицательное, numeric_exp округляется до |integer_exp| знаков слева от десятичной запятой.

SIGN(numeric_exp)

Возвращает указатель знака numeric_exp. Если numeric_exp меньше нуля, возвращается -1. Если numeric_exp равно нулю, возвращается 0. Если numeric_exp больше нуля, возвращается 1.

SIN(float_exp)

Возвращает синус float_exp, где float_exp - угол, выраженный в радианах.

TAN(float_exp)

Возвращает тангенс float_exp, где float_exp - угол, выраженный в радианах.

TRUNCATE(numeric_exp, integer_exp)

Возвращает numeric_exp, округленное до integer_exp знаков справа от десятичной точки. Если integer_exp отрицательное, numeric_exp округляется до |integer_exp| знаков слева от десятичной запятой.

Числовые функции

Функция CAST

Функция CAST конвертирует значение в определенный тип данных. Синтаксис выглядит так:

CAST(exp AS data_type [(length)])

Пример:

CAST (SCORE_INT AS VARCHAR(10))

Аргумент exp может быть названием столбца, результатом другой скалярной функции или буквенным. Data_type может быть любым из следующих ключевых слов, и задается строчными или заглавными буквами: CHAR, VARCHAR, INTEGER, SMALLINT, REAL, DOUBLE, DATE, TIME, DATETIME, NUMERIC или DECIMAL.

Более подробно о функции CAST см. CAST and CONVERT.

Связанные разделы

Отзыв по этому разделу?

Оператор SELECT с примерами в SQL

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

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

Общие сведения

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

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

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

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

SELECT имя_колонки_1, имя_колонки_2 
FROM имя_таблицы

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

Использование условия WHERE

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

Разберем небольшой пример на таблице salespeople, созданной ранее, но для начала напомним ее структуру.

snumsnamecitycomm
1КоловановМосква10
2ПетровТверь25
3ПлотниковМосква22
4КучеровСанкт-Петербург28
5МалкинСанкт-Петербург18
6ШипачевЧелябинск30
7МозякинОдинцово25
8ПроворовМосква25

Теперь для примера выведем информацию о тех продавцах, которые проживают в Москве. Это сделается таким запросом:

SELECT * FROM salespeople 
WHERE city = 'Москва'

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

snumsnamecitycomm
1КоловановМосква10
3ПлотниковМосква22
8ПроворовМосква25

Здесь, отлично видно, что мы выбрали все колонки для отображения. Теперь давайте выведем только имена продавцов, у которых комиссия составляет менее 20%. Следующий запрос сделает это:

SELECT sname, comm FROM salespeople 
WHERE comm < 20

И сразу же результат:

snamecomm
Колованов10
Малкин18

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

SELECT WHERE с несколькими условиями

Очевидно, что пока мы рассмотрели запросы с одиночным условием. Но также в языке SQL, в запросе SELECT возможно использовать несколько условий. Эти условия могут быть объединены с помощью булевых операторов: AND, OR, NOT.

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

SELECT * FROM salespeople 
WHERE (city = 'Москва' or city = 'Тверь') and comm = 25

Результат такого запроса:

snumsnamecitycomm
2ПетровТверь25
8ПроворовМосква25

Стоит отметить, что правила булевой алгебры здесь работают точно так же, как и всегда. Также важно сказать, что такой запрос можно упростить использовав ключевое слово языка SQL — IN. Тогда запрос SELECT может принять вид:

SELECT * FROM salespeople 
WHERE city IN ('Москва', 'Тверь') and comm = 25

Всегда важно оптимизировать свои запросы.

Ключевое слово DISTINCT

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

SELECT city FROM salespeople

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

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

SELECT DISTINCT city FROM salespeople

Результат:

city
Москва
Тверь
Санкт-Петербург
Челябинск
Одинцово

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

Примеры на SELECT SQL

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

1. Напишите команду SELECT, которая бы вывела номер Заказа, сумму, и дату для всех строк из таблицы Заказов.

SELECT onum, amt, odate FROM orders

2. Напишите запрос, который вывел бы все строки из таблицы Заказчиков, для которых номер продавца = 1.

SELECT * FROM customers WHERE snum = 1

3. Напишите команду SELECT, которая вывела бы оценку (rating), сопровождаемую именем каждого заказчика в Москве.

SELECT rating, cname FROM customers WHERE city = 'Москва'

4. Напишите запрос, который может выдать вам все заказы со значениями суммы выше 1000.

SELECT * FROM orders WHERE amt > 1000

5. Напишите запрос, который может выдать вам поля sname и city для всех продавцов в Москве с комиссионными выше 10%.

SELECT sname, city FROM salespeople WHERE comm > 10

6. Напишите запрос к таблице Заказчиков, чей вывод включит всех заказчиков с оценкой =

SELECT * FROM customers 
WHERE rating <= 100 AND
      city != 'Тула'

Заключение

В заключении этой статьи скажем, что мы изучили основные конструкции для оператора SELECT SQL. Также познакомились с ключевыми словами WHERE и DISTINCT, которые часто используются в практике. На этом сегодня все, если у вас возникли вопросы или пожелания, то оставляйте их в комментариях.

Поделиться ссылкой:

Похожее

Оператор SQL SELECT - CoderLessons.com

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

Реляционная база данных реализуется с использованием системы управления реляционными базами данных (RDBMS). СУБД выполняет все основные функции программного обеспечения СУБД, упомянутые выше, наряду с множеством других функций, которые облегчают понимание и реализацию реляционной модели. Пользователи СУБД манипулируют данными с помощью специального языка манипулирования данными. Структуры базы данных определяются с помощью языка определения данных. Команды, которые системные пользователи выполняют для хранения и извлечения данных, могут быть введены в терминале с интерфейсом СУБД путем ввода команд или введены с использованием графического интерфейса некоторого типа. Затем СУБД обрабатывает команды.

Возможности оператора SELECT

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

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

  • Выбор: операция выбора выбирает подмножество строк (записей) в таблице (отношение), которые удовлетворяют условию выбора. Возможность выбора строк из полного набора результатов называется «Выбор». Это включает в себя условную фильтрацию и размещение данных. Подмножество может варьироваться от ни одной строки, если ни одна из строк не удовлетворяет условию выбора, до всех строк в таблице.

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

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

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

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

Рассмотрим приведенные выше структуры таблиц. Из таблицы EMPLOYEES выбирается имя, имя_подразделения и зарплата для одного сотрудника. Извлечение сведений о сотруднике, чья зарплата составляет менее 5000, из таблицы EMPLOYEES — Выбор. Выбор сотрудника по имени, названию отдела путем присоединения к СОТРУДНИКАМ и ОТДЕЛЕНИЯМ — Присоединение.

Базовый оператор SELECT

Основной синтаксис для оператора SELECT представлен ниже.

SELECT  [DISTINCT | ALL] {* | select_list}
FROM {table_name [alias] | view_name} 
    [{table_name [alias]  | view_name}]...  
[WHERE  condition]
[GROUP BY  condition_list]
[HAVING  condition]
[ORDER BY  {column_name | column_#  [ ASC | DESC ] } ...

Предложение SELECT является обязательным и выполняет операцию реляционного проекта.

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

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

Предложение GROUP BY не является обязательным. Он организует данные в группы по одному или нескольким именам столбцов, перечисленным в предложении SELECT.

Необязательное предложение HAVING устанавливает условия относительно того, какие группы включать в таблицу результатов. Группы определяются предложением GROUP BY.

Предложение ORDER BY не является обязательным. Он сортирует результаты запроса по одному или нескольким столбцам в порядке возрастания или убывания.

Арифметические выражения и значения NULL в инструкции SELECT

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

SELECT employee_id, sal * 12 ANNUAL_SAL
FROM employees;

Приведенный выше запрос содержит арифметическое выражение (sal * 12) для расчета годовой зарплаты каждого сотрудника.

Арифметические операторы

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

  • Умножение и деление происходят до сложения и вычитания.

  • Операторы с одинаковым приоритетом оцениваются слева направо.

  • Используйте паретезы, чтобы переопределить поведение операторов по умолчанию.

Умножение и деление происходят до сложения и вычитания.

Операторы с одинаковым приоритетом оцениваются слева направо.

Используйте паретезы, чтобы переопределить поведение операторов по умолчанию.

Ниже в таблице приведены приоритеты операторов в таких случаях. Операция Символ оператора уровня приоритета

Description   Operator	Precedence	   
Addition	+	Lowest	   
Subtraction	-	Lowest	   
Multiplication	*	Medium	   
Division	/	Medium	   
Brackets	( )	Highest	 

Изучите приведенные ниже запросы (а), (б) и (в)

  • SQL> SELECT 2*35 FROM DUAL;
  • SQL> SELECT salary + 1500 FROM employees;
  • SQL> SELECT first_name, salary, salary + (commission_pct* salary) FROM employees;

Запрос (а) умножает два числа, в то время как (б) показывает прибавку 1500 долларов к зарплате всех сотрудников. Запрос (c) показывает добавление комиссионного компонента к зарплате сотрудника. В соответствии с предыдущим, первая комиссия будет рассчитываться на зарплату, а затем добавляется к зарплате.

Колонка Псевдоним

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

SELECT price * 2 as DOUBLE_PRICE, price * 10 "Double Price"
FROM products;

DOUBLE_PRICE	Double Price
------------	------------
39.9			39.9
60			60
51.98			51.98

Операторы конкатенации

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

SQL> SELECT 'ORACLE'||' CERTIFICATION' FROM dual;

Приведенный выше запрос показывает объединение двух символьных литералов значений.

литералы

Любое жестко закодированное значение, которое не хранится в базе данных в предложении SELECT, известно как Literal. Это может быть число, символ или значение даты. Значения символов и даты должны быть заключены в кавычки. Рассмотрим приведенные ниже SQL-запросы. Примеры использования литералов разных типов данных в SQL-запросах.

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

SQL> SELECT 'ORACLE'||' CERTIFICATION' FROM DUAL

В приведенном ниже запросе используются символьные литералы для печати зарплаты сотрудника.

SQL> SELECT first_name ||'earns'|| salary||' as of '|||sysdate
FROM employees

Оператор цитаты

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

SELECT 	department_name|| ' Department' ||q'['s Manager Id: ]'|| manager_id
FROM departments;

НОЛЬ

Если столбец не имеет определенного значения, он считается равным NULL. Значение NULL обозначает неизвестный или недоступный. Это не ноль для числовых значений, не пробел для символьных значений.

Столбцы со значением NULL могут быть выбраны в запросе SELECT и могут быть частью арифметического выражения. Любое арифметическое выражение, использующее значения NULL, приводит к NULL. По этой причине столбцы со значением NULL должны обрабатываться по-разному, указывая их альтернативные значения с помощью функций Oracle, таких как NVL или NULLIF.

SQL> SELECT NULL + 1000 NUM 
FROM DUAL;

NUM
--------

DISTINCT Ключевое слово

Если ожидается, что данные будут иметь повторяющиеся результаты, используйте ключевое слово DISTINCT, чтобы устранить дубликаты и отобразить только уникальные результаты в выводе запроса. Только выбранные столбцы проверяются на дублирование, и строки будут логически исключены из результатов запроса. Следует отметить, что ключевое слово DISTINCT должно появляться сразу после предложения SELECT.

Простой запрос ниже демонстрирует использование DISTINCT для отображения уникальных идентификаторов отделов из таблицы EMPLOYEES.

SQL> SELECT DISTINCT DEPARTMENT_ID 
FROM employees;

DEPARTMENT_ID
---------------
10
20
30
40

Команда ОПИСАТЬ

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

Синтаксис:

DESC[RIBE] [SCHEMA].object name

Например,

DESC EMPLOYEE

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

Используйте возможности SQL для создания запросов в Excel и напрямую к таблицам Excel

Порой таблицы Excel постепенно разрастаются настолько, что с ними становится неудобно работать. Поиск дубликатов, группировка, сложная сортировка, объединение нескольких таблиц в одну, т.д. — превращаются в действительно трудоёмкие задачи. Теоретически эти задачи можно легко решить с помощью языка запросов SQL… если бы только можно было составлять запросы напрямую к данным Excel.

Инструмент XLTools «SQL запросы» расширяет Excel возможностями языка структурированных запросов:

  • Создание запросов SQL в интерфейсе Excel и напрямую к Excel таблицам

  • Автогенерация запросов SELECT и JOIN

  • Доступны JOIN, ORDER BY, DISTINCT, GROUP BY, SUM и другие операторы SQLite

  • Создание запросов в интуитивном редакторе с подстветкой синтаксиса

  • Обращение к любым таблицам Excel из дерева данных

Перед началом работы добавьте «Всплывающие часы» в Excel

«SQL запросы» – это один из 20+ инструментов в составе надстройки XLTools для Excel. Работает в Excel 2019, 2016, 2013, 2010, десктоп Office 365.

Скачать XLTools для Excel

– пробный период дает 14 дней полного доступа ко всем инструментам.

Как превратить данные Excel в реляционную базу данных и подготовить их к работе с SQL запросами

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

  1. Выделите диапазон данных На вкладке «Главная» нажмите Форматировать как таблицу Примените стиль таблицы.
  2. Выберите таблицу Откройте вкладку «Конструктор» Напечатайте имя таблицы.

    Напр., «КодТовара».

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

    Напр., «КодТовара», «ЦенаРозн», «ОбъемПродаж», т.д.

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

Как создать и выполнить запрос SQL SELECT к таблицам Excel

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

  1. Нажмите кнопку Выполнить SQL на вкладке XLTools Откроется окно редактора.
  2. В левой части окна находится дерево данных со всеми доступными таблицами Excel.

    Нажатием на узлы открываются/сворачиваются поля таблицы (столбцы).

  3. Выберите целые таблицы или конкретные поля.

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

    Внимание: редактор запросов SQL автоматически подсвечивает синтаксис.

  4. Укажите, куда необходимо поместить результат запроса: на новый или существующий лист.

  5. Нажмите «Выполнить» Готово!

Операторы Left Join, Order By, Group By, Distinct и другие SQLite команды в Excel

XLTools использует стандарт SQLite. Пользователи, владеющие языком SQLite, могут создавать самые разнообразные запросы:

  • LEFT JOIN – объединить две и более таблиц по общему ключевому столбцу

  • ORDER BY – сортировка данных в выдаче запроса

  • DISTINCT – удаление дубликатов из результата запроса

  • GROUP BY – группировка данных в выдаче запроса

  • SUM, COUNT, MIN, MAX, AVG и другие операторы

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

Как объединить две и более Excel таблиц с помощью надстройки «SQL запросы»

Вы можете объединить несколько таблиц Excel в одну, если у них есть общее ключевое поле. Предположим, вам нужно объединить несколько таблиц по общему столбцу «КодТовара»:

  1. Нажмите Выполнить SQL на вкладке XLTools Выберите поля, которые нужно включить в объединённую таблицу.

    По мере выбора полей, автоматически генерируется запрос SELECT и LEFT JOIN.

  2. Укажите, куда необходимо поместить результат запроса: на новый или существующий лист.

  3. Нажмите «Выполнить» Готово! Объединённая таблица появится в считанные секунды.

SQL - Синтаксис Alias (псевдоним)

Вы можете переименовать таблицу или столбец временно, давая другое имя, известное как alias (псевдоним). Использование таблицы псевдонимов для переименования таблицы в определенном заявлении SQL. Переименование является временное изменение и фактическое имя таблицы не изменяется в базе данных. В столбцах  псевдонимы используются для переименования столбцов таблицы для целей конкретного запроса SQL.

Синтаксис

Основной синтаксис псевдонима таблиц выглядит следующим образом.

SELECT column1, column2....
FROM table_name AS alias_name
WHERE [condition];

 

Основной синтаксис псевдонима столбца состоит в следующем.

SELECT column_name AS alias_name
FROM table_name
WHERE [condition];

Примеры

Рассмотрим следующие две таблицы.

Таблица 1 – Таблица CUSTOMERS выглядит следующим образом:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Maxim    |  35 | Moscow    | 21000.00 |
|  2 | AndreyEx |  38 | Krasnodar | 55500.00 |
|  3 | Oleg     |  33 | Rostov    | 34000.00 |
|  4 | Masha    |  35 | Moscow    | 34000.00 |
|  5 | Ruslan   |  34 | Omsk      | 45000.00 |
|  6 | Dima     |  32 | SP        |          |
|  7 | Roma     |  34 | SP        |          |
+----+----------+-----+-----------+----------+

 

Таблица 2 – Таблица ORDERS выглядит следующим образом:

+-----+---------------------+-------------+--------+
|OID  | DATE                | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2017-01-08 00:00:00 |           3 |  45500 |
| 100 | 2017-01-08 00:00:00 |           3 |  18000 |
| 101 | 2017-01-18 00:00:00 |           2 |  21500 |
| 103 | 2017-03-15 00:00:00 |           4 |  11000 |
+-----+---------------------+-------------+--------+

 

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

SQL> SELECT C.ID, C.NAME, C.AGE, O.AMOUNT 
   FROM CUSTOMERS AS C, ORDERS AS O
   WHERE  C.ID = O.CUSTOMER_ID;

 

Это произведет следующий результат.

+----+----------+-----+--------+
| ID | NAME     | AGE | AMOUNT |
+----+----------+-----+--------+
|  3 | Oleg     |  33 |  45500 |
|  3 | Oleg     |  33 |  18000 |
|  2 | AndreyEx |  38 |  21500 |
|  4 | Masha    |  35 |  11000 |
+----+----------+-----+--------+

 

Теперь используем псевдоним столбца.

SQL> SELECT  ID AS CUSTOMER_ID, NAME AS CUSTOMER_NAME
   FROM CUSTOMERS
   WHERE SALARY IS NOT NULL;

 

Это произведет следующий результат.

+-------------+---------------+
| CUSTOMER_ID | CUSTOMER_NAME |
+-------------+---------------+
|           1 | Maxim         |
|           2 | AndreyEx      |
|           3 | Oleg          |
|           4 | Masha         |
|           5 | Ruslan        |
|           6 | Dima          |
|           7 | Roma          |
+-------------+---------------+

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Обзор ключевых слов

SQL AS и примеры

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

Введение

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

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

Синтаксис:

ВЫБРАТЬ имя_столбца_1 AS псевдоним_имя_1,

имя_столбца_2 AS псевдоним_2,

имя_столбца_N AS псевдоним_n

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

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

Синтаксис:

ВЫБРАТЬ имя_столбца_1,

имя_столбца_2,

имя_столбца_N

FROM имя_таблицы AS псевдоним_таблицы;

или

SELECT имя_столбца_1 AS псевдоним_имя_1,

имя_столбца_2 AS псевдоним_2,

имя_столбца_N AS псевдоним_n

FROM имя_таблицы AS псевдоним_таблицы;

В частности, этот тип использования лучше всего подходит для запросов, содержащих предложения соединения.Теперь сделаем немного пример в свете этой информации.

Подготовка данных

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

1

2

3

4

5

6

7

8

9

10

11

12

13

140002

18

19

20

21

22

23

24

25

26

27

28

29

30

000

000 34

35

36

37

38

39

40

41

42

43

44

45

46

49

0002 47

00030002 47

0003

51

52

53

54

55

56

57

58

59

60

61

62

63

9 0002 64

65

66

67

68

69

70

71

72

73

74

75

76

77

81

82

83

84

85

86

87

88

89

90

91

92

93

000

93

000

000 97

98

99

100

101

102

103

104

105

106

107

108

109

1102

109

1102

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

13

136

137

1382 138

137

1382 138

142

143

144

145

146

147

СОЗДАТЬ ТАБЛИЦУ Customer_InformationListForSale

(ID INT

PRIMARY KEY,

CustomerInfList_FirstName VARCHAR (100),

CustomerInf_LastName VARCHAR (100),

_AgeCount2, VARCHAR (100),

_AgeCount2,

_AgeCount2 CustomerInf2)

CREATE TABLE OrderTransaction_InformationListForSale

(ID INT

ПЕРВИЧНЫЙ КЛЮЧ,

OrderTransaction_Date DATETIME,

Customer_InformationListForSale_CustID INT,

Amout ПОПЛАВКОВЫЕ,

FOREIGN KEY (Customer_InformationListForSale_CustID) СПРАВОЧНЫЙ Customer_InformationListForSale (ID)

);

INSERT INTO [Customer_InformationListForSale]

([ID],

[CustomerInfList_FirstName],

[CustomerInf_LastName],

[CustomerInf_Age],

ES

ES

ES

ES)

ES

ES

ES

ES N'Lawrence ',

N'Williams',

23,

N'Indonesia '

);

ВСТАВИТЬ В [Customer_InformationListForSale]

([ID],

[CustomerInfList_FirstName],

[CustomerInf_LastName],

[CustomerInf_Age],

ES

ES

ES

ES)

ES

ES N'Salvador ',

N'Smith',

56,

N'U.S.A. '

);

ВСТАВИТЬ В [Customer_InformationListForSale]

([ID],

[CustomerInfList_FirstName],

[CustomerInf_LastName],

[CustomerInf_Age],

ES

ES

ES

ES)

ES N'Ernest ',

N'Jones',

43,

N'China '

);

ВСТАВИТЬ В [Customer_InformationListForSale]

([ID],

[CustomerInfList_FirstName],

[CustomerInf_LastName],

[CustomerInf_Age],

ES

ES

ES

ES

ES)

ES N'Gilbert ',

N'Johnson',

56,

N'Brazil '

);

INSERT INTO [Customer_InformationListForSale]

([ID],

[CustomerInfList_FirstName],

[CustomerInf_LastName],

[CustomerInf_Age],

ES

ES

ES

ES)

ES

ES

ES N'Jorge ',

N'Brown',

56,

N'India '

);

ВСТАВИТЬ В [OrderTransaction_InformationListForSale]

([ID],

[OrderTransaction_Date],

[Customer_InformationListForSale_CustID],

(

000)

ES '

[Amout]

ES -Окт-1784 'КАК ДАТА),

1,

1903.12

);

ВСТАВИТЬ В [OrderTransaction_InformationListForSale]

([ID],

[OrderTransaction_Date],

[Customer_InformationListForSale_CustID],

[Amout]

ES '

ES

-1799 'КАК ДАТА ВРЕМЕНИ),

2,

345690.12

);

ВСТАВИТЬ В [OrderTransaction_InformationListForSale]

([ID],

[OrderTransaction_Date],

[Customer_InformationListForSale_CustID],

[Amout]

J,

S '

ES'

-1842 'КАК ДАТА ВРЕМЕНИ),

3,

123.90

);

ВСТАВИТЬ В [OrderTransaction_InformationListForSale]

([ID],

[OrderTransaction_Date],

[Customer_InformationListForSale_CustID],

[Amout]

Es

ES

ES

-1880 'КАК ДАТА ВРЕМЕНИ),

4,

8765

);

ВСТАВИТЬ В [OrderTransaction_InformationListForSale]

([ID],

[OrderTransaction_Date],

[Customer_InformationListForSale_CustID],

[Amout]

ES

ES

-1828 'КАК ДАТА ВРЕМЕНИ),

5,

17893.123

);

Назначение псевдонимов столбцам с помощью ключевого слова SQL AS

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

ВЫБРАТЬ CustomerInfList_FirstName

AS FirstName,

CustomerInf_LastName

AS LastName

FROM Customer_InformationListForSale

Наконечник:

В этом совете мы продемонстрируем предыдущий пример на SQL Fiddle. Сначала откроем ссылку и запрос на подготовку данных появится на панели схемы.Мы щелкнем по схеме сборки, чтобы создать таблицу и заполните данные.

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

После создания тестовых таблиц мы можем вставить запросы и выполнить их с помощью кнопки «Выполнить SQL».Набор результатов появится под страницей.

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

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

ВЫБРАТЬ CONCAT_WS ('', CustomerInfList_FirstName, CustomerInf_LastName)

ИЗ Customer_InformationListForSale

В этом случае мы можем использовать ключевое слово SQL AS, чтобы указать псевдоним для этого объединенного столбца.

ВЫБРАТЬ CONCAT_WS ('', CustomerInfList_FirstName, CustomerInf_LastName) AS First_LastName

FROM Customer_InformationListForSale

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

Результат большинства встроенных функций SQL не возвращает заголовков столбцов.Например, MIN, MAX, AVG, GETDATE, Функции ABS, SQRT, DATEADD и т. Д. Действуют следующим образом.

SELECT MAX (CustomerInf_Age),

AVG (CustomerInf_Age),

GETDATE ()

FROM Customer_InformationListForSale;

Теперь мы дадим псевдонимы заголовкам столбцов в следующем запросе.

SELECT MAX (CustomerInf_Age) AS CustomerMaximumAge,

AVG (CustomerInf_Age) AS CustomerAverageAge,

GETDATE () AS DateandTime

FROM Customer_InformationListForSale

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

SELECT MAX (CustomerInf_Age) AS «Максимальный возраст клиента»,

AVG (CustomerInf_Age) AS «Средний возраст клиента»,

GETDATE () AS «Дата и время»

FROM Customer_InformationListForSale

Назначение псевдонимов таблицам с помощью ключевого слова SQL AS

Когда мы намереваемся использовать таблицу в запросе более одного раза, мы можем сократить имя таблицы с помощью синтаксиса AS.в по следующему запросу мы предоставим псевдоним клиента для Customer_InformationListForSale и CustomerOrders псевдоним OrderTransaction_InformationListForSale.

ВЫБРАТЬ Customer.CustomerInfList_FirstName AS "Имя",

Customer.CustomerInf_LastName AS "Фамилия",

CustomerOrders.Amout AS "Сумма заказа"

FROM dbo.Customer_O0003000 9000 DBO.Customer_InformationListForSale 9000 .OrderTransaction_InformationListForSale

AS CustomerOrders

ON Customer.ID = CustomerOrders.Customer_InformationListForSale_CustID

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

Если мы не будем использовать псевдонимы, текст запроса будет иметь следующий вид.

ВЫБОР Customer_InformationListForSale.CustomerInfList_FirstName,

Customer_InformationListForSale.CustomerInf_LastName,

OrderTransaction_InformationListForSale.Amout ОТ dbo.Customer_InformationListForSale

внутреннее соединение

dbo.OrderTransaction_InformationListForSale ПО Customer_InformationListForSale.ID = OrderTransaction_InformationListForSale.Customer_InformationListForSale_CustID

Заключение

В этой статье мы изучили основы использования ключевого слова SQL AS, и, как видно из нашей демонстрации выше, оно дает следующие преимущества:

  • Улучшение читабельности запросов
  • Уменьшить сложность запроса
  • Избегайте повторного ввода длинных имен таблиц
  • Это позволяет нам давать более значимые заголовки столбцов.
Эсат Эркеч - специалист по SQL Server, который начал свою карьеру более 8 лет назад в качестве разработчика программного обеспечения.Он является сертифицированным экспертом по решениям Microsoft SQL Server.

Большую часть своей карьеры он посвятил администрированию и разработке баз данных SQL Server. В настоящее время он интересуется администрированием баз данных и бизнес-аналитикой. Вы можете найти его в LinkedIn.

Посмотреть все сообщения от Esat Erkec

Последние сообщения от Esat Erkec (посмотреть все)

Какова цель ключевого слова SQL "AS"?

На заре SQL он был выбран в качестве решения проблемы с дублированием имен столбцов (см. Примечание ниже).

Чтобы заимствовать запрос из другого ответа:

  ВЫБЕРИТЕ P.ProductName,
       P.ProductRetailPrice,
       О.Количество
  ИЗ ПРОДУКТОВ AS P
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ заказов КАК О НА O.ProductID = P.ProductID
 ГДЕ O.OrderID = 123456
  

Столбец ProductID (и, возможно, другие) является общим для обеих таблиц, и, поскольку синтаксис условия соединения требует ссылки на обе таблицы, «точечная квалификация» обеспечивает устранение неоднозначности.

Конечно, лучшим решением было вообще никогда не допускать дублирования имен столбцов! К счастью, если вы используете более новый синтаксис NATURAL JOIN , необходимость в переменных диапазона P и O отпадает:

  ВЫБЕРИТЕ ProductName, ProductRetailPrice, Quantity
  ОТ Продукты NATURAL JOIN Заказы
 ГДЕ OrderID = 123456
  

Но почему ключевое слово AS необязательно? Насколько я помню из личного обсуждения с членом комитета по стандартизации SQL (Джо Селко или Хью Дарвен), , по их воспоминаниям, было то, что во время определения стандарта продукт одного поставщика (Microsoft?) Требовал его включения и продукт другого производителя (Oracle?) требовал его исключения, поэтому был выбран компромисс, чтобы сделать его необязательным.У меня нет цитаты по этому поводу, вы мне либо верите, либо нет!


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

Источник: Business System 12, Примечания к слайдам презентации, представленной на семинаре разработчиков TTM, Университет Нортумбрии, 2-3 июня 2011 г. Хью Дарвеном

Подзапрос

SQL, IN SELECT - с примерами

Что такое подзапрос в SQL?

Подзапрос - это запрос SQL внутри запроса.
Это вложенные запросы, которые предоставляют данные для включающего запроса.

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

Синтаксис подзапроса SQL

Нет общего синтаксиса; подзапросы - это обычные запросы, помещенные в круглые скобки.
Подзапросы могут использоваться по-разному и в разных местах внутри запроса:

Вот подзапрос с оператором IN.

ВЫБЕРИТЕ имена столбцов
  ИЗ имя-таблицы1
 ГДЕ значение В (ВЫБРАТЬ имя-столбца
                   ИЗ имя-таблицы2
                  ГДЕ условие)
 

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

ВЫБРАТЬ столбец1 = (ВЫБРАТЬ имя-столбца ИЗ ГДЕ имя-таблицы),
       имена столбцов
  ОТ имя-таблицы
 WEHRE условие
 

ЗАКАЗАТЬ
Идентификатор
Идентификатор Заказа
Идентификатор продукта
Цена единицы
Количество
ПРОДУКТ
SupplierId
UnitPrice
Package
Is Снят с производства

Примеры подзапросов SQL

Задача: Перечислить продукты с заказом
количества больше 100.

ВЫБЕРИТЕ ProductName
  ОТ ПРОДУКТА
 ГДЕ Id IN (ВЫБЕРИТЕ ProductId
                ОТ OrderItem
               ГДЕ Количество> 100)
 

Результат: 12 записей.

Имя продукта
Guaraná Fantástica
Schoggi Schokolade
Шартрез Верте
Джек's New England Clam Chowder
Роджед Сильд
Манджимуп сушеные яблоки
Перт Пирожки

КЛИЕНТ
Идентификатор
Имя
Фамилия
Город
Страна
Телефон
ЗАКАЗ
OrderDate
OrderNumber
CustomerId
TotalAmount

Примеры подзапросов SQL

Проблема: Перечислить всех клиентов с
их общее количество заказов

ВЫБЕРИТЕ FirstName, LastName,
       OrderCount = (ВЫБРАТЬ СЧЕТЧИК (O.Идентификатор)
                       ОТ [Заказ] O
                      ГДЕ O.CustomerId = C.Id)
  ОТ клиента C
 

Это коррелированный подзапрос , потому что подзапрос ссылается на включающий запрос (т. Е. На C.Id в предложении WHERE).

Результат: 91 запись

Имя Фамилия Счетчик заказа
Мария Андерс 6
Ана Трухильо 4
Антонио Морено 7
Томас Харди 13
Кристина Berglund 18
Ханна Моос 7
Фредерик Citeaux 11
Мартин Sommer 3

Как использовать оператор SQL SELECT для запроса данных из одной таблицы

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

Введение в оператор SQL SELECT

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

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

Ниже показан основной синтаксис оператора SELECT , который извлекает данные из одной таблицы.

 

ВЫБРАТЬ select_list ИЗ table_name;

Язык кода: SQL (язык структурированных запросов) (sql)

В этом синтаксисе:

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

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

Точка с запятой (;) не является частью запроса. Он используется для разделения двух SQL-запросов. Ознакомьтесь с синтаксисом SQL для получения дополнительной информации.

Если вы хотите запросить данные из всех столбцов таблицы, вы можете использовать оператор звездочки (*), например:

 

SELECT * FROM table_name;

Обратите внимание, что в SQL регистр не учитывается. Это означает, что SELECT и выбирают ключевые слова одинаковы.

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

Помимо предложений SELECT и FROM , оператор SELECT может содержать множество других предложений, например

  • WHERE - для фильтрации данных на основе указанного условия.
  • ORDER BY - для сортировки результирующего набора.
  • LIMIT - для ограничения возвращаемых строк.
  • JOIN - для запроса данных из нескольких связанных таблиц.
  • GROUP BY - для группировки данных на основе одного или нескольких столбцов.
  • ИМЕЮ - для групп фильтрации.

Вы узнаете об этих пунктах в последующих руководствах.

Примеры операторов SQL SELECT

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

SQL SELECT - запрос данных из всех столбцов

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

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

 

SELECT * FROM employee;

Язык кода: SQL (язык структурированных запросов) (sql)

Посмотреть в действии

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

Использование оператора звездочки (*) удобно только для интерактивного запроса данных через клиентское приложение SQL.

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

Причина в том, что структура таблицы будет развиваться, чтобы адаптироваться к новым бизнес-требованиям, например, вы можете добавить новый столбец или удалить существующий столбец. Если вы используете звездочку (*) и не измените код приложения, чтобы он работал с новой структурой таблицы, приложение может работать некорректно.

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

SQL SELECT - запрос данных из определенных столбцов

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

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

 

SELECT employee_id, имя, Фамилия, Дата приема на работу ИЗ сотрудники;

Язык кода: SQL (язык структурированных запросов) (sql)

Посмотреть в действии

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

SQL SELECT - выполнение простых вычислений

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

Например, следующий запрос вычисляет год службы сотрудников на 1 января 2016 года с использованием функций FLOOR () , DATEDIFF () и CURRENT_DATE :

 

SELECT employee_id, имя, Фамилия, ЭТАЖ (DATEDIFF ('2016-01-01', rental_date) / 365) ЙоС ИЗ сотрудники;

Язык кода: SQL (язык структурированных запросов) (sql)

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

Функция CURRENT_DATE возвращает текущую дату и время. Функция DATEDIFF () возвращает разницу в днях между датой найма и текущей датой.

Чтобы вычислить год службы, мы делим результат функции DATEDIFF () на 365.

Функция FLOOR () возвращает наибольшее целое число, меньшее или равное результату числового выражения.

YoS - это псевдоним столбца для приведенного ниже выражения для отображения удобного заголовка в возвращенном наборе результатов.

 

FLOOR (DATEDIFF ('2016-01-01', rental_date) / 365)

Язык кода: SQL (язык структурированных запросов) (sql)

Обратите внимание, что этот запрос работает в MySQL. Если вы используете SQL Server, вы можете использовать следующий запрос:

 

SELECT employee_id, имя, Фамилия, РАЗНДАТ (год, дата найма; '2016-01-01') ИЗ сотрудники;

Язык кода: JavaScript (javascript)

Для SQLite используйте следующий запрос.Этот запрос также работает в SQL Online Tool.

 

ВЫБРАТЬ employee_id, имя, Фамилия, ЭТАЖ (julianday ('2016-01-01') - julianday (rental_date)) / 365 лет назад ИЗ сотрудники;

Язык кода: JavaScript (javascript)

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

Было ли это руководство полезным?

Access SQL: предложение SELECT - Access

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

Обзор Access SQL см. В статье Access SQL: основные понятия, словарь и синтаксис.

В этой статье

Поля выбора: предложение SELECT

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

Предположим, вы хотите узнать номера телефонов своих клиентов. Предполагая, что поле, в котором хранятся телефонные номера клиентов, называется txtCustPhone, предложение SELECT выглядит следующим образом:

ВЫБЕРИТЕ [txtCustomerPhone]

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

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

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

Выбрать все поля

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

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

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

ВЫБЕРИТЕ Заказы. *, Контакты. [Адрес электронной почты]

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

Выбрать отдельные значения

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

ВЫБЕРИТЕ DISTINCT [txtCustomerPhone]

Используйте замещающие имена для полей или выражений: ключевое слово AS

Вы можете изменить метку, отображаемую для любого поля в представлении таблицы, используя ключевое слово AS и псевдоним поля в предложении SELECT.Псевдоним поля - это имя, которое вы назначаете полю в запросе для облегчения чтения результатов. Например, если вы хотите выбрать данные из поля с именем txtCustPhone, и поле содержит телефонные номера клиентов, вы можете улучшить читаемость результатов, используя псевдоним поля в своем операторе SELECT, как показано ниже:

ВЫБЕРИТЕ [txtCustPhone] КАК [Телефон клиента]

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

Выбрать с помощью выражения

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

ВЫБЕРИТЕ DatePart ("гггг", [Дата рождения]) КАК [Год рождения]

Это выражение состоит из функции DatePart и двух аргументов - «yyyy» (константа) и [BirthDate] (идентификатор).

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

Верх страницы

Как запрашивать данные с помощью оператора SELECT в SQL Server

Оператор SELECT в SQL является наиболее часто используемым из операторов DML и используется для выборки данных из таблиц в SQL Server. Эта статья предназначена для администраторов баз данных и разработчиков, которые хотят познакомиться со всеми основными компонентами оператора SELECT и его сутью.

Введение в SELECT

Синтаксис оператора SELECT может быть довольно сложным, но давайте кратко рассмотрим некоторые из основных ключевых слов, используемых в операторе SELECT, а затем перейдем к SQL Server Management Studio, чтобы увидеть, как можно резюмировать основные предложения в код.

Оператор SELECT в SQL

Итак, SELECT просто начинает оператор, и за ним, вероятно, следует звездочка (*) AKA «splat». Это в основном означает получение всех столбцов из таблицы.Если есть несколько таблиц, из которых мы выбираем, звездочка выберет все столбцы из всех таблиц, например. при объединении двух и более таблиц.

Однако желательно НЕ выбирать все из таблиц. "Почему?" это отдельная тема. Скажем так, минусов гораздо больше, чем плюсов, которые можно найти в Интернете с помощью простого исследования. Поэтому старайтесь не выделять все, а используйте определенные имена столбцов с запятыми, которые вернут только столбцы в зависимости от того, что находится в списке.

Кроме того, очень часто, когда нет списка столбцов, у нас есть ключевое слово TOP, за которым следует число (n) после оператора SELECT в SQL, который возвращает первые (n) записи из таблицы. Обычно это используется с предложением ORDER BY, потому что, например, если мы хотим получить десятку лучших продаж по количеству, это могут быть большие числа. Итак, если мы оставим порядок сортировки по умолчанию, сначала мы получим маленькие числа. Однако, если мы скажем «упорядочить» по убыванию по количеству, мы получим десять лучших записей по количеству.Мы также используем DISTINCT в некоторых случаях после SELECT, что дает нам уникальные значения в списке выбора.

ИЗ

Часть FROM оператора SELECT в SQL просто используется для указания SQL Server, из какой таблицы следует выбирать данные. JOIN используется, когда мы хотим получить данные из нескольких таблиц. Есть три разных типа объединений:

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

ГДЕ

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

ГРУППА ПО

Предложение GROUP BY связано с агрегатами. Если мы хотим сделать что-то вроде SUM, AVERAGE, MIN, MAX и т. Д., Это все агрегатные функции, а GROUP BY позволяет нам объединять идентичные данные в группы.В дополнение к этому у нас также есть предложение HAVING, которое в значительной степени является предложением WHERE для групп. Это позволяет нам применять фильтры к группам.

Примеры

Выше приведен краткий обзор оператора SELECT в SQL. Давайте запустим SQL Server Management Studio и посмотрим, как мы можем использовать некоторые из этих вещей. Во всех следующих примерах используется образец базы данных AdventureWorks2012 .

Этот первый пример настолько прост, насколько он получает и возвращает все строки и столбцы с использованием (*) из таблицы Product :

 ВЫБРАТЬ *
ОТ ПРОИЗВОДСТВА.Продукт; 

Набор результатов заполняется всеми столбцами из таблицы Product . Список довольно длинный, всего 25 столбцов, которые можно увидеть при прокрутке вправо:

Чтобы выбрать определенные столбцы из таблицы, просто перечислите имена столбцов с запятыми:

 ВЫБРАТЬ Product.ProductID
,Наименование товара
, Product.ProductNumber
, Product.MakeFlag
, Product.FinishedGoodsFlag
ОТ ПРОИЗВОДСТВА.Продукт; 

На этот раз возвращается только подмножество столбцов:

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

 ВЫБРАТЬ Product.ProductID
,Наименование товара
, Product.ProductNumber
, Product.MakeFlag
, Product.FinishedGoodsFlag
ОТ ПРОИЗВОДСТВА.
ГДЕ Product.Name НРАВИТСЯ "Mountain%"; 

Обратите внимание, что мы используем оператор LIKE в предложении WHERE , и поэтому мы должны указать подстановочный знак.В этом примере ключевое слово LIKE говорит найти все, что начинается с «Гора», и после этого это может быть что угодно:

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

Перейдем к запросам данных с помощью объединений. Это позволяет нам объединять данные из двух или более таблиц в общих столбцах. Помните, что SQL Server выполняет INNER JOIN , если указано только ключевое слово JOIN .

Следующий запрос возвращает все названия продуктов и идентификаторы заказов на продажу из двух таблиц и объединяет их в общем столбце ProductID :

 ВЫБРАТЬ p.Name
, sod.SalesOrderID
ИЗ ПРОИЗВОДСТВА.
      ПРИСОЕДИНЯЙТЕСЬ к Sales.SalesOrderDetail sod НА p.ProductID = sod.ProductID; 

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

 ВЫБРАТЬ *
ОТ ПРОИЗВОДСТВА.Продукт p
      ПРИСОЕДИНЯЙТЕСЬ к Sales.SalesOrderDetail sod НА p.ProductID = sod.ProductID; 

Если мы хотим вернуть данные только из таблицы Product , добавьте «p». перед значком, как показано ниже:

 ВЫБРАТЬ стр. *
ИЗ ПРОИЗВОДСТВА.
    ПРИСОЕДИНЯЙТЕСЬ к Sales.SalesOrderDetail sod НА p.ProductID = sod.ProductID; 

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

Например, рассмотрите возможность синтаксического анализа следующего запроса и посмотрите, что произойдет:

 ВЫБРАТЬ ID продукта
,Имя
ИЗ ПРОИЗВОДСТВА.
    ПРИСОЕДИНЯЙТЕСЬ к Sales.SalesOrderDetail sod НА p.ProductID = sod.ProductID; 

В наборе результатов написано: «Команды выполнены успешно», так что все должно работать нормально, не так ли?

Не совсем так.Если мы запустим запрос, мы получим сообщение об ошибке «Неоднозначное имя столбца« ProductID »». как показано ниже, даже если синтаксис правильный:

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

 ВЫБРАТЬ стр.Идантификационный номер продукта ,
Имя
ИЗ ПРОИЗВОДСТВА.
    ПРИСОЕДИНЯЙТЕСЬ к Sales.SalesOrderDetail sod НА p.ProductID = sod.ProductID; 

Давайте продолжим и посмотрим на инструкцию SELECT в SQL, использующую левое внешнее соединение. Этот тип соединения извлекает все из левой таблицы и только те записи, которые совпадают в правой таблице:

 ВЫБРАТЬ p.Name
, sod.SalesOrderID
ИЗ ПРОИЗВОДСТВА.
    ВЛЕВО ПРИСОЕДИНЯЙТЕСЬ к Sales.SalesOrderDetail sod НА p.ProductID = sod.Идантификационный номер продукта
ЗАКАЗАТЬ ПО ИМЕНИ; 

В этом примере он объединяет две таблицы в столбце ProductID и извлекает каждый продукт, независимо от того, продается он или нет, и сохраняет несопоставленные строки из левой таблицы:

Действительно ли нам нужен пример для оператора SELECT в SQL с использованием правого внешнего соединения? Мы упоминали ранее, что это полная противоположность. Но все же давайте посмотрим на пример:

 ВЫБРАТЬ ул. Имя КАК Территория
, sp.BusinessEntityID
ОТ Продажи.ПродажаТерритория ул.
    ПРАВО ПРИСОЕДИНЯЙТЕСЬ к Sales.SalesPerson sp НА st.TerritoryID = sp.TerritoryID; 

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

Запрос данных с использованием стороннего расширения

Это известный факт, что никто не любит писать и читать кучу беспорядочного, неформатированного текста.Когда дело доходит до написания сложного кода SQL, эта проблема может стать еще более сложной. Для беспрепятственного выполнения запросов к данным и написания кода SQL требуются годы практики и опыта. К счастью, есть более простой способ запроса данных с помощью оператора SELECT в SQL Server.

В этом разделе мы рассмотрим сторонний инструмент, который поможет нам легко писать код SQL. Как часть набора инструментов ApexSQL Fundamentals Toolkit для SQL Server, расширение ApexSQL Complete для SSMS и VS - это хорошо известный инструмент повышения производительности, который ускоряет написание кода SQL за счет автоматического выполнения операторов SQL, заполнения фрагментов кода SQL и т. Д.

После установки полного расширения кода SQL на один или несколько хостов оно подавит встроенный Microsoft IntelliSense и возьмет на себя завершение кода. Хватит разговоров, давайте рассмотрим новый запрос и посмотрим, как он работает. Начните с простого оператора SELECT в SQL Server, к которому вы подключены. Как только начинается набор текста, завершенный интеллектуальный код SQL показывает список подсказок с контекстно-зависимыми подсказками:

Список подсказок предоставляет объекты (имя, тип, схема) на основе текущего содержимого запроса.Дважды щелкните или введите выделенный объект, и он будет вставлен, как показано ниже:

 ЕГЭ AdventureWorks2012
ИДТИ

ВЫБРАТЬ *
ИЗ ПРОИЗВОДСТВА. Товар p 

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

 ВЫБРАТЬ * ИЗ Production.ProductModelProductDescriptionCulture pmpdc 

Если вам не нужны псевдонимы, вы можете отключить их, перейдя в Параметры > Вставки и сняв флажок «Автоматически создавать псевдонимы»:

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

 ВЫБРАТЬ * ИЗ Производство.Продукт pro

ВЫБРАТЬ * ОТ Person.Person P

ВЫБРАТЬ * ОТ ЛИЦА КАК p 

Кроме того, вы можете вручную настроить глобальные псевдонимы на вкладке Псевдонимы окна Options . Здесь вам нужно указать сервер, базу данных, объект и псевдоним, как показано ниже:

Глобальные псевдонимы имеют приоритет над автоматически сгенерированными, поэтому, если мы выполним еще один оператор SELECT в SQL Server, мы получим следующее:

 ВЫБРАТЬ * ИЗ Производство.Продукт pp 

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

Помните, как мы говорили ранее, что список подсказок зависит от контекста? Это означает, что с точки зрения синтаксиса завершенный код SQL будет перечислять допустимые предложения в своем списке подсказок. Если мы продолжим вводить предложение WHERE в приведенном выше примере, в нем будут перечислены соответствующие имена столбцов, ключевые слова и т. Д.:

Автозаполнение не только заполнит ключевые слова и имена SQL, но также поможет вам писать сложные запросы, такие как операторы JOIN или запросы между базами данных:

  • Дополнительные сведения об использовании функции автозаполнения см. В разделе Завершение кода

Заключение

В этой статье мы освежили нашу память о том, как запрашивать данные с помощью оператора SELECT в SQL Server. Мы начали с краткого введения и обзора всех основных компонентов, а затем перешли в SSMS и посмотрели, как написать все, от простого оператора SELECT в SQL до всех различных типов объединений.

Затем мы рассмотрели расширение из набора инструментов ApexSQL Fundamentals Toolkit для SQL Server, ApexSQL Complete, которое сокращает набор текста за счет автоматического выполнения операторов SQL за нас. Кроме того, он автоматически вставляет полные имена объектов и псевдонимы на уровне сервера или базы данных. Этот инструмент предоставляет набор параметров, которые упрощают написание операторов SELECT на языке SQL.

4 января 2021 г.

SQL Выбрать как

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

Оператор

SELECT AS используется для создания псевдонимов для столбца или таблицы с помощью оператора Select.

Синтаксис для переименования столбца -

  ВЫБРАТЬ имя_столбца1 как псевдоним_имя1,
   имя_столбца2 AS псевдоним_имя2,
    ...,
   имя_столбцаN AS псевдоним_имяN
   FROM table_name;
  

Синтаксис для переименования таблицы -

  ВЫБРАТЬ имя_столбца1,
   column_name2,
    ...,
  Column_nameN
FROM table_name AS псевдоним_таблицы;
  

Примечания к оператору SELECT AS перечислены ниже -

  • Переименовывает столбец или таблицу во временное.
  • Это длится до существования оператора SELECT.
  • Пользователь не может использовать временное имя после оператора Select.
  • Создание временного имени в проектах в реальном времени может быть выполнено администратором базы данных.
  • Имя временной таблицы также известно как имя корреляции.

Пример -

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

employee_details -

emp_id emp_name обозначение manager_id date_of_hire зарплата dept_id
001 Сотрудник 1 Директор 2019-07-11 45000.00 1000
002 Сотрудник2 Директор 2019-07-11 40000,00 2000
003 Сотрудник3 Управляющий Сотрудник 1 2019-07-11 27000,00 1000
004 Сотрудник4 Управляющий Сотрудник2 2019-10-08 25000.00 2000
005 Сотрудник5 Аналитик Сотрудник3 2019-07-11 20000,00 1000
006 Сотрудник6 Аналитик Сотрудник3 2019-10-08 18000,00 1000
007 Сотрудник7 Делопроизводитель Сотрудник3 2019-07-11 15000.00 1000
008 Сотрудник 8 Продавец Сотрудник4 2019-09-09 14000,00 2000
009 Сотрудник9 Продавец Сотрудник4 2019-10-08 13000,00 2000

Department_details -

dept_id dept_name dept_location
1000 Офис Расположение1
2000 Продажа Расположение 2

Сценарий - переименование столбца в наборе результатов.

Требование - Переименование emp_name как name в результирующем наборе деталей из таблицы employee_details. Запрос был такой -

  ВЫБРАТЬ emp_id, emp_name AS имя, обозначение FROM employee_details;
  

Выполнив вышеуказанный запрос, мы можем получить результат, как показано ниже -

emp_id emp_name обозначение
001 Сотрудник 1 Директор
002 Сотрудник2 Директор
003 Сотрудник3 Управляющий
004 Сотрудник4 Управляющий
005 Сотрудник5 Аналитик
006 Сотрудник6 Аналитик
007 Сотрудник7 Делопроизводитель
008 Сотрудник 8 Продавец
009 Сотрудник9 Продавец

Сценарий - объедините несколько столбцов и присвойте ему имя.

Требование - Объедините dept_id, dept_name с запятыми (,), разделенными запятыми, и назовите его как Отдел с таблицей Department_details. Запрос был такой -

  ВЫБЕРИТЕ dept_id + ',' + dept_name AS Отдел FROM Department_details;
  

Выполнив вышеуказанный запрос, мы можем получить результат, как показано ниже -

Отдел
1000, офис
2000, Продажи

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

Требование - Получите общее количество сотрудников из таблицы employee_details и назовите столбец «Всего сотрудников». Запрос был такой -

  ВЫБРАТЬ СЧЕТЧИК (emp_id) AS 'Всего сотрудников' FROM employee_details;
  

Выполнив вышеуказанный запрос, мы можем получить результат, как показано ниже -

Сценарий - Переименуйте таблицу.

Требование - Переименуйте таблицы employee_details и Department_details в запросе SELECT.Запрос был такой -

  ВЫБРАТЬ e.emp_name, d. dept_name
FROM employee_details как e, Department_table как d
ГДЕ dept_id = 1000;
  

Выполнив вышеуказанный запрос, мы получим следующий результат -

emp_name dept_name
Сотрудник 1 Офис
Сотрудник 2 Продажа
Сотрудник 3 Офис
Сотрудник 4 Продажа
Сотрудник 5 Офис
Сотрудник 6 Офис
Сотрудник7 Офис
Сотрудник 8 Продажа
Сотрудник 9 Продажа

Когда мы используем SELECT AS
  • Когда имя таблицы слишком велико.
Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

© 2019 Штирлиц Сеть печатных салонов в Перми

Цифровая печать, цветное и черно-белое копирование документов, сканирование документов, ризография в Перми.