Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Понятия CRUD операции, виды SQL операций и запросов (SELECT , INSERT ,UPDATE , DELETE, UPSERT )

Лекция



Привет, Вы узнаете о том , что такое реляционные базы данных, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое реляционные базы данных, crud, crud операции, типы данных sql, виды запросов, виды sql операций, ddl, dml, dcl, tcl, select from, insert into , update set, delete from, upsert , настоятельно рекомендую прочитать все из категории Базы данных, знаний и хранилища данных. Big data, СУБД и SQL и noSQL.

Реляционная база данных — база данных, основанная на реляционной модели данных. Понятие «реляционный» основано на англ. relation («отношение, зависимость, связь»). Для работы с реляционными БД применяют реляционные СУБД.

Практически все базы данных имеют следующие составляющие

Понятия CRUD операции, виды SQL операций и запросов (SELECT , INSERT ,UPDATE , DELETE, UPSERT )

1. Типы данных в БД

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

В каждой БД свой набор типов, но часто есть типы данных которые поддерживаю почти все БД

целочисленные INT

с плаващей точккой FLOAT, DECIMAL

строковые VARCHAR, TEXT

время DATE, TIME, TIMESTAMP

2. операции и управяющие структуры и команды SQL (DDL, DML, DCL, TCL)

+ - * /

Обзор основных SQL запросов

3. crud операции над данными

CRUD — акроним, обозначающий четыре базовые функции, используемые при работе с базами данных : создание (англ. create), чтение (read), модификация (update), удаление (delete). Введен Джеймсом Мартином (англ. James Martin) в 1983 году как стандартная классификация функций по манипуляции данными.

Понятия CRUD операции, виды SQL операций и запросов (SELECT , INSERT ,UPDATE , DELETE, UPSERT )

1) Первая буква CRUD, «C», относится к CREATE, также известному как add, insert. В этой операции ожидается вставка новой записи с помощью оператора вставки SQL . SQL использует оператор INSERT INTO для создания новых записей в таблице.

INSERT INTO <tablename> (column1,column2,.) VALUES (value1,value2,.)

2) Вторая буква CRUD, «R», относится к операции SELECT (получение данных). Слово «чтение» извлекает данные или набор записей из перечисленных таблиц. SQL использует команду SELECT для извлечения данных. Когда дело доходит до выполнения запросов, вы можете использовать SQL Server Management Studio, SQL Server Data Tools или sqlcmd в зависимости от ваших предпочтений.

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

SELECT * FROM <TableName>

3) Третья буква CRUD, «U», относится к операции обновления. Используя ключевое слово Update, SQL вносит изменения в существующие записи таблицы.

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

UPDATE <TableName> SET Column1=Value1, Column2=Value2,WHERE <Expression>
4) Последняя буква операции CRUD - «D», и она относится к удалению записи из таблицы.
DELETE FROM <TableName> WHERE <Expression>

В SQL этим функциям операциям соответствуют операторы Insert (создание записей), Select (чтение записей), Update (редактирование записей), Delete (удаление записей) также используется некая матрица полномочий, crud matrix

Понятия CRUD операции, виды SQL операций и запросов (SELECT , INSERT ,UPDATE , DELETE, UPSERT )

4. Реляционные таблицы, данные. Нормализация данных,Нормальные формы

В реляционной базе данных каждая таблица должна иметь первичный ключ — поле или комбинацию полей, которые единственным образом идентифицируют каждую строку таблицы. Если ключ состоит из нескольких полей, он называется составным. Ключ должен быть уникальным и однозначно определять запись. По значению ключа можно отыскать единственную запись. Ключи служат также для упорядочивания информации в БД.

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

5. Виды SQL запросов.

5.1 вложенные SQL запросы

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

5.1.1 Вложенный запрос, возвращающий одно значение

В этом случае вложенный запрос размещается в инструкции WHERE основного запроса, как показано на рисунке:

Вложенные запросы и их виды. Автор24 — интернет-биржа заказчиков и авторов

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

