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

  • DepNo Name 2

  • TabNo

  • Лекции и практики (1). Курс лекций и материалы для практических занятий


    Скачать 1.01 Mb.
    НазваниеКурс лекций и материалы для практических занятий
    Дата17.03.2023
    Размер1.01 Mb.
    Формат файлаdocx
    Имя файлаЛекции и практики (1).docx
    ТипКурс лекций
    #996812
    страница14 из 75
    1   ...   10   11   12   13   14   15   16   17   ...   75

    Извлечение данных из таблиц


    Извлечение данных из таблиц БД выполняется с помощью команды SELECT (селекция). Эта команда не изменяет данные в БД. Результатом вы- полнения команды SELECT является временная таблица, которая помещается в курсор(специальную область памяти СУБД) и обычно выводится на экран.

          1. Синтаксис команды SELECT

    Упрощённый синтаксис этой команды:

    SELECT [ ALL | DISTINCT ] { * | <список выбора> } FROM {<имя таблицы> [<алиас>] }.,..

    [ WHERE <условие>]

    [ GROUP BY {<имя поля> | <выражение>}.,.. ] [ HAVING <условие> ]

    [ UNION [ALL] SELECT …]

    [ ORDER BY {<имя поля> | <целое> [ ASC| DESC ] }.,..] ;

    Расшифровка элементов описания приведена в табл. 3.2. Порядок кон- струкций в команде SELECT не может быть изменён.

    Таблица 3.2. Элементы команды SELECT


    Элемент

    Описание

    <список выбора>

    Список элементов, разделённых запятыми:

    <выражение> [AS] <алиас>

    Выражение может включать имена полей, знаки операций, вызовы функций и константы. Алиас это название столбца результата.

    <имя таблицы>

    Имя или синоним имени таблицы или представления.

    <алиас>

    Временный синоним имени таблицы, определённый только внутри данного запроса.

    <условие>

    Условие, которое может быть истинным или ложным для каждой записи из таблицы (таблиц), определённых предложением FROM.

    <имя поля>

    Имя поля (столбца) таблицы.

    <целое>

    Число без десятичной точки. Номер элемента в <списке выбора>.

    Список выбора (вывода) определяет схему результата (временной табли- цы). Список выбора может быть модифицирован одним из двух ключевых слов: DISTINCT предикат удаления из результирующей таблицы повторов строк.

    ALL – предикат, обратный к DISTINCT. Это значение используется по умолча- нию, его можно не указывать.

    Рассмотрим основные предложения (фразы) команды SELECT:

    SELECT – после этого ключевого слова указывается список выбора – список выражений, которые будут образовывать результирующую таблицу. Вы- ражению можно сопоставить временный синоним (алиас), который будет названием поля результирующей таблицы, например:

    (sal*0.87+bonus) AS salary

    Если надо вывести все поля из тех таблиц, к которым обращается данный запрос, можно указать символ *. В этом случае сначала будут выведены поля таблицы, стоящей первой в предложении FROM, затем – второй и т.д. Поля, относящиеся к одной таблице, будут выводиться в том порядке, в каком они были указаны при создании таблицы.

    FROM – в этой части указывается имя таблицы (имена таблиц), из которой бу- дут извлекаться данные.

    WHERE эта часть содержит условия выбора отдельных записей.

    GROUP BY – объединяет в одну группу все записи с одинаковым значением указанного поля (комбинации полей). Каждой такой группе в результи- рующей таблице соответствует одна запись.

    HAVING позволяет указать условия выбора для групп записей.


    Порядок выполнения операции SELECT такой:

    1. Выбор из указанной во фразе FROM таблицы тех записей, которые удовле- творяют условию отбора (WHERE).

    2. Группировка полученных записей (GROUP BY).

    3. Выбор тех групп, которые удовлетворяют условию отбора групп (HAVING).

    4. Сортировка записей в указанном порядке (ORDER BY).

    5. Извлечение из записей полей, заданных в списке выбора, и формирование результирующей таблицы.

    Если во фразе FROM указаны две и более таблицы, то эта последовательность действий выполняется для декартова произведения указанных таблиц.

    ORDER BY – упорядочивает результирующие строки по значению одного или нескольких полей: ASC – по возрастанию, DESC – по убыванию.

    Отношения для примеров приведены в таблицах 3.3-3.5.

    Таблица 3.3. Отношение "Сотрудники" (Emp)

    TabNo

    DepNo

    Name

    Post

    Salary

    Born

    Phone

    988

    1

    Рюмин В.П.

    начальник отдела

    48500.0

    01.02.1970

    115-26-12

    909

    1

    Серова Т.В.

    вед. программист

    48500.0

    20.10.1981

    115-91-19

    829

    1

    Дурова А.В.

    экономист

    43500.0

    03.10.1978

    115-26-12

    819

    1

    Тамм Л.В.

    экономист

    43500.0

    13.11.1985

    115-91-19

    100

    2

    Волков Л.Д.

    программист

    46500.0

    16.10.1982

    null

    110

    2

    Буров Г.О.

    бухгалтер

    42880.0

    22.05.1975

    115-46-32

    023

    2

    Малова Л.А.

    гл. бухгалтер

    59240.0

    24.11.1954

    114-24-55

    130

    2

    Лукина Н.Н.

    бухгалтер

    42880.0

    12.07.1979

    115-46-32

    034

    3

    Перова К.В.

    делопроизводитель

    32000.0

    24.04.1988

    null

    002

    3

    Сухова К.А.

    начальник отдела

    48500.0

    08.06.1948

    115-12-69

    056

    5

    Павлов А.А.

    директор

    80000.0

    05.05.1968

    115-33-44

    087

    5

    Котова И.М.

    секретарь

    35000.0

    16.09.1990

    115-33-65

    088

    5

    Кроль А.П.

    зам.директора

    70000.0

    18.04.1974

    115-33-01



    DepNo

    Name

    2

    Бухгалтерия

    3

    Отдел кадров

    4

    Отдел технического контроля

    1

    Плановый отдел

    5

    Администрация





    TabNo

    Name

    Born

    Sex

    988

    Вадим

    03.05.1995

    м

    110

    Ольга

    18.07.2001

    ж

    023

    Илья

    19.02.1987

    м

    023

    Анна

    26.12.1989

    ж

    909

    Инна

    25.01.2008

    ж

    909

    Роман

    21.11.2006

    м

    909

    Антон

    06.03.2009

    м




    Таблица 3.4. Отношение "Отделы" (Depart) Таблица 3.5.Отношение "Дети"(Children)

    Примеры:

    1. Вывести все записи (строки) из таблицы "Отделы":

    SELECT *

    FROM depart;


    DEPNO

    NAME

    2

    Бухгалтерия

    3

    Отдел кадров

    4

    Отдел технического контроля

    1

    Плановый отдел

    5

    Администрация

    1. Вывести список сотрудников с указанием должности и зарплаты за вычетом подоходного налога, упорядочить по отделам и фамилиям:

    SELECT depno, name, post, salary*0.87 AS sal FROM emp

    ORDER BY depno, name;


    DEPNO

    NAME

    POST

    SAL

    1

    Дурова А.В.

    экономист

    37845.0

    1

    Рюмин В.П.

    начальник отдела

    42195.0

    1

    Серова Т.В.

    вед. программист

    42195.0

    1

    Тамм Л.В.

    экономист

    37845.0

    2

    Буров Г.О.

    бухгалтер

    37305.6

    2

    Волков Л.Д.

    программист

    40455.0

    2

    Лукина Н.Н.

    бухгалтер

    37305.6

    2

    Малова Л.А.

    гл. бухгалтер

    51538.8

    3

    Перова К.В.

    делопроизводитель

    27840.0









    1. Вывести список должностей с окладом в порядке убывания оклада:

    SELECT DISTINCT post, salary FROM emp

    ORDER BY salary DESC;


    POST

    SALARY

    директор

    80000

    зам.директора

    70000

    гл. бухгалтер

    59240

    вед. программист

    48500

    начальник отдела

    48500





    секретарь

    35000

    делопроизводитель

    32000

          1. Операторы и предикаты

    Расширение возможностей команд языка SQL достигается за счёт приме- нения различных операторов, предикатов и функций.

    Операторы:

      • символьные: || конкатенация строк;

      • арифметические: +, –, *, /;

      • сравнения: =, >, <, >=, <=, <>;

      • логические: AND, OR, NOT. Примеры:

    1. Составить список сотрудников второго и третьего отдела, имеющих зарпла- ту выше 40000 рублей после уплаты подоходного налога 13%:

    SELECT depno, name, salary*0.87 AS sal FROM emp

    WHERE salary*0.87>40000 AND (depno=2 OR depno=3) ORDER BY name;


    DEPNO

    NAME

    SALARY

    2

    Волков Л.Д.

    40455.0

    2

    Малова Л.А.

    51538.8

    3

    Сухов К.А.

    42195.0

    1. Составить список сотрудников первого отдела с указанием должности:

    SELECT post || ' ' || name AS ename FROM emp

    WHERE depno=1 ORDER BY 1 DESC;


    ENAME

    экономист Тамм Л.В.

    экономист Дурова А.В.

    начальник отдела Рюмин В.П.

    вед. программист Серова Т.В.

    Обратите внимание на добавление пробела между полями: || ' ' ||.

    Предикаты,используемыевкомандах:


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