Grundkomponenten 2 Grundkomponenten Die SQL-Sprache des SQL Servers heisst Transact-SQL und hat wie jede andere Computersprache folgende Grundelemente: Literale alphanumerische, hexadezimale oder numerische Konstante 'Stuttgart' "1000 Berlin 30" X'53514C0D' 130 -130.00 -0.357E5 Begrenzer Trenner der lexikalischen Einheiten: , ( ) < > . : = + - * / <> <= >= Kommentare mit: /* ... */ oder -- Namen bis zu 30 alphanumerische Zeichen, muss mit einem Buchstaben oder _ # @ beginnen. Numerische Datentypen decimal(p,[q]) beschreibt Festpunktzahlen. Die Angabe p kennzeichnet die Anzahl aller Ziffern und q die Anzahl der Ziffern hinter dem Dezimalkomma. Decimal-Werte werden, abhängig von der Angabe p, in 2 bis einschliesslich 17 Byte gespeichert. numeric(p,[q]) Synonym für decimal real beschreibt Gleitkommazahlen, deren Wertebereich dem Datentyp float des C-Übersetzers an dem jeweiligen Rechner entspricht. float[(p]) beschreibt Gleitkommazahlen, deren Wertebereich dem Datentyp double des C-Übersetzers an dem jeweiligen Rechner entspricht. Die Angabe p spezifiziert die Genauigkeit, wobei für p<16 die einfache Genauigkeit (4 Byte) und für p>=16 die doppelte Genauigkeit (8 Byte) verwendet wird. double precision Synonym für den Datentyp float mit der doppelten Genauigkeit. money wird für die Darstellung von Geldbeträgen verwendet. Die money-Werte entsprechen den decimal-Werten, die in acht Byte gespeichert und auf zwei Stellen hinter dem Komma aufgerundet sind. smallmoney entspricht dem money-Datentyp, wird aber in 4 Byte gespeichert. Alphanumerische Datentypen Der alphanumerische Datentyp ermöglicht die Darstellung von Zeichenketten, wobei alle alphanumerischen Zeichen innerhalb der Zeichenkette auftreten können. Die alphanumerischen Datentypen sind: TFH Berlin/Steyer 2-1 Grundkomponenten char(n) beschreibt eine Zeichenkette, wobei n die Anzahl der Zeichen innerhalb der Zeichenkette angibt. Der Wert von n kann bis zu 255 betragen. character(n) ist eine zusätzliche, äquivalente Schreibweise für char(n). varchar(n) beschreibt eine Zeichenkette variabler Länge (0<n<256). Dieser Datentyp unterscheidet sich vom Datentyp char dadurch, dass die varchar-Werte genau in ihrer tatsächlichen Länge gespeichert werden. Synonyme sind char varying bzw. character varying. text(n) definiert eine Textdatei bis zu 2 Gigabyte Länge. nchar(n) steht für national char(n). Jede Zeichenkette dieses Datentyps definiert die Zeichenkette vom Typ cbar(n) für den jeweiligen nationalen Zeichensatz. nvarchar(n) steht für national varchar(n). Jede Zeichenkette dieses Datentyps definiert die Zeichenkette vom typ varchar(n) für den jeweiligen nationalen Zeichensatz. Datums- und Zeitangaben datetime beschreibt eine Datums- und Zeitangabe, als Ganzzahlen in je vier Byte gespeichert. smalldatetime beschreibt eine Datums- und Zeitangabe, als Ganzzahlen in je zwei Byte gespeichert sind. Binäre Datentypen und der Datentyp bit binary(n) beschreibt eine Bitkette fester Länge mit genau n 8-Bit-Bytes (0<n<256) varbinary(n) beschreibt eine Bitkette variabler Länge mit maximal n 8-Bit-Bytes (0<n<256) image(n) beschreibt eine Bitkette fester Länge, deren Bitkette fast uneingeschränkt ist. Die Grenze liegt bei 2**31 Bytes. Abgeleitete Datentypen timestamp beschreibt eine Spalte, die vom System als varbinary(8) definiert ist. Der Wert dieser Spalte wird jedesmal um eins erhöht, wenn eine Zeile mit der timestamp-Spalte eingefügt bzw. geändert wird. Der Benutzer kann den Wert der timestamp-Spalte nicht ändern. sysname beschreibt die Namen von Datenbankobjekten im Systemkatalog (als varchar(20) definiert). Aggregatfunktionen Die Aggregatfunktionen werden auf Datenwerte aus einer Spalte angewendet. AVG MAX MIN SUM COUNT arithmetisches Mittel grösster Wert kleinster Wert Summe aller Datenwerte Anzahl der Datenwerte Numerische Funktionen abs(n) acos(n) asin(n) absoluter Wert von n Arcuscosinus von n Arcussinus von n TFH Berlin/Steyer 2-2 Grundkomponenten atan(n) atn2(n,m) ceiling(n) cos(n) cot(n) exp(n) log(n) log10(n) pi power(n,e) rand round(n,p) sign(n) sin(n) sqrt(n) tan(n) Arcustangens von n Arcustangens von n/m nächste grössere Ganzzahl von n Cosinus von n Cotangens von n e hoch n natürlicher Logarithmus von n Zehnerlogarithmus von n Zahl PI n hoch e Zufallszahl zwischen 0 und 1 rundet n mit Genauigkeit p liefert Vorzeichen von n (+1,0,-1) Sinus von n Quadratwurzel von n Tangens von n Datumsfunktionen yy(year) qq(quarter) mm(month) dy(day of year) dd(day) dw(day of week) wk(week) hh(hour) mi(minute) ss(second) ms(millisecond) datepart(einheit,datum) datename(einheit,datum) datediff(einheit,dat1,dat2) dateadd(einheit,zahl,datum) getdate() Jahreswert Quartal Monat Jahrestagsnummer Tag Wochentag Woche Stunde Minute Sekunde Millisekunde liefert Zahl für einheit in datum liefert Zeichenkette für einheit Zeitunterschied in einheit addiert zahl Einheiten zu datum liefert aktuelle Datum und Zeit Zeichenkettenfunktionen ascii(zeichen) char(ganzzahl) convert(typ,[(lng)],a) charindex(z1,z2) difference(z1,z2) lower(z1) ltrim(z) patindex(z1,spalte) replicate(z,i) reverse(z) right(z,länge) rtrim(z) space(länge) str(b1,[länge]) stuff(z1,a,länge,z2) substring(z,a,länge) upper TFH Berlin/Steyer wandelt zeichen in ASCII wandelt ganzzahl in CHAR wandelt Ausdruck a in typ liefert Position von z1 in z2 liefert phonetische Ähnlichkeitszahl wandelt Grossbuchstaben in klein um entfernt führende Leerzeichen liefert Position von z1 in spalte wiederholt z i-mal ändert in z die Zeichenreichenfolge liefert rechten Teil von z entfernt schliessende Leerzeichen liefert Leerzeichenkette wandelt binäre Zahl b1 in Zeichenkette ersetzt a in z1 durch z2 mit länge liefert aus z ab a in länge wandelt Kleinbuchstaben in gross um 2-3 Grundkomponenten BLOB-Funktionen patindex(%muster%,ausdr) textptr(spalte1) textvalid(sp1,zeiger1) gibt Position von muster in ausdr (oder 0) Textpointer auf physikalische Seite von spalte1 prüft, ob zeiger1 korrekt für Spalte sp1 Systemfunktionen col_name(o_id,s_id) col_length(obj,sp) data_length(z) db_id([db_name]) db_name([db_id]) index_col(tab,i,nr) is_null(ausdr,ausdr1) host_id([host]) host_name([h_id]) object_id(obj_name) obj_name(obj_id) user_id([ben_name]) user user_name([ben_id]) suser_id([name]) suser_name([id]) liefert Name von s_id in Objekt o_id liefert längsten Spaltenwert von sp berechnet Länge von z liefert Bezeichner zu Datenbankname liefert Name zu Datenbankbezeichner liefert Spaltenname in tab ersetzt ausdr durch ausdr1, wenn er NULL ist liefert Bezeichner für Hostrechnername liefert Name für Hostrechnerbezeichner gibt Bezeichner für Datenbankobjektname gibt Name für Datenbankobjektbezeichner liefert Bezeichner für Benutzername Synonym für user_name liefert Name für Benutzerbezeichner gibt Bezeichner für Server-Benutzername gibt Name für Server-Benutzerbezeichner Geburtsjahre für alle Zeilen: select year(geburt) from person Alter für alle Zeilen: select year(getdate())-year(geburt) from person TFH Berlin/Steyer 2-4