Пусть в таблице spec хранится список специальностей вуза. Каждая специальность прикреплена к своему факультету. Факультеты хранятся в таблице facult. Таким образом, имеется связь типа «один-ко-многим» между факультетами и специальностями.

Вложенные запросы и их виды. Автор24 — интернет-биржа заказчиков и авторов

ПРИМЕР 1

Необходимо получить список специальностей факультета «математический».

С этой целью выполним запрос:

Понятия CRUD операции, виды SQL операций и запросов (SELECT , INSERT ,UPDATE , DELETE, UPSERT )

  1. Сначала выполнится вложенный запрос SELECT facult.idfacult FROM facult WHERE facult.namefacult="математический"; Он вернет одно числовое значение 1 – уникальный код математического факультета.
  2. Потом полученное значение будет подставлено в основной запрос:

SELECT spec.namespec FROM spec WHERE spec.idfacult=1;

В итоге будет получен список из двух специальностей: Прикладная математика и Кибернетика.

5.1.2 Вложенный запрос, возвращающий список значений

Если вложенный запрос может вернуть список значений, то синтаксис должен быть немного другим:

Вложенные запросы и их виды. Автор24 — интернет-биржа заказчиков и авторов

Здесь вместо знака равно в инструкции WHERE используется оператор IN, который будет сравнивать значение поля со списком значений.

ПРИМЕР 2

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

Понятия CRUD операции, виды SQL операций и запросов (SELECT , INSERT ,UPDATE , DELETE, UPSERT )

  1. Вложенный запрос вернет нам список с кодами двух специальностей, которые находятся на факультете. Это будут специальности с кодами 1 и 6.
  2. После этого выполнится внешний запрос:

Понятия CRUD операции, виды SQL операций и запросов (SELECT , INSERT ,UPDATE , DELETE, UPSERT )

Он вернет список заявлений, поданных на специальности 1 и 6.

5.1.3 Соотнесенные (коррелирующие) подзапросы

ОПРЕДЕЛЕНИЕ 1

Соотнесенный(коррелирующий) подзапрос – это подзапрос, который содержит ссылку на поля из внешнего запроса.

Вложенные запросы и их виды. Автор24 — интернет-биржа заказчиков и авторов

ПРИМЕР 3

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

Найти такие заявления очень просто запросом с группировкой по коду абитуриента:

Понятия CRUD операции, виды SQL операций и запросов (SELECT , INSERT ,UPDATE , DELETE, UPSERT )

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

Понятия CRUD операции, виды SQL операций и запросов (SELECT , INSERT ,UPDATE , DELETE, UPSERT )

outquery и innerquery здесь являются псевдонимами для внешней и внутренней части.

  1. Сначала внешним запросом выбирается очередная запись. Для этой записи определяется значение поля idabiturient. Это и будет outquery.idabiturient.
  2. Потом выполняется внутренний подзапрос с подстановкой, полученного на первом шаге, значения outquery.idabiturient. В результате получается максимальный номер заявления для данного абитуриента.
  3. Во внешнем запросе выбирается запись с полученным на втором шаге максимальным номером заявления.

5.2 составные SQL запросы

Вложенный запрос – это запрос, который находится внутри другого SQL запроса и встроен внутри условного оператора WHERE.
Данный вид запросов используется для возвращения данных, которые будут использоваться в основном запросе, как условие для ограничения получаемых данных.

5.3 Типы объединений

  • Простое объединение таблиц (NATURAL JOIN):
  • Условие USING;
  • Условие ON.
  • Самообъединение (SELF-JOIN);
  • Объединение по равенству (EQUIJOINS);
  • Объединение по не равенству (NONEQUIJOIN);
  • Внешнее соединение (OUTER JOIN):
  • LEFT OUTER;
  • RIGHT OUTER;
  • FULL OUTER.
  • Декартово пересечение таблиц (CROSS JOIN).

5.3.1 объединения Join 8 типов

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

