Главная страница
Навигация по странице:

  • Практическая работа № 12 Тема: Строковые функции Sql Цель

  • Практическая работа № 13

  • практическая работа. Практическая работа - для слияния. Практическая работа 1 sql создание базы данных и таблиц Цель


    Скачать 3.41 Mb.
    НазваниеПрактическая работа 1 sql создание базы данных и таблиц Цель
    Анкорпрактическая работа
    Дата14.02.2023
    Размер3.41 Mb.
    Формат файлаdocx
    Имя файлаПрактическая работа - для слияния.docx
    ТипПрактическая работа
    #936408
    страница12 из 18
    1   ...   8   9   10   11   12   13   14   15   ...   18

    Вычисляемые поля (столбцы)


    На примере мы рассмотрели сегодня математическое вычисляемое поле. Здесь хотелось бы добавить, что использовать можно не только операцию умножения (*), но и вычитание (-), и сложение (+), и деление (/). Синтаксис следующий:
    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
    1   ...   8   9   10   11   12   13   14   15   ...   18


    написать администратору сайта