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

  • Список сотрудников (таблица

  • Таблица учета выданной зарплаты (таблица Paies )

  • Таблица расшифровки каждой зарплаты по статьям (таблица Itemspay )

  • Пример заполнения таблицы Staff

  • Пример заполнения таблицы

  • Практика SQL 2.1. Создать таблицы, используя sql запросы. Связать таблицы в схеме данных или в таблицах в режиме конструктора. Заполните таблицы в режиме таблицы


    Скачать 153.19 Kb.
    НазваниеСоздать таблицы, используя sql запросы. Связать таблицы в схеме данных или в таблицах в режиме конструктора. Заполните таблицы в режиме таблицы
    Анкорlaba sql
    Дата06.01.2022
    Размер153.19 Kb.
    Формат файлаdocx
    Имя файлаПрактика SQL 2.1.docx
    ТипСтатья
    #324771

    Представленная ниже структура БД позволяет вести учет сотрудников, работающих на предприятии, а также хранить все выданные заработные платы с их расшифровкой по доходным и расходным статьям (например, оклад, районный коэффициент, подоходный налог и т.д.).

    Создать таблицы, используя SQL запросы. Связать таблицы в схеме данных или в таблицах в режиме конструктора. Заполните таблицы в режиме таблицы.



    Связь между таблицами осуществляется с помощью следующих пар полей с типом связи «один-ко-многим» соответственно:

    1. Staff. Tnumber- Paies. Tnumber.

    2. Paies.Code_pay - Items_pay.Code_pay.

    Таблица 1Список сотрудников (таблица Staff)

    Название поля

    Тип поля

    Описание поля

    Т number

    Integer

    Табельный номер сотрудника (уникальный)

    Surname

    Character

    Фамилия сотрудника

    Name

    Character

    Имя сотрудника

    Lastname

    Character

    Отчество сотрудника

    Birthday

    Date

    Дата рождения сотрудника

    Phone

    Numeric

    Контактный телефон сотрудника

    Post

    Character

    Должность сотрудника

    Type_post

    Character

    Тип сотрудника (ИТР, служащий, рабочий)

    Dateinput

    Date

    Дата устройства на работу

    Таблица 2 Таблица учета выданной зарплаты (таблица Paies)

    Название поля

    Тип поля

    Описание поля

    Т number

    Integer

    Табельный номер сотрудника, получающего зарплату

    Code_pay

    Integer

    Код выданной зарплаты (уникальный)

    Pay day

    Date

    Дата выдачи зарплаты

    Sum_pay

    Numeric

    Общая сумма зарплаты на руки

    Таблица 3 Таблица расшифровки каждой зарплаты по статьям (таблица Itemspay)

    Название поля

    Тип поля

    Описание поля

    Code_pay

    Integer

    Код выданной зарплаты

    Item_pay

    Character

    Название статьи, по которой начисляют зарплату (как доход, так и расход)

    Item sum

    Numeric

    Сумма на получение или на вычет из зарплаты

    Code Itrems

    Integer

    Ключевое поле таблицы

    Таблица 4 Пример заполнения таблицы Staff

    Т number

    Surname

    Name

    Lastname

    Birthday

    Phone

    Post

    Type_post

    Dateinput

    1

    Иванов

    Иван

    Петрович

    12.01.1971

    124563

    Бухгалтер

    Служащий

    12.04.2000

    2

    Сидоров

    Василий

    Михайлович

    14.06.1954

    451263

    Начальник

    отдела

    кадров

    ИТР

    14.11.1999

    3

    Васильков

    Петр

    Аркадьевич

    14.06.1981

    145236

    Специалист

    отдела

    кадров

    Служащий

    30.11.2000

    67

    Артемьев

    Иван

    Васильевич

    05.12.1970

    365462

    Главный инженер

    ИТР

    10.02.1998

    4

    Соянов

    Савел

    Игнатьевич

    15.05.1981

    121212

    Строитель

    Рабочий

    25.06.1980

    11

    Ушаков

    Виктор

    Семенович

    30.05.1970

    156462

    Бухгалтер

    Рабочий

    18.11.2003

    15

    Иванова

    Анна

    Михайловна

    12.03.1940

    145214

    Строитель

    Служащий

    12.11.1979

    Таблица 5 Пример заполнения таблицы Paies(фрагмент)

    Т number

    Code_pay

    Pay day

    Sum_pay

    1

    1

    01.01.2003

    2544.00

    1

    2

    01.02.2003

    4521.00

    1

    3

    01.03.2003

    12542.00

    2

    4

    01.01.2003

    1452.00

    2

    5

    01.02.2003

    2145.00

    2

    6

    01.03.2003

    2135.00

    3

    7

    01.01.2003

    4511.00

    3

    8

    01.02.2003

    1542.00

    3

    9

    01.03.2003

    1542.00

    4

    10

    01.03.2003

    2456.00

    Таблица 6 Пример заполнения таблицы Itemspay(фрагмент)

    Code_pay

    Item_pay

    Item sum

    Code Items

    1

    Премия

    124.00

    1

    1

    Налог

    -451.00

    2

    1

    Оклад

    1457.00

    3

    1

    Поощрение

    4512.00

    4

    1

    Оплата учебы

    145.00

    5

    2

    Оклад

    4656.00

    6

    2

    Налог

    -415.00

    7

    2

    Поощрение

    326.00

    8

    3

    Оклад

    1654.00

    9

    3

    Премия квартальная

    1213.00

    10

    10

    За бездетность

    -154.00

    11

    10

    Оклад

    1456.00

    12

    10

    Премия разовая

    1245.00

    13

    10

    Налог подоходный

    -452.00

    14

    Часть 1

    Сортировка

    1. Вывести все сведения о сотрудниках из таблицы Staff и отсортировать результат по табельному номеру.

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

    ORDER BY- сортирует результаты запроса на основании данных, содержащихся в одном или нескольких столбцах, по умолчанию сортировка выполняется по возрастанию. Если это предложение не указано, результаты запроса не будут отсортированы.

    ASC- сортировка данных по возрастанию значений поля, после которого стоит ключевое слово ASC.

    DESC- сортировка данных по убыванию значений поля, после которого стоит ключевое слово DESC.

    Если сортировка выполняется по нескольким полям, то порядок сортировки следующий:

    • выполняется сортировка строк по первому указанному полю;

    • внутри групп повторяющихся значений первого поля выполняется сортировка строк по второму полю;

    • и т.д.

    Выбор некоторых полей из двух (трех) таблиц

    1. Вывести табельные номера, даты получения зарплаты и ее расклад по статьям, результат отсортировать по табельному номеру сотрудника (рис. 4):

    T Number

    Pay_day

    ltem_pay

    Item sum

    1

    01.01.2003

    Премия

    124.00

    1

    01.01.2003

    Налог

    -451.00

    1

    01.01.2003

    Оклад

    1457.00

    1

    01.01.2003

    Поощрение

    4512.00

    1

    01.01.2003

    Оплатаучебы

    145.00

    1

    01.02.2003

    Оклад

    4656.00

    1

    01.02.2003

    Налог

    -415.00

    1

    01.02.2003

    Поощрение

    326.00

    1

    01.03.2003

    Оклад

    1654.00

    1

    01.03.2003

    Премия квартальная

    1213.00

    4

    01.03.2003

    Забездетность

    -154.00

    4

    01.03.2003

    Оклад

    1456.00

    4

    01.03.2003

    Премияразовая

    1245.00

    4

    01.03.2003

    Налогподоходный

    -452.00

    Рис. 4. Результат запроса с выбором полей из таблиц

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

    Если в запросе участвует несколько таблиц и в них встречаются поля с одинаковыми названиями, то обязательно рядом с полем указывать название таблицы, из которой берется поле. Например: Staff. Tnumber

    AND- "логическое И", выполняет роль объединения двух условий и возвращает результат ИСТИНА, оба условия также возвращают результат ИСТИНА. В результат запроса помещаются только те строки, которые соответствуют условиям=ИСТИНА, записанным после ключевого слова WHERE.

    Связь таблиц в запросе - несмотря на то, что в базе данных установлены связи между таблицами, при построении запроса нужно также указать правила связи между таблицами.

    Самый простой способ связать таблицы: в условии WHERE указать условия равенства полей связи пары таблиц; если нужно объединить три и более таблиц, то нужно перечислить пары полей связи и объединить их "логическими И".

    Условие неточного совпадения

    1. Вывести список сотрудников с должностью, название которой начинается на 'главный' (рис. 5):



    Surname

    Name

    Lastname

    Post

    Артемьев

    Иван

    Васильевич

    Главный инженер

    Рис. 5. Результат запроса с условием неточного совпадения

    ' ... ' - для выделения в запросе строковых значений используются одинарные кавычки. Например, 'главный'.

    1. Вывести список сотрудников, которые получали заработную плату
      со статьей 'премия' за что-либо.

    2. Вывести список сотрудников, фамилии которых начинаются с
      'Ива'.

    Точное несовпадение значений одного из полей

    1. Вывести список сотрудников и их должности, которые не являются
      служащими:

    NOT( ) - функция "логического НЕ". В примере если условие в скобках вернет ИСТИНУ, то функция NOT( ) изменит его на противоположное ЛОЖЬ и в результат строка помещена не будет. Поэтому в запросе будут выбраны только те работники, которые не являются служащими.

    Выбор записей по диапазону значений (Between)

    1. Вывести список сотрудников и размеры полученных зарплат за период 01.01.2003 по 01.03.2003 (рис. 7):




    Name

    Lastname

    Surname

    Sum_pay

    Pay_day

    Иван

    Петрович

    Иванов

    2544.00

    01.01.2003

    Иван

    Петрович

    Иванов

    4521.00

    01.02.2003

    Иван

    Петрович

    Иванов

    12542.00

    01.03.2003

    Василий

    Михайлович

    Сидоров

    1452.00

    01.01.2003

    Василий

    Михайлович

    Сидоров

    2145.00

    01.02.2003

    Василий

    Михайлович

    Сидоров

    2135.00

    01.03.2003

    Петр

    Аркадьевич

    Васильков

    4511.00

    01.01.2003

    Петр

    Аркадьевич

    Васильков

    1542.00

    01.02.2003

    Петр

    Аркадьевич

    Васильков

    1542.00

    01.03.2003

    Савел

    Игнатьевич

    Соянов

    2456.00

    01.03.2003


    Рис. 7. Выбор по диапазону


    BETWEEN – проверка на принадлежность диапазону значений. При этом проверяется, находится ли значение поля между двумя определенными значениями.

    1. Вывести список сотрудников, у которых фамилия начинается на одну из букв диапазона 'Р' - 'У':

    Выбор записей по диапазону значений (In)

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

    IN( ) - проверка на членство в множестве. Вывести только те строки, у которых значение указанного поля принадлежит указанному множеству, т.е. равно одному из значений, перечисленных в IN().

    1. Вывести список сотрудников, получающих одну из следующих надбавок к зарплате: 'премию', 'оплату учебы', 'поощрение':

    Выбор записей с использованием Like

    1. Вывести неповторяющийся список статей в зарплате, которые
      начинаются на букву 'н':

    LIKE( ) - проверка на соответствие шаблону, где шаблон записывается в двойных кавычках. % или * - подстановочный знак в шаблоне, | совпадающий с любой последовательностью из нуля и более символов. | _ или ? - подстановочный знак в шаблоне, совпадающий с одним любым символом на указанном месте. Пример шаблона на Access: "?нар*" вывести все строки, у которых первый символ любой, далее обязательная последовательность нар, конец строки любой.

    1. Вывести список сотрудников, отчества которых содержат сочетание букв 'ва':


    Выбор записей по нескольким условиям

    1. Вывести всех сотрудников, которые получили зарплату 15.03.2003в размере от 2000 до 3000 руб.

    2. Вывести НЕПОВТОРЯЮЩИЙСЯ список табельных номеров и имен сотрудников с табельными номерами 12-30 или с зарплатами, превысившими размер 5000 руб.

    3. Вывести список сотрудников с датами рождения 01.01.1950-01.01.1960 или табельными номерами из диапазона 10-150 (рис. 10):

    Василий

    Михайлович

    Сидоров

    14.06.1954

    2

    Иван

    Васильевич

    Артемьев

    05.12.1970

    67

    Виктор

    Семенович

    Ушаков

    30.05.1970

    11

    Анна

    Михайловна

    Иванова

    12.03.1940

    15

    Рис. 10. Результат запроса с несколькими условиями

    Вычисление итоговых значений с использованием агрегатных функций

    1. Вывести среднюю зарплату, которая когда-либо выдавалась на предприятии:

    AVG() - функция вычисляет среднее всех значений, содержащихся в столбце.

    COUNT( ) - функция подсчитывает количество значений, содержащихся в столбце.

    COUNT(*) - функция подсчитывает количество строк в таблице результатов запроса.

    МАХ( ) - функция находит наибольшее среди всех значений, содержащихся в столбце.

    MIN( ) - функция находит наименьшее среди всех значений, содержащихся в столбце.

    SUM() - функция вычисляет сумму всех значений, содержащихся в столбце.

    1. Вывести список сотрудников и суммарную зарплату каждого.

    GROUP BY позволяет создавать итоговый запрос. Обычный запрос включает в результат по одной строке для каждой строки из базы данных. Итоговый запрос, напротив, вначале группирует строки базы данных по определенному признаку, а затем включает в результаты запроса одну итоговую строку для каждой группы.

    Предложение GROUP BY позволяет вести расчет итогов внутри каждой группы, в данном случае расчет суммарной зарплаты каждого сотрудника. Если бы мы не использовали GROUP BY, то в результате получили бы сумму зарплат всех сотрудников без разбиения по сотрудникам.

    1. Вывести среднюю зарплату каждого сотрудника за 2002 год.

    2. Вывести количество сотрудников по каждой должности.

    3. Вывести дату устройства на работу самого первого и последнего
      сотрудника (рис. 13):


    Min_date_input

    Max_date_input

    12.11.1979

    18.11.2003


    Рис. 13. Итоговые значения


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