1) CROSS JOIN является базовым вариантом объединения и представляет собой декартово произведение (Cartesian product). Эта операция просто объединяет каждую строку первой таблицы с каждой строкой второй таблицы

2) операция INNER JOIN (или просто JOIN, иногда также THETA JOIN) позволяет выполнять фильтрацию результата декартова произведения на основе некоторого предиката.

3) EQUI JOIN. На самом деле, «EQUI» не является ключевым словом SQL, а просто обозначает специальный вариант записи особого случая операции INNER JOIN. Следует отметить, что не совсем правомерно называть EQUI JOIN особым случаем, поскольку эту операцию мы выполняем чаще всего в SQL и OLTP приложениях, когда просто объединяем таблицы на основе отношения первичного/внешнего ключа.

4) Левое внешнее объединение (LEFT OUTER JOIN) Мы рассмотрели операцию INNER JOIN, возвращающую только те комбинации строк левой/правой таблицы, для которых значение предиката в предложении ON является истинным. Операция OUTER JOIN позволяет нам включить в результат строки одной таблицы, для которых не были найдены соответствующие строки в другой таблице.

5) Правое внешнее объединение (RIGHT OUTER JOIN) Операция RIGHT OUTER JOIN выполняет ту же задачу, что и LEFT OUTER JOIN, но для правой таблицы, то есть возвращает в результате все строки правой таблицы.

6) Полное внешнее объединение (FULL OUTER JOIN) Существует также операция FULL OUTER JOIN, которая возвращает в результате все строки как левой, так и правой таблицы.Альтернативный синтаксис: Внешнее объединение на основе равенства (EQUI OUTER JOIN)

7) Полуобъединение («SEMI» JOIN) В реляционной алгебре существует операция полуобъединения (semi join), которая, к сожалению, не имеет синтаксического представления в SQL. Если бы синтаксис для данной операции существовал, вероятно, он имел бы следующий вид: LEFT SEMI JOIN и RIGHT SEMI JOIN

8)В SQL мы можем использовать два варианта альтернативного синтаксиса, чтобы реализовать операцию «SEMI» JOIN.
Альтернативный синтаксис: EXISTS Альтернативный синтаксис: IN

9)Антиобъединение («ANTI» JOIN) Операция «ANTI» JOIN является противоположностью операции «SEMI» JOIN

Альтернативный синтаксис: NOT EXISTS(Опасный) альтернативный синтаксис: NOT IN Будьте осторожны! В то время как синтаксисы на основе EXISTS и IN эквивалентны, синтаксисы на основе NOT EXISTS и NOT IN не эквивалентны. Это связано со спецификой NULL-значений.

(Опасный) альтернативный синтаксис: LEFT JOIN / IS NULL

10)Латеральное объединение (LATERAL JOIN) альтернативный синтаксис на основе ключевого слова APPLY

11) Объединение на основе MULTISET Немногие СУБД поддерживают данный тип объединения (на самом деле, только Oracle), но если задуматься, это крайне полезный вариант операции JOIN, позволяющий создавать вложенные коллекции (nested collection). Если бы все СУБД поддерживали эту операцию, нам больше не понадобилось бы объектно-реляционное отображение (object-relational mapping, ORM)!

5.3.2 объединение Union

Оператор UNION позволяет обединить две однотипных выборки. Эти выборки могут быть из разных таблиц или из одной и той же таблицы

6. типы ключей(ограничивающие, ключевые) их поведение

7.выборка с агрегацией и группировкой

  • 7.1 простая выборка, ограничения
  • 7.2 полная агрегация
  • 7.3 агегация по группам
  • 7.4 агрегая по внешним и внутрениим условиям
  • 7.5 развертки агрегации примеры, назначение

(подробнее читай др. наши лекции или веди в поиск нужное)

8. специфические запросы UPSERT, INSERT IGNORE, REPLACE, MERGE

