что такое оператор ввода данных
Тема 4. Операторы манипулирования данными языка SQL
Оглавление
Цель: изучить операторы изменения данных в реляционных базах данных, которые составляют подъязык манипулирования данными языка SQL (DML Data manipulation Language) в рамках существующих стандартов.
Задачи:
4.1. Оператор ввода данных INSERT
SQL является полноценным языком, предназначенным для работы с базами данных, поэтому в отличие от реляционной алгебры кроме запросов к содержимому БД на этом языке можно выполнять операции изменения содержимого таблиц БД и даже изменять схему БД, т. е. набор таблиц, их атрибутов и связей между ними. Данная глава посвящена операторам манипулирования данными: эти операторы позволяют только изменять содержимое таблиц, входящих в БД.
В операции манипулирования данными входят три операции: операция удаления записей — ей соответствует оператор DELETE, операция добавления или ввода новых записей — ей соответствует оператор INSERT и операция изменения (обновления записей) — ей соответствует оператор UPDATE. Рассмотрим каждый из операторов подробнее.
Следует отметить, что все операторы манипулирования данными позволяют изменить данные только в одной таблице.
Оператор ввода данных INSERT имеет следующий синтаксис:
INSERT INTO имя_таблицы [( ) ] VALUES ( )
Подобный синтаксис позволяет ввести только одну строку в таблицу. Список столбцов является необязательным параметром в данном операторе. Можно не задавать список столбцов в том случае, если вводимая строка содержит полный перечень значений столбцов таблицы, и они приводятся в том порядке, как они заданы при создании таблицы.
Например, рассмотрим БД «Библиотека». В данной БД есть таблица, которая хранит каталог всех книг, которые присутствуют в нашей библиотеке. Внешне таблица выглядит следующим образом:
Во второй строке таблицы приведена расшифровка значения имен атрибутов (столбцов таблицы). Почему же у нас в таблице не присутствует столбец с фамилией автора книги? Следует отметить, что авторов у книги может быть несколько, поэтому в таблицу книги они попасть не могут — это по определению реляционное отношение, которому соответствует наша таблица (см. тему 2), и, кроме того, есть книги, у которых не указываются авторы — это энциклопедии, справочники, сборники трудов.
Введем новую книгу в таблицу BOOKS:
INSERT INTO BOOKS (ISBN,TITLE, Publishing_house, Year_of_the_edition, PAGES) V ALUES (5-88782-290-2, Аппаратные средства IBM PC, Энциклопедия ,
Так как мы вводим полную строку, то мы можем не задавать список столбцов, ограничиться только заданием перечня значений, в этом случае оператор ввода будет выглядеть следующим образом:
INSERT INTO BOOKS VALUES ( 5-88782-290-2 , Аппаратные средства IBM PC. Энциклопедия, Питер,2003,816)
Результаты работы обоих операторов одинаковы.
Наконец, мы можем ввести неполный перечень значений, т. е. не вводить, например, количество страниц, если мы его не знаем. Но в этом случае мы должны задать список вводимых столбцов, тогда оператор ввода будет выглядеть следующим образом:
INSERT INTO BOOKS (ISBN,TITLE, Publishing_house, Year_of_the_edition) V ALUES (5-88782-290-2, Аппаратные средства IBM P. Энциклопедия , Питер , 2003)
Столбцу PAGES будет присвоено в этом случае значение NULL (не определено).
Какие столбцы должны быть заданы при вводе данных? Это определяется тем, как описаны эти столбцы при описании соответствующей таблицы, и будет рассмотрено более подробно при описании языка DDL (Data Definition Language) в теме 5. Здесь мы пока отметим, что если столбец или атрибут имеет признак обязательный (NOT NULL) при описании таблицы, то оператор INSERT должен обязательно содержать данные для ввода в каждую строку данного столбца. Поэтому если в таблице все столбцы обязательные, то каждая вводимая строка должна содержать полный перечень вводимых значений, а указание имен столбцов в этом случае не обязательно. В противном случае, если имеется хотя бы один необязательный столбец, и вы не вводите в него значений, задание списка имен столбцов — обязательно.
В набор значений могут быть включены специальные функции и выражения. Ограничением здесь является то, что значения этих функций должны быть определены на момент ввода данных.
Например, если мы знаем, что вводим книгу, которая издана в текущем году, то вместо числа, соответствующего году издания можем включить функцию Year (GetDate ()) — здесь мы использовали две функции из внутреннего языка TransactSQL сервера баз данных MS SQL Server. Функция Year () использует в качестве параметра календарную дату и позволяет по заданной дате определить год. Внутренняя функция GetDate () позволяет определить текущую календарную дату. В этом случае оператор ввода данных будет выглядеть следующим образом:
INSERT INTO BOOKS VALUES ( 5-94723-275-9 , Теория и практика построения баз данных, Питер, Year (GetDate ()),796)
Операция ввода данных связана с анализом взаимосвязей между таблицами БД. Нельзя ввести данные в подчиненную таблицу, если вводимая запись связана с данными из главной родительской таблицы, а в нее соответствующая строка еще не введена. При вводе данных необходимо соблюдать строгий порядок: сначала заполнять основные таблицы и только потом заполнять подчиненные таблицы, при этом если одна подчиненная таблица связана с двумя основными, то необходимо сначала заполнить обе основные таблицы и только после этого вводить данные в подчиненную таблицу.
Оператор ввода данных позволяет ввести сразу множество строк, если их можно выбрать из некоторой другой таблицы. Допустим, что у нас есть таблица со студентами и в ней указаны основные данные о студентах: их фамилии, адреса, домашние телефоны и даты рождения, а для учета читателей есть таблица READERS, которая имеет следующую схему:
Тогда мы можем сделать всех студентов читателями нашей библиотеки одним оператором:
INSERT INTO READER (NAME_READER, ADRESS, HOOM_PHONE, BIRTH_DAY)
SELECT (NAME_STUDENT, ADRESS, HOOM_PHONE, BIRTH_DAY)
При этом номер читательского билета может назначаться автоматически, с использованием инкрементного поля, поэтому мы не вводим значения этого столбца в таблицу. Инкрементные поля ведут себя как поля типа «Счетчик» в MS Access, т. е. при добавлении новой строки СУБД сама присваивает очередное значение данному полю.
4.2. Оператор удаления данных DELETE
Оператор удаления данных позволяет удалить одну или несколько строк из таблицы в соответствии с условиями, которые задаются для удаляемых строк.
Синтаксис оператора DELETE следующий:
DELETE FROM имя_таблицы [WHERE условия_отбора]
Если условия отбора не задаются, то из таблицы удаляются все строки. Однако это не означает, что удаляется вся таблица. Исходная таблица остается, но она остается пустой, незаполненной.
Например, если нам надо удалить результаты прошедшей сессии из отношения R1, то мы можем удалить все строки таблицы R1 следующей командой:
Условия отбора в части WHERE имеют тот же вид, что и условия фильтрации в операторе SELECT. Эти условия определяют, какие строки из исходного отношения будут удалены. Например, если мы исключим студента Миронова А. В., и мы помним, что списки студентов хранятся в таблице R2, то мы должны написать следующую команду:
WHERE ФИО = Миронов А. В.
В части WHERE кроме простых условий фильтрации может находиться также встроенный запрос. Например, если нам надо исключить неуспевающих студентов, то по закону о высшем образовании не успевающим считается студент, имеющий две и более задолженности по послед ней сессии. Тогда нам в условиях отбора надо найти студентов, имеющих либо две или более двоек, либо два и более несданных экзамена из числа тех, которые студент сдавал. Для поиска таких горе-студентов нам надо выбрать из отношения R1 все строки с оценкой 2 или с неопределенным значением, потом надо сгруппировать полученный результат по атрибуту ФИО и, подсчитав количество строк в каждой группе, которое соответствует количеству несданных экзаменов каждым студентом, отобрать те группы, у которых количество строк не менее двух. Теперь попробуем просто записать эту сложную конструкцию на SQL и убедимся, что этот сложный запрос записывается достаточно компактно.
WHERE Оценка = 2 OR Оценка IS NULL
Этот запрос будет корректно работать в том случае, если в отношении R1 находятся записи о несдававших студентах, и там вместо оценки стоит неопределенное значение NULL. А как готовить запрос в том случае, если в таблице R1 зарегистрированы только все попытки сдачи экзаменов, а те студенты, которые по каким-либо причинам не пришли сдавать экзамен, вообще в данной таблице отсутствуют. Ну мы уже умеем и в этом случае вычислять количество не сданных студентом экзаменов. Снова вспомним нашу БД «Сессия», восстановим структуру таблиц:
Сформулируем следующим образом запрос: удаляем тех студентов, у которых число экзаменов, которые им требуется сдать, минус два превышает число сданных ими экзаменов.
Where FIO in (Select FIO from R2, R3
Where R2. Группа= R3. Группа
Having count (distinct Дисциплина)-2 > (Select count(*)from R1
Where Mark>2 and R1.FIO =R2.FIO)
Все операции манипулирования данными связаны с понятием целостности базы данных, которое будет рассматриваться в теме 5. В настоящий момент хотелось бы отметить только то, что операции манипулирования данными не всегда выполнимы, даже если синтаксически они написаны правильно. Действительно, если бы мы захотели удалить какую-нибудь группу из отношения R3, то СУБД не позволила бы нам это сделать, так как в отношениях R1 и R2 есть строки, связанные с удаляемой строкой в отношении R3. Почему так делается, мы узнаем позднее, а пока просто примем к сведению, что не все операторы манипулирования выполнимы.
4.3. Оператор обновления данных UPDATE
Операция обновления данных UPDATE требуется тогда, когда происходят изменения во внешнем мире и их надо адекватно отразить в базе данных, так как надо всегда помнить, что база данных отражает некоторую предметную область. Например, в нашем учебном заведении произошло счастливое событие, которое связано с тем, что госпожа Степанова К. Е. пересдала экзамен по дисциплине «Базы данных» с «двойки» сразу на «четверку». В этом случае нам надо срочно выполнить соответствующую корректировку таблицы R1. Операция обновления имеет следующий формат:
Выражение, которое находится в фигурных скобках означает, что мы за одну операцию обновления можем изменить сразу несколько столбцов, при этом ключевое слово SET не повторяется, а выражение «имя_столбца = новое_значение» может повторяться несколько раз для разных столбцов, и при этом каждая пара отделяется от следующей разделителем — запятой.
Часть WHERE является необязательной, как и в операторе DELETE. Она играет здесь ту же роль, что и в операторе DELETE, — позволяет отобрать строки, к которым будет применена операция модификации. Если условие отбора не задается, то операция модификации будет применена ко всем строкам таблицы.
Для решения ранее поставленной задачи нам необходимо выполнить следующую операцию:
WHERE R1.ФИО = «Степанова К.Е.» AND R1.Дисциплина = «Базы данных»
В каких случаях требуется провести изменение в нескольких строках? Это не такая уж редкая задача. Например, если мы расширим нашу учебную базу данных еще одним отношением, которое содержит перечень курсов, на которых учатся наши студенты, то можно с помощью операции обновления промоделировать операцию перевода групп на следующий курс. Пусть новое отношение R4 имеет следующую схему: R 4 =
Pascal | Лекция №3
Операторы присваивания, операторы ввода-вывода
Содержание:
Поскольку язык Pascal алгоритмический, то для записи шагов алгоритмов, для наглядного однозначного представления алгоритмов в стиле структурного программирования существует набор операторов. Основные операторы считаются простыми, остальные – структурными, т.е. в их состав могут входить другие операторы, причем глубина «вложенности» операторов не ограничена.
Операторы присваивания
Оператор присваивания предназначен для присваивания переменной значения выражения. Оператор обозначается символом «:=», в левой части указывается имя переменной, в правой – вычисляемое выражение. Выражение может составлять число, знаки арифметических действий, круглые скобки, переменные и константы, процедуры и функции, допускаемое вложение друг в друга. Обязательное условие — совместность типов данных. Оператор считается синтаксически правильным, если тип выражения в правой части совпадает с типом переменной. Исключение составляет случай, когда выражение имеет целый тип, а переменная – вещественный. Допускается использование этого оператора с переменными любого типа, кроме файлового. Синтаксис:
Если в левой части оператора присваивания указана переменная типа Boolean, то в правой части оператора должно быть задано логическое выражение, задающее правило вычисления логического значения (true или false). Синтаксис:
Логическое выражение есть логическая формула, записанная на языке программирования. Логическое выражение состоит из логических операндов, связанных логическими операциями и круглыми скобками. Результатом вычисления логического выражения является булева величина (true или false). Логическими операндами могут быть логические константы, переменные, функции, операции отношения. Один логический операнд является простейшей формой логического выражения.
Примеры использования оператора присваивания:
с переменными целого типа: x := 200;
вещественного: y := Sin(Pi/3);
символьного: с := ‘6’;
булевского: test := false;
R – радиус окружности (тип – integer или real)
Pi – константа, равная значению p.
Операторы ввода-вывода
Ввод данных – это передача информации от внешних устройств в оперативную память. Вводятся, как правило, исходные данные решаемой задачи.
Вывод данных – обратный процесс, когда данные передаются из оперативной памяти на внешние носители (принтер, дисплей, магнитные устройства и т.д.). Результаты решения всякой задачи должны быть выведены на один из этих носителей.
Основными устройствами ввода-вывода у ПК являются клавиатура и экран монитора. Именно через эти устройства главным образом осуществляется диалог между человеком и ПК.
Для того чтобы программа могла работать в диалоговом режиме (позволяла бы вводить данные и видеть результаты работы на экране) существуют операторы ввода и вывода.
Существует две формы оператора ввода: Read и ReadLn. Процедура ввода с клавиатуры имеет следующий формат:
Read ( ),
где – это последовательность имен переменных, разделенных запятыми.
Другой вариант оператора ввода с клавиатуры имеет вид:
ReadLn ( )
Оператор ReadLn аналогичен предыдущему, отличие заключается в том, что при выполнении одного оператора ReadLn курсор на экране монитора переходит на новую строку.
Аналогично существует две формы оператора вывода. Оператор вывода на экран (обращение к стандартной процедуре вывода) имеет следующий формат:
Здесь элементами списка вывода могут быть выражения различных типов. В результате выполнения данного оператора значения списка будут выведены на экран монитора.
Если необходимо вывести на экран какой-либо текст, то внутри оператора Write этот текст записывается в апострофах.
Второй вариант процедуры вывода на экран:
Его действие отличается от оператора Write тем, что после вывода последнего в списке значения происходит перевод курсора к началу следующей строки. Оператор WriteLn может использоваться без каких-либо параметров – в этом случае после выполнения такого оператора курсор перемещается на одну позицию вниз.
В операторах вывода Write и WriteLn имеется возможность установить ширину поля вывода. Если X и I – целочисленные выражения, а Y — вещественное выражение, то вызов
Write ( X : I, Y : I ) — печатает значения X и Y каждое в крайние правые позиции полей шириной I;
Write ( Y : I : X) – вызовом в крайние правые позиции поля шириной I символов выводится десятичное представление значения Y в формате с фиксированной точкой, причем после десятичной точки выводится X цифр, представляющих дробную часть числа.
Составной оператор
Для того чтобы задать последовательное выполнение (по порядку, один за другим) нескольких операторов, в языке Pascal существует составной оператор. Операторы, входящие в составной, разделяются символом «;», в начале ставится служебное слово Begin, в конце – End.
Составной оператор применяется в тех случаях, когда синтаксис языка допускает использование только одного оператора, а смысл требует выполнения нескольких действий.
Обратите внимание: перед служебным словом End разделитель (символ «;») не ставится.
Условный оператор
Очень часто так же, как и в жизни, при решении задач некоторые действия выполняются в зависимости от истинности каких-либо условий. Например, мы берем с собой зонт, если идет дождь или на небе тучи. Или часто встречающиеся в математике определения функций:
Здесь значение функции f вычисляется в зависимости от величины x по разным формулам.
Для задания выбора того или иного действия в зависимости от условия в языке Pascal предназначен условный оператор, который имеет две формы: полную и сокращенную.
В качестве условия используется значение логического выражения, в качестве операторов – любой простой или составной оператор, в том числе и сам условный оператор.
И по ветке then, и по ветке else должен выполняться единственный оператор. Если по смыслу задачи необходимо выполнить несколько операторов, тогда следует использовать составной оператор.
Часть условного оператора, начинающаяся со слова else, может отсутствовать, такая форма оператора называется сокращенной и выглядит следующим образом:
Оператор в этом случае выполняется, если условие истинно, иначе программа переходит к следующему оператору.
Пример полной формы: рассмотрим определение функции f(x):
Если в нашем примере описать логическую переменную В, значение которой будет равно true, если x
Пример краткой формы:
При использовании вложенных условных операторов может возникнуть неоднозначность, например:
В данном случае необходимо помнить, что служебное слово else всегда ассоциируется с ближайшим по тексту программы словом if, которое еще не связано с else. А чтобы такая двусмысленность не возникала, лучше всего пользоваться составным оператором:
Теперь дадим строгое описание условного оператора в форме синтаксической диаграммы:
Пример: По длинам трех сторон треугольника a, b, c вычислить его площадь.
Условный оператор Case (оператор варианта)
Более обобщенной формой условного оператора, учитывающей произвольное число альтернатив, является оператор варианта. Использование этого оператора позволяет задавать выполнение некоторых действий для нескольких различных значений одного выражения:
Присвоить строке S значение дня недели для заданного числа D при условии, что в месяце 31 день и 1-ое число – понедельник.
Для построения алгоритма воспользуемся операцией mod, позволяющий вычислить остаток от деления двух целых чисел, и с условием, что 1-ое число – понедельник. Тогда можно записать следующий оператор Case:
Чтобы завершить построение алгоритма решения поставленной задачи, необходимо ограничить область возможных значений переменной D (тип — integer):
В качестве можно также задать список и (или) диапазон значений.
Контрольные вопросы
Как заработать оператором ввода данных в сервисе Яндекс.Маркет?
Вакансия оператора группы ввода данных в Маркете привлекает многих людей. Эта работа не требует особых знаний и навыков, а работодателем выступает крупная компания. Мы решили собрать отзывы сотрудников и подробно рассказать об этой вакансии. Вы узнаете, как устроиться на такую должность, какую зарплату можно получить, где бесплатно освоить нужные навыки.
Содержание статьи:
Чем занимаются операторы ввода данных в Яндекс.Маркете?
Маркет – это огромный каталог товаров. Задача оператора ПК – наполнять его, обновлять информацию о товарах, уточнять данные.
Например, может потребоваться:
Добавить в каталог фотографию товара, предварительно убрав фон.
Работа требует усидчивости, внимательности, способности к монотонному труду. Понадобятся общие навыки работы на ПК. В частности, владение офисными программами (Word, Excel), фоторедакторами. Например, нужно уметь удалять фон с картинки.
Освоить необходимые навыки работы в фоторедакторах можно бесплатно через интернет. Например, записавшись на курс Основы Adobe Photoshop в Нетологии. Обучают на нем бесплатно.
Плюсы и минусы работы
Мы собрали отзывы сотрудников сервиса Яндекс.Маркет, размещенные в интернете, и на их основе составили таблицу с описанием особенностей вакансии.
Сколько платят операторам?
Зарплата у сотрудников сдельная. Она зависит от объема выполненной работы. При достижении нормы можно заработать 25000 рублей в месяц.
Потолка нет. Если оператор успевает сделать больше заданий, то его зарплата увеличивается пропорционально достигнутым показателям.
Если же сотрудник в первый месяц закрывает мало задач и не выходит на норму, то судя по отзывам сотрудников Маркета, с ним могут дальше не сотрудничать.
Как устроиться на работу оператором в сервис Яндекс.Маркет?
При выработке нормы зарплата оператора группы ввода данных в Яндекс.Маркете составляет от 25000 рублей. Вначале требуется работать по жесткому графику, потом возможны определенные поблажки. Но в любом случае график будет 6/2 или 4/2. Уделять работе необходимо от 8 часов в день.
Резюме
Мы рассказали о вакансии оператора ввода данных в сервисе Яндекс.Маркет. Как устроиться на такую работу и сколько на ней можно заработать.
В интернете есть и другие работодатели, которые предлагают возможность трудиться удаленно. Вы можете прочитать обзоры о них в следующих статьях:
Профессия: Специалист по вводу данных
Не все понимают, какой может быть удаленная работа, а тем более первая. Я решила сделать цикл статьей, в которых расскажу о специфике самых популярных удаленных профессий с минимальным порогом вхождения.
Профессия: Специалист по вводу данный или Data Entry
Что делает: Работа с документами разных форматов, ввод и проверка существующей информации, набор текстов, составление таблиц и др.
Другие названия: Оператор ввода данных, оператор по поиску и вводу данных, специалист по вводу и обработке данных, специалист по мониторингу, оператор ПК, специалист по учету, помощники бухгалтера, менеджера по продажам и др.
Основные навыки и задачи: Грамотная письменная речь, быстрая скорость печати, общие компьютерные навыки, умение работать с разными форматами файлов.
Дополнительные навыки: Поиск и обработка информации из открытых источников, анализ информации, внимательность к деталям, оцифровка печатных и рукописных материалов.
Сколько платят: Гостила недавно на малой родине и общалась со старыми друзьями. Многие жалуются на низкие зарплаты и отсутствии перспективных вакансий. 15–20 тыс руб. в месяц считается приемлемым заработком. На первой удаленной работе специалистом по вводу данных без особого опыта с хорошим знанием английского и наличием высокоскоростного интернета, можно с легкостью зарабатывать сумму в 2–5 раз больше и это далеко не предел. Знаю не понаслышке — а из реального опыта, так как часто помогаю людям находить подобные удаленные вакансии в американских и европейских стартапах.
Перспективы: поработав годик-другой, можно начать в сфере digital marketing, или выучить основы javascript и начать писать парсеры для автоматизированного сбора данных и вообще, получив первый опыт удаленной работы, можно будет с легкостью освоиться в любой другой сфере.
Вариации: Специфика зависит от области работы компании. Часто требуются операторы CRM-систем, они отвечают за сбор контактов потенциальных клиентов для холодных звонков, в сети гипермаркетов специалист по вводу данных может заниматься отслеживанием цен конкурентов, подрядчиков и поставщиков. Таких специалистов набирают на позиции помощников бухгалтера для заполнения таблиц по форме, создания счет-фактур и прочей отчетной документации. В колл-центры — для обработки обращений клиентов, их сортировкой для дальнейшей обработки. В SMM-агенства — для размещения и контроля публикаций в социальных сетях, отслеживания трендов и активности конкурентов. Также в различные чаты и группы в соц-сетях и форумах — для модерации публикуемого контента (например, чатов Telegram).
Ниже приведу примеры программ, с которыми может столкнуться специалист по вводу данных. Не воспринимайте этот список, как обязательный — для каждой конкретной вакансии требования могут варьироваться. Я чаще всего говорю, что это стартовая профессия, которую с легкостью могут освоить студенты и все, имеющие базовые представления о работе компьютера, умеющие печатать и искать информацию в интернете.