SELECT
Он используется для выборки нуля или более строк из одной или нескольких таблиц, хранимых процедур, представлений БД. В большинстве приложений SELECT является наиболее часто используемым оператором SELECT пользователь описывает ожидаемый набор данных, но не указывает, какие физические операции должны быть произведены для получения этого набора. Определение для запроса оптимального плана является задачей СУБД, а точнее — оптимизатора.
Формат запроса с использованием данного оператора:
SELECT список полей FROM список таблиц WHERE условия…
Основные ключевые слова, относящиеся к запросу SELECT :
- WHERE — используется для определения, какие строки должны быть выбраны или включены в GROUP BY.
- GROUP BY — используется для объединения строк с общими значениями в элементы меньшего набора строк.
- ORDER BY — используется для определения, какие столбцы используются для сортировки результирующего набора данных.
Содержание
Примеры
Для таблицы T запрос
вернёт все столбцы всех строк данной таблицы. Для той же таблицы запрос
вернёт значения столбца C1 всех строк таблицы— в терминах реляционной алгебры можно сказать, что была выполнена проекция. Для той же таблицы запрос
вернёт значения всех столбцов всех строк таблицы, у которых значение поля C1 равно ‘1’— в терминах реляционной алгебры можно сказать, что была выполнена выборка, так как присутствует ключевое слово WHERE. Последний запрос
вернёт те же строки, что и первый, однако результат будет отсортирован в обратном порядке (Z-A) из-за использования ключевого слова ORDER BY с полем C1 в качестве поля сортировки. Этот запрос не содержит ключевого слова WHERE, поэтому он вернёт всё, что есть в таблице. Несколько элементов ORDER BY могут быть указаны разделённые запятыми [напр. ORDER BY C1 ASC, C2 DESC] для более точной сортировки.
Ограничение возвращаемых строк
- курсоров, или
- введением оконных функций в оператор SELECT
Оконная функция ROW_NUMBER()
Существуют различные оконные функции. ROW_NUMBER() OVER может быть использована для простого ограничения числа возвращаемых строк. Например, для возврата не более десяти строк:
ROW_NUMBER может быть недетерминированным: если key не уникален, каждый раз при выполнении запроса возможно присвоение разных номеров строкам, у которых key совпадает. Когда key уникален, каждая строка будет всегда получать уникальный номер строки.
оконная функция RANK()
Функция RANK() OVER работает почти так же, как ROW_NUMBER, но может вернуть более чем n строк при определённых условиях. Например, для получения top-10 самых молодых людей:
Данный код может вернуть более чем 10 строк. Например, если есть два человека с одинаковым возрастом, он вернёт 11 строк.
Нестандартный синтаксис
Не все СУБД поддерживают вышеуказанные оконные функции. При этом многие имеют нестандартный синтаксис для решения тех же задач. Ниже представлены варианты простого ограничения выборки для различных СУБД:
| Производитель/СУБД | Синтаксис ограничения |
|---|---|
| DB2 | (Поддерживает стандарт начиная с DB2 Version 6) |
| FIRST 10 * FROM T | |
| FIRST 10 * FROM T | |
| Interbase | SELECT * FROM T ROWS 10 |
| Также SELECT TOP 10 [PERCENT] * FROM T ORDER BY col | |
| LIMIT 10 | |
| LIMIT 10 | |
| LIMIT 10 | |
| Oracle | (Поддерживает стандарт начиная с Oracle8i) |
| Также SELECT * from T WHERE ROWNUM <= 10 |
См. также
DDL, SELECT | INSERT | UPDATE | MERGE | DELETE | JOIN | UNION | CREATE | ALTER | DROP
Сравнение синтаксиса
Типы реализаций
Flat file | Deductive | Dimensional | Иерархическая | Объектно-ориентированная | Temporal
Свободные системы
Ingres | PostgreSQL | Sav Zigzag |
Wikimedia Foundation . 2010 .
Полезное
Смотреть что такое «SELECT» в других словарях:
sélect — sélect, ecte ou (inv.) select [ selɛkt ] adj. • 1831; sélecte h. XVIIe; angl. select « choisi »; lat. selectus ♦ Fam. et vieilli Choisi, distingué (en parlant des gens, des réunions mondaines). ⇒ chic, élégant. Le « monde select et pourri de l… … Encyclopédie Universelle
select — sélect, ecte ou (inv.) select [ selɛkt ] adj. • 1831; sélecte h. XVIIe; angl. select « choisi »; lat. selectus ♦ Fam. et vieilli Choisi, distingué (en parlant des gens, des réunions mondaines). ⇒ chic, élégant. Le « monde select et pourri de l… … Encyclopédie Universelle
Select — оператор языка Он используется для выборки нуля или более строк из одной или нескольких таблиц, хранимых процедур, представлений БД. В большинстве приложений SELECT является наиболее часто используемым оператором SELECT пользователь описывает… … Википедия
Select — may refer to: * Select (SQL), a keyword in SQL * , an HTML element * Select (magazine), a British music magazine * MTV Select , a television program * Cable select, a setting on ATA devices that allows position on the cable to determine the role… … Wikipedia
select — SELÉCT, Ă, selecţi, te, adj. Ales, deosebit, distins. – Din fr. sélect, engl. select. Trimis de LauraGellner, 17.07.2007. Sursa: DEX 98 Select ≠ vulgar Trimis de siveco, 03.08.2004. Sursa: Antonime SELÉCT adj. v. ales … Dicționar Român
select — adj Select, elect, picked, exclusive can mean marked by a superior character or quality which distinguishes the person, the thing, or the group so qualified from others (as in value, excellence, or favor). Select implies that the person or thing… … New Dictionary of Synonyms
Select — Álbum de Kim Wilde Publicación 1982 Género(s) Synthpop Discográfica RAK Records Productor(es) Ricky Wilde … Wikipedia Español
Select — Se*lect , a. [L. selectus, p. p. of seligere to select; pref. se aside + levere to gather. See
Select — Se*lect , v. t. [imp. & p. p.
select — I adjective accepted, adopted, appointed, best, capital, choice, chosen, culled, designated, elected, electus, elite, embraced, excellent, exceptional, exclusive, exquisitus, first rate, good, handpicked, matchless, named, picked, popular,… … Law dictionary
Что такое селект
![]()
Откройте возможности нейронного машинного перевода PROMT
PROMT.One — это облачное приложение – бесплатный онлайн-переводчик для перевода с языка на язык на основе нейронных сетей (Neural Machine Translation), словарь с транскрипцией, разговорники и многое другое. Наслаждайтесь правильным и точным переводом на английский, немецкий и еще 20+ языков.
Смотрите перевод слов и устойчивых выражений, транскрипцию и произношение в онлайн cловаре. Словари PROMT для английского, немецкого, французского, русского, испанского, итальянского и португальского языков включают миллионы слов и словосочетаний, самую современную разговорную лексику, которая постоянно отслеживается и пополняется нашими лингвистами.
Учите употребление слов и выражений в разных Контекстах. Миллионы реальных примеров на английском, немецком, испанском, французском помогут вам в изучении иностранных языков и подготовке домашних заданий.
Переводите в любом месте и в любое время с помощью бесплатного мобильного переводчика PROMT.One для iOS и Android. Попробуйте голосовой и фотоперевод.
Установите языковые пакеты для офлайн-перевода на мобильных устройствах и универсальный плагин PROMT АГЕНТ для Windows с подпиской PREMIUM.
Блеск и нищета стандартных селектов
Примечание переводчика: Мы продолжаем публиковать материалы, которые будут полезны веб-разработчикам, дизайнерам и верстальщикам. В прошлых топиках мы рассмотрели принципы создания анимаций в вебе и использование формата SVG. Сегодня речь пойдёт об элементе select или просто о «селекте».
В этой статье мы внимательно взглянем на тег <select> и рассмотрим некоторые тонкости и подводные камни, о которых нужно знать, если вы решили использовать нестандартные раскрывающиеся списки, отличающиеся внешним видом и функциональностью от встроенных в браузер. Спойлер: лучше так не делать.
Понять дизайнеров
В чём разница
Предположим, вы создаёте раскрывающийся список с помощью HTML. Без применения стилей он будет выглядеть так:

Не самая красивая вещь в мире, но своё дело она делает. Давайте взглянем на этот элемент повнимательнее и рассмотрим то, как он выглядит в разных браузерах на операционных системах OS X Yosemite и Windows 8:
| OS | Browser | Closed | Open |
|---|---|---|---|
| Windows 8 | IE10 | ![]() |
![]() |
| Windows 8 | Chrome | ![]() |
![]() |
| Windows 8 | Opera | ![]() |
![]() |
| Windows 8 | Firefox | ![]() |
![]() |
| OSX Yosemite | Safari | ![]() |
![]() |
| OSX Yosemite | Firefox | ![]() |
![]() |
| OSX Yosemite | Chrome | ![]() |
![]() |
| OSX Yosemite | Opera | ![]() |
![]() |
Наведём резкость
Отличий между селектами в рамках одной ОС практически нет, так как браузеры используют системные элементы управления, а также настройки отображения из ОС.
Пример: посмотрите как браузеры на OS X Yosemite «рендерят» раскрывающиеся списки. Если пользователь выберет в качестве темы оформления Blue, то у селектов блок со стрелочками справа будет голубым. А если будет выбрана тема Graphite, блок со стрелочками будет серым:

Тот факт, что все селекты, чекбоксы и радиокнопки, не только в браузере, но и во всей ОС выполнены в одном стиле, помогает пользователям лучше понимать функциональность разных элементов, появляющихся на сайте.
Различия селектов в двух рассмотренных выше ОС на первый взгляд не особенно велики, но с точки зрения UX — весьма заметны. Ключевой момент — на Windows в окне выбора стрелка всегда смотрит вниз, а на OS X представлены две стрелки вверх и вниз. Подход Apple в этом случае предпочтительнее — если пользователь выбрал какой-то элемент в середине списка, а затем решил выбрать другой, то при клике на селект в OS X ему покажут выбранный элемент посередине, а соседние варианты выше и ниже него. В Windows же селекты всегда выглядит как «выпадающий» список. Но его главная задача — не «выпадать», а «раскрываться» и позволять удобно выбирать варианты.
Почему нативные селекты превосходны
Элемент <select> — это «трудный ребёнок» HTML. Причина этого — в отношении к нему браузера. Когда пользователь кликает на селект, браузер начинает вести себя не как обычно, чтобы отобразить варианты для выбора. Если на сайте есть селект, который расположен в самом низу, у нижнего края браузера, то при щелчке на такой селект браузер присваивает ему z-index , который может накладываться на все другие z-index , и даже может отрисовать список вариантов за границами окна. Посмотрите на скриншот ниже:

Если бы селект из примера был не стандартным браузерным, а кастомным, то он бы попросту не сработал. Точнее, вы бы не увидели список вариантов — он бы просто обрезался границей окна браузера. Было бы даже непонятно, нажалась кнопка или нет.
Ещё одна интересная тема — как селекты ведут себя в тач-устройствах и ОС. Взглянем на пару скриншотов:


Кастомизация должна быть гибридной
Фронтенд-разработчики должны по мере возможности общаться с дизайнерами по поводу предлагаемых решений, и в таких беседах следует обращать внимание коллег на следующие моменты:
- Никогда не соглашайтесь на полную кастомизацию. Браузеры особым, трепетным, образом обрабатывают элементы <select> — старайтесь всегда сохранять это поведение. Поэтому для создания нестандартного поля выбора нужно использовать тег <select> . Нужно донести до дизайнера все минусы полной кастомизации, под которой подразумевается отказ от <select> и создание чего-то типа этого.
- Когда вы убедили дизайнера использовать <select> , следует перейти к объяснению того факта, что контролировать внешний вид выпадающего списка вариантов вы не можете. Это дело браузера. Точка. Контролировать можно только вид кнопки для открытия списка.
- На следующем шаге нужно решить, используете ли вы стандартный селект или всё-таки кастомизируете кнопку для открытия списка. И если кастомизируете кнопку, то в каком стиле — с одной стрелкой, как в Windows, или с двумя в стиле Apple? Применение второго варианта приведёт к путанице для пользователей Windows, которые привыкли к «однострелочному» варианту. Детектирование браузера — отдельная тема. С точки зрения UX куда более мудрым решением будет использование стандартной «нестилизованной» версии селекта — она будет адаптироваться к любым ОС и браузерам, а у пользователей не возникнет никаких трудностей.
Гибридная техника
Гибридная техника заключается в использовании контейнера-обёртки для элемента <select> . Назовём этот контейнер .selectContainer . Он должен иметь overflow-x: hidden; , а у элемента <select> внутри контейнера должна быть ширина около 160%, чтобы скрыть «дефолтные» стрелки браузера или ОС. Контейнер используется, чтобы создать для пользователя иллюзию взаимодействия с обычным <select> . В примере ниже в псевдоэлементе ::after контейнера .selectContainer стоит просто текст «icon», но его можно было бы заменить фоновым изображением (по клику на картинку откроется редактирование в «песочнице» на Codepen):

Заключение
Главная мысль статьи — обязательно обсуждайте с дизайнером нестандартные селекты, и лучше это делать до того, как дизайн уйдёт «в продакшн». Важно понимать плюсы и минусы «нативных» и кастомизированных селектов, а также то, как с каждым из них взаимодействует браузер.
Чтобы решить, использовать ли стандартные или кастомные селекты, нужно задать себе (или дизайнеру) вопрос:
«Будет ли <select> включать большое количество опций? Что может пойти не так? Будут ли все варианты видны в открытом списке вариантов?» Если ответ «нет», то следует использовать стандартную нестилизованную или элегантную гибридную версию. Если ответ положительный, то стоит назвать ваш элемент «блоком с выпадающими вариантами» и оформить его так, чтобы не было даже намёка на сходство со стандартными селектами и их поведением.
Если при создании раскрывающихся списков не использовать элемент <select> , то страдает семантика и уровень доступности интерфейса для пользователей. Изменение внешнего вида элементов форм нежелательно для людей со слабым зрением. Отказ от <select> также усложняет чтение с экрана. Этот элемент похож на дорожный знак — если автолюбитель на машине пересечёт границу, и в новой стране знак «уступи дорогу» будет выглядеть совсем по-другому — это его явно смутит и может привести к ошибкам в вождении. Не нужно помогать людям ошибаться. Пользователям нужен консистентный внешний вид всех приложений, с которыми они работают. Для них попасть на новый сайт — это как поехать в чужую страну.
Поэтому, прежде чем начать разрабатывать кастомизированные селекты, следует подумать дважды.















