Целью этой статьи является быстрое и точное освоение оператора SELECT в базе данных MySQL.
Основной синтаксис оператора SELECT в MySQL:
Ниже приведен фрагмент в кавычках:
ВЫБЕРИТЕ [STRAIGHT_JOIN] [SQL_SMALL_RESULT]
[SQL_BIG_RESULT] [HIGH_PRIORITY]
[РАЗЛИЧНЫЕ|РАЗЛИЧНЫЕ|ВСЕ]
select_list
[INTO {OUTFILE|DUMPFILE} 'имя_файла' параметры_экспорта]
[ИЗ table_references [ГДЕ где_определение]
[ГРУППА ПО названию столбца,...] [НАЛИЧИЕ где_определение]
[ORDER BY {unsighed_integer|col_name|formura} [ASC|DESC],...]
[ОГРАНИЧЕНИЕ [смещение,] строк] [ПРОЦЕДУРА имя_процедуры]]
Как видно из этого базового синтаксиса, самым простым оператором SELECT является SELECT select_list. Фактически, используя этот простой оператор SELECT, вы также можете выполнять множество ожидаемых функций. Во-первых, вы можете использовать его для выполнения любой операции, поддерживаемой MySQL. пример: SELECT 1+1 вернет 2; во-вторых, вы также можете использовать его для присвоения значений переменным. В PHP с помощью этой функции оператора SELECT вы можете свободно использовать функции MySQL для выполнения различных задач. Программа PHP и присваивает значения переменным. Во многих случаях вы обнаружите, что MySQL имеет гораздо более мощные функции, чем PHP.
STRAIGHT_JOIN, SQL_SMALL_RESULT, SQL_BIG_RESULT и HIGH_PRIORITY — это расширения MySQL для ANSI SQL92. Если оптимизатор объединяет таблицы в неоптимальном порядке, использование STRAIGHT_JOIN может ускорить запрос.
SQL_SMALL_RESULT и SQL_BIG_RESULT — это набор относительных ключевых слов. Их необходимо использовать с GROUP BY, DISTINCT или DISTINCTROW. SQL_SMALL_RESULT сообщает оптимизатору, что результат будет очень маленьким, требуя от MySQL использовать временную таблицу для хранения итоговой таблицы вместо использования сортировки, и наоборот, SQL_BIG_RESULT сообщает оптимизатору, что результат будет очень маленьким, требуя от MySQL использовать сортировку вместо; изготовление временной таблицы.
HIGH_PRIORITY предоставит SELECT более высокий приоритет, чем оператор, обновляющий таблицу, что позволит ему выполнить приоритетный и быстрый запрос.
Использование вышеупомянутых четырех ключевых слов действительно довольно неясно. К счастью, в большинстве случаев мы можем не использовать эти четыре ключевых слова в MySQL.
DISTINCT и DISTINCTROW обеспечивают самую простую, но полезную фильтрацию набора результатов, возвращаемого запросом. То есть набор результатов содержит только отдельные строки. Здесь следует отметить, что для ключевых слов DISTINCT и DISTINCTROW значения NULL равны, сколько бы значений NULL ни было, выбирается только одно. Использование ALL является излишним. Это не влияет на генерацию набора результатов.
INTO {OUTFILE|DUMPFILE} 'file_name' Export_options, записывает результирующий набор в файл. Файл создается на хосте сервера и не может уже существовать. Синтаксис части команды Export_options такой же, как и в предложениях FIELDS и LINES инструкции LOAD DATAINFILE. Мы обсудим это подробно в статье MySQL Advanced_LOAD DATA. Разница между ключевыми словами OUTFILE и DUMPFILE заключается в том, что в файл записывается только одна строка без окончания столбца или строки.
список выбора: он может содержать одно или несколько следующих элементов:
1. «*» означает, что все столбцы расположены в порядке создания таблицы.
2. Список названий столбцов, упорядоченный в требуемом пользователем порядке.
3. Для замены имени столбца можно использовать псевдоним в следующей форме: имя столбца как заголовок_столбца.
4. Выражения (имена столбцов, константы, функции или любая комбинация имен столбцов, констант и функций, связанных с арифметическими или побитовыми операторами).
5. Внутренние функции или агрегатные функции.
6. Любая комбинация вышеперечисленных пунктов.
FROM: определяет, какие таблицы используются в команде SELECT. Этот элемент обычно требуется, если только список select_list не содержит имена столбцов (например, только константы, арифметические выражения и т. д.). Если в записи таблицы имеется несколько таблиц, разделяйте их запятыми. Порядок таблиц после ключевого слова FROM не влияет на результаты.
Именам таблиц могут быть присвоены соответствующие псевдонимы, чтобы сделать выражения понятными. Синтаксис здесь: имя_таблицы [AS] имя_псевдонима. Например:
выберите t1.name,t2.salary от сотрудника как t1,info как t2, где t1.name=t2.name совпадает с select t1.name,t2.salary от сотрудника t1,info t2, где t1.name= t2.name Полностью эквивалентен.
Все остальные ссылки на таблицу, например, в предложенияхwhere и предложениях, должны использовать псевдонимы, а псевдонимы не могут начинаться с цифры.
Предложениеwhere задает условия поиска, и его метод применения в операторах вставки, обновления и удаления точно такой же, как его метод применения в операторах выбора. Условия поиска следуют за ключевым словом где. Если пользователь хочет использовать в операторе несколько условий поиска, их можно соединить с помощью и или или. Основной синтаксис условий поиска: выражение [not] выражение_оператора; [not] выражение [not] как «строка_сопоставления»; выражение [not] равно нулю; выражение [not] между выражением и выражением; ] имя_столбца join_operator имя_столбца; [не] логическое_выражение.
и: используется для соединения двух условий и возврата результата, когда оба условия истинны. Если в одном операторе используется несколько логических операторов, оператор and всегда имеет приоритет, если только пользователь не использует круглые скобки для изменения порядка операций.
или: используется для соединения двух условий и возврата результата, когда любое из условий имеет значение ИСТИНА. Когда в одном операторе используется несколько логических операторов, оператор или обычно действует после оператора и. Конечно, пользователь может использовать круглые скобки, чтобы изменить порядок операций.
Между: ключевое слово, используемое для определения нижнего предела диапазона, за которым следует значение верхнего предела диапазона. Диапазон, в котором @val между x и y, включает первое и последнее значения. Если первое значение, указанное после между, больше второго значения, запрос не возвращает никаких строк.
имя_столбца: имя столбца, используемое при сравнении. При возникновении двусмысленности обязательно укажите имя таблицы, в которой находится столбец.
Compare_operator: оператор сравнения. См. таблицу ниже:
Ниже приведены фрагменты цитат:
значение символа
= равно
> больше, чем
< меньше чем
>= больше или равно
<= меньше или равно
!= не равно
<> не равно
При сравнении данных типов char и varchar «<» означает ближе к началу алфавита, а «>» означает ближе к концу алфавита. Вообще говоря, строчные буквы больше, чем прописные, а прописные больше, чем цифры, но это может зависеть от порядка сравнения операционной системы на сервере.
Конечные пробелы игнорируются при сравнении. Например, «Дирк» равно «Дирк».
При сравнении дат «<» означает «раньше», а «>» — «позже».
При использовании операторов сравнения для сравнения символьных данных и данных даты и времени все данные должны быть заключены в кавычки.
выражение: может быть именем столбца, константой, функцией или любой комбинацией имен столбцов или констант, а также функцией, связанной с арифметическими операторами или побитовыми операторами. Арифметические операторы показаны в следующей таблице:
Вот приведенный фрагмент:
значение символа
+ знак плюс
- знак минус
* знак умножения
/ Знак деления
равен нулю: используется при поиске значения NULL.
Like: ключевое слово, вы можете использовать Like для символов, varchar и даты и времени (исключая секунды и миллисекунды). В MySQL Like также можно использовать для числовых выражений.
Когда пользователи ищут данные даты и времени, лучше всего использовать ключевое слово Like, поскольку полная запись даты и времени содержит множество компонентов даты. Например, пользователь добавляет значение «9:20» в столбец «время прибытия», но не находит его в предложении, где «время прибытия = 9:20», поскольку MySQL преобразует введенные данные в «1 января 1900 года, 9:20 утра». . Однако предложение, в котором Arrival_time, например «%9:20%», может его найти.
boolean_expression: выражение, возвращающее значение «истина» или «ложь».
match_string: строка, состоящая из символов и подстановочных знаков, заключенных в одинарные или двойные кавычки, представляет собой шаблон соответствия. Подстановочные знаки показаны в следующей таблице:
Ниже приведен фрагмент в кавычках:
значение символа
% Строка из 0 или более символов.
_ любой отдельный символ
not: отрицание любого логического выражения или ключевого слова,
Например, нуль, между и т. д.
Предложения group by и Does используются в операторе выбора.
Таблицу можно разделить на группы и вернуть группы, соответствующие условию наличия.
Синтаксис: начало оператора выбора.
группировать по [всем] агрегатным_свободным_выражениям [,агрегатным_свободным_выражениям]*
[имеет условия поиска]
в конце оператора выбора
: указывает группу, на которую будет разделена таблица. Если в элемент таблицы выбора включена агрегатная функция, для каждой группы рассчитывается общее значение. Результаты этих итогов отображаются в новых столбцах вместо новых строк. Пользователи могут ссылаться на эти новые столбцы итогов в предложении «имеет». Функции агрегирования, такие как avg, count, max, min и sum, можно использовать в select_list перед группировкой. Таблицы можно группировать по любой комбинации столбцов.
all: расширение Transact-SQL, которое включает в результаты все группы, даже те, которые исключены предложениемwhere. Если в то же время используется предложение «иметь», значение всего будет сведено на нет.
агрегат_свободное_выражение: выражение, не содержащее агрегатной функции. Расширение Transact-SQL позволяет выполнять группировку по выражению без агрегатной функции при группировке по имени столбца.
наличие: установка условий для предложения group by, аналогично тому, какwhere устанавливает условия для оператора select. Условия поиска наличия могут включать выражения агрегатных функций. В остальном критерии поиска такие же, как и критерии поиска.
Упорядочить по: упорядочить результаты по столбцам. На столбцы, выводимые командой select, можно ссылаться по именам столбцов, псевдонимам столбцов или позициям столбцов. Например: выберите идентификатор как myid, имя как мое имя из группы mytable по идентификатору, выберите идентификатор как myid, имя как мое имя из группы mytable по myid, выберите идентификатор как myid, имя как мое имя из группы mytable по 1. Эти три предложения полностью эквивалент. Конечно, мы не согласны с третьим использованием, которое плохо скажется на читабельности программы. Для сортировки по убыванию добавьте ключевое слово DESC в предложение order by перед именем столбца, который вы хотите отсортировать. По умолчанию используется порядок по возрастанию, но вы можете указать его явно, используя ключевое слово ASC.
Предложение ограничения: используется для ограничения количества строк, возвращаемых оператором выбора. limit принимает 1 или 2 числовых параметра. Если задано 2 параметра, первый указывает смещение первой возвращаемой строки, а второй указывает максимальное количество возвращаемых строк. Смещение начальной строки равно 0 (а не 1). Если указан аргумент, он указывает максимальное количество строк, возвращаемых со смещением 0. Другими словами, предел 5 и предел 0,5 полностью эквивалентны.
Что касается значения ключевого слова процедуры, я не очень понимаю, что оно поддерживает хранимые процедуры, а сам MySQL не поддерживает хранимые процедуры. Кажется, оно зарезервировано для будущих потребностей расширения.