- RobertKrah.de

Werbung
Microsoft SQL-Server 2000
Anleitung
1 Integritätsbedingungen und Constraints
Unter constraints (=Einschränkungen) versteht man Begrenzungen des Wertebereichs von
Attributen. Constraints können Spalten oder Tabellen zugeordnet werden.
Einige constraints haben Sie schon oft verwendet:
Not Null
Das Attribut muss einen Wert enthalten
Unique
Attributwert muss eindeutig sein
Primary key
Das Attribut (oder die Kombination von Attributen) ist Primärschlüssel
Foreign key
Das Attribut ist in einer anderen Tabelle als Primärschlüsel vorhanden
On delete cascade
Das Löschen eines Datensatzes führt zum kaskadierenden Löschen der über foreign key verbundenen Datensätze
Sehen wir uns zunächst an, wie Fremdschlüssel festgelegt werden, und welche Wirkung sie
haben:
Aufgabe: Im Query Analyzer soll die Datenbank SQL aktiviert werden. In der Datenbank
wird eine Tabelle kunden erstellt:
create table kunden(
Kunden_nr smallint primary key,
nachname varchar(20),
vorname varchar(30))
Zusätzlich soll eine Tabelle konten erstellt werden. Kunden können mehrere Konten haben,
deshalb wird die kunden_nr (Primärschlüssel in der Tabelle Kunden) hier mit der referentiellen Integrität festgelegt:
create table konten(
Konto_nr smallint primary key,
kunden_nr smallint references kunden,
kontostand decimal(12,2))
Aufgabe: Erfassen Sie (der Einfachheit halber mit dem Enterprise Manager) die folgenden
Kunden:
Aufgabe: Erfassen Sie dann in der Tabelle Konten diese Daten:
- 45 -
Microsoft SQL-Server 2000
Anleitung
Nach dem Eingeben der letzten Zeile (Kunden_nr 5 existiert nicht) erfolgt die Fehlermeldung:
Aufgabe: Öffnen Sie noch einmal die Tabelle Kunden. Versuchen Sie, einen Kunden zu
löschen, der ein Konto hat. Die folgende Warnmeldung wird mit Ja beantwortet:
Danach meldet der SQL Server dann wieder die Fehlermeldung von oben. Damit sind die
beiden Bedingungen der referentiellen Integrität erfüllt.
1.1 Tabelleneinschränkunen mit Namen versehen
Häufig werden constaints gegeben, denen man direkt einen Namen zuweisen will. Dies ist
zwar optional, aber oft empfehlenswert. Sehen Sie sich noch einmal die create-tableAnweisung von der vorigen Seite an:
create table kunden(
Kunden_nr smallint primary key,
nachname varchar(20),
vorname varchar(30))
Wenn die Einschränkung, die durch den Primärschlüssel ausgedrückt wird, zum Beispiel den
Namen pk_primaerschluessel bekommen soll, dann lautet die Syntax:
create table kunden2(
Kunden_nr smallint not null constraint pk_primaerschluessel
primary key,
nachname varchar(20),
vorname varchar(30))
Aufgabe: Erstellen Sie diese Tabelle kunden2 und lassen Sie die Daten der Tabelle Kunden hineinschreiben:
insert into kunden2
select * from kunden
Auch die vorher erstellte Tabelle Konten soll nun mit einem mit Namen versehenen
constraint (der außerdem explizit als Fremdschlüssel benannt wird) erstellt werden:
- 46 -
Microsoft SQL-Server 2000
Anleitung
create table konten2(
Konto_nr smallint primary key,
kunden_nr smallint not null constraint fk_fremdschluessel
foreign key (kunden_nr)references kunden (kunden_nr),
kontostand decimal(12,2))
Aufgabe: Erstellen Sie diese Tabelle konten2 und lassen Sie alle Daten der Tabelle konten hineinschreiben (insert into konten2 select * from konten).
Aufgabe: Erstellen Sie noch ein Diagramm für die Beziehung zwischen kunden2 und konten2
Beim Erstellen der Beziehungslinie ist
zu sehen, dass die Option Vorhandene
Daten beim Erstellen überprüfen aktiviert ist. Das bedeutet, dass hier die
Regeln der referentiellen Integrität überwacht werden.
Aufgabe: Erstellen Sie in der Datenbank SQL noch die Tabellen Chef und Mitarbeiter .
Dabei sollen folgende constraints herschen:
es gibt keinen Mitarbeiter ohne Chef
jeder Chef hat (mindestens) einen Mitarbeiter
Der Chef muss eine eindeutige Nummer und in jedem Fall einen Namen haben
der Mitarbeiter muss eine eindeutige Nummer und in jedem Fall einen Namen haben
Nehmen Sie anschließend Daten auf:
Chef
Klaus Motz
Peter Wichtig
Mitarbeiter
Petra Hampel
- 47 -
Microsoft SQL-Server 2000
Anleitung
Josef Dull
Fred Arglos
Franz Kanics
Hans Lompel
Lösung: Erstellen der Tabelle Chef
create table chef(
chef_nr smallint not null constraint chef_nummer primary key,
name varchar(20) constraint darf_nie_leer_sein not null,
vorname varchar(20))
Die Tatsache, dass die chef_nr nicht leer sein darf und Primärschlüssel ist, bekommt den
Constraint-Namen chef_nummer
Die Tatsache, dass der Name nicht leer sein darf, bekommt den Constraint-Namen
darf_nie_leer_sein
Erstellen der Tabelle Mitarbeiter
create table mitarbeiter(
ma_nr smallint not null constraint ma_primaerschluessel primary key,
name varchar(20)
constraint darf_nie_leer_sein not null,
vorname varchar(20),
chef_nr smallint not null constraint fremdschluessel_zu_chef foreign
key (chef_nr) references chef (chef_nr))
Constraint-Name ma_primaerschluessel dafür, dass die ma_nr nicht leer sein darf und
Primärschlüssel ist.
Constraint-Name fremdschluessel_zu_chef dafür, dass chef_nr in der Tabelle Mitarbeiter
der Fremdschlüssel ist, der die referentielle Integrität herstellt.
- 48 -
Microsoft SQL-Server 2000
Anleitung
2 Daten unterschiedlicher Herkunft importieren und exportieren
Nach der Methode, mit der in Kapitel 10 (ab S. 38) eine Excel-Datei importiert wurde, können
über DTS (=Data Transformation Services) heterogene Daten im- und exportiert werden. Für
fortgeschrittene Anwendungen ist es dabei möglich, DTS-„Pakete“ zur automatischen bzw.
zeitgesteuerten Übertragung und Umwandlung von Daten zu erstellen.
Der Daten Im- und Export ist sowohl zu und nach den anderen Microsoft-Programmen (Excel, Access, andere SQL-Server-Versionen) als auch über ODBC zu Datenbanken wie Oracle und DB2 (von IBM) oder auch MySQL möglich. Außerdem ist der Im- und Export zu reinen
ASCII-Textdateien möglich, ein Vorgang, der vor allem auch im Zusammenhang mit Daten,
die von Großrechnern stammen, wichtig ist.
2.1 Import und Export von Textdateien
Aufgabe: Kopieren Sie zunächst die Datei order_details.csv vom Netz auf Ihre Festplatte.
Es handelt sich dabei um eine 1,6 Millionen Datensätze große csv-Datei von 36 MB, mit der
das Übertragen von Daten vom Großrechner simuliert werden soll.
Die Daten liegen in dieser Form vor:
Order ID
ProductID
Price Quantity
Discount
110248
11
14.0000
12
0
10248
42
9.8000
10
0
10248
72
34.8000
5
0
10249
14
18.6000
9
0
10249
51
42.4000
40
0
10250
41
7.7000
10
0
Der besseren Lesbarkeit wegen sind
die Semikolons als
Trennzeichen hier
durch Tabstopps
ersetzt.
Aufgabe: Erstellen Sie jetzt zunächst im Enterprise Manager eine neue Datenbank mit dem
Namen Orders, in die diese Daten hinein kommen sollen.
- 49 -
Microsoft SQL-Server 2000
Anleitung
Wählen Sie dann mit
Rechtsklick auf Datenbanken Alle Tasks, Daten Importieren. Nach
dem ersten WillkomenDialogfeld, bei dem Sie
auf Weiter klicken, sehen
Sie das Dialogfeld
Datenquelle wählen
Stellen Sie hier ein:
Anschließend klicken Sie bitte auf Weiter.
Im nächsten Dialogfeld werden Angaben zum Dateiformat gemacht:
Anschließend klicken Sie bitte auf Weiter.
Hier erfolgt jetzt nur die Angabe der Spaltentrennzeichen. Klicken Sie Semikolon an
- 50 -
Microsoft SQL-Server 2000
Anleitung
Anschließend klicken Sie bitte auf Weiter.
Jetzt wird als Ziel die Datenbank orders
eingestellt.
Anschließend klicken Sie bitte auf Weiter.
Im nächsten Schritt wird die
Tabelle (in Fall dieser csvDatei handelt es sich ja nur
um eine einzige Tabelle) angezeigt.
Klicken Sie bitte auf Weiter.
- 51 -
Microsoft SQL-Server 2000
Anleitung
Hier entscheiden wir uns für
Sofort ausführen
Klicken Sie dann bitte auf
Weiter.
Jetzt folgt das Dialogfeld (Hier nicht abgebildet) zum Beenden des Assistenten.
Klicken Sie auf die Schaltfläche Fertigstellen.
Jetzt wird das „Paket“ ausgeführt.
Aufgabe: Öffnen Sie jetzt die Tabelle order_details
Sie sehen, dass die Feldnamen automatisch als Col001, Col002 usw. vergeben wurden.
Außerdem ist der Datentyp überall automatisch Varchar (wie Sie an der Linksbündigkeit der
Daten auch schon sehen können)
- 52 -
Microsoft SQL-Server 2000
Anleitung
Aufgabe: Vergeben Sie die folgenden Feldnamen und Datentypen:
Aufgabe: Speichern Sie den Datenentwurf nach dem Ändern.
Dabei wird eine Warnung
erfolgen:
Bestätigen Sie hier mit Ja.
Wenn Sie dann die Tabelle
öffnen, wird sie so auf dem
Monitor sichtbar:
2.2 Access-Datenbank importieren
Beim Importieren einer Access-Datenbank ist es wichtig, dass zwar die komplette Datenbank
in den SQL Server importiert werden kann, dass man aber darauf achten muss, vorher eine
leere Datenbank im SQL-Server zu erstellen. Sonst werden alle Datenbanken in die MasterDatenbank eingelesen.
Aufgabe: Importieren Sie die Access-Datenbank Video.mdb . Erstellen Sie dafür zunächst
die Datenbank Video im SQL Server.
Als Datenquelle müssen Sie
hier Access wählen.
Die restlichen Schritte sind wie vorher beschrieben. Es wird zum Schluss eine Fehlermeldung stehen, die ihren Grund bei Umwandeln einer Tabelle hat. Diese kann trotzdem ignoriert werden.
- 53 -
Microsoft SQL-Server 2000
Anleitung
2.3 Textdatei exportieren
Jetzt soll eine Tabelle aus der Bespiel-Datenbank Northwind, nämlich die Tabelle Products, als Texttabelle exportiert werden.
Aufgabe: Verwenden Sie wieder den Import/Export-Assistent. Die Schritte sind Ihnen bekannt, beim Ziel müssen Sie den Typ und die Datei angeben:
Bei dem Schritt, bei dem es
um das Zieldateiformat geht,
müssen Sie darauf achten,
die richtige Tabelle abzugeben.
Wenn Sie die exportierte Tabelle in Excel öffnen, müsste sie so aussehen:
A
B
C
ProductName
SupplierID
1 ProductID
2
1 Chai
3
2 Chang
4
3 Aniseed Syrup
5
4 Chef Anton's Cajun Sea
6
5 Chef Anton's Gumbo M
7
6 Grandma's Boysenberry
D
CategoryID
1
1
1
2
2
3
1
1
2
2
2
2
E
QuantityPerUnit
10 boxes x 20 bags
24 - 12 oz bottles
12 - 550 ml bottles
48 - 6 oz jars
36 boxes
12 - 8 oz jars
F
UnitPrice
18
19
10
22
21,35
25
G
H
I
J
UnitsInStock UnitsOnOrder ReorderLevel Discontinued
39
0
10 FALSCH
17
40
25 FALSCH
13
70
25 FALSCH
53
0
0 FALSCH
0
0
0
WAHR
120
0
25 FALSCH
2.4 Import und Export von Daten zu/von MySQL
Für den Im- und Export von MySQL-Datenbanken ist es zunächst erforderlich, auf WindowsEbene den entsprechenden ODBC-Treiber zu installieren.
Aufgabe: Kopieren Sie zu diesem Zweck zunächst die Datei MyODBC-3.51.06.exe Durch
die Datei wird der von MySQL bereitgestellte Treiber installiert.
Durch einen Doppelklick wird die Datei ausgeführt. Es ist nur nötig, einige Male
Next und OK zu klicken, und zum Schluss die Schaltfläche Finish.- Dann ist der
ODBC-Treiber
- 54 -
Microsoft SQL-Server 2000
Anleitung
Aufgabe: Wählen Sie dann die Start, Systemsteuerung, Verwaltung, Dienste, ODBCDatenquellen. Markieren Sie den MySQL ODBC-Treiber und wählen dann
Konfigurieren.
Mit den folgenden Angaben
kann dann die Verbindung z.
B. für die Datenbank Nordwind
her-gestellt werden.
Aufgabe: Starten Sie dann nach bewährter Methode den Umwandlungs-Assistenten. Auf
eine Besonderheit in der Umwandlung muss aber noch hingewiesen werden:
- 55 -
Microsoft SQL-Server 2000
Anleitung
Wenn Sie zum Schritt
Ziel wählen
gelangen, muss ein Datenquellenname (DNS) erstellt
werden.
Wählen Sie hier mit dem
Listenpfeil bei
Benutzer/System-DNS
die vorher erstellte Nordwind-Verbindung
Die restlichen Schritte sind bekannt.
Im MySQL-Monitor können Sie dann die Datenbank sehen:
Im PHPMyAdmin müsste die Datenbank ebenso sichtbar sein:
- 56 -
Microsoft SQL-Server 2000
Anleitung
Aufgabe: Jetzt soll umgekehrt eine MySQL-Datenbank importiert werden. Kopieren Sie zu
diesem Zweck zuerst die kleine Beispieldatenbank Metallwaren (den Ordner Metallwaren) vom Public-Ordner in den Zielordner MySQL\Data.
Die Datenbank Metallwaren muss nun auch im Enterprise Manager erstellt werden.
An dem Punkt, wo Sie im Umwandlungs-Assistenten nach der Benutzer-System-DNS gefragt werden, muss eine neue erstellt werden, wenn nicht schon vorher (wie im ExportBeispiel) eine DNS erstellt wurde.
In diesem Fall muss die Schaltfläche Neu verwendet werden.
Wählen Sie dann auch:
Mit diesen Einstellungen lässt sich
dann die komplette Datenbank
importieren.
2.5 Import von Daten auf eine Website
Die SQL-Server-Datenbank verfügt auch über einen Assistenten, der es ermöglicht, Daten
aus der Datenbank auf eine Website zu bringen. Das heißt, dass HTML-Code generiert wird,
der zum Beispiel eine Tabelle der Datenbank als HTML-Tabelle erstellt, die auf einer Internet-Präsenz gezeigt werden kann. Hier
Am Beispiel der vorher importieren Datenbank Metallwaren, Tabelle Artikel, soll dies gezeigt
werden. Das Tool, mit dem dies möglich ist, ist im SQL Server – Enterprise Manager, ein
bisschen versteckt:
Hier soll aber betont werden, dass dies nur eine Methode für kleinere Projekte darstellen
kann. Professioneller wird es mit PHP (wo auch Funktionen für die Anbindung des SQL Servers vorhanden sind) oder mit Microsofts ASP.
Aufgabe: Wählen Sie den Befehl Extras Assistenten, dann Verwaltung, und dort
SQL Server Web-Assistent.
- 57 -
Microsoft SQL-Server 2000
Anleitung
Klicken Sie auf OK,
wenn Sie den Assistenten gewählt haben.
Im ersten Schritt des
Web-Assistenten ist
nur ein Willkommensgruß zu sehen:
Klicken Sie bitte auf
Weiter.
Dann wird die
Datenbank ausgewählt:
Klicken Sie bitte auf
Weiter.
- 58 -
Microsoft SQL-Server 2000
Anleitung
Im nächsten Schritt
bestimmen wir die Tabelle
Artikel mit allen Spalten für
die Website:
Klicken Sie bitte auf Weiter.
Im nächsten Schritt
bestimmen wir, alle Zeilen
der Tabelle auszuwählen.
Möglich ist hier auch eine
Abfrage.
Danach wird nach einem Zeitplan gefragt:
Klicken Sie bitte auf Weiter.
Anschließend wird abgefragt, wo die HTML-Seite gespeichert werden soll.
- 59 -
Microsoft SQL-Server 2000
Anleitung
Wir wählen eine etwas übersichtlichere Stelle:
Jetzt folgen noch etliche Fragen zur Formatierung der Website, die hier nicht einzeln dargestellt werden sollen.
Nach Abschluss dieser Prozedur sollte
eine HTML-Seite als Ergebnis gezeigt
werden können:
Wenn Sie sich dazu den Quellcode ansehen, dann können Sie erkennen, dass es „reiner“
HTML-Code ist, der keine der früher bei Microsoft bekannten Aufblähungen enthält, die zum
Beispiel von früheren Frontpage-Versionen bekann sind:
<HTML>
<HEAD>
<META content="text/html; charset=utf-8" http-equiv=Content-Type>
<TITLE>Microsoft SQL Server-Web-Assistent</TITLE>
</HEAD>
<BODY>
<H3>Abfrageergebnis</H3>
<HR>
<PRE><TT>Zuletzt aktualisiert: 2004-05-23 19:46:36.420</TT></PRE>
<P>
<P><TABLE BORDER=1>
<TR><TH ALIGN=LEFT>Artikel_ID</TH><TH ALIGN=LEFT>Artikel</TH><TH ALIGN=LEFT>VK_Preis</TH><TH ALIGN=LEFT>Lagerbestand</TH></TR>
<TR><TD><TT>1</TT></TD><TD><TT>Schrauben</TT></TD><TD><TT>.20</TT></TD><TD>
<TT>10000</TT></TD></TR>
<TR><TD><TT>2</TT></TD><TD><TT>Nägel</TT></TD><TD><TT>.02</TT></TD><TD><TT>
2000</TT></TD></TR>
<TR><TD><TT>3</TT></TD><TD><TT>Bolzen</TT></TD><TD><TT>.10</TT></TD><TD><TT
>1500</TT></TD></TR>
<TR><TD><TT>4</TT></TD><TD><TT>Nieten</TT></TD><TD><TT>.03</TT></TD><TD><TT
>20000</TT></TD></TR>
<TR><TD><TT>5</TT></TD><TD><TT>Dübel</TT></TD><TD><TT>.25</TT></TD><TD><TT>
800</TT></TD></TR>
<TR><TD><TT>6</TT></TD><TD><TT>Klammern</TT></TD><TD><TT>.10</TT></TD><TD><
TT>10000</TT></TD></TR>
</TABLE>
<HR>
</BODY>
</HTML>
- 60 -
Herunterladen