1. Was ist eine Transaktion?
Eine Transaktion ist ein Mechanismus, eine Operationssequenz, die eine Reihe von Datenbankoperationsbefehlen enthält, und alle Befehle werden an das System als Ganzes übermittelt
Oder brechen Sie die Vorgangsanforderung ab, d. h. entweder werden alle Datenbanken dieser Gruppe ausgeführt oder keine davon. Es eignet sich besonders für Datenbanksysteme, die von mehreren Benutzern gleichzeitig betrieben werden.
Eine Transaktion ist eine Reihe von Vorgängen, die als eine einzige logische Arbeitseinheit ausgeführt werden.
Eine logische Arbeitseinheit muss vier Attribute haben:
Atomarität: Eine Transaktion ist ein vollständiger Vorgang und die Elemente der Transaktion können nicht weiter unterteilt werden. Alle Elemente müssen als Ganzes festgeschrieben oder zurückgesetzt werden.
Konsistenz: Wenn eine Transaktion abgeschlossen ist, müssen die Daten in einem konsistenten Zustand sein.
Isolation: Alle gleichzeitigen Transaktionen werden beim Ändern von Daten voneinander isoliert.
Haltbarkeit: Nach Abschluss der Transaktion sind die Auswirkungen auf das System dauerhaft.
2. Erstellen Sie eine Transaktion
Transaktion beginnen: Transaktion beginnen
Transaktion festschreiben: Transaktion festschreiben
Rollback-Transaktion (rückgängig machen): Rollback-Transaktion
Code
benutze studb
gehen
falls vorhanden (wählen Sie * aus Sysobjects aus, wobei Name = 'Bank')
Drop-Tischbank
Tabellenbank erstellen
(
customerName char(10), --customer name
currentMoney Geld --balance
)
gehen
- Prüfbeschränkung hinzufügen, dass der Kontostand nicht weniger als 1 betragen darf
Tischbank ändern
Einschränkung hinzufügen CK_currentMoney check(currentMoney >= 1)
gehen
In Bankwerte einfügen('Zhang San',1000)
In Bankwerte einfügen('李思',1)
Wählen Sie * aus der Bank
-------------------------------------------------- --------
--------------- * * * * 事* * 事* * * * -------------
-------------------------------------------------- --------
benutze studb
gehen
set nocount on – Zeigt keine Informationen zur betroffenen Zeilennummer an
print 'Daten vor Transaktion:'
Wählen Sie * aus der Bank
gehen
Transaktion beginnen
deklariere @errorSum int
setze @errorSum=0
Bankaktualisierungssatz currentMoney = currentMoney-1000, wobei customername='Zhang San'
Bankaktualisierungssatz currentMoney = currentMoney+1000 wobei customername='李思'
setze @errorSum = @errorSum + 1
print 'Daten in Transaktion:'
Wählen Sie * aus der Bank
wenn @errorSum <> 0
beginnen
print 'Transaktion fehlgeschlagen, Transaktion zurücksetzen'
Rollback-Transaktion
Ende
anders
beginnen
drucken „Transaktion erfolgreich, Transaktion festschreiben, auf Festplatte schreiben, dauerhaft speichern“
Transaktion festschreiben
Ende
gehen
print 'Daten nach Transaktion:'
Wählen Sie * aus der Bank
-------------------------------------------------- --------
--------------- * * * * Zitat* * Zitat* * * * -------------
-------------------------------------------------- --------
--Index: Dies ist die interne Methode von SQL Server zum Organisieren von Daten
--Indizes können in die folgenden drei Typen unterteilt werden;
--Eindeutiger Index: Zwei Zeilen dürfen nicht denselben Indexwert haben
--Primärschlüsselindex: Eine spezielle Art von Primärschlüsselindex, der beim Definieren eines Primärschlüssels für eine Tabelle automatisch einen eindeutigen Index erstellt. Jeder Wert im Primärschlüssel muss eindeutig sein.
--Clustered-Index: Die physische Reihenfolge der Zeilen in der Tabelle entspricht der logischen (Index-)Reihenfolge der Schlüsselwerte. Die Tabelle kann nur einen Clustered-Index enthalten (kann als Pinyin des Wörterbuchs verstanden werden).
--Nicht gruppierter Index: Die Daten und der Index enthalten Punkte auf die entsprechenden Speicherorte, an denen die Daten gespeichert sind. Die physische Reihenfolge der Zeilen in der Tabelle stimmt nicht mit der logischen Reihenfolge der Schlüsselwerte überein. (kann als MAP verstanden werden)
--Clustered-Indizes sind schneller als nicht gruppierte Indizes
--Eine Tabelle kann nur einen Clustered-Index enthalten, es können jedoch mehrere Nicht-Cluster-Indizes vorhanden sein. Wenn Sie eine Spalte als Primärschlüssel festlegen, ist die Spalte standardmäßig ein Clustered-Index.
--Die Tabelle darf keinen Index haben und der Primärschlüsselindex ist nicht unbedingt ein Clustered-Index.
--Wo wird der Index verwendet?
--Diese Spalte wird häufig durchsucht und zum Sortieren von Daten verwendet
--Der schlechte Typ hat nur wenige unterschiedliche Werte und die Tabelle enthält nur wenige Datenzeilen, sodass kein Index verwendet werden muss.
--Grammatik
--create [unique][clustered|nonclustered] index index_name auf table_name (column_name[,column_name]...)
--[
-- mit fillfactor = x --Der Füllfaktor x ist ein Wert zwischen 0 und 100
--]
Code
benutze studb
gehen
falls vorhanden (wählen Sie [Name] aus den Sysindexes aus, wobei [Name]='IX_stuMarks_scribedExam' ist)
Index löschen stuMarks.IX_stuMarks_scribedExam --fragt ab, ob der Index bereits existiert, und löscht ihn, wenn er existiert
Erstellen Sie einen nicht gruppierten Index IX_stuMarks_scribedExam für stuMarks(scribedExam)
mit fillfactor=30 – Füllfaktor reservierter Speicherplatz
gehen
--Abfrage
Wählen Sie * aus Stumarks aus (index=IX_stuMarks_scribedExam)
--Es wird ein Fehler gemeldet: In der Nähe von „index“ liegt ein Syntaxfehler vor. Wenn es Teil eines Tabellenhinweises sein soll, muss es das Schlüsselwort WITH und Klammern enthalten, wie zum Beispiel:
Wählen Sie * aus Stumarks mit (index=IX_stuMarks_scribedExam)
Wählen Sie * aus Stumarks mit (index=IX_stuMarks_scribedExam) aus, wobei die geschriebene Prüfung zwischen 60 und 90 liegt
-------------------------------------------------- --------
--------------- * * * * Anzeigen* * Bild* * * * ----------------
-------------------------------------------------- --------
Ansicht: Es handelt sich um eine virtuelle Tabelle, eine Abfragemethode, die auf den Daten einer Tabelle oder mehrerer Tabellen basiert.
Allgemeine Funktionen: Zeilen in Tabellen filtern, verhindern, dass unbefugte Benutzer auf vertrauliche Daten zugreifen, mehrere physische Datentabellen in eine logische Datentabelle abstrahieren
--Grammatik:
--create Ansicht Ansichtsname
--als
--<Anweisung auswählen>
Code
benutze studb
gehen
falls vorhanden (wählen Sie * aus sysobjects aus, wobei name='view_stuinfo_stumarks')
Drop-Ansicht view_stuinfo_stumarks
gehen
Ansicht view_stuinfo_stumarks erstellen
als
Wählen Sie Name=stuname, Studentennummer=stuinfo.stuno, schriftliches Testergebnis=schriftliche Prüfung, Computertestergebnis=labexam,
Durchschnittspunktzahl = (schriftliche Prüfung+Laborprüfung)/2 von stuinfo links stumarks beitreten auf stuinfo.stuno = stumarks.stuno
gehen