В SQL команда UPSERT — это комбинация двух операций: INSERT и UPDATE. Она используется для того, чтобы вставить новую запись в таблицу, если ее не существует, или обновить уже существующую запись, если она есть. Это помогает избежать дублирования данных.

В разных системах управления базами данных (СУБД) реализация UPSERT может немного отличаться.

Пример команды UPSERT в PostgreSQL:

В PostgreSQL используется конструкция INSERT ... ON CONFLICT, которая реализует UPSERT:

INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3) ON CONFLICT (column1) DO UPDATE SET column2 = EXCLUDED.column2, column3 = EXCLUDED.column3; 

Здесь:

  • ON CONFLICT (column1) — указывает столбец (или набор столбцов), по которым происходит проверка на наличие конфликта (например, если column1 — уникальный ключ).
  • EXCLUDED.column2 — это новое значение, которое предлагается вставить. Если произошел конфликт, данные из секции EXCLUDED будут использоваться для обновления.

Пример команды UPSERT в MySQL:

В MySQL используется конструкция INSERT ... ON DUPLICATE KEY UPDATE:

INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3) ON DUPLICATE KEY UPDATE column2 = VALUES(column2), column3 = VALUES(column3); 

Здесь:

  • Если запись с таким уникальным ключом уже существует, она будет обновлена с новыми значениями column2 и column3.

Пример команды UPSERT в SQLite:

SQLite использует INSERT OR REPLACE для реализации подобного поведения:

INSERT OR REPLACE INTO table_name (column1, column2, column3) VALUES (value1, value2, value3); 

Однако, в этом случае, если запись с таким уникальным ключом существует, она будет удалена и заново создана, что не всегда удобно.

Таким образом, UPSERT — это мощная команда для работы с данными, позволяющая одновременно и добавлять, и обновлять записи в зависимости от ситуации.

8. хранимые функции , процедуры, временные таблицы, представления, курсоры

Хранимые функции являются разновидностью хранимых процедур. Они включены в состав программных объектов баз данных с целью наибольшего соответствия языкам программирования, например Си или Java. Хранимые функции применяются для расширения функциональных возможностей операторов SELECT и ряда других SQL-операторов.

9. типы триггеров

  • INSERT TRIGGER – запускаются при попытке вставки данных с помощью команды INSERT.
  • UPDATE TRIGGER – запускаются при попытке изменения данных с помощью команды UPDATE.
  • DELETE TRIGGER – запускаются при попытке удаления данных с помощью команды DELETE.

Понятия CRUD операции, виды SQL операций и запросов (SELECT , INSERT ,UPDATE , DELETE, UPSERT )

10 транзакции, блокировки, тупиковая ситуация, журналирование, ACID, уровни изолированности

Базы данных. Вводный курс

Понятия CRUD операции, виды SQL операций и запросов (SELECT , INSERT ,UPDATE , DELETE, UPSERT )

Транзакции. Понятие транзакции презентация, доклад

При одновременном выполнении двух транзакций, обращающихся к одним и тем же данным, могут возникать следующие проблемные ситуации:

Понятия CRUD операции, виды SQL операций и запросов (SELECT , INSERT ,UPDATE , DELETE, UPSERT )

Транзакции. Об этом говорит сайт https://intellect.icu  . Понятие транзакции - online presentation

Вау!! 😲 Ты еще не читал? Это зря!

В заключение, эта статья об реляционные базы данных подчеркивает важность того что вы тут, расширяете ваше сознание, знания, навыки и умения. Надеюсь, что теперь ты понял что такое реляционные базы данных, crud, crud операции, типы данных sql, виды запросов, виды sql операций, ddl, dml, dcl, tcl, select from, insert into , update set, delete from, upsert и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Базы данных, знаний и хранилища данных. Big data, СУБД и SQL и noSQL

создано: 2016-02-19
обновлено: 2024-11-14
160



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Базы данных, знаний и хранилища данных. Big data, СУБД и SQL и noSQL

Термины: Базы данных, знаний и хранилища данных. Big data, СУБД и SQL и noSQL