& — «фоновый процесс»
После того, как Вы введете команду в окне терминала и она завершится, Вы вернетесь в командную строку. Как правило, — это занимает всего минуту или две. Но если вы запустите другое приложение, например gedit, вы не сможете использовать окно терминала, пока не закроете приложение.
Однако вы можете запустить приложение как фоновый процесс и продолжать использовать окно терминала. Для этого просто добавьте амперсанд в командную строку:
gedit command_address.page &
Bash показывает идентификатор процесса, который был запущен, а затем возвращает вас в командную строку. Затем Вы можете продолжать использовать окно терминала.
Подзапросы SQL-примеры
В этом разделе мы рассмотрим, как использовать подзапросы. У нас есть следующие две таблицы: ‘student‘ и ‘marks‘ с общим полем ‘StudentID‘:
студенты
отметки
Теперь нужно составить запрос, определяющий всех студентов, которые получают лучшие отметки, чем студент со StudentID — «V002». Но мы не знаем отметок студента «V002».
Поэтому нужно составить два SQL подзапроса в Select. Один запрос возвращает отметки (хранятся в поле «Total_marks») для «V002», а второй запрос выбирает учеников, которые получают лучшие оценки, чем результат первого запроса.
Первый запрос:
SELECT * FROM `marks` WHERE studentid = 'V002';
Результат запроса:
Результатом запроса будет 80.
Используя результат этого запроса, мы написали еще один запрос, чтобы определить учеников, которые получают оценки лучше, чем 80.
Второй запрос:
SELECT a.studentid, a.name, b.total_marks FROM student a, marks b WHERE a.studentid = b.studentid AND b.total_marks >80;
Результат запроса:
Два приведенных запроса определяют студентов, которые получают лучше оценки, чем студент StudentID «V002» (Abhay).
Можно объединить эти два запроса, вложив один запрос в другой. Подзапрос — это запрос внутри круглых скобок. Рассмотрим подзапроса в SQL пример:
Код SQL:
SELECT a.studentid, a.name, b.total_marks FROM student a, marks b WHERE a.studentid = b.studentid AND b.total_marks > (SELECT total_marks FROM marks WHERE studentid = 'V002');
Результат запроса:
Графическое представление подзапроса SQL:
# Комментарий или «обрезка строк»
Чаще всего вы используете хеш или знак числа (#), чтобы сообщить оболочке, что ниже следует комментарий, и он не должен на него воздействовать. Вы можете использовать его в сценариях оболочки и, — менее полезно, — в командной строке.
# This will be ignored by the Bash shell
Однако он не игнорируется, потому что он добавлен в историю команд.
Вы также можете использовать хеш, чтобы обрезать строковую переменную и удалить некоторый текст с начала. Эта команда создает строковую переменную с именем this_string.
В этом примере мы присваиваем текст «Dave Geek!» переменной.
this_string="Dave Geek!"
Эта команда использует echo для печати слова «How-To» в окне терминала. Он извлекает значение, хранящееся в строковой переменной, через расширение параметра . Поскольку мы добавляем хеш и текст «Dave», он обрезает эту часть строки перед тем, как передать её в echo.
echo How-To ${this_string#Dave}
Это не меняет значение, хранящееся в строковой переменной; это влияет только на то, что отправлено echo. Мы можем использовать echo для печати значения строковой переменной еще раз и проверить это:
echo $this_string
9 ответов
-
0 рейтинг
Дополнительно Некоторые базы данных Sharepoint содержат дефисы в своих именах. Использование квадратных скобок в выражениях SQL позволяет правильно анализировать имена.
ответ дан HSchlarb, с репутацией 41, 22.06.2012
-
0 рейтинг
В незапамятные времена SQL в 1990-х годах это была хорошая практика, так как разработчики SQL пытались добавить каждое слово в словарь в качестве ключевого слова для бесконечной лавины новых функций, и они назвали его черновиком SQL3.
Так что это поддерживает прямую совместимость.
И я обнаружил, что у него есть еще один приятный побочный эффект, он очень помогает, когда вы используете grep в обзорах кода и рефакторинге.
ответ дан Lothar, с репутацией 6799, 5.06.2016
-
0 рейтинг
Скобки можно использовать, когда имена столбцов являются зарезервированными словами.
Если вы программно генерируете оператор SQL из набора имен столбцов, которые вы не контролируете, то вы можете избежать проблем, всегда используя скобки.
ответ дан Torlack, с репутацией 3861, 9.09.2008
-
0 рейтинг
Скобки требуются, если вы используете ключевые слова или специальные символы в именах столбцов или идентификаторах. Вы можете назвать столбец (с пробелом), но тогда вам нужно будет использовать скобки каждый раз, когда вы ссылаетесь на этот столбец.
Новые инструменты добавляют их везде на всякий случай или для согласованности.
ответ дан Michael Haren, с репутацией 73324, 9.09.2008
-
0 рейтинг
Имена столбцов могут содержать символы и зарезервированные слова, которые могут запутать механизм выполнения запросов, поэтому размещение скобок вокруг них всегда предотвращает это. Я полагаю, проще, чем проверять проблему, а затем решать ее.
ответ дан Will, с репутацией 109700, 9.09.2008
-
0 рейтинг
Я полагаю, что это добавляет их туда для согласованности. , , они требуются только в том случае, если в имени столбца есть пробел или специальный символ, но удобнее включать их все время, когда IDE генерирует SQL.
ответ дан Jeff Donnici, с репутацией 2587, 9.09.2008
-
0 рейтинг
Они удобны, если ваши столбцы имеют те же имена, что и ключевые слова SQL, или в них есть пробелы.
Пример:
О нет! Неверный синтаксис рядом с ключевым словом «пользователь». Но это:
Работает нормально.
ответ дан Blorgbeard, с репутацией 73365, 9.09.2008
-
0 рейтинг
Они полезны, если вы (по какой-то причине) используете имена столбцов с определенными символами, например.
не будет работать, но квадратные скобки вокруг имени столбца будут работать
Короче говоря, это способ явного объявления имени объекта; столбец, таблица, база данных, пользователь или сервер.
ответ дан GateKiller, с репутацией 33634, 9.09.2008
-
0 рейтинг
Независимо от соблюдения соглашения об именах, в котором не используются зарезервированные слова, Microsoft добавляет новые зарезервированные слова. Использование скобок позволяет обновить ваш код до новой версии SQL Server, без необходимости сначала редактировать недавно зарезервированные слова Microsoft из вашего клиентского кода. Это редактирование может быть серьезной проблемой. Это может привести к преждевременному выходу на пенсию вашего проекта. , , ,
Скобки также могут быть полезны, когда вы хотите заменить все в сценарии. Если ваш пакет содержит переменную с именем @String и столбец с именем , вы можете переименовать столбец в , не переименовывая @String в @NewString.
ответ дан Bill, с репутацией 119, 7.11.2015
Предложение GROUP BY
Использование позволяет разбивать таблицу на логические группы и применять агрегатные функции к каждой из этих групп. В результате получим единственное значение для каждой группы.
Обычно предложение применяют, если формулировка задачи содержит фразу «для каждого…», «каждому..» и т.п.
Пример 18.Определить суммарный объем деталей, поставляемых каждым поставщиком.
pnum | sum |
---|---|
1 | 600 |
2 | 400 |
3 | 1000 |
Выполнение запроса можно описать следующим образом: СУБД разбивает таблицу PD на три группы, в каждую из групп помещаются строки с одинаковым значением номера поставщика. Затем к каждой из полученных групп применяется агрегатная функция SUM, что дает единственное итоговое значение для каждой группы.
Рассмотрим два похожих примера.
В примере 1 определяется минимальный объем поставки каждого поставщика. В примере 2 определяется объем минимальной поставки среди всех поставщиков.
Пример 1:
Пример 2:
Результаты запросов представлены в следующей таблице:
pnum | min | max |
---|---|---|
1 | 100 | 100 |
2 | 150 | |
3 | 1000 |
Следует обратить внимание, что в первом примере мы можем вывести номера поставщиков, соответствующие объемам поставок, а во втором примере – не можем. Все имена столбцов, перечисленные после ключевого слова SELECT должны присутствовать и в предложении GROUP BY, за исключением случая, когда имя столбца является аргументом агрегатной функции
Все имена столбцов, перечисленные после ключевого слова SELECT должны присутствовать и в предложении GROUP BY, за исключением случая, когда имя столбца является аргументом агрегатной функции.
Однако в предложении могут быть указаны имена столбцов, не перечисленные в списке вывода после ключевого слова .
Если предложение расположено после предложения , то группы создаются из строк, выбранных после применения .
Пример 19.Для каждой из деталей с номерами 1 и 2 определить количество поставщиков, которые их поставляют, а также суммарный объем поставок деталей.
Результат запроса:
dnum | COUNT | SUM |
---|---|---|
1 | 3 | 1250 |
2 | 2 | 450 |
Составные условия отбора (AND, OR и NOT)
Простые условия отбора, описанные в предыдущих разделах, после применения к некоторой строке возвращают значения , или . С помощью правил логики эти простые условия можно объединять в более сложные, как изображено на рис. 11
Обратите внимание на то, что условия отбора, объединяемые с помощью операторов , и , сами могут быть составными
Рис. 11. Синтаксическая диаграмма предложения WHERE
Оператор OR используется для объединения двух условий отбора, из которых или одно, или другое (или оба) должно быть истинным.
Найти служащих, у которых фактический объем продаж меньше планового или меньше $300000.
Для объединения двух условий отбора, оба из которых должны быть истинными, следует использовать оператор .
Найти служащих, у которых фактический объем продаж меньше планового и меньше $300000.
И наконец, можно использовать оператор NOT, чтобы выбрать строки, для которых условие отбора ложно.
Найти служащих, у которых фактический объем продаж меньше планового, но не меньше $150000.
С помощью логических операторов , , и круглых скобок можно создавать очень сложные условия отбора, как в следующем примере.
Найти всех служащих, которые: (а) работают в Денвере, Нью-Йорке или Чикаго; или (б) не имеют менеджера и были приняты на работу после июня 2006 года; или (в) у которых продажи превысили плановый объем, но не превысили $600000.
Лично для меня остается загадкой, зачем может понадобиться такой список имен, однако приведенный пример является иллюстрацией довольно сложного запроса.
Как и в случае с простыми условиями отбора, значения влияют на интерпретацию составных условий отбора, вследствие чего результаты последних становятся не столь очевидными. В частности, результатом операции является значение , а не , как можно было ожидать. Табл. 1-3 являются таблицами истинности для операторов , и соответственно в случае тернарной логики (со значениями ).
Таблица 1. Таблица истинности оператора and
AND |
TRUE |
FALSE |
NULL |
TRUE |
TRUE |
FALSE |
NULL |
FALSE |
FALSE |
FALSE |
FALSE |
NULL |
NULL |
FALSE |
NULL |
Таблица 2. Таблица истинности оператора OR
OR |
TRUE |
FALSE |
NULL |
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
TRUE |
FALSE |
NULL |
NULL |
TRUE |
NULL |
NULL |
Таблица 3. Таблица истинности оператора NOT
NOT |
TRUE |
FALSE |
NULL |
FALSE |
TRUE |
NULL |
В соответствии со стандартом ANSI/ISO, если с помощью операторов , и объединяется более двух условий отбора, то оператор имеет наивысший приоритет, за ним следует и только потом . Однако чтобы гарантировать переносимость, всегда следует использовать круглые скобки; это позволит устранить все возможные неоднозначности.
В стандарте SQL2 (известном также как SQL-92 и SQL: 1992) появилось еще одно логическое условие отбора — проверка . На рис. 12 изображена синтаксическая диаграмма этой проверки. Оператор проверяет значение результата логического выражения.
Рис. 12. Синтаксическая диаграмма оператора IS
Например, проверку
можно использовать, чтобы отыскать строки, в которых нельзя выполнить сравнение из-за того, что либо столбец , либо столбец имеет значение . Подобным образом проверка
позволяет выбрать строки, в которых значение столбца если и превышает значение столбца , то незначительно. Как показывает данный пример, на самом деле проверка не привносит в SQL ничего нового, поскольку ее можно легко переписать в следующем виде.
Хотя проверка IS внесена в стандарт SQL с 1992 года, ее поддерживает очень небольшое количество SQL-продуктов. Так что для обеспечения максимальной переносимости следует избегать подобных проверок и записывать выражения только с помощью операторов , и . Однако избежать проверки удается не всегда.
8 ответов
Лучший ответ
[] Обозначает разделение идентификатора, поэтому, если у вас есть столбец, имя которого содержит пробелы, такие как Order Qty, вам необходимо заключить его в [], например:
Они также должны избегать зарезервированных ключевых слов, используемых в качестве идентификаторов.
44
albertein
30 Сен 2008 в 20:32
Они позволяют использовать ключевые слова (например, дату ) в имени столбца, таблицы и т. Д.
Поскольку это изначально плохая практика, они обычно не включаются. Единственное место, где вы должны увидеть их использование, — это люди, начинающие с sql-запросов, которые не знают ничего лучшего. В остальном они просто загромождают ваш запрос.
2
Ty.
30 Сен 2008 в 20:40
Это нестандартный синтаксис Microsoft SQL Server для «идентификаторов с разделителями». SQL поддерживает разделители для идентификаторов, чтобы имена таблиц, имена столбцов или другие объекты метаданных могли содержать следующее:
- Зарезервированные слова SQL: «Заказ»
- Слова, содержащие пробелы: «Кол-во заказа»
- Слова, содержащие знаки препинания: «Заказ-кол-во»
- Слова, содержащие международные символы
- Имена столбцов чувствительны к регистру: «Порядок» или «Порядок».
Microsoft SQL Server использует квадратные скобки, но это не тот синтаксис, который стандартный SQL использует для идентификаторов с разделителями. Стандартно для разделителей следует использовать двойные кавычки.
В Microsoft SQL Server вы можете включить режим использования стандартных двойных кавычек для разделителей следующим образом:
13
Bill Karwin
30 Сен 2008 в 22:49
Они предназначены для экранирования зарезервированных ключевых слов или недопустимых идентификаторов столбцов.
6
Jorge Ferreira
30 Сен 2008 в 20:32
Все, что находится в скобках, считается одним идентификатором (например, . Его можно использовать для заключения имен в пробелы или для экранирования резервных слов (например, , , ).
2
Orion Adrian
30 Сен 2008 в 20:34
Если вы используете любое имя столбца, такое же, как любое зарезервированное ключевое слово в sql, в этом случае вы можете поместить имя столбца в квадратную скобку, чтобы различать ваше пользовательское имя столбца и существующее зарезервированное ключевое слово.
1
sumon
12 Мар 2013 в 23:51
Если имена таблиц или имена файлов содержат пробелы или дефисы (-) и т. Д., Вы можете получить сообщение «Systax error in FROM clause». Используйте квадратные скобки [], чтобы решить эту проблему.
1
juFo
27 Янв 2016 в 11:18
Они просто разделители, которые позволяют вам помещать специальные символы (например, пробелы) в имя столбца или таблицы, например.
Darrel Miller
30 Сен 2008 в 20:33
Оператор SQL делить (/)
Оператор SQL (/) используется для деления одного выражения или числа на другое.
Пример:
Чтобы получить данные «cust_name», «creation_amt», «receive_amt», «выдающийся_amt» и («receive_amt» * 5/100) в качестве заголовка столбца «комиссия» из таблицы клиентов со следующим условием —
1. «Выдающийся_амт» меньше или равен 4000,
можно использовать следующий оператор SQL:
Выход:
CUST_NAME OPENING_AMT RECEIVE_AMT OUTSTANDING_AMT COMMISSION ---------------------------------------- ---------- - ----------- --------------- ---------- Холмс 6000 5000 4000 250 Болт 5000 7000 3000 350 Карл 4000 6000 3000 300 Стивен 5000 7000 3000 350
SQL Справочник
SQL Ключевые слова
ADD
ADD CONSTRAINT
ALTER
ALTER COLUMN
ALTER TABLE
ALL
AND
ANY
AS
ASC
BACKUP DATABASE
BETWEEN
CASE
CHECK
COLUMN
CONSTRAINT
CREATE
CREATE DATABASE
CREATE INDEX
CREATE OR REPLACE VIEW
CREATE TABLE
CREATE PROCEDURE
CREATE UNIQUE INDEX
CREATE VIEW
DATABASE
DEFAULT
DELETE
DESC
DISTINCT
DROP
DROP COLUMN
DROP CONSTRAINT
DROP DATABASE
DROP DEFAULT
DROP INDEX
DROP TABLE
DROP VIEW
EXEC
EXISTS
FOREIGN KEY
FROM
FULL OUTER JOIN
GROUP BY
HAVING
IN
INDEX
INNER JOIN
INSERT INTO
INSERT INTO SELECT
IS NULL
IS NOT NULL
JOIN
LEFT JOIN
LIKE
LIMIT
NOT
NOT NULL
OR
ORDER BY
OUTER JOIN
PRIMARY KEY
PROCEDURE
RIGHT JOIN
ROWNUM
SELECT
SELECT DISTINCT
SELECT INTO
SELECT TOP
SET
TABLE
TOP
TRUNCATE TABLE
UNION
UNION ALL
UNIQUE
UPDATE
VALUES
VIEW
WHERE
MySQL Функции
Функции строк
ASCII
CHAR_LENGTH
CHARACTER_LENGTH
CONCAT
CONCAT_WS
FIELD
FIND_IN_SET
FORMAT
INSERT
INSTR
LCASE
LEFT
LENGTH
LOCATE
LOWER
LPAD
LTRIM
MID
POSITION
REPEAT
REPLACE
REVERSE
RIGHT
RPAD
RTRIM
SPACE
STRCMP
SUBSTR
SUBSTRING
SUBSTRING_INDEX
TRIM
UCASE
UPPER
Функции чисел
ABS
ACOS
ASIN
ATAN
ATAN2
AVG
CEIL
CEILING
COS
COT
COUNT
DEGREES
DIV
EXP
FLOOR
GREATEST
LEAST
LN
LOG
LOG10
LOG2
MAX
MIN
MOD
PI
POW
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SUM
TAN
TRUNCATE
Функции дат
ADDDATE
ADDTIME
CURDATE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURTIME
DATE
DATEDIFF
DATE_ADD
DATE_FORMAT
DATE_SUB
DAY
DAYNAME
DAYOFMONTH
DAYOFWEEK
DAYOFYEAR
EXTRACT
FROM_DAYS
HOUR
LAST_DAY
LOCALTIME
LOCALTIMESTAMP
MAKEDATE
MAKETIME
MICROSECOND
MINUTE
MONTH
MONTHNAME
NOW
PERIOD_ADD
PERIOD_DIFF
QUARTER
SECOND
SEC_TO_TIME
STR_TO_DATE
SUBDATE
SUBTIME
SYSDATE
TIME
TIME_FORMAT
TIME_TO_SEC
TIMEDIFF
TIMESTAMP
TO_DAYS
WEEK
WEEKDAY
WEEKOFYEAR
YEAR
YEARWEEK
Функции расширений
BIN
BINARY
CASE
CAST
COALESCE
CONNECTION_ID
CONV
CONVERT
CURRENT_USER
DATABASE
IF
IFNULL
ISNULL
LAST_INSERT_ID
NULLIF
SESSION_USER
SYSTEM_USER
USER
VERSION
SQL Server функции
Функции строк
ASCII
CHAR
CHARINDEX
CONCAT
Concat with +
CONCAT_WS
DATALENGTH
DIFFERENCE
FORMAT
LEFT
LEN
LOWER
LTRIM
NCHAR
PATINDEX
QUOTENAME
REPLACE
REPLICATE
REVERSE
RIGHT
RTRIM
SOUNDEX
SPACE
STR
STUFF
SUBSTRING
TRANSLATE
TRIM
UNICODE
UPPER
Функции чисел
ABS
ACOS
ASIN
ATAN
ATN2
AVG
CEILING
COUNT
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MAX
MIN
PI
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SQUARE
SUM
TAN
Функции дат
CURRENT_TIMESTAMP
DATEADD
DATEDIFF
DATEFROMPARTS
DATENAME
DATEPART
DAY
GETDATE
GETUTCDATE
ISDATE
MONTH
SYSDATETIME
YEAR
Функции расширений
CAST
COALESCE
CONVERT
CURRENT_USER
IIF
ISNULL
ISNUMERIC
NULLIF
SESSION_USER
SESSIONPROPERTY
SYSTEM_USER
USER_NAME
MS Access функции
Функции строк
Asc
Chr
Concat with &
CurDir
Format
InStr
InstrRev
LCase
Left
Len
LTrim
Mid
Replace
Right
RTrim
Space
Split
Str
StrComp
StrConv
StrReverse
Trim
UCase
Функции чисел
Abs
Atn
Avg
Cos
Count
Exp
Fix
Format
Int
Max
Min
Randomize
Rnd
Round
Sgn
Sqr
Sum
Val
Функции дат
Date
DateAdd
DateDiff
DatePart
DateSerial
DateValue
Day
Format
Hour
Minute
Month
MonthName
Now
Second
Time
TimeSerial
TimeValue
Weekday
WeekdayName
Year
Другие функции
CurrentUser
Environ
IsDate
IsNull
IsNumeric
SQL ОператорыSQL Типы данныхSQL Краткий справочник
Условный оператор WHERE
Ситуация, когда требуется сделать выборку по определенному условию, встречается очень часто. Для этого в операторе SELECT существует параметр WHERE, после которого следует условие для ограничения строк. Если запись удовлетворяет этому условию, то попадает в результат, иначе отбрасывается.
Общая структура запроса с оператором WHERE
SELECT поля_таблиц FROM список_таблиц WHERE условия_на_ограничения_строк ;
В описанной структуре запроса необязательные параметры указаны в квадратных скобках.
В условном операторе применяются операторы сравнения, специальные и логические операторы.
Операторы сравнения
Операторы сравнения служат для сравнения 2 выражений, их результатом может являться ИСТИНА (1), ЛОЖЬ (0) и NULL.
Оператор | Описание |
---|---|
= | Оператор равенство |
<=> | Оператор эквивалентностьАналогичный оператору равенства, с одним лишь исключением: в отличие от него, оператор эквивалентности вернет ИСТИНУ при сравнении NULL <=> NULL |
<>или!= | Оператор неравенство |
< | Оператор меньше |
<= | Оператор меньше или равно |
> | Оператор больше |
>= | Оператор больше или равно |
Специальные операторы
-
— позволяет узнать равно ли проверяемое значение NULL.
Для примера выведем всех членов семьи, у которых статус в семье не равен NULL:
SELECT * FROM FamilyMembers WHERE status IS NOT NULL;
-
— позволяет узнать расположено ли проверяемое значение столбца в интервале между min и max.
Выведем все данные о покупках с ценой от 100 до 500 рублей из таблицы Payments:
SELECT * FROM Payments WHERE unit_price BETWEEN 100 AND 500;
-
— позволяет узнать входит ли проверяемое значение столбца в список определённых значений.
Выведем имена членов семьи, чей статус равен «father» или «mother»:
SELECT member_name FROM FamilyMembers WHERE status IN ('father', 'mother');
-
— позволяет узнать соответствует ли строка определённому шаблону.
Например, выведем всех людей с фамилией «Quincey»:
SELECT member_name FROM FamilyMembers WHERE member_name LIKE '% Quincey';
Трафаретные символы
В шаблоне разрешается использовать два трафаретных символа:
- символ подчеркивания (_), который можно применять вместо любого единичного символа в проверяемом значении
- символ процента (%) заменяет последовательность любых символов (число символов в последовательности может быть от 0 и более) в проверяемом значении.
Шаблон | Описание |
---|---|
never% | Сопоставляется любым строкам, начинающимся на «never». |
%ing | Сопоставляется любым строкам, заканчивающимся на «ing». |
_ing | Сопоставляется строкам, имеющим длину 4 символа, при этом 3 последних обязательно должны быть «ing». Например, слова «sing» и «wing». |
ESCAPE-символ
ESCAPE-символ используется для экранирования трафаретных символов. В случае если вам нужно найти строки, содержащие проценты (а процент — это зарезервированный символ), вы можете использовать ESCAPE-символ.
Например, вы хотите получить идентификаторы задач, прогресс которых равен 3%:
SELECT job_id FROM Jobs WHERE progress LIKE '3!%' ESCAPE '!';
Если бы мы не экранировали трафаретный символ, то в выборку попало бы всё, что начинается на 3.
Логические операторы
Логические операторы необходимы для связывания нескольких условий ограничения строк.
- Оператор NOT — меняет значение специального оператора на противоположный
- Оператор OR — общее значение выражения истинно, если хотя бы одно из них истинно
- Оператор AND — общее значение выражения истинно, если они оба истинны
- Оператор XOR — общее значение выражения истинно, если один и только один аргумент является истинным
Выведем все полёты, которые были совершены на самолёте «Boeing», но, при этом, вылет был не из Лондона:
SELECT * FROM Trip WHERE plane = 'Boeing' AND NOT town_from = 'London';
Синтаксические обозначения в Transact-SQL (Transact-SQL)
В следующей таблице перечислены и описаны соглашения, которые используются в синтаксисе в справочнике по Transact-SQL.
Многочастные имена
Если не указано иное, все ссылки Transact-SQL на имена объектов базы данных могут быть четырехсоставными именами, записываемыми в следующей форме.
server_name Указывает имя связанного или удаленного сервера.
database_name Указывает имя базы данных SQL Server, если объект хранится на локальном экземпляре SQL Server. Когда объект находится на связанном сервере, аргумент database_name указывает каталог OLE DB.
schema_name Если объект находится в базе данных SQL Server, указывает имя схемы, которая содержит объект. Когда объект находится на связанном сервере, аргумент schema_name указывает имя схемы OLE DB.
object_name Ссылается на имя объекта.
При ссылке на конкретный объект нет необходимости всякий раз указывать сервер, базу данных и схему — компонент Компонент SQL Server Database Engine попытается определить этот объект. Однако, если объект не удается найти, возвращается ошибка.
Чтобы избежать ошибок разрешения имен, при указании объекта области схемы рекомендуется указать имя схемы.
Чтобы пропустить промежуточные узлы, для обозначения их позиций используйте точки. В следующей таблице показаны допустимые форматы имен объектов.
Формат ссылки на объект | Описание |
---|---|
server.database.schema.object | Четырехчастное имя. |
server.database..object | Имя схемы пропущено. |
server..schema.object | Имя базы данных пропущено. |
server. object | Имя базы данных и имя схемы пропущены. |
database.schema.object | Имя сервера пропущено. |
database..object | Имя сервера и имя схемы пропущены. |
schema.object | Имя сервера и имя базы данных пропущены. |
object | Имена сервера, базы данных и схемы пропущены. |
Соглашения примеров кода
Если не указано иное, примеры, приведенные в справочнике по Transact-SQL, были проверены с использованием среды SQL Server Management Studio и настроек по умолчанию для следующих параметров:
- ANSI_NULLS
- ANSI_NULL_DFLT_ON
- ANSI_PADDING
- ANSI_WARNINGS
- CONCAT_NULL_YIELDS_NULL
- QUOTED_IDENTIFIER
Большинство примеров кода в руководстве по Transact-SQL было проверено на серверах, работающих с порядком сортировки с учетом регистра. Тестовые серверы, как правило, использовали кодовую страницу ANSI/ISO 1252.
Многие примеры кода добавляют к строковым константам в Юникоде префикс в виде буквы N. Без префикса N строка преобразуется в кодовую страницу базы данных по умолчанию. Кодовая страница по умолчанию может не распознавать определенные символы.
Ссылки «Относится к»
Ссылка Transact-SQL включает разделы, относящиеся к SQL Server (SQL Server 2008 и выше), База данных SQL Azure и Azure Synapse Analytics.
В верхней части каждой статьи есть раздел, где указано, к каким продуктам относится тема статьи. Если продукт не указан, то компонент, описанный в статье, для данного продукта недоступен. Например, группы доступности были введены в SQL Server 2012 (11.x). В статье о CREATE AVAILABILITY GROUP указано, что эта функция применима к SQL Server (SQL Server 2012 (11.x) и выше), так как она неприменима к SQL Server 2008, SQL Server 2008 R2 или База данных SQL Azure.
К продукту относится общая тема статьи, но в некоторых случаях не все аргументы поддерживаются. Например, пользователи автономной базы данных впервые появились в SQL Server 2012 (11.x). Инструкцию CREATE USER можно применять в любом продукте SQL Server, однако синтаксис WITH PASSWORD не может использоваться с более ранними версиями. Дополнительные разделы Область применения вставляются в описания соответствующих аргументов в статье.
Похожие публикации:
SQL Справочник
SQL Ключевые слова
ADD
ADD CONSTRAINT
ALTER
ALTER COLUMN
ALTER TABLE
ALL
AND
ANY
AS
ASC
BACKUP DATABASE
BETWEEN
CASE
CHECK
COLUMN
CONSTRAINT
CREATE
CREATE DATABASE
CREATE INDEX
CREATE OR REPLACE VIEW
CREATE TABLE
CREATE PROCEDURE
CREATE UNIQUE INDEX
CREATE VIEW
DATABASE
DEFAULT
DELETE
DESC
DISTINCT
DROP
DROP COLUMN
DROP CONSTRAINT
DROP DATABASE
DROP DEFAULT
DROP INDEX
DROP TABLE
DROP VIEW
EXEC
EXISTS
FOREIGN KEY
FROM
FULL OUTER JOIN
GROUP BY
HAVING
IN
INDEX
INNER JOIN
INSERT INTO
INSERT INTO SELECT
IS NULL
IS NOT NULL
JOIN
LEFT JOIN
LIKE
LIMIT
NOT
NOT NULL
OR
ORDER BY
OUTER JOIN
PRIMARY KEY
PROCEDURE
RIGHT JOIN
ROWNUM
SELECT
SELECT DISTINCT
SELECT INTO
SELECT TOP
SET
TABLE
TOP
TRUNCATE TABLE
UNION
UNION ALL
UNIQUE
UPDATE
VALUES
VIEW
WHERE
MySQL Функции
Функции строк
ASCII
CHAR_LENGTH
CHARACTER_LENGTH
CONCAT
CONCAT_WS
FIELD
FIND_IN_SET
FORMAT
INSERT
INSTR
LCASE
LEFT
LENGTH
LOCATE
LOWER
LPAD
LTRIM
MID
POSITION
REPEAT
REPLACE
REVERSE
RIGHT
RPAD
RTRIM
SPACE
STRCMP
SUBSTR
SUBSTRING
SUBSTRING_INDEX
TRIM
UCASE
UPPER
Функции чисел
ABS
ACOS
ASIN
ATAN
ATAN2
AVG
CEIL
CEILING
COS
COT
COUNT
DEGREES
DIV
EXP
FLOOR
GREATEST
LEAST
LN
LOG
LOG10
LOG2
MAX
MIN
MOD
PI
POW
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SUM
TAN
TRUNCATE
Функции дат
ADDDATE
ADDTIME
CURDATE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURTIME
DATE
DATEDIFF
DATE_ADD
DATE_FORMAT
DATE_SUB
DAY
DAYNAME
DAYOFMONTH
DAYOFWEEK
DAYOFYEAR
EXTRACT
FROM_DAYS
HOUR
LAST_DAY
LOCALTIME
LOCALTIMESTAMP
MAKEDATE
MAKETIME
MICROSECOND
MINUTE
MONTH
MONTHNAME
NOW
PERIOD_ADD
PERIOD_DIFF
QUARTER
SECOND
SEC_TO_TIME
STR_TO_DATE
SUBDATE
SUBTIME
SYSDATE
TIME
TIME_FORMAT
TIME_TO_SEC
TIMEDIFF
TIMESTAMP
TO_DAYS
WEEK
WEEKDAY
WEEKOFYEAR
YEAR
YEARWEEK
Функции расширений
BIN
BINARY
CASE
CAST
COALESCE
CONNECTION_ID
CONV
CONVERT
CURRENT_USER
DATABASE
IF
IFNULL
ISNULL
LAST_INSERT_ID
NULLIF
SESSION_USER
SYSTEM_USER
USER
VERSION
SQL Server функции
Функции строк
ASCII
CHAR
CHARINDEX
CONCAT
Concat with +
CONCAT_WS
DATALENGTH
DIFFERENCE
FORMAT
LEFT
LEN
LOWER
LTRIM
NCHAR
PATINDEX
QUOTENAME
REPLACE
REPLICATE
REVERSE
RIGHT
RTRIM
SOUNDEX
SPACE
STR
STUFF
SUBSTRING
TRANSLATE
TRIM
UNICODE
UPPER
Функции чисел
ABS
ACOS
ASIN
ATAN
ATN2
AVG
CEILING
COUNT
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MAX
MIN
PI
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SQUARE
SUM
TAN
Функции дат
CURRENT_TIMESTAMP
DATEADD
DATEDIFF
DATEFROMPARTS
DATENAME
DATEPART
DAY
GETDATE
GETUTCDATE
ISDATE
MONTH
SYSDATETIME
YEAR
Функции расширений
CAST
COALESCE
CONVERT
CURRENT_USER
IIF
ISNULL
ISNUMERIC
NULLIF
SESSION_USER
SESSIONPROPERTY
SYSTEM_USER
USER_NAME
MS Access функции
Функции строк
Asc
Chr
Concat with &
CurDir
Format
InStr
InstrRev
LCase
Left
Len
LTrim
Mid
Replace
Right
RTrim
Space
Split
Str
StrComp
StrConv
StrReverse
Trim
UCase
Функции чисел
Abs
Atn
Avg
Cos
Count
Exp
Fix
Format
Int
Max
Min
Randomize
Rnd
Round
Sgn
Sqr
Sum
Val
Функции дат
Date
DateAdd
DateDiff
DatePart
DateSerial
DateValue
Day
Format
Hour
Minute
Month
MonthName
Now
Second
Time
TimeSerial
TimeValue
Weekday
WeekdayName
Year
Другие функции
CurrentUser
Environ
IsDate
IsNull
IsNumeric
SQL ОператорыSQL Типы данныхSQL Краткий справочник