1. Что такое транзакция?
Транзакция — это механизм, последовательность операций, которая содержит набор команд работы с базой данных, причем все команды передаются системе в целом.
Либо отменить запрос операции, то есть либо вся эта группа баз данных будет выполнена, либо ни одна из них не будет выполнена. Он особенно подходит для систем баз данных, которыми одновременно управляют несколько пользователей.
Транзакция — это серия операций, выполняемых как единая логическая единица работы.
Логическая единица работы должна иметь 4 атрибута:
Атомарность: транзакция представляет собой полную операцию, и элементы транзакции не могут быть разделены дальше. Все элементы должны быть зафиксированы или откачены как единое целое.
Согласованность: когда транзакция завершена, данные должны находиться в согласованном состоянии.
Изоляция: все одновременные транзакции изолируются друг от друга при изменении данных.
Долговечность: после завершения транзакции влияние на систему является постоянным.
2. Создайте транзакцию
Начать транзакцию: начать транзакцию
Зафиксировать транзакцию: зафиксировать транзакцию
Откат (отмена) транзакции: откат транзакции
код
использовать стадб
идти
если существует (выберите * из sysobjects, где name = 'bank')
банк отброшенных таблиц
создать банк таблиц
(
имя клиента char(10), --имя клиента
текущие деньги деньги --баланс
)
идти
--Добавьте ограничение проверки, что баланс счета не может быть меньше 1
изменить банк таблиц
добавить ограничение CK_currentMoney check (currentMoney >= 1)
идти
вставить в банковские значения('Чжан Сан',1000)
вставить в банковские значения('李思',1)
выберите * из банка
-------------------------------------------------- --------
--------------- * * * * 事* * 事* * * * -------------
-------------------------------------------------- --------
использовать стадб
идти
set nocount on -- Не отображать информацию о затронутых номерах строк
напечатайте «Данные перед транзакцией:»
выберите * из банка
идти
начать транзакцию
объявить @errorSum int
установите @errorSum=0
обновить банк, установить currentMoney = currentMoney-1000, где customername = 'Zhang San'
обновить банк set currentMoney = currentMoney+1000, где customername='李思'
установите @errorSum = @errorSum + 1
напечатайте 'Данные в транзакции:'
выберите * из банка
если @errorSum <> 0
начинать
напечатать «Транзакция не удалась, откат транзакции»
транзакция отката
конец
еще
начинать
напечатать «Транзакция успешна, зафиксировать транзакцию, записать на жесткий диск, сохранить навсегда»
совершить транзакцию
конец
идти
напечатайте 'Данные после транзакции:'
выберите * из банка
-------------------------------------------------- --------
--------------- * * * * Цитирование* * Цитирование* * * * -------------
-------------------------------------------------- --------
--Index: это внутренний метод SQL Server для организации данных.
--Индексы можно разделить на следующие три типа;
--Уникальный индекс: две строки не могут иметь одинаковое значение индекса.
--Индекс первичного ключа: специальный тип индекса первичного ключа, который автоматически создает уникальный индекс при определении первичного ключа для таблицы. Каждое значение первичного ключа должно быть уникальным.
--Кластерный индекс: физический порядок строк в таблице такой же, как логический (индексный) порядок значений ключей. Таблица может содержать только один кластерный индекс (его можно понимать как пиньинь словаря).
--Некластеризованный индекс: данные и индекс содержат точки на соответствующие места, где хранятся данные. Физический порядок строк в таблице не соответствует логическому порядку значений ключей. (можно понимать как MAP)
--Кластеризованные индексы работают быстрее, чем некластеризованные индексы.
--В таблице может быть только один кластеризованный индекс, но может быть несколько некластеризованных индексов. Если вы установите столбец в качестве первичного ключа, по умолчанию этот столбец будет кластеризованным индексом.
--Таблица не может иметь индекса, а индекс первичного ключа не обязательно является кластерным индексом.
--Где используется индекс?
--Этот столбец часто ищется и используется для сортировки данных.
--Плохой тип имеет всего несколько разных значений, а в таблице всего несколько строк данных, поэтому нет необходимости использовать индекс.
--грамматика
--создать [уникальный][кластеризованный|некластеризованный] индекс имя_индекса для имя_таблицы (имя_столбца[,имя_столбца]...)
--[
-- with fillfactor = x --Коэффициент заполнения x — это значение от 0 до 100.
--]
код
использовать стадб
идти
если существует (выберите [имя] из системных индексов, где [имя]='IX_stuMarks_writingExam')
удалить индекс stuMarks.IX_stuMarks_writingExam --запросить, существует ли индекс, и удалить его, если он существует
создать некластеризованный индекс IX_stuMarks_writingExam на stuMarks(writingExam)
с fillfactor=30 -- Коэффициент заполнения зарезервированного пространства
идти
--Запрос
выбрать * из отметок (index=IX_stuMarks_writingExam)
-- Будет сообщено об ошибке: рядом с «индексом» обнаружена синтаксическая ошибка. Если он должен быть частью табличной подсказки, он должен содержать ключевое слово With и круглые скобки, например:
выберите * из отметок с помощью (index=IX_stuMarks_writingExam)
выберите * из stumarks с помощью (index=IX_stuMarks_writingExam), где writeExam находится между 60 и 90
-------------------------------------------------- --------
--------------- * * * * Просмотр* * Изображение* * * * ----------------
-------------------------------------------------- --------
Просмотр: это виртуальная таблица, метод запроса, основанный на данных одной таблицы или нескольких таблиц.
Общие функции: фильтровать строки в таблицах, предотвращать доступ неавторизованных пользователей к конфиденциальным данным, абстрагировать несколько таблиц физических данных в одну таблицу логических данных.
--грамматика:
--создать представление имя_представления
--как
--<оператор выбора>
код
использовать стадб
идти
если существует (выберите * из sysobjects, где name='view_stuinfo_stumarks')
опустить представление view_stuinfo_stumarks
идти
создать представление view_stuinfo_stumarks
как
выберите имя=stuname, номер учащегося=stuinfo.stuno, результат письменного теста=письменный экзамен, результат компьютерного теста=labexam,
средний балл = (письменный экзамен+лабексам)/2 от stuinfo, осталось присоединиться к stumarks на stuinfo.stuno = stumarks.stuno
идти