Sql as: Оператор SQL AS: синтаксис, примеры
Добавление WHERE к оператору AS в SQL
Можно ли добавить оператор WHERE к оператору AS? Когда я запускаю sql, как это всегда терпит неудачу. Мне просто нужен какой-то пример, и я ничего не смог найти в стеке из своих поисков.
SELECT *,
COUNT(my_other_table.id) as 'c_others' WHERE my_other_table.active = 1
LEFT JOIN my_other_table on my_accounts.id = my_other_table.account_connection
FROM my_accounts
ORDER BY my_accounts.name
Обратите внимание, как я добавил WHERE my_other_table.active = 1, Вот где я все ломаю
Я не знаю точно, как работают утверждения AS, обычно я не делаю с ними ничего сложного. Но теперь, когда мне это нужно, я не могу понять
…
sql
Поделиться
Источник
cardi777
24 апреля 2013 в 10:49
4 ответа
5
Предложение WHERE
должно быть в конце списка таблиц, перед необязательным ORDER BY
. Посмотрите на это определение структуры, которой должен придерживаться оператор SELECT:
SELECT
[ DISTINCT | ALL ]
<select list>
FROM <table reference list>
[ <where clause> ] <-- THIS IS THE INTERESTING PART
[ <group by clause> ]
[ <having clause> ]
[ UNION [ALL] <query specification> ]
[ <order by clause> ]
Таким образом, ваш запрос должен выглядеть следующим образом:
SELECT *, COUNT(my_other_table.id) AS c_others
FROM my_accounts
LEFT JOIN my_other_table ON my_accounts.id = my_other_table.account_connection
WHERE my_other_table.active = 1
ORDER BY my_accounts.name
Вы также можете добавить условие в свое предложение ON
:
SELECT *, COUNT(my_other_table.id) AS c_others
FROM my_accounts
JOIN my_other_table ON
my_accounts.id = my_other_table.account_connection
AND my_other_table.active = 1
ORDER BY my_accounts.name
Оператор AS
не делает ничего, кроме указания псевдонима для выбранного поля. Это может быть полезно, когда имя поля слишком длинное, вы хотите определить имя для вызова функции (например, COUNT(column) AS counter
, как вы его использовали) или чтобы избежать столкновений имен при объединении таблиц с похожими именами столбцов. Вы также можете использовать AS
для указания псевдонима для имени таблицы , чтобы избежать необходимости вводить его более одного раза.
Редактировать:
Как было отмечено в комментариях HamletHakobyan: COUNT
-это агрегирующая функция, которая может потребовать от вас использовать предложение GROUP BY
для других полей, выбранных в вашем операторе. Поэтому вам нужно расширить *
в фактические имена полей и сделать это следующим образом:
SELECT
my_accounts.name,
my_accounts.firstname,
COUNT(my_other_table.id) AS c_others
FROM my_accounts
JOIN my_other_table ON
my_accounts.id = my_other_table.account_connection
AND my_other_table. active = 1
GROUP BY my_accounts.name, my_accounts.firstname
ORDER BY my_accounts.name
Поделиться
Till Helge
24 апреля 2013 в 10:52
0
Вы можете просто добавить предложение WHERE
как:
SELECT *,
COUNT(my_other_table.id) as 'c_others'
FROM my_accounts
LEFT JOIN my_other_table
ON my_accounts.id = my_other_table.account_connection
WHERE my_other_table.active = 1
GROUP BY <list all necessary fields>
ORDER BY my_accounts.name
или, если вы хотите получить выборочное количество элементов, используйте это
SELECT <list all necessary fields>,
COUNT(CASE WHEN my_other_table.active = 1 THEN my_other_table.id END) as 'c_others'
FROM my_accounts
LEFT JOIN my_other_table
ON my_accounts.id = my_other_table.account_connection
GROUP BY <list all necessary fields>
ORDER BY my_accounts. name
Поделиться
Hamlet Hakobyan
24 апреля 2013 в 10:53
0
AS
просто вводит новое имя для объекта (столбца, таблицы и т. д.). Таким образом, применение к нему WHERE
не имеет смысла (поскольку имя столбца в данном случае фиксировано для всего результирующего набора).
На первый взгляд, вы действительно хотите изменить COUNT
, так что вы считаете только те строки, где active
равно 1:
SELECT *,
SUM(CASE WHEN my_other_table.active = 1 THEN 1 ELSE 0 END) as 'c_others'
LEFT JOIN my_other_table on my_accounts.id = my_other_table.account_connection
FROM my_accounts
ORDER BY my_accounts.name
Поделиться
Damien_The_Unbeliever
24 апреля 2013 в 10:53
- добавление переменной where внутри sql
если пользователь выберет что-либо, кроме all, это приведет к оператору where, включающему KodDaerah $where = »; $sql= SELECT * FROM maklumatakaun LEFT JOIN detailakaun ON maklumatakaun. id = detailakaun.id LEFT JOIN maklumatbilakaun ON maklumatakaun.NoAkaun = maklumatbilakaun.NoAkaun LEFT JOIN…
- Добавление псевдонима к оператору WHERE в SQL
Я пытаюсь понять, как добавить псевдоним к аббревиатурам Штатов. Пример: QUERY: SELECT DISTINCT CHAPTER, COUNT(CHAPTER)AS MEMBERS FROM Name WHERE MEMBER_RECORD = ‘1’ AND COUNTRY in (»,’ ‘,’United States’) AND CHAPTER IN (‘AL’, ‘AK’, ‘AZ’) Я хочу добавить полное название, чтобы AL, Аляска и…
0
Как и просто ключевое слово, чтобы дать имя столбцу. Что удобно в сложных определениях столбцов. Имя будет работать только в результате запроса, но не внутри запроса — вы не можете ссылаться на него обратно в том же запросе. Тогда вам придется использовать подзапрос.
WHERE (как и другие ключевые слова) имеют свое место в запросе, как было написано до Хельге.
Поделиться
Unknown
24 апреля 2013 в 11:01
Похожие вопросы:
попытке добавить where, чтобы sql заявление
HiI я пытаюсь присоединить предложение where к оператору sql следующим образом public static DataTable paymentType(string paymenttype, string ddproviders, string overdue) { string paymenttypestr = ;. ..
Значительно ли увеличивает производительность добавление «TOP 1» к оператору sql?
В запросе SQL добавление TOP 1 к SELECT TOP 1 [values] FROM [TABLE] where [TABLE].Value = ABC дайте мне повышение производительности, когда я знаю, что есть только одна из этих записей? В частности,…
В SQL Server выполняется ли переход к следующему оператору, если первый оператор выдает ошибку?
У меня есть SP, который содержит несколько запросов update и insert. Если какой-либо запрос выдает ошибку, переходит ли выполнение к следующему оператору? Например, CREATE PROCEDURE Test() AS BEGIN…
как поздняя привязка параметра к динамическому оператору sql в хранимой процедуре
Я пытаюсь динамически построить оператор T-SQL на основе таблицы FieldMapping и некоторых бизнес-правил. Короче говоря, у меня есть функция, которая вернет оператор SQL как varchar(max), который я…
PhpMyAdmin добавляет WHERE 1 к каждому оператору по умолчанию
Просто любопытный вопрос. Почему phpMyadmin добавляет WHERE 1 к каждому оператору в поле ввода запроса SQL? Например, SELECT * FROM User WHERE 1
добавление переменной where внутри sql
если пользователь выберет что-либо, кроме all, это приведет к оператору where, включающему KodDaerah $where = »; $sql= SELECT * FROM maklumatakaun LEFT JOIN detailakaun ON maklumatakaun.id =…
Добавление псевдонима к оператору WHERE в SQL
Я пытаюсь понять, как добавить псевдоним к аббревиатурам Штатов. Пример: QUERY: SELECT DISTINCT CHAPTER, COUNT(CHAPTER)AS MEMBERS FROM Name WHERE MEMBER_RECORD = ‘1’ AND COUNTRY in (»,’ ‘,’United…
SQL select AS — добавление текста
Можно ли добавить текст к оператору SQL select? напр.: var query = SELECT id, + picture FROM people; к var query = SELECT id, + picture AS ‘./directory/’ + picture FROM people;
Привязка параметров к частичному оператору SQL
Я имею дело со старым приложением PHP, и мне было поручено убедиться, что все области используют подготовленные заявления. В настоящее время он использует sprintf для построения большей части…
Ошибка со строкой SQL: «ошибка при подключении к оператору PostgreSQL не существует: дата = целое число»
У меня есть сценарий Python(3), который должен запускаться каждое утро. В нем я называю некоторые SQL. Однако я получаю сообщение об ошибке: Ошибка при подключении к оператору PostgreSQL не…
Access SQL. Основные понятия, лексика и синтаксис
Для извлечения данных из базы данных используется язык SQL. SQL — это язык программирования, который очень напоминает английский, но предназначен для программ управления базами данных. SQL используется в каждом запросе в Access.
Понимание принципов работы SQL помогает создавать более точные запросы и упрощает исправление запросов, которые возвращают неправильные результаты.
Это статья из цикла статей о языке SQL для Access. В ней описаны основы использования SQL для выборки данных и приведены примеры синтаксиса SQL.
В этой статье
Что такое SQL?
SQL — это язык программирования, предназначенный для работы с наборами фактов и отношениями между ними. В программах управления реляционными базами данных, таких как Microsoft Office Access, язык SQL используется для работы с данными. В отличие от многих языков программирования, SQL удобочитаем и понятен даже новичкам. Как и многие языки программирования, SQL является международным стандартом, признанным такими комитетами по стандартизации, как ISO и ANSI.
На языке SQL описываются наборы данных, помогающие получать ответы на вопросы. При использовании SQL необходимо применять правильный синтаксис. Синтаксис — это набор правил, позволяющих правильно сочетать элементы языка. Синтаксис SQL основан на синтаксисе английского языка и имеет много общих элементов с синтаксисом языка Visual Basic для приложений (VBA).
Например, простая инструкция SQL, извлекающая список фамилий контактов с именем Mary, может выглядеть следующим образом:
SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';
Примечание: Язык SQL используется не только для выполнения операций над данными, но еще и для создания и изменения структуры объектов базы данных, например таблиц. Та часть SQL, которая используется для создания и изменения объектов базы данных, называется языком описания данных DDL. Язык DDL не рассматривается в этой статье. Дополнительные сведения см. в статье Создание и изменение таблиц или индексов с помощью запроса определения данных.
Инструкции SELECT
Чтобы описать набор данных с помощью SQL, нужно написать заявление SELECT. Инструкция SELECT содержит полное описание набора данных, которые вы хотите получить из базы данных. К ним относятся файлы со следующими элементами:
-
таблицы, в которых содержатся данные;
-
связи между данными из разных источников;
-
поля или вычисления, на основе которых отбираются данные;
-
условия отбора, которым должны соответствовать данные, включаемые в результат запроса;
-
необходимость и способ сортировки.
Предложения SQL
Инструкция SQL состоит из нескольких частей, называемых предложениями. Каждое предложение в инструкции SQL имеет свое назначение. Некоторые предложения являются обязательными. В приведенной ниже таблице указаны предложения SQL, используемые чаще всего.
|
|
|
---|---|---|
SELECT
|
Определяет поля, которые содержат нужные данные.
|
Да
|
FROM
|
Определяет таблицы, которые содержат поля, указанные в предложении SELECT.
|
Да
|
WHERE
|
Определяет условия отбора полей, которым должны соответствовать все записи, включаемые в результаты.
|
Нет
|
ORDER BY
|
Определяет порядок сортировки результатов.
|
Нет
|
GROUP BY
|
В инструкции SQL, которая содержит статистические функции, определяет поля, для которых в предложении SELECT не вычисляется сводное значение.
|
Только при наличии таких полей
|
HAVING
|
В инструкции SQL, которая содержит статистические функции, определяет условия, применяемые к полям, для которых в предложении SELECT вычисляется сводное значение.
|
Нет
|
Термины SQL
Каждое предложение SQL состоит из терминов, которые можно сравнить с частями речи. В приведенной ниже таблице указаны типы терминов SQL.
|
|
|
|
---|---|---|---|
идентификатор
|
существительное
|
Имя, используемое для идентификации объекта базы данных, например имя поля.
|
Клиенты.[НомерТелефона]
|
оператор
|
глагол или наречие
|
Ключевое слово, которое представляет действие или изменяет его.
|
AS
|
константа
|
существительное
|
Значение, которое не изменяется, например число или NULL.
|
42
|
выражение
|
прилагательное
|
Сочетание идентификаторов, операторов, констант и функций, предназначенное для вычисления одного значения.
|
>= Товары.[Цена]
|
К началу страницы
Основные предложения SQL: SELECT, FROM и WHERE
Общий формат инструкций SQL:
SELECT field_1
FROM table_1
WHERE criterion_1
;
Примечания:
-
Access не учитывает разрывы строк в инструкции SQL. Несмотря на это, каждое предложение рекомендуется начинать с новой строки, чтобы инструкцию SQL было удобно читать как тому, кто ее написал, так и всем остальным.
-
Каждая инструкция SELECT заканчивается точкой с запятой (;). Точка с запятой может стоять как в конце последнего предложения, так и на отдельной строке в конце инструкции SQL.
Пример в Access
В приведенном ниже примере показано, как в Access может выглядеть инструкция SQL для простого запроса на выборку.
1. Предложение SELECT
2. Предложение FROM
3. Предложение WHERE
Эту инструкцию SQL следует читать так: «Выбрать данные из полей «Адрес электронной почты» и «Компания» таблицы «Контакты», а именно те записи, в которых поле «Город» имеет значение «Ростов».
Разберем пример по предложениям, чтобы понять, как работает синтаксис SQL.
Предложение SELECT
SELECT [E-mail Address], Company
Это предложение SELECT. Оно содержит оператор (SELECT), за которым следуют два идентификатора («[Адрес электронной почты]» и «Компания»).
Если идентификатор содержит пробелы или специальные знаки (например, «Адрес электронной почты»), он должен быть заключен в прямоугольные скобки.
В предложении SELECT не нужно указывать таблицы, в которых содержатся поля, и нельзя задать условия отбора, которым должны соответствовать данные, включаемые в результаты.
В инструкции SELECT предложение SELECT всегда стоит перед предложением FROM.
Предложение FROM
FROM Contacts
Это предложение FROM. Оно содержит оператор (FROM), за которым следует идентификатор (Контакты).
В предложении FROM не указываются поля для выборки.
Предложение WHERE
WHERE City=»Seattle»
Это предложение WHERE. Оно содержит оператор (WHERE), за которым следует выражение (Город=»Ростов»).
Примечание: В отличие от предложений SELECT и FROM, предложение WHERE является необязательным элементом инструкции SELECT.
С помощью предложений SELECT, FROM и WHERE можно выполнять множество действий. Дополнительные сведения об использовании этих предложений см. в следующих статьях:
К началу страницы
Сортировка результатов: ORDER BY
Как и в Microsoft Excel, в Access можно сортировать результаты запроса в таблице. Используя предложение ORDER BY, вы также можете указать способ сортировки результатов при выполнении запроса. Если используется предложение ORDER BY, оно должно находиться в конце инструкции SQL.
Предложение ORDER BY содержит список полей, для которых нужно выполнить сортировку, в том же порядке, в котором будут применена сортировка.
Предположим, например, что результаты сначала нужно отсортировать по полю «Компания» в порядке убывания, а затем, если присутствуют записи с одинаковым значением поля «Компания», — отсортировать их по полю «Адрес электронной почты» в порядке возрастания. Предложение ORDER BY будет выглядеть следующим образом:
ORDER BY Company DESC, [E-mail Address]
Примечание: По умолчанию Access сортирует значения по возрастанию (от А до Я, от наименьшего к наибольшему). Чтобы вместо этого выполнить сортировку значений по убыванию, необходимо указать ключевое слово DESC.
Дополнительные сведения о предложении ORDER BY см. в статье Предложение ORDER BY.
К началу страницы
Работа со сводными данными: предложения GROUP BY и HAVING
Иногда возникает необходимость работы со сводными данными, такими как итоговые продажи за месяц или самые дорогие товары на складе. Для этого в предложении SELECT к полю применяется агрегатная функция. Например, если в результате выполнения запроса нужно получить количество адресов электронной почты каждой компании, предложение SELECT может выглядеть следующим образом:
SELECT COUNT([E-mail Address]), Company
Возможность использования той или иной агрегатной функции зависит от типа данных в поле и нужного выражения. Дополнительные сведения о доступных агрегатных функциях см. в статье Статистические функции SQL.
Задание полей, которые не используются в агрегатной функции: предложение GROUP BY
При использовании агрегатных функций обычно необходимо создать предложение GROUP BY. В предложении GROUP BY указываются все поля, к которым не применяется агрегатная функция. Если агрегатные функции применяются ко всем полям в запросе, предложение GROUP BY создавать не нужно.
Предложение GROUP BY должно следовать сразу же за предложением WHERE или FROM, если предложение WHERE отсутствует. В предложении GROUP BY поля указываются в том же порядке, что и в предложении SELECT.
Продолжим предыдущий пример. Пусть в предложении SELECT агрегатная функция применяется только к полю [Адрес электронной почты], тогда предложение GROUP BY будет выглядеть следующим образом:
GROUP BY Company
Дополнительные сведения о предложении GROUP BY см. в статье Предложение GROUP BY.
Ограничение агрегированных значений с помощью условий группировки: предложение HAVING
Если необходимо указать условия для ограничения результатов, но поле, к которому их требуется применить, используется в агрегированной функции, предложение WHERE использовать нельзя. Вместо него следует использовать предложение HAVING. Предложение HAVING работает так же, как и WHERE, но используется для агрегированных данных.
Предположим, например, что к первому полю в предложении SELECT применяется функция AVG (которая вычисляет среднее значение):
SELECT COUNT([E-mail Address]), Company
Если вы хотите ограничить результаты запроса на основе значения функции COUNT, к этому полю нельзя применить условие отбора в предложении WHERE. Вместо него условие следует поместить в предложение HAVING. Например, если нужно, чтобы запрос возвращал строки только в том случае, если у компании есть несколько адресов электронной почты, можно использовать следующее предложение HAVING:
HAVING COUNT([E-mail Address])>1
Примечание: Запрос может включать и предложение WHERE, и предложение HAVING, при этом условия отбора для полей, которые не используются в статистических функциях, указываются в предложении WHERE, а условия для полей, которые используются в статистических функциях, — в предложении HAVING.
Дополнительные сведения о предложении HAVING см. в статье Предложение HAVING.
К началу страницы
Объединение результатов запроса: оператор UNION
Оператор UNION используется для одновременного просмотра всех данных, возвращаемых несколькими сходными запросами на выборку, в виде объединенного набора.
Оператор UNION позволяет объединить две инструкции SELECT в одну. Объединяемые инструкции SELECT должны иметь одинаковое число и порядок выходных полей с такими же или совместимыми типами данных. При выполнении запроса данные из каждого набора соответствующих полей объединяются в одно выходное поле, поэтому выходные данные запроса имеют столько же полей, сколько и каждая инструкция SELECT по отдельности.
Примечание: В запросах на объединение числовой и текстовый типы данных являются совместимыми.
Используя оператор UNION, можно указать, должны ли в результаты запроса включаться повторяющиеся строки, если таковые имеются. Для этого следует использовать ключевое слово ALL.
Запрос на объединение двух инструкций SELECT имеет следующий базовый синтаксис:
SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a
FROM table_a
;
Предположим, например, что имеется две таблицы, которые называются «Товары» и «Услуги». Обе таблицы содержат поля с названием товара или услуги, ценой и сведениями о гарантии, а также поле, в котором указывается эксклюзивность предлагаемого товара или услуги. Несмотря на то, что в таблицах «Продукты» и «Услуги» предусмотрены разные типы гарантий, основная информация одна и та же (предоставляется ли на отдельные продукты или услуги гарантия качества). Для объединения четырех полей из двух таблиц можно использовать следующий запрос на объединение:
SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;
Дополнительные сведения об объединении инструкций SELECT с помощью оператора UNION см. в статье Просмотр объединенных результатов нескольких запросов с помощью запроса на объединение.
К началу страницы
Amazon RDS для SQL Server – Amazon Web Services (AWS)
SQL Server – это система управления реляционными базами данных, разработанная корпорацией Microsoft. Amazon RDS for SQL Server упрощает настройку, эксплуатацию и масштабирование развертываний SQL Server в облаке. Amazon RDS поможет за считаные минуты выполнить развертывание множества выпусков SQL Server (2012, 2014, 2016, 2017 и 2019), включая выпуски Express, Web, Standard и Enterprise, и сэкономить средства благодаря масштабированию вычислительных ресурсов. Amazon RDS способен решить множество трудоемких задач по управлению базой данных: выделение ресурсов, создание резервных копий, обновление ПО, мониторинг и масштабирование аппаратных ресурсов. Это позволяет нашим клиентам полностью сосредоточиться на разработке приложений.
Amazon RDS для SQL Server поддерживает модель лицензирования «лицензия включена». Отдельно приобретать лицензии Microsoft SQL Server не требуется. При оплате по модели с включенной лицензией в цену входит стоимость программного обеспечения, базовых аппаратных ресурсов и возможностей управления Amazon RDS.
При этом взимается почасовая плата без авансовых платежей или каких-либо долговременных обязательств. Кроме того, вы можете также купить зарезервированные инстансы баз данных на один год или на три года. Используя зарезервированные инстансы баз данных, вы однократно вносите небольшой авансовый платеж за каждый из них, а затем платите почасовую плату с большой скидкой, что позволяет сэкономить до 65 % средств.
Инстансы БД SQL Server сервиса Amazon RDS могут быть выделены либо со стандартным хранилищем, либо с хранилищем с выделенными ресурсами ввода-вывода. Amazon RDS Provisioned IOPS – это вариант хранения, предназначенный для обеспечения быстрой, предсказуемой и последовательной производительности ввода‑вывода и оптимизированный для рабочих нагрузок транзакционных (OLTP) баз данных с большим количеством операций ввода‑вывода.
Команда SQL для выборки из базы данных часть 2 (ORDER BY, LIMIT, SELECT AS, COUNT)
При запросе к базе данных существует возможность ограничить выборку по количеству возвращаемых строк. А ещё можно запросить отсортированный по какому-либо параметру результат.
Сортировка (ORDER BY)
С помощью команды ORDER BY можно сделать сортировку результата, который будет выдан из базы данных. Результат можно сортировать по значению поля. Либо в прямом направлении «ASC», либо в обратном направлении «DESC». Приведём пример использования:
SELECT * FROM `USERS` WHERE `ID` > 2 ORDER BY `ID` DESC;
В конце этого запроса можно увидеть конструкцию «ORDER BY `ID` DESC», которая говорит о том, что выборка будет отсортирована по убыванию значения столбца ID. Если нужно сделать по возрастанию, то будет такой запрос:
SELECT * FROM `USERS` WHERE `ID` > 2 ORDER BY `ID` ASC;
Можно сделать две сортировки. Для этого после «ORDER BY» необходимо написать через запятую название столбца и направление сортировки. К примеру, отсортируем выборку по возрастанию ID но по убыванию даты (столбец DATE):
SELECT * FROM `USERS` ORDER BY `ID` ASC, `DATE` DESC;
Ограничение (LIMIT)
При работе с базой надо всегда помнить, что база данных — это довольно медленный инструмент. Поэтому необходимо минимизировать не только количество запросов к ней, но и количество выбранных из неё данных. Это можно сделать тремя способами. И лучше использовать их все одновременно:
- Делать выборку определённых полей, а не всех полей таблицы. Для этого после команды SELECT необходимо ставить не *, а название выбираемых полей через запятую.
- Использовать условия WHERE, которые ограничивают размер выборки.
- Использовать LIMIT (лимит) на количество выбираемых строк.
О последнем способе поговорим отдельно. Лимит задаётся числом. К примеру, если написать «LIMIT 1;», то в результате SQL запроса будут возвращены не более 10 строк из таблицы. Чтобы установить лимит, напишите его в самом конце запроса:
SELECT * FROM `USERS` LIMIT 10;
Установка лимита на выборку может значительно ускорить некоторые запросы к базе. Не забывайте, что чем медленнее загружаются страницы Вашего сайта, тем меньше посетителей на нём будет. Потому что люди не любят ждать загрузки страницы. Загрузка длительностью более 2 секунд отталкивает от сайта более 60% его аудитории.
Переименовывание столбца при запросе (AS)
Бывают случаи, когда необходимо переименовать столбец в результатах выборки. Зачастую это делается для упрощения последующего программирования обработки выборки. Представьте, что у нас есть таблица со столбцом, который называется «SECTION_FULL_NUMBER»:
+---------------------+ | SECTION_FULL_NUMBER | +---------------------+ | 6 | +---------------------+ | 118 | +---------------------+ | 21 | +---------------------+
Использовать такое длинное имя не хочется, поэтому попробуем его укоротить до слова «NAME». Сделать это нам поможет команда «AS», которую необходимо поставить после называния выбираемого поля, вот так:
SELECT `SECTION_FULL_NUMBER` AS 'SECTION' FROM `USERS`;
В результате выполнения такого SQL запроса мы получим таблицу, но название столбца будет заменено на ‘SECTION’:
+---------+ | SECTION | +---------+ | 6 | +---------+ | 118 | +---------+ | 21 | +---------+
При переименовании в SELECT нельзя указать новое название столбца, которое будет совпадать с названием другого столбца.
Количесво строк в выборке (COUNT)
Одной из самых частых необходимостей является подсчёт количества строк вы вборке. Но как было сказано ранее, получение большого количества строк и столбцов из базы происходит довольно долго, что замедляет сайт. Поэтому не стоит пытаться подсчитывать количество строк после получения выборки. Лучше получить количество строк непосредственно из запроса. Для этого исопльзуется команда «COUNT(*)» (по английски «count» переводится как «количество»). Попробуем использовать её в SQL запросе:
SELECT COUNT(*) FROM `USERS`;
В результате выполнения такого запроса будет получен один столбце с одной строкой:
+----------+ | COUNT(*) | +----------+ | 3 | +----------+
Цифра «3» в примере означает, что в таблице было всего 3 записи (3 строчки). Если попробовать обработать данные, возвращённые базой, то может возникнуть проблема с названием столбца (в нём есть скобки и звёздочка). Поэтому воспользуемся рекомендацией из предыдущего параграфа и переименуем столбец в «CNT»:
SELECT COUNT(*) AS 'CNT' FROM `USERS`;
Теперь результат будет легче обработать благодаря лаконичному названию столбца, содержащему только латинские буквы:
+-----+ | CNT | +-----+ | 2 | +-----+
Какова цель ключевого слова SQL «AS»?
На заре SQL он был выбран в качестве решения проблемы того, как обращаться с дублирующимися именами столбцов (см. Примечание ниже).
Чтобы заимствовать запрос из другого ответа:
SELECT P.ProductName,
P.ProductRetailPrice,
O.Quantity
FROM Products AS P
INNER JOIN Orders AS O ON O.ProductID = P.ProductID
WHERE O.OrderID = 123456
Столбец ProductID
(и, возможно, другие) является общим для обеих таблиц, и поскольку синтаксис условия соединения требует ссылки на обе таблицы, «точечная квалификация» обеспечивает устранение неоднозначности.
Конечно, лучшим решением было бы никогда не допускать дублирования имен столбцов! К счастью, если вы используете более новый NATURAL JOIN
синтаксис, необходимость в переменных диапазона P
и O
уходит:
SELECT ProductName, ProductRetailPrice, Quantity
FROM Products NATURAL JOIN Orders
WHERE OrderID = 123456
Но почему AS
ключевое слово необязательно? Моя личная беседа с членом комитета по стандартизации SQL (Джо Селко или Хью Дарвеном) состояла в том, что их воспоминания заключались в том, что на момент определения стандарта продукт одного поставщика (Microsoft?) Требовал его включения, а другого — поставщика. продукт (Oracle?) требовал его упущения, поэтому выбранный компромисс состоял в том, чтобы сделать его необязательным. Я не цитирую это, вы либо верите мне, либо нет!
В первые дни реляционной модели перекрестное произведение (или тэта-соединение или равное соединение) отношений, заголовки которых не являются непересекающимися, создавало отношение с двумя атрибутами с одинаковым именем; Решением этой проблемы Кодд в своем реляционном исчислении было использование точечной квалификации, которая впоследствии была эмулирована в SQL (позже стало понятно, что так называемое естественное соединение было примитивным без потерь; то есть естественное соединение может заменить все тета-объединения и даже перекрестный продукт.)
Источник: Business System 12, примечания к слайдам презентации, представленной Хью Дарвеном на семинаре для разработчиков TTM, Университет Нортумбрии, 2-3 июня 2011 года.
sql — SQL ‘as’ Проблема оператора
У меня проблемы с оператором SQL «как». На основании того, что я прочитал и увидел на YouTube, команда «as» или псевдоним может использоваться для переименования столбцов.
Ошибка:
System.Exception: недопустимое имя объекта «Capprogram»
выберите main1.id как captempCaseMgmtMain_id, CapSSMatrix.Name как captempCaseMgmtMain_idSSMatrix, CapSSMatrix.datefrom как Date, CapSSMatrix.dateto как DateTo, Person.lastname + ‘,’ + Person.firstname как Name, captemgmaseMaseMain_CaptempCaptemp from captempCaseMgmtMain main1 left присоединиться к captempCaseMgmtMain main2 на main2.ssmgroup = main1.ssmgroup и main2.type = 3 ПРИСОЕДИНЯТЬСЯ к CapSSMatrix на main1.idSSMatrix = CapSSMatrix.id ПРИСОЕДИНЯТЬСЯ к человеку на Person.id = main1.familymember СОЕДИНЯТЬ Capprogram.capprogram. idprogram, где main1.type = 1 и isnumeric (main2.id) 1 and ((getdate ()> capSSMatrix.dateto)) и CapSSMatrix.id = », упорядочиваются по main1.id desc в IMSE.UI.BaseEnginePage.GetDBValues () в IMSE.UI.Pages.Aspx_Pages.LoadPage () в IMSE. UI.Pages.Aspx_Pages.Page_Load (отправитель объекта, EventArgs e)
Это команда / запрос, который я пробовал. Любая помощь приветствуется. Заранее спасибо.
SELECT
main1.id AS captempCaseMgmtMain_id,
CapSSMatrix.Name AS captempCaseMgmtMain_idSSMatrix,
CapSSMatrix.datefrom AS Date,
CapSSMatrix.dateto AS DateTo,
Person.lastname + ', ' + Person.firstname AS Name,
main1.date AS captempCaseMgmtMain_id,
Capprogram.program AS captempCaseMgmtMain_idProgram
FROM
captempCaseMgmtMain main1
LEFT JOIN
captempCaseMgmtMain main2 ON main2.ssmgroup = main1.ssmgroup
AND main2.type = 3
JOIN
CapSSMatrix ON main1.idSSMatrix = CapSSMatrix.id
JOIN
Person ON Person.id = main1.familymember
JOIN
Capprogram ON capprogram.id = main1.idprogram
WHERE
main1.type = 1 AND
ISNUMERIC(main2.id) <> 1 AND
(GETDATE() > capSSMatrix.dateto) AND
CapSSMatrix.id = $CapSSMatrix.id
ORDER BY
main1. id DESC
0
K. Kingsberry
19 Сен 2017 в 05:04
4 ответа
Лучший ответ
Эта ошибка говорит о том, что нет объекта с именем Capprogram, на который я вижу только ссылку в вашем предложении соединения. Я бы подтвердил, что эта таблица существует и, если это так, использует полное имя.
1
Andrew O’Brien
19 Сен 2017 в 02:40
Этот код вызывает следующую ошибку:
Сообщение 126, уровень 15, состояние 1, строка 24 Неверный псевдостолбец «$ CapSSMatrix».
Это потому, что ваш $CapSSMatrix.id
содержит $
, а сервер считает, что это псевдостолбец, но это не так.
Поэтому, если это имя таблицы, оно должно быть заключено в кавычки следующим образом: [$CapSSMatrix]
, а если это не просто удалить это $
0
sepupic
19 Сен 2017 в 12:26
Вы должны добавить LEFT JOIN к таблице, например:
1- left join captempCaseMgmtMain main2 2- left join CapSSMatrix 3- left join Person 4- left join Capprogram
-3
Shree
19 Сен 2017 в 03:56
Кажется, вашей таблицы нет в схеме. Найдите имя схемы вашей таблицы по запросу ниже.
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'
Затем попробуйте поставить schemaname. tablename
Также убедитесь, что таблица присутствует в базе данных, которую вы используете
0
Jayanti Lal
19 Сен 2017 в 04:21
Псевдонимы в Oracle PL/SQL — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
В этом учебном пособии вы узнаете, как использовать в Oracle ALIASES (псевдонимы для столбцов или таблиц) с синтаксисом и примерами.
Описание
Oracle ALIASES можно использовать для создания псевдонима для столбца или таблицы.
ALIASES столбцов используются для упрощения чтения столбцов в вашем результирующем наборе.
ALIASES таблиц используются для сокращения вашего SQL-кода, чтобы упростить его чтение или когда вы выполняете самостоятельное соединение (то есть: перечисление одной и той же таблицы более одного раза в предложении FROM).
Синтаксис
Синтаксис для ALIAS столбцов в Oracle / PLSQL:
column_name AS alias_name
ИЛИ
Синтаксис для ALIAS таблиц в Oracle / PLSQL:
table_name alias_name
Параметры или аргументы
column_name — исходное имя столбца, которому вы хотите указать псевдоним.
table_name — исходное имя таблицы, которой вы хотите указать псевдоним.
alias_name — псевдоним для назначения.
Примечание
Если alias_name содержит пробелы, вы должны заключить alias_name в кавычки.
Пример ALIAS как столбец
Как правило, псевдонимы используются для упрощения чтения заголовков столбцов в вашем результирующем наборе. Например, при конкатенации полей вы можете получить следующий результат.
Например:
SELECT contact_id, first_name || last_name AS NAME
FROM contacts
WHERE last_name = ‘Anderson’;
| SELECT contact_id, first_name || last_name AS NAME FROM contacts WHERE last_name = ‘Anderson’; |
В этом примере мы заменили второй столбец (то есть: first_name и last_name конкатенировали) как NAME. В результате NAME будет отображаться как заголовок для второго столбца при возврате результирующего набора. Поскольку наше имя alias_name не содержит пробелов, мы не обязаны оборачивать alias_name в кавычки.
Однако было бы вполне приемлемо написать этот пример, используя кавычки следующим образом:
SELECT contact_id, first_name || last_name AS «NAME»
FROM contacts
WHERE last_name = ‘Anderson’;
| SELECT contact_id, first_name || last_name AS «NAME» FROM contacts WHERE last_name = ‘Anderson’; |
Затем давайте посмотрим на пример, где мы должны заключить alias_name в кавычки.
Например:
SELECT contact_id, first_name || last_name AS «CONTACT NAME»
FROM contacts
WHERE last_name = ‘Anderson’;
| SELECT contact_id, first_name || last_name AS «CONTACT NAME» FROM contacts WHERE last_name = ‘Anderson’; |
В этом примере мы сменили второй столбец (то есть: first_name и last_name конкатенировали) как «CONTACT NAME». Поскольку в этом псевдониме есть пробелы, «CONTACT NAME» должно быть заключено в кавычки.
Пример ALIAS таблица
Когда вы создаете псевдоним для таблицы, это либо потому, что вы планируете перечислить одно и то же имя таблицы более одного раза в предложении FROM (т.е.: join), или вы хотите сократить имя таблицы, чтобы сделать оператор SQL короче и легче читаемый.
Давайте рассмотрим пример ALIAS имя таблицы в Oracle / PLSQL.
Например:
SELECT p.product_id, p.product_name, categories.category_name
FROM products p
INNER JOIN categories
ON p.category_id = categories.category_id
ORDER BY p.product_name ASC, categories.category_name ASC;
| SELECT p.product_id, p.product_name, categories.category_name FROM products p INNER JOIN categories ON p.category_id = categories.category_id ORDER BY p.product_name ASC, categories.category_name ASC; |
В этом примере мы создали псевдоним для таблицы products p. Теперь в этой инструкции SQL мы можем ссылаться на таблицу products в виде p.
При создании псевдонимов таблиц нет необходимости создавать псевдонимы для всех таблиц, перечисленных в предложении FROM. Вы можете создавать псевдонимы на любой или всех таблицах.
Например, мы могли бы изменить наш пример выше и создать псевдоним для таблицы categories таким образом.
SELECT p.product_id, p.product_name, c.category_name
FROM products p
INNER JOIN categories c
ON p.category_id = c.category_id
ORDER BY p.product_name ASC, c.category_name ASC;
| SELECT p.product_id, p.product_name, c.category_name FROM products p INNER JOIN categories c ON p.category_id = c.category_id ORDER BY p.product_name ASC, c.category_name ASC; |
Теперь у нас есть псевдоним для таблицы categories c, а также псевдоним для таблицы products p.
Обзор ключевых слов
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 14 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 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 CustomerInf) 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 ‘ ); INSERT INTO [Customer_InformationListForSale] ([ID], [CustomerInfList_FirstName], [CustomerInf_LastName], [CustomerInf_Age], ES 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 ‘ ); INSERT INTO [Customer_InformationListForSale] ([ID], [CustomerInfList_FirstName], [CustomerInf_LastName], [CustomerInf_Age], 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 N’Jorge ‘, N’Brown’, 56, N’India ‘ ); INSERT INTO [OrderTransaction_InformationListForSale] ([ID], [OrderTransaction_Date], [Customer_InformationListForSale_CustID], ( 000) ES ‘ ( ) ES -Окт-1784 ‘КАК ДАТА ВРЕМЕНИ), 1, 1903.12 ); ВСТАВИТЬ В [OrderTransaction_InformationListForSale] ([ID], [OrderTransaction_Date], [Customer_InformationListForSale_CustID], [Amout] ES -1799 ‘КАК ДАТА ВРЕМЕНИ), 2, 345690.12 ); ВСТАВИТЬ В [OrderTransaction_InformationListForSale] ([ID], [OrderTransaction_Date], [Customer_InformationListForSale_CustID], [Amout] J VAL -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 9000 AS2000 .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
INNER JOIN Orders AS O ON 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 SELECT AS — Essential SQL
Переименование столбцов с помощью SQL SELECT AS
Для переименования столбцов в результатах запроса можно использовать форму SQL SELECT AS .
До сих пор вы видели, что результаты запросов возвращают результаты, названные в честь столбцов таблицы. Это нормально для большинства случаев, но как только вы начнете работать с выражениями, вы увидите, что это не работает.
Чтобы переименовать столбец, используйте AS .
В этом примере мы переименовываем FirstName в First и LastName в Last.
ВЫБЕРИТЕ FirstName AS First
, Фамилия AS Last
ОТ Person.Person;
ВЫБРАТЬ Имя как первое , Фамилия AS Last ОТ Person.Person;
AS не является обязательным, можете ли вы переписать приведенный выше SQL без использования AS?
— Попробуйте переписать наш первый пример без использования AS.
- Ответить ВЫБРАТЬ Имя Сначала , LastName Last ОТ Person.Person;
Переименование столбцов может показаться хорошей функцией, но она также пригодится, когда мы хотим вернуть вычисленный результат.
Например, предположим, что вы хотите вернуть LastName в верхнем регистре. Вы могли написать
ВЫБРАТЬ ВЕРХНИЙ (Фамилия)
FROM Person.Person
Но как только вы запустите запрос, вы не увидите, что имя столбца не возвращается.Чтобы столбцу было присвоено имя, можно использовать AS.
ВЫБЕРИТЕ ВЕРХНИЙ (Фамилия) как [ПОСЛЕДНЕЕ ИМЯ]
ОТ Лиц. Лица
- Ответить ВЫБЕРИТЕ ВЕРХНИЙ (Фамилия) как [ПОСЛЕДНЕЕ ИМЯ] ОТ ЛИЦА
твоя очередь!
Можете ли вы написать запрос, чтобы получить отдельный список имен в верхнем регистре? Назовите столбец [Отличные имена].
Напишите свой запрос ниже они попробуют.
- Ответить ВЫБРАТЬ РАЗЛИЧНЫЙ ВЕРХНИЙ (Имя) КАК [Разные имена] ОТ человека.Человек;
Дополнительные ресурсы для оператора SELECT
Если вы хотите узнать больше о команде SELECT, я бы порекомендовал вам прочитать нашу статью «Простые запросы выбора».
Чтобы узнать больше о функциях, таких как UPPER, ознакомьтесь с нашей статьей Введение в общие строковые функции.
Ищете книгу по супер SQL? Ознакомьтесь с SQL-запросами для простых смертных.
SQL: НИКНЕЙМЫ
Это руководство по SQL объясняет, как использовать SQL ALIASES (временные имена для столбцов или таблиц) с синтаксисом и примерами.
Описание
SQL ALIASES можно использовать для создания временного имени для столбцов или таблиц.
- НИКНЕЙМЫ КОЛОНК используются для облегчения чтения заголовков столбцов в наборе результатов.
- НИКНЕЙМЫ ТАБЛИЦ используются для сокращения вашего SQL, чтобы его было легче читать, или когда вы выполняете самостоятельное соединение (то есть: перечисление одной и той же таблицы более одного раза в предложении FROM).
Подписаться
Синтаксис
Синтаксис ALIAS A COLUMN в SQL:
имя_столбца [AS] псевдоним_имя
ИЛИ
Синтаксис ALIAS A TABLE в SQL:
имя_таблицы [AS] псевдоним_имя
Параметры или аргументы
- имя_столбца
- Исходное имя столбца, которому вы хотите присвоить псевдоним.
- имя_таблицы
- Исходное имя таблицы, которой вы хотите присвоить псевдоним.
- псевдоним
- Временное имя для назначения.
Примечание
- Если alias_name содержит пробелы, вы должны заключить alias_name в кавычки.
- Допустимо использовать пробелы при псевдониме имени столбца. Однако обычно не рекомендуется использовать пробелы при псевдониме имени таблицы.
- alias_name действителен только в рамках оператора SQL.
DDL / DML для примеров
Если вы хотите следовать этому руководству, получите DDL для создания таблиц и DML для заполнения данных. Тогда попробуйте примеры в своей базе данных!
Получить DDL / DML
Пример — как псевдоним имени столбца
Как правило, псевдонимы используются для облегчения чтения заголовков столбцов в наборе результатов.Чаще всего вы используете псевдоним столбца при использовании в запросе агрегатной функции, такой как MIN, MAX, AVG, SUM или COUNT.
Давайте рассмотрим пример того, как использовать псевдоним имени столбца в SQL.
В этом примере у нас есть таблица с именем сотрудников со следующими данными:
сотрудник_номер | фамилия | first_name | зарплата | dept_id |
---|---|---|---|---|
1001 | Смит | Иоанна | 62000 | 500 |
1002 | Андерсон | Джейн | 57500 | 500 |
1003 | Эверест | Брэд | 71000 | 501 |
1004 | Хорват | Джек | 42000 | 501 |
Давайте продемонстрируем, как присвоить столбцу псевдоним.Введите следующий оператор SQL:
Попытайся
SELECT dept_id, COUNT (*) как итого ОТ сотрудников ГРУППА ПО dept_id;
Будет выбрано 2 записи. Вот результаты, которые вы должны увидеть:
dept_id | всего |
---|---|
500 | 2 |
501 | 2 |
В этом примере мы использовали псевдоним поля COUNT (*) как total.В результате при возврате набора результатов в качестве заголовка второго столбца будет отображаться итог. Поскольку в нашем alias_name не было пробелов, нам не нужно заключать alias_name в кавычки.
Теперь давайте перепишем наш запрос, включив пробел в псевдоним столбца:
SELECT dept_id, COUNT (*) КАК «общее количество сотрудников» ОТ сотрудников ГРУППА ПО dept_id;
Будет выбрано 2 записи. Вот результаты, которые вы должны увидеть:
dept_id | всего сотрудников |
---|---|
500 | 2 |
501 | 2 |
В этом примере мы присвоили полю COUNT (*) псевдоним «Всего сотрудников», поэтому оно станет заголовком для второго столбца в нашем наборе результатов.Поскольку в этом псевдониме столбца есть пробелы, «всего сотрудников» в операторе SQL необходимо заключить в кавычки.
Пример — Как присвоить псевдониму имя таблицы
Когда вы создаете псевдоним для таблицы, это происходит либо потому, что вы планируете перечислить одно и то же имя таблицы более одного раза в предложении FROM (например, самосоединение), либо вы хотите сократить имя таблицы, чтобы сделать оператор SQL короче и легче читать.
Давайте рассмотрим пример того, как задать псевдоним имени таблицы в SQL.
В этом примере у нас есть таблица с названием продуктов со следующими данными:
product_id | название_продукта | category_id |
---|---|---|
1 | Груша | 50 |
2 | Банан | 50 |
3 | Оранжевый | 50 |
4 | Яблоко | 50 |
5 | Хлеб | 75 |
6 | Ветчина нарезанная | 25 |
7 | Клинекс | НЕТ |
И таблица с названием категорий со следующими данными:
category_id | имя_категории |
---|---|
25 | Гастроном |
50 | Продукция |
75 | Пекарня |
100 | Товары общего назначения |
125 | Технологии |
Теперь давайте объединим эти 2 таблицы и присвоим каждому из имен псевдонимов.Введите следующий оператор SQL:
Попытайся
ВЫБЕРИТЕ p.product_name, c.category_name ИЗ продуктов AS p Категории ВНУТРЕННЕГО СОЕДИНЕНИЯ AS c ВКЛ p.category_id = c.category_id ГДЕ p.product_name <> 'Груша';
Будет выбрано 5 записей. Вот результаты, которые вы должны увидеть:
название_продукта | имя_категории |
---|---|
Банан | Продукция |
Оранжевый | Продукция |
Яблоко | Продукция |
Хлеб | Пекарня |
Ветчина нарезанная | Гастроном |
В этом примере мы создали псевдоним для таблицы товаров и псевдоним для таблицы категорий .Теперь в этом операторе SQL мы можем ссылаться на таблицу продуктов как p и на таблицу категорий как на c .
При создании псевдонимов таблиц нет необходимости создавать псевдонимы для всех таблиц, перечисленных в предложении FROM. Вы можете создать псевдонимы для любой или всех таблиц.
SQL Server: НИКНЕЙМЫ
В этом руководстве по SQL Server объясняется, как использовать АЛИАСОВ в SQL Server (Transact-SQL) с синтаксисом и примерами.
Описание
SQL Server (Transact-SQL) НИКНЕЙМЫ можно использовать для создания временного имени для столбцов или таблиц.
- НИКНЕЙМЫ КОЛОНК используются для облегчения чтения заголовков столбцов в наборе результатов.
- ТАБЛИЧНЫЕ НИКНЕЙМЫ используются для сокращения вашего SQL, чтобы его было легче читать, или когда вы выполняете самостоятельное соединение (то есть: перечисление одной и той же таблицы более одного раза в предложении FROM).
Синтаксис
Синтаксис псевдонима столбца в SQL Server (Transact-SQL):
имя_столбца [AS] псевдоним_имя
ИЛИ
Синтаксис псевдонима таблицы в SQL Server (Transact-SQL):
имя_таблицы [AS] псевдоним_имя
Параметры или аргументы
- имя_столбца
- Исходное имя столбца, которому вы хотите присвоить псевдоним.
- имя_таблицы
- Исходное имя таблицы, которой вы хотите присвоить псевдоним.
- КАК
- Необязательно. Большинство программистов будут указывать ключевое слово AS при наложении псевдонима имени столбца, но не при псевдониме имени таблицы. Независимо от того, указываете ли вы ключевое слово AS или нет, это не влияет на псевдоним в MySQL. В отличие от других баз данных, это личный выбор MySQL. (В наших примерах будет использоваться AS при псевдониме имени столбца, но опускаться AS при псевдониме имени таблицы.)
- псевдоним
- Временное имя для присвоения столбцу или таблице.
Примечание
- Если alias_name содержит пробелы, вы должны заключить alias_name в кавычки.
- Допустимо использовать пробелы при псевдониме имени столбца. Однако обычно не рекомендуется использовать пробелы при псевдониме имени таблицы.
- alias_name действителен только в рамках оператора SQL.
Пример — НИКНЕЙМЫ столбец
Как правило, псевдонимы используются для облегчения чтения заголовков столбцов в наборе результатов. Например, при объединении полей вы можете использовать псевдоним результата.
Например:
ВЫБЕРИТЕ employee_id, first_name + last_name КАК ИМЯ ОТ сотрудников ГДЕ first_name = 'Сара';
В этом примере мы назвали второй столбец псевдонимом (то есть: first_name и last_name объединены) как NAME. В результате NAME будет отображаться как заголовок для второго столбца, когда будет возвращен набор результатов.Поскольку в нашем alias_name не было пробелов, нам не нужно заключать alias_name в кавычки.
Однако было бы вполне приемлемо написать этот пример, используя следующие кавычки:
ВЫБЕРИТЕ employee_id, first_name + last_name AS "NAME" ОТ сотрудников ГДЕ first_name = 'Сара';
Теперь давайте рассмотрим пример, в котором нам нужно заключить alias_name в кавычки.
Например:
ВЫБЕРИТЕ employee_id, first_name + last_name КАК "ИМЯ СОТРУДНИКА" ОТ сотрудников ГДЕ first_name = 'Сара';
В этом примере мы создали псевдоним для второго столбца (то есть: first_name и last_name объединены) как «EMPLOYEE NAME».Поскольку в этом alias_name есть пробелы, «ИМЯ СОТРУДНИКА» должно быть заключено в кавычки.
Пример — НИКНЕЙМЫ Таблица
Когда вы создаете псевдоним для таблицы, это происходит либо потому, что вы планируете перечислить одно и то же имя таблицы более одного раза в предложении FROM (то есть: самосоединение), либо вы хотите сократить имя таблицы, чтобы сделать инструкцию SQL короче. и легче читать.
Давайте рассмотрим пример того, как использовать псевдоним для имени таблицы.
Например:
ВЫБРАТЬ стр.product_name, inventory.quantity
FROM products p
INNER JOIN inventory
ON p.product_id = inventory.product_id ЗАКАЗАТЬ ПО p.product_name ASC, inventory.quantity DESC;
В этом примере мы создали псевдоним для таблицы products с именем p . Теперь в этом операторе SQL мы можем ссылаться на таблицу products как p .
При создании псевдонимов таблиц нет необходимости создавать псевдонимы для всех таблиц, перечисленных в предложении FROM.Вы можете создать псевдонимы для любой или всех таблиц.
Например, мы могли бы изменить наш пример выше и создать псевдоним для таблицы inventory .
ВЫБРАТЬ p.product_name, inv.quantity
FROM products p.
INNER JOIN inventory inv
ON p.product_id = inv.product_id ЗАКАЗАТЬ ПО p.product_name ASC, inv.quantity DESC;
Теперь у нас есть псевдоним для таблицы inventory с именем inv , а также псевдоним для таблицы products с именем p .
псевдоним SQL, JOIN — с примерами
Что такое псевдоним?
Псевдоним — это сокращение для имени таблицы или столбца.
Псевдонимы сокращают объем ввода, необходимый для ввода запроса.
Сложные запросы с псевдонимами обычно легче читать.
Псевдонимы полезны для JOIN и агрегатов: SUM, COUNT и т. Д.
Псевдоним существует только на время запроса.
Синтаксис псевдонима SQL
Общий синтаксис:
ВЫБЕРИТЕ имя-столбца КАК имя-псевдонима FROM имя-таблицы имя-псевдонима ГДЕ условие
КЛИЕНТ |
---|
Идентификатор |
Имя |
Фамилия |
Город |
Страна |
Телефон |
Примеры псевдонимов SQL
Проблема: Укажите общее количество клиентов в каждой стране.
Отображение результатов с понятными заголовками столбцов.
ВЫБЕРИТЕ КОЛИЧЕСТВО (C.Id) как TotalCustomers, C.Country как Nation ОТ клиента C ГРУППА ПО C.Country
TotalCustomers и Nation являются псевдонимами столбцов.
Таблица Alias (C) в этом примере не особенно полезна.
Результат: 21 запись
Всего клиентов | Нация |
---|---|
3 | Аргентина |
2 | Австрия |
2 | Бельгия |
9 | Бразилия |
3 | Канада |
КЛИЕНТ |
---|
Идентификатор |
Имя |
Фамилия |
Город |
Страна |
Телефон |
ЗАКАЗ | |||
---|---|---|---|
Дата заказа | |||
Номер заказа | |||
CustomerId | |||
TotalAmount |
Задача: Укажите общую сумму, заказанную клиентом
с легко читаемыми заголовками столбцов
ВЫБЕРИТЕ C.Id Идентификатор AS, C.LastName + ',' + C.FirstName AS CustomerName, СУММ (O.TotalAmount) КАК TotalSpent ОТ [Заказ] O ПРИСОЕДИНЯЙТЕСЬ к клиенту C ON O.CustomerId = C.Id ГРУППА ПО C.Id, C.LastName + ',' + C.FirstName ЗАКАЗАТЬ ПО TotalSpent DESC
Псевдонимы значительно упрощают написание предложений JOIN и ORDER BY.
Псевдоним C в C.Id помогает идентифицировать идентификатор клиента, а не идентификатор заказа.
Результатов: 89 записей
Идентификатор | CustomerName | Всего израсходовано |
---|---|---|
63 | Клосс, Хорст | 117483.39 |
71 | Паваротти, Хосе | 115673,39 |
20 | Мендель, Роланд | 113236,68 |
37 | Маккенна, Патрисия | 57317,39 |
65 | Уилсон, Паула | 52245.90 |
Сделайте ваш запрос короче и понятнее
Резюме : в этом руководстве вы узнаете о псевдонимах SQL, включая псевдонимы таблиц и столбцов, чтобы сделать ваши запросы короче и понятнее.
Введение в псевдоним SQL
Псевдоним SQL позволяет назначить таблице или столбцу временное имя во время выполнения запроса.Есть два типа псевдонимов: псевдоним таблицы и псевдоним столбца.
Почти все системы управления реляционными базами данных поддерживают псевдонимы столбцов и таблиц.
Псевдоним столбца
При разработке таблиц мы часто оставляем имена столбцов короткими, например, so_no
для номера заказа на продажу и inv_no
для номера счета-фактуры. Затем мы используем оператор SELECT
для запроса данных из таблицы, вывод не является описательным.
Чтобы присвоить столбцу новое имя в запросе, используйте псевдоним столбца.Псевдоним столбца — это просто временное имя столбца во время выполнения запроса.
См. Следующий запрос:
Язык кода: SQL (язык структурированных запросов) (sql)
ВЫБРАТЬ inv_no AS invoice_no, количество, due_date AS "Срок оплаты", cust_no "Номер клиента" ИЗ счета-фактуры;
В этом примере у нас есть несколько псевдонимов столбцов:
-
invoice_no
— это псевдоним столбцаinv_no
- The
'Due date '
— это псевдоним столбцаdue_date
.Поскольку псевдоним содержит пробел, мы должны использовать одиночные кавычки (‘) или двойные кавычки («), чтобы окружить псевдоним. - Номер клиента
cust_no
. Вы заметили, что мы не использовали ключевое слово AS. Ключевое слово AS необязательно, поэтому его можно опустить.
Мы часто используем псевдонимы столбцов для выражений в списке выбора. Например, следующий запрос использует headcount
в качестве псевдонима столбца выражения, которое возвращает количество сотрудников:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT count (employee_id) численность персонала ИЗ сотрудники;
Посмотреть в действии
Псевдоним столбца можно использовать в любом предложении, вычисленном после предложения SELECT
, например в предложении HAVING.См. Следующий пример:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT Department_id, count (employee_id) численность персонала ИЗ сотрудники ГРУППА ПО Department_id ИМЕЮЩИЕ численность персонала> = 5;
Посмотреть в действии
В предложении HAVING
вместо ссылки на выражение count (employee_id)
мы ссылаемся на псевдоним столбца человек
человек.
Псевдоним таблицы
Мы часто временно назначаем таблице другое имя в операторе SELECT
.Мы называем новое имя таблицы псевдонимом таблицы. Псевдоним таблицы также известен как корреляционное имя .
Обратите внимание, что при назначении псевдонима таблица фактически не переименовывается. Он просто дает таблице другое имя во время выполнения запроса.
На практике мы делаем псевдонимы таблицы короткими и легкими для понимания. Например, e для сотрудников, d для отделов, j для должностей и l для местоположений.
Итак, почему мы должны использовать псевдоним таблицы?
Первая причина использования псевдонима таблицы — сэкономить время на вводе длинного имени и сделать ваш запрос более понятным.См. Следующий запрос:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT d.department_name ИЗ отделы AS d
Посмотреть в действии
d — это псевдоним таблицы департаментов
. Ключевое слово AS необязательно, поэтому его можно опустить.
Если таблица департаментов
имеет псевдоним d, вы можете использовать псевдоним для ссылки на таблицу.
Например, d.department_name
относится к столбцу отдела в таблице департаментов
.Если вы не используете псевдоним таблицы, вы должны использовать Department.department_name
для ссылки на Department_name
, которое длиннее.
Вторая причина использования псевдонима таблицы — это когда вы хотите ссылаться на одну и ту же таблицу несколько раз в одном запросе. Такие запросы часто встречаются во внутреннем соединении, левом соединении и самосоединении.
Следующий запрос выбирает данные из таблиц сотрудников и отделов
, используя предложение внутреннего соединения.
Язык кода: SQL (язык структурированных запросов) (sql)
ВЫБРАТЬ employee_id, имя, Фамилия, название отдела ИЗ сотрудники ВНУТРЕННЕЕ ПРИСОЕДИНЯЙТЕСЬ к отделам ВКЛ СОРТИРОВАТЬ ПО имя;
Посмотреть в действии
Система базы данных выдаст ошибку:
Язык кода: SQL (язык структурированных запросов) (sql)
Столбец «Department_id» в предложении on неоднозначен
Чтобы избежать ошибки, вам необходимо квалифицировать столбец, используя имя таблицы следующим образом:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT employee_id, имя, Фамилия, сотрудники.Department_id, название отдела ИЗ сотрудники ВНУТРЕННЕЕ ПРИСОЕДИНЯЙТЕСЬ к отделам НА Department_id = employee.department_id СОРТИРОВАТЬ ПО имя;
Посмотрите в действии
Чтобы сделать запрос короче, вы используете псевдонимы таблиц, например, e
для сотрудников
table и d
для отделов
таблица в виде следующего запроса:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT employee_id, имя, Фамилия, е.Department_id, название отдела ИЗ сотрудники е ВНУТРЕННЕЕ СОЕДИНЕНИЕ отделов d ON d.department_id = e.department_id СОРТИРОВАТЬ ПО имя;
Посмотреть в действии
Следующий запрос использует самосоединение для присоединения сотрудников к себе.