SQL Server Datentypen Tutorial

In SQL werden die Spalten einer Tabelle definiert, um eine bestimmte Art von Wert wie Zahlen, Daten oder Text zu speichern. Mit über dreißig Arten von SQL Server – Datentypen zur Auswahl, Datentypen können einschüchternd erscheinen, aber in Wirklichkeit, es gibt nur ein paar häufig in Datenbanken verwendet.

Sobald Sie Datentypen im Allgemeinen verstehen, ist es kein kompliziertes Thema. Sie werden auch verstehen, warum Datentypen benötigt werden und warum es so viele Varianten gibt.,

In diesem Artikel werden wir die gängigsten Datentypen und die Best Practices für ihre Verwendung durchgehen.

Alle Beispiele für diese Lektion basieren auf Microsoft SQL Server Management Studio und der AdventureWorks2012-Datenbank. Erste Schritte mit diesen kostenlosen Tools mit meinem Leitfaden Erste Schritte mit SQL Server.

Was sind SQL Server-Datentypen?

Bevor wir uns mit den in SQL Server verwendeten Datentypen befassen, ist es meiner Meinung nach wichtig, dass jeder versteht, was ein Datentyp ist und warum er für die Verwendung in Computern benötigt wird.

Für unser Beispiel sprechen wir über eine Person., Wenn Sie über die Informationen nachdenken, die Sie zur Beschreibung einer Person verwenden können, können Sie denken, dass Sie deren Namen, Geburtsdatum, Gewicht und Anzahl der Kinder erfassen. Für jedes dieser Attribute fallen die Daten im Allgemeinen in mehrere Kategorien.

Namen werden als Text, Geburtsdaten als Kalenderdaten und Gewicht als Dezimalwerte und eine Anzahl von Kindern als ganze Zahlen gespeichert. Jede dieser Wertkategorien ist ein Datentyp.

Wie SQL-Typen helfen

Datentypen definieren die Eigenschaften der Daten, die an einem Speicherort wie einer Datenbankspalte gespeichert werden können., Ein Datentyp definiert den möglichen Satz von Werten, die akzeptiert werden. Beispielsweise kann ein INT-Typ, der in SQL Server für integer steht, nur ganze Zahlen akzeptieren, Dezimalwerte sind nicht zulässig.

Hier ist eine Auflistung einiger Personen und ihres Alters

Alter-Nur Textwerte

Können Sie das Problem mit diesem Alter sehen? Sie sind alle in einem inkonsistenten format. Sie sind nicht nur schwer zu lesen, sondern auch das Sortieren und Berechnen der Daten ist schwierig., Durch die Verwendung von SQL Server – Datentypen, die den erwarteten Datentyp erzwingen, können wir ein viel besseres Ergebnis erzielen. Hier ist die gleiche Tabelle mit dem Alter, das als ganze Zahlen angezeigt wird

Alter, das dem INT-Datentyp entspricht

Wenn das Alter als Ganzzahl definiert ist, werden die Erwartungsdaten als ganze Zahlen eingegeben.

Ohne auf technische Details einzugehen, können Sie auch sehen, dass das Speichern des Alters als Ganzzahl viel weniger Platz beansprucht als das Alter in der ersten Tabelle., Dies scheint bei kleinen Datenbanken keine große Überlegung zu sein, aber wenn Sie mit Daten auf Smartphones oder „Big Data“ – Szenarien arbeiten, summieren sich diese Überlegungen.

Sobald das System den Datentyp verstanden hat, kann es die Daten in einer sinnvollen Reihenfolge sortieren und Berechnungen durchführen.

Gründe für die Verwendung von SQL Server – Datentypen

Hier sind einige Gründe, warum Datentypen wichtig sind:

  1. Daten werden in einem konsistenten und bekannten Format gespeichert.
  2. Wenn Sie den Datentyp kennen, können Sie wissen, welche Berechnungen und Formulierungen Sie für die Spalte verwenden können.,
  3. Datentypen beeinflussen die Speicherung. Einige Werte beanspruchen mehr Speicherplatz, wenn sie in einem Datentyp im Vergleich zu einem anderen gespeichert werden. Nehmen wir zum Beispiel unsere Alterstabellen oben.
  4. Datentypen beeinflussen die Leistung. Je weniger Zeit die Datenbank hat, um Werte abzuleiten oder zu konvertieren, desto besser. „Ist Dezember 32, 2015 ein Datum?“

Häufig verwendete SQL Server-Datentypen

In SQL definieren Sie, welche Art von Daten in Spalten gespeichert werden sollen. Ein Beispiel enthält Text oder numerische Daten.,

Dies ist der Datentyp der Spalte und eine ihrer wichtigsten Eigenschaften, da allein bestimmt wird, ob ein Wert für die Speicherung in einer Spalte gültig ist.

Es gibt über dreißig verschiedene Datentypen, aus denen Sie auswählen können, wenn Sie Spalten definieren, einige haben bestimmte Verwendungszwecke, z. B. das Speichern von Bildern.

