Команда SELECT.ppt
- Количество слайдов: 62
Команда SELECT
Нужно найти всех Энн из Сан-Франциско и записать имена, фамилии и адреса электронной почты. Лишь бы не пропустить её имя в таблице Данные хранятся где-то в таблице Энн из Сан. Франциско
SELECT * FROM my_contacts; И это еще не конец! У Грега ОЧЕНЬ МНОГО карточек.
SELECT * FROM my_contacts WHERE first_name = ‘Энн’ ; ЕСЛИ Возвращает только те записи, для которых это условие выполняется Команда Искомое проверяет значение значения столбца с именем first_name Если столбец first_name содержит имя «Энн» показать запись
Результат выполнения оператора
Что это за * ? Я – звезда! SELECT FROM my_contacts WHERE first_name = ‘Энн’ ; Звездочка (*) используется для выборки всех столбцов таблицы.
Правила форматирования основных типов Мы апострофы CHAR VARCHAR DATETIME, TIMESTAMP BLOB А мы нет DEC INT
Фанион Стив /4/1970 дения: 1 ата рож Д женат He Джерси л, Ньювер’Мил Гро ngs. com avoredri @onionfl steve арство я: бунт влечени У нники, омышле т: един Ище аристы гит
Ввод в столбец таблицы Гровер’Милл INSERT INTO my_contacts (location) VALUES (‘Гровер’ Милл’); Когда вы ставите перед апострофом префикс , указывающий, что апостроф является частью текста, это называется экранированием.
Команда INSERT с внутренним апострофом 1. Экранирование обратной косой чертой INSERT INTO my_contacts VALUES ('Фанион', 'Стив', 'steve@onionflavoredrings. com', 'M', '1970 -01 -04', 'Панк', 'Гровер ' Милл, NJ ', 'He женат' , 'Бунтарство' , 'Единомышленники, гитаристы');
2. Экранирование удвоением апострофа INSERT INTO my_contacts VALUES ('Фанион', 'Стив', 'steve@onionflavoredrings. com', 'M', '1970 -01 -04', 'Панк', 'Гровер ' ' Милл, NJ ', 'He женат' , 'Бунтарство' , 'Единомышленники, гитаристы');
Вывод SELECT * получается слишком длинным. А если меня интересует только адрес электронной почты? Нельзя ли скрыть лишние столбцы?
SELECT Отбор конкретных столбцов first_name, last_name, email FROM my_contacts;
location time date type rating comments Хочу лучшие пончики с слишком Storbuzz 7: 43 23/4 с корицей 6 Coffee много глазурью, и побыстрее — не пряностей хочу копаться в сотнях Duncan's 8: 56 25/8 с глазурью 5 жирноваты записей. Donuts Duncan's Donuts 19: 58 26/4 с вареньем 6 вчерашние, но вкусные Storbuzz Coffee Krispy King 22: 35 24/4 с глазурью 7 21: 39 26/9 с вареньем 6 теплые, но не горячие мало варенья Storbuzz Coffee Krispy King 7: 48 23/4 20: 56 25/11 шоколадный 10 кекс с глазурью 8 с зефиром! кленовый сироп
1. Можно провести поиск по типу пончиков В выборку включается столбец rating для поиска высшей оценки, а также столбец location с названием заведения SELECT location, rating FROM ponch_list WHERE type=‘с глазурью’; Все выбранные записи будут иметь значение type равное значению с глазурью
Результат первого запроса locat r ion a t i n g Dunc 5 an' s
2. Можно провести поиск по оценке В выборку включается столбец type для проверки типа, а также столбец location с названием заведения SELECT location, type FROM ponch_list WHERE rating =10; Все выбранные записи имеют высшую оценку
Результат второго запроса location Starbuzz Coffee Krispy King type шоколадный кекс с глазурью Starbuzz Coffee с глазурью Duncan's Doauts шоколадный кекс
Маловато пользы от таких запросов. Я могу выбрать любой из двух вариантов и перерыть результаты, но в таблице многие тысячи записей. . . А я хочу пончик прямо сейчас!
Объединение условий Теперь достаточно выбрать только название заведения SELECT location FROM ponch_list WHERE type = 'с глазурью' АND Ключевое слово AND объединят два условия rating = 10;
Результат запроса location rating location type Duncan's Donuts 5 Starbuzz Coffee Storbuzz Coffee 7 Krispy King с глазурью Krispy King 8 Starbuzz Coffee с глазурью Duncan's Doauts шоколадный кекс Storbuzz Coffee 10 Duncan's Donuts 8 location Starbuzz Coffee шоколадный кекс
drink_ name main amo unt 1 second amou nt 2 directions Терновник тоник 1. 5 ананасовый сок 1 взболтать со льдом, разлить по бокалам, украсить лимонной цедрой Голубая луна содовая 1. 5 черничный сок 0. 75 взболтать со льдом, разлить по бокалам, украсить лимонной цедрой Вот тебе на персиковый нектар 1 ананасовый сок 1 взболтать со льдом, разлить по стаканам Лаймовый физз Спрайт 1. 5 сок лайма 0. 75 взболтать со льдом, разлить по бокалам Поцелуй вишневый сок 2 абрикосовый нектар 7 подавать со льдом и соломинкой
Горячее золото персиковый нектар 3 апельсиновый сок 6 влить в кружку горячий апельсино вый сок, добавить персиковый нектар Одинокое дерево содовая 1. 5 вишневый сок 0. 75 взболтать со льдом, разлить по бокалам Борзая содовая 1. 5 грейпфрутовы й сок 5 подавать со льдом, тщательно взболтать Бабье лето яблочный сок 2 горячий чай б налить сок в кружку, добавить горячий чай Лягушка холодный чай 1. 5 лимонад 5 подавать на льду с ломтиком лайма Сода плюс содовая 2 виноградный сок 1 взболтать в бокале, подавать без льда
Поиск числовых значений SELECT drink_name FROM easy_drinks WHERE main = 'содовая' AND amount 1 = 1. 5; Напитки, содержащие 1, 5 унции содовой
Напитки, содержащие 2 унции содовой
А как было бы здорово, если бы в одном запросе можно было найти все напитки из таблицы easy_drinks, содержащие более 1 унции содовой…
SELECT drink_name FROM easy_drinks WHERE main = 'содовая' AND amount 1 >1; Напитки, содержащие более 1 унции содовой
Операторы сравнения равно не равно меньше больше меньше или равно больше или равно
А работают операторы сравнения с текстом? Например, если мне понадобится найти все напитки, названия которых начинаются с конкретной буквы?
Операторы сравнения при поиске текстовых данных SELECT drink_name FROM easy_drinks WHERE c drink_name >= 'Г' AND drink_name < 'Д' ; Запрос возвращает напитки, начинающиеся с буквы Г и следующих букв, но при этом первая буква предшествует Д.
Бармена попросили сделать коктейль с вишневым соком. Два запроса? Неэффективно. Наверняка их можно как -нибудь объединить.
запрос возвращает записи, у которых выполняется любое из указанных условий.
Оператор OR действительно полезен, но я не понимаю, почему мы не воспользовались AND? Истинными должно быть должны быть ВСЕ ХОТЯ БЫ ОДНО из условий условия
doughnut_ratings location time date type rating comments Krispy с почти 8: 50 27/9 10 King глазурью идеально Duncan's жирноват 8: 59 25/8 NULL 6 Donuts ы вчерашни Starbuzz 19: 3 с 24/5 5 е, но Coffee 5 корицей вкусные Duncan's 19: 0 с мало 26/4 7 Donuts 3 вареньем варенья
Какой будет результат? SELECT type FROM doughnut__ratings WHERE location = 'Krispy King' AND rating = 10;
Какой будет результат? SELECT type FROM doughnut__ratings WHERE location = 'Krispy King' OR rating = 10;
Какой будет результат? SELECT type FROM doughnut__ratings WHERE location = 'Krispy King' AND rating = 3;
Какой будет результат? SELECT type FROM doughnut__ratings WHERE location = 'Krispy King' OR rating = 3;
Какой будет результат? SELECT type FROM doughnut__ratings WHERE location = ‘Snappy Baget' AND rating = 10;
Какой будет результат? SELECT type FROM doughnut__ratings WHERE location = ‘Snappy Baget' OR rating = 10;
Какой будет результат? SELECT type FROM doughnut__ratings WHERE location = ‘Snappy Baget' AND rating = 3;
Какой будет результат? SELECT type FROM doughnut__ratings WHERE location = ‘Snappy Baget' OR rating = 3;
Поиск пустых значений DRINK_INFO drink_name cost curbs color ice Выходной NULL 14 NULL Д Дыхание 2. 9 7. 2 коричне H дракона вый calories 50 NULL
SELECT drink_name FROM drink_info WHERE Calories=NULL; Не работает, потому что никое значение не равно NULL – неопределенному значению
SELECT drink_name FROM drink_info WHERE Calories=0; Не работает, потому что NULL и нуль – это разные значения
SELECT drink_name FROM drink_info WHERE Calories=‘NULL’; Не работает, NULL не является текcтовой строкой
SELECT drink_name FROM drink_info WHERE Calories IS NULL; Прямая выборка возможна только с использованием ключевых слов IS NULL.
Набирать все эти OR так утомительно! SELECT * FROM my__contacts WHERE location = 'Сан-Франциско, СА' OR location = 'Сан-Хосе, СА' OR location = 'Лос-Анджелес, СА' OR И так далее. . .
SELECT * FROM my_contacts WHERE location LIKE ‘%CA‘; Знак % в апострофах указывает, что вас интересуют все значения столбца location, которые заканчиваются сокращением «СА» .
Специальные символы обозначает любое количество произвольных символов SELECT first_name FROM my_contacts WHERE first_name LIKE '%им'; Запрос возвращает имена, которые состоят из любого количества символов заканчиваются на «им» —Джим, Тим и т. д
Специальные символы обозначает один произвольных символов SELECT first_name FROM my_contacts WHERE first_name LIKE ‘_им'; Запрос возвращает имена, которые состоят из одной буквы и «им» —Ким, Тим и т. д.
drink_name Название Терновник Голубая луна Вот тебе на Лаймовый физз Поцелуй Горячее золото Одинокое дерево Борзая Бабье лето Лягушка Сода плюс Cost Carbs Цена Углев 3 2. 5 3. 5 2. 5 5. 5 3. 2 3. 6 4 2. 8 2. 6 3. 8 8. 4 3. 2 8. 6 5. 4 42. 5 32. 1 4. 2 14 7. 2 21. 5 4. 7 Color Цвет желтый синий оранжевый зеленый фиолетовый оранжевый красный желтый коричневый бронзовый красный Ice Calories Лед Калор Д Д Д Н 33 12 35 24 171 135 17 50 30 80 19
SELECT drink__name FROM drink_info WHERE calories >= 30 AND calories <= 60; Результат запроса включаем напитки у которых калорийность больше или равна 30, но меньше или равна 60.
Указание диапазона SELECT drink_name FROM drink_info WHERE calories BETWEEN 30 AND 60; Включает напитки у которых калорийность больше или равна 30, но меньше или равна 60.
Таблица black_book Date_name Rating Алекс оригинально Джеймс скучно Иэн потрясающе Борис так себе Мелвин пресно Эрик убого Энтони восхитительно Сэмми неплохо Айвен ужасно
SELECT date_name FROM black_book WHERE Rating=‘оригинально’ OR Rating=‘потрясающе’ OR Отдельное условие для …; каждой положительной оценки
За ключевым словом IN SELECT date_name следует набор допустимых FROM black_book значений. WHERE rating IN (‘оригинально’, ‘потрясающе’, ‘восхитительно’, ’неплохо’); Набор положительных оценок.
Ключевые слова NOT IN означают, что результam не SELECT date_name входит в FROM black_book заданный набор. WHERE rating NOT IN (‘оригинально’, ‘потрясающе’, ‘восхитительно’, ’неплохо’);
SELECT drink_name FROM drink__info WHERE NOT carbs BETWEEN 3 AND 5; SELECT date_name FROM black_book WHERE NOT date_name LIKE 'A%';
NOT вычисляет условие, логически противоположное заданному


