практическая работа. Практическая работа - для слияния. Практическая работа 1 sql создание базы данных и таблиц Цель
Скачать 3.41 Mb.
|
Вычисляемые поля (столбцы)На примере мы рассмотрели сегодня математическое вычисляемое поле. Здесь хотелось бы добавить, что использовать можно не только операцию умножения (*), но и вычитание (-), и сложение (+), и деление (/). Синтаксис следующий: SELECT имя_столбца_1, имя_столбца_2, имя_столбца_1*имя_столбца_2 AS имя_вычисляемого_столбца FROM имя_таблицы; Второй нюанс - ключевое слово AS, мы его использовали для задания имени вычисляемого столбца. На самом деле с помощью этого ключевого слова задаются псевдонимы для любых столбцов. Зачем это нужно? Для сокращения и читаемости кода. Например, наше представление могло бы выглядеть так: CREATE VIEW report_vendor AS SELECT A.id_product, A.quantity, B.price, A.quantity*B.price AS summa FROM magazine_incoming AS A, prices AS B WHERE A.id_product= B.id_product AND id_incoming= (SELECT id_incoming FROM incoming WHERE id_vendor=2); Согласитесь, что так гораздо короче и понятнее. ПредставленияСинтаксис создания представлений мы уже рассматривали. После создания представлений, их можно использовать так же, как таблицы. То есть выполнять запросы к ним, фильтровать и сортировать данные, объединять одни представления с другими. С одной стороны это очень удобный способ хранения частоприменяемых сложных запросов (как в нашем примере). Но следует помнить, что представления - это не таблицы, то есть они не хранят данные, а лишь извлекают их из других таблиц. Отсюда, во-первых, при изменении данных в таблицах, результаты представления так же будут меняться. А во-вторых, при запросе к представлению происходит поиск необходимых данных, то есть производительность СУБД снижается. Поэтому злоупотреблять ими не стоит. Практическая работа № 12 Тема: Строковые функции SqlЦель: научиться работать со строковыми функциями Эта группа функций позволяет манипулировать текстом. Строковых функций много, мы рассмотрим наиболее употребительные. CONCAT(str1,str2...) Возвращает строку, созданную путем объединения аргументов (аргументы указываются в скобках - str1,str2...). Например, в нашей таблице Поставщики (vendors) есть столбец Город (city) и столбец Адрес (address). Предположим, мы хотим, чтобы в результирующей таблице Адрес и Город указывались в одном столбце, т.е. мы хотим объединить данные из двух столбцов в один. Для этого мы будем использовать строковую функцию CONCAT(), а в качестве аргументов укажем названия объединяемых столбцов - city и address: SELECT CONCAT(city, address) FROM vendors; Обратите внимание, объединение произошло без разделения, что не очень читабельно. Давайте подправим наш запрос, чтобы между объединяемыми столбцами был пробел: SELECT CONCAT(city, ' ', address) FROM vendors; Как видите, пробел считается тоже аргументом и указывается через запятую. Если объединяемых столбцов было бы больше, то указывать каждый раз пробелы было бы нерационально. В этом случае можно было бы использовать строковую функцию CONCAT_WS(разделитель, str1,str2...), которая помещает разделитель между объединяемыми строками (разделитель указывается, как первый аргумент). Наш запрос тогда будет выглядеть так: SELECT CONCAT_WS(' ', city, address) FROM vendors; Результат внешне не изменился, но если бы мы объединяли 3 или 4 столбца, то код значительно бы сократился. INSERT(str, pos, len, new_str) Возвращает строку str, в которой подстрока, начинающаяся с позиции pos и имеющая длину len символов, заменена подстрокой new_str. Предположим, мы решили в столбце Адрес (address) не отображать первые 3 символа (сокращения ул., пр., и т.д.), тогда мы заменим их на пробелы: SELECT INSERT(address, 1, 3, ' ') FROM vendors; То есть три символа, начиная с первого, заменены тремя пробелами. LPAD(str, len, dop_str) Возвращает строку str, дополненную слева строкой dop_str до длины len. Предположим, мы хотим, чтобы при выводе городов поставщиков они располагались бы справа, а пустое пространство заполнялось бы точками: SELECT LPAD(city, 15, '.') FROM vendors; Обратите внимание, значение len ограничивает количество выводимых символов, т.е. если название города будет длиннее 15 символов, то оно будет обрезано. RPAD(str, len, dop_str) Возвращает строку str, дополненную справа строкой dop_str до длины len. Предположим, мы хотим, чтобы при выводе городов поставщиков они располагались бы слева, а пустое пространство заполнялось бы точками: SELECT RPAD(city, 15, '.') FROM vendors; Обратите внимание, значение len ограничивает количество выводимых символов, т.е. если название города будет длиннее 15 символов, то оно будет обрезано. LTRIM(str) Возвращает строку str, в которой удалены все начальные пробелы. Эта строковая функция удобна для корректного отображения информации в случаях, когда при вводе данных допускаются случайные пробелы: SELECT LTRIM(city) FROM vendors; В нашем случае лишних пробелов не было, поэтому и результат внешне мы не увидим. RTRIM(str) Возвращает строку str, в которой удалены все конечные пробелы: SELECT RTRIM(city) FROM vendors; В нашем случае лишних пробелов не было, поэтому и результат внешне мы не увидим. TRIM(str) Возвращает строку str, в которой удалены все начальные и конечные пробелы: SELECT TRIM(city) FROM vendors; LOWER(str) Возвращает строку str, в которой все символы переведены в нижний регистр. С русскими буквами работает некорректно, поэтому лучше не применять. Например, давайте применим эту функцию к столбцу city: SELECT city, LOWER(city) FROM vendors; Видите, какая абракадабра получилась. А вот с латиницей все в порядке: SELECT LOWER('CITY'); UPPER(str) Возвращает строку str, в которой все символы переведены в верхний регистр. С русскими буквами так же лучше не применять. А вот с латиницей все в порядке: SELECT UPPER(email) FROM customers; LENGTH(str) Возвращает длину строки str. Например, давайте узнаем сколько символов в наших адресах поставщиков: SELECT address, LENGTH(address) FROM vendors; LEFT(str, len) Возвращает len левых символов строки str. Например, пусть в городах поставщиков выводится только первые три символа: SELECT name, LEFT(city, 3) FROM vendors; RIGHT(str, len) Возвращает len правых символов строки str. Например, пусть в городах поставщиков выводится только последние три символа: SELECT name, RIGHT(city, 3) FROM vendors; REPEAT(str, n) Возвращает строку str n-количество раз. Например: SELECT REPEAT(city, 3) FROM vendors; REPLACE(str, pod_str1, pod_str2) Возвращает строку str, в которой все подстроки pod_str1 заменены подстроками pod_str2. Например, пусть мы хотим, чтобы в городах поставщиков вместо длинного 'Санкт-Петербург' выводилось короткое 'СПб': SELECT REPLACE(city, 'Санкт-Петербург', 'СПб') FROM vendors; REVERSE(str) Возвращает строку str, записанную в обратном порядке: SELECT REVERSE(city) FROM vendors; LOAD_FILE(file_name) Эта функция читает файл file_name и возвращает его содержимое в виде строки. Например, создайте файл proverka.txt, напишите в нем какой-нибудь текст (лучше латиницей, чтобы не было проблем с кодировками), сохраните его на диске С и сделайте следующий запрос: SELECT LOAD_FILE("C:/proverka"); Обратите внимание, необходимо указывать абсолютный путь к файлу. Как уже упоминалось строковых функций гораздо больше, но даже некоторые рассмотренные здесь применяются крайне редко. Поэтому на этом закончим их рассмотрение и перейдем к более используемым функциям даты и времени. Практическая работа № 13 |