In diesem Artikel werden wir die sieben Datentypen behandeln, die Sie am häufigsten in Ihrem täglichen Gebrauch von SQL begegnen werden., Dies sind:

  • INT
  • VARCHAR, NVARCHAR
  • DATETIME
  • DECIMAL, FLOAT
  • BIT

INT – Integer-Datentyp

Die integer-Datentyp speichert ganze zahlen. Beispiele sind -23, 0, 5 und 10045. Ganze Zahlen enthalten keine Dezimalstellen. Da der SQL Server eine Anzahl von Computerwörtern verwendet, um eine Ganzzahl darzustellen, können Maximal-und Minimalwerte dargestellt werden. Ein INT-Datentyp kann einen Wert von -2.147.483.648 bis 2.147.483.647 speichern.,

Zu den praktischen Anwendungen des INT-Datentyps gehört die Verwendung zum Zählen von Werten, zum Speichern des Alters einer Person oder zur Verwendung als ID-Schlüssel für eine Tabelle.

Aber INT wäre nicht so gut, den Adressraum einer Terabyte-Festplatte im Auge zu behalten, da der INT-Datentyp nur 2 Milliarden beträgt und wir die Billionen verfolgen müssten. Dafür könnten Sie BIGINT verwenden.

Der INT-Datentyp wird in Berechnungen verwendet., Da DaysToManufacture als INT definiert ist, können wir Stunden einfach berechnen, indem wir sie mit 24 multiplizieren:

SELECT Name, DaysToManufacture, DaysToManufacture * 24 as HoursToManufactureFROM Production.Produkt
/* Answer */SELECT Name, DaysToManufacture, DaysToManufacture * 24 as HoursToManufactureFROM Production.Product

Hier sehen Sie die Ergebnisse

Ergebnisse von INT Berechnungen

Es gibt viele Operationen und Funktionen, die Sie mit ganzen Zahlen verwenden können, die wir behandeln, sobald wir uns mit Funktionen befassen.,

VARCHAR und NVARCHAR – Textwerte

Verwenden Sie VARCHAR und NVARCHAR, um Textwerte variabler Länge zu speichern. „VARCHAR“ steht für Zeichen variabler Länge.

Geben Sie die Anzahl der Zeichen an, die in einem VARCHAR oder NVARCHAR gespeichert werden sollen, wenn die Spalte definiert ist. Beachten Sie, wie Name definiert ist, um fünfzig Zeichen zu enthalten:

VARCHAR Definition im SSMS-Objektexplorer

Was VARCHAR populär macht, ist, dass Werte mit weniger als fünfzig Zeichen weniger Platz beanspruchen. Der Speicherplatz wird nach Bedarf zugewiesen., Dies unterscheidet sich vom Datentyp CHAR, der unabhängig von der Länge der tatsächlich gespeicherten Daten immer die angegebene Länge zuweist.

Der VARCHAR-Datentyp kann normalerweise maximal 8.000 Zeichen speichern. Verwenden Sie den NVARCHAR-Datentyp zum speichern von Unicode-text. Da UNICODE-Zeichen den doppelten Speicherplatz belegen, können NVARCHAR-Spalten maximal 4.000 Zeichen speichern.

Der Vorteil, den NVARCHAR gegenüber VARCHAR hat, ist, dass es Unicode-Zeichen speichern kann. Dies macht es praktisch, erweiterte Zeichensätze wie die für Sprachen wie Kanji zu speichern.,

Datenbanken, die vor SQL 2008 entwickelt wurden, verwenden normalerweise VARCHAR; Modernere Datenbanken oder solche globaler Natur verwenden jedoch tendenziell NVARCHAR.

DATETIME-Datum und Uhrzeit

Verwenden Sie den Datentyp DATETIME, um Datum und Uhrzeit zu speichern. Ein Beispiel für einen Datenzeitwert ist

1968-10-23 1:45:37.123

Dies ist der Wert für den 23. Eigentlich ist die Zeit genauer als die. Die Zeit ist wirklich 45 Minuten, 37.123 Sekunden.

In vielen Fällen müssen Sie nur das Datum speichern. In diesen Fällen wird die Zeitkomponente auf Null gesetzt., So ist der 5. November 1972

1972-11-05 00:00:00.000

Eine DATETIME kann Daten vom 1. Januar 1753 bis zum 31. Dies macht die DATETIME gut für die Aufzeichnung von Daten in der heutigen Welt, aber nicht so sehr in William Shakespeares.

Wenn Sie sich mit den verschiedenen integrierten SQL-Funktionen vertraut machen, können Sie die Daten bearbeiten. Um Ihnen einen Einblick zu geben, verwenden wir die Jahresfunktion, um die jedes Jahr eingestellten Mitarbeiter zu zählen. Bei Angabe eines DATETIME-Werts gibt die Funktion YEAR das Jahr zurück.,

Die Abfrage, die wir verwenden, ist

Der Vorteil ist, dass der DATETIME-Typ sicherstellt, dass die Werte gültige Daten sind. Sobald dies sichergestellt ist, können wir eine Reihe von Funktionen verwenden, um die Anzahl der Tage zwischen Datumsangaben, dem Monat eines Datums usw. zu berechnen.

Wir werden diese verschiedenen Funktionen im Detail in einem anderen Blog-Artikel erkunden.

DEZIMAL-und FLOAT-Dezimalpunkte

Verwenden Sie sowohl DEZIMAL-als auch FLOAT-Datentypen, um mit Dezimalwerten wie 10.3 zu arbeiten.,

Ich habe DEZIMAL und FLOAT in die gleiche Kategorie zusammengefasst, da beide Werte mit Dezimalpunkten verarbeiten können; Beide tun dies jedoch unterschiedlich:

Wenn Sie genaue Werte benötigen, z. B. bei der Arbeit mit Finanz-oder Buchhaltungsdaten, verwenden Sie DEZIMAL. Der Grund dafür ist, dass Sie mit dem dezimalen Datentyp die Anzahl der zu verwaltenden Dezimalpunkte definieren können.

DEZIMAL

DEZIMALE Datentypen werden durch Genauigkeit und Skalierung definiert. Die Genauigkeit bestimmt die Anzahl der zu speichernden Gesamtziffern; während scale die Anzahl der Ziffern rechts neben dem Dezimalpunkt bestimmt.,

Ein DEZIMALER Datentyp wird als DEZIMAL(precision,scale) angegeben.

Ein dezimaler Datentyp darf nicht mehr als 38 Stellen betragen. Die Genauigkeit und der Maßstab müssen der folgenden Beziehung entsprechen

0 <= scale <= precision <= 38 digits

In der Produktion.Produkttabelle, der Datentyp der Gewichtsspalte ist als DEZIMAL(8,2) definiert. Die erste Ziffer ist die Genauigkeit, die zweite die Skala.

Das Gewicht hat acht Gesamtziffern, zwei davon rechts neben der Dezimalstelle. Wir werden die folgende Beispielabfrage zu veranschaulichen, wie dieser Datentyp.,

SELECT DISTINCT WeightFROM Produktion.Gewicht des Produkts ZWISCHEN 29.00 und 189.00 GEWICHT DESC
/* Answer */SELECT DISTINCT WeightFROM Production.ProductWHERE Weight BETWEEN 29.00 and 189.00ORDER BY Weight DESC

FLOAT

Wo Dezimaldatentypen für genaue Zahlen ideal sind, sind FLOATs wirklich gut für lange numerische Werte. Obwohl ein Dezimalwert insgesamt 38 Ziffern haben kann, ist dies in vielen technischen und wissenschaftlichen Anwendungen unzureichend. FLOAT steigt in wissenschaftlichen Anwendungen, in denen extreme numerische Werte auftreten, an die Spitze!

FLOATS haben einen Bereich von-1.,79E+308 bis 1.79 E+308. Das bedeutet, dass der größte Wert 179 gefolgt von 306 Nullen sein kann (groß in der Tat!).

Aufgrund der Art und Weise, wie Float-Daten im Computer gespeichert werden (siehe IEEE 754 Floating Point Specification), ist die gespeicherte Zahl eine extrem nahe Annäherung. Für viele Anwendungen ist dies gut genug.Vermeiden Sie aufgrund des ungefähren Verhaltens die Verwendung von <> und = Operatoren in der WHERE-Klausel. Diese Aussage hat May DBAs verbrannt!

WHERE mass = 2.5

Ihre Erwartung wird gestrichelt, wenn Masse gleich 2 sein soll.,5, aber wirklich, auf dem Computer wird es als 2.49999999999999999 gespeichert; daher nicht gleich 2.500000000000000!

Das ist die Natur von Gleitkommazahlen und Computern. Sie und ich sehen 2.49999999999999999 und denken, für praktische Zwecke ist es 2.5, aber auf den Computer, waren nur ein bisschen aus. J

BIT-Boolesche oder Ja/Nein-Werte

Es gibt Zeiten, in denen Sie nur speichern müssen, ob etwas „ist“ oder „nicht.“Zum Beispiel, ob ein Mitarbeiter aktiv ist. In diesen Fällen kommt der Bitdatentyp zu seinem eigenen. Dieser Datentyp ist einer von drei Zuständen: 1, 0 oder NULL.,

Der Wert von 1 bedeutet TRUE und 0 FALSE.

In dieser Abfrage, Listen wir alle Festanstellung job-Titel

SELECT DISTINCT JobTitleFROM HumanResources.EmployeeWHERE SalariedFlag = 1
SELECT DISTINCT JobTitleFROM HumanResources.EmployeeWHERE SalariedFlag = 1

Wir könnte auch verwendet werden, Wahr ‚ statt 1. Hier ist das gleiche Beispiel mit „Wahr“

Leave a Comment