19.01.2006

Werbung
Kein Titel
1/2
Grundlagen der Informations- und
Kommunikationstechnologie
(12. Vorlesung, letzte Änderung: 18.01.2006)
Relationale Datenbanksoftware
Die Software für die Bibliotheksverwaltung basiert heute in der Regel auf relationalen Datenbanken.
Beispiele für relationale Datenbanksoftware:
Oracle
Informix
Gupta
Sybase
und im nichtkommerziellen Bereich haben sich MySQL und Postgres einen Namen gemacht.
Praktische Beispiele werden wir mit MySQL realisieren.
Die Datenbanksoftware relationaler Datenbanken benutzt die Client-Server-Technologie, das
bedeutet, dass die Arbeit mit den Datenbanken, die das Datenbankserverprogramm verwaltet, über
Datenbankclientprogramme erfolgt. Diese beiden Programme müssen sich nicht auf ein
und demselben Rechner befinden. Die Programme benutzen die Internetprotokolle zur
Kommunikation miteinander. Dies geschieht analog der Zusammenarbeit zwischen den
WWW-Clientprogrammen (Netscape, Internet Explorer, Opera, Firefox etc.) und den
WWW-Serverprogrammen (z.B. dem Apache-Server). Das einfachste Clientprogramm für den
MySQL-Server ist die MySQL-Console. Wir werden diese gleich kennenlernen und auch noch ein
weiteres Clientprogramm (MySQL-Front) nutzen, welches uns auf Grund der grafischen Oberfläche
den Umgang mit dem Datenbankserver erleichtern wird. Die
Arbeit mit den Datenbanken wird mit Hilfe der Sprache SQL (Structured Query Language)
durchgeführt. Die Sprache SQL wird dabei nicht nur für die Datenbankabfragen, sondern für die
gesamte Kommunikation mit derDatenbank genutzt. Sie ist ähnlich umfangreich wie es moderne
Programmiersprachen sind. Wir können in der wenigen Zeit nur die wichtigsten Befehle, Statements
kennenlernen.
Wichtige Befehle in SQL
Mit Hilfe von
prompt> mysql
bzw.
promt> mysql -h host -u user -p
starten wir die MySQL-Konsole. Im zweiten Fall wird mit der Option h auf einen Host verwiesen, mit
der Option u will man als bestimmter User mit der Datenbank arbeiten und die Option p bedeutet, dass
danach eine Passwort-Abfrage erscheinen wird. Wenn wir so die Konsole gestartet haben, können wir
zur Eingabe der SQL-Befehle übergen.
v12.htm
19.01.2006 / 02:05
Kein Titel
2/2
Mit den folgenden Befehlen werden wir uns heute beschäftigen.
CREATE DATABASE name
erzeugt eine Datenbank mit dem angegebenen Namen
USE name
öffnet die genannte Datenbank zur Nutzung
DROP name
Löscht die Datenbank mit dem angegebenen Namen
SHOW DATABASES
zeigt die Datenbanken des Servers an
SHOW TABLES
zeigt die Tabellen (Dateien) einer vorher mit USE ausgewählten Datenbank an
CREATE TABLE name ( spaltendefinition [, spaltendefinition ...])
definiert eine Tabelle mit den betreffenden Spalten. Die Spaltendefinition enthält den Namen der
Spalte, den Datentyp und evtl. spezielle zusätzliche Informationen zu der Spalte
DROP tabellenname
löscht die angegebene Tabelle in einer Datenbank, die vorher mit USE geöffnet wurde
INSERT INTO tabellenname (spaltenname [, spaltenname ....]) VALUES (wert [, wert ...])
fügt neue Datensätze bzw. Teile von Datensätze in eine Tabelle ein. Die Reihenfolge der
Spaltennamen und die Reihenfolge der Werte bestimmt den Zusammenhang
DELETE FROM tablename WHERE bedingung
löscht Datensätze, die die Bedingung erfüllen, aus einer Tabelle
SELECT ausdruck FROM tabellenname alias [, tabellenname alias ....] WHERE bedingung
selektiert Daten, die eventuell durch den Ausdruck noch verändert werden von verschiedenen
Tabellen, falls bestimmte Bedingungen erfüllt sind
GRANT recht [(spalten)] ON (tabellenname| * | *.* | datenbankname.*)
TO benutzername [IDENTIFIED BY password]
ermöglicht es sehr spezielle Rechte für Nutzer zu vergeben
Die hier erwähnten Befehle haben in der Regel noch weitere Optionen. Ich habe nur die wesentlichen,
häufig genutzten Strukturen hier angegeben.
Der Server http://www.mysql.de/ stellt sowohl die Software als auch Handbücher und andere
Dokumentationen zu MySQL zur Verfügung.
Auf den nächsten beiden Seiten finden Sie weitere Sprachelemente von MySQL kurz und knapp
zusammengestellt.
v12.htm
19.01.2006 / 02:05
UNIX_TIMESTAMP([Datum])
FROM_UNIXTIME(UNIX_TIMESTAMP)
SEC_TO_TIME(Sekunden)
TIME_TO_SEC(Zeit)
FOUND_ROWS()
MASTER_POS_WAIT(Log-Datei, Log-Position)
Zahlen formatieren
FORMAT(X, D)
FUNKTIONSREFERENZ
Datum & Zeit
DAYOFWEEK(Datum)
WEEKDAY(Datum)
DAYOFMONTH(Datum)
DAYOFYEAR(Datum)
MONTH(Datum)
DAYNAME(Datum)
MONTHNAME(Datum)
QUARTER(DATUM)
WEEK(Datum[,Beginn])
YEAR(Datum)
YEARWEEK(Datum [, Beginn])
HOUR(Zeit)
MINUTE (Zeit)
SECO N D (Zeit)
PERIOD_ADD(Zeit,Monate)
PERIOD_DIFF(Zeit1,Zeit2)
DATE_ADD(Datum, Zeitintervall)
DATE_SUB(Datum, Zeitintervall)
ADDDATE(Datum, Zeitintervall)
SUBDATE(Datum, Zeitintervall)
EXTRACT(Typ from Datum)
TO _DAYS (DATUM)
FROM DAYS(N)
DATE_FORMAT(Datum,Format)
TIME_FORMAT(Zeit, Format)
CURDATE()* oder CURRENT_DATE()**
CURTIME()* oder CURRENT_TIME()**
NOW()
SYSDATE()
CURRENT_TIMESTEMP()
* ODBC-kompatibel
** ANSI SQL kompatibel
Sperren von Ressourcen
Kontrollstrukturen
GET_LOCK(String, Timeout)
RELEASE_LOCK(String)
LOCK TABLES Tabelle [AS alias] {READ | [READ LOCAL] | [LOW_PRIORITY]
WRITE} [, Tabelle ...]
UNLOCK TABLES
IFNULL(Ausdruck1, Ausdruck2)
NULLIF(Ausdruck1, Ausdruck2)
IF(Ausdr1, Ausdr.2, Ausdr.3)
CASE Wert WHEN [Vergleichswert] THEN Ergebnis [WHEN [Vergleichswert] THEN
Ergebnis] ... [ELSE Ergebnis]
END
CASE WHEN [Bedingung] THEN Ergebnis [WHEN [Bedingung] THEN Ergebnis]
.... [ELSE Ergebnis]
END
Allgemeine Funktionen
Datenbanken und Anwender
DATABASE()
USER()
SYSTEMUSER()
SESSION_USER()
Informationen über das System
VERSION()
CONNECTION_ID()
BENCHMARK(Ausdruck, Anzahl)
Funktionen zur Verschlüsselung
PASSWORD(String)
ENCRYPT(String [,Salt])
ENCODE(String, Passwort-String)
Funktionen zur Entschlüsselung
des_encrypt(ZuEntschlüsseln, Flag, [Schlüsselnummer | Schlüsselstring ])
des_encrypt(ZuEntschlüsseln, [ Schlüsselstring ])
Prüfsummen
MD5(String)
IP-Adressen wandeln
INET_NTOA(Ausdruck)
INET_ATON(Ausdruck)
String-Funktionen
ASCII(String)
ORD(String)
Arbeiten mit Zahlensystemen
CONV(Zahl, Quellbasis, Zielbasis)
BIN(Zahl)
OCT(ZAHL)
HEX(Zahl)
CHAR(N1,...)
Strings vereinigen
CONCAT(String1, String2, ...)
CONCAT_WS(Trenner, String1, String2, ...)
Längen bestimmen
LENGTH(String)
OCTET_LENGTH(String)
CHAR_LENGTH(String)
CHARACTER_LENGTH(String)
BIT_LENGTH(String)
LOCATE(Substring, String, [Position])
POSITION(Substring IN String)
INSTR(String, Substring)
Strings auffüllen
LPAD(String, Länge, Füllzeichen)
RPAD(String, Länge, Füllzeichen)
Arbeiten mit Teilstrings
SUBSTRING(String, Position)
SUBSTRING(String FROM Position [FOR Länge])
MID(String, Position, Länge)
SUBSTRING INDEX(String, Trenner, Anzahl)
LTRI M (String)
RTRIM (String)
TRIM([[ BOTH | LEADING | TRAILING ][Löschstring] FROM ] String)
Informationen über zurückliegende
Datenbankzugriffe
SOUNDEX(String)
LAST_INSERT_ID(Ausdruck)
SPACE(N)
Strings erzeugen/verändern
REPLACE(String, Alt, Neu)
REPEAT(String, Anzahl)
REVERSE(String)
INSERT(String, Position, Länge, NeuString)
ELT(N, String1, String2, String3,...)
FIELD(String1, String2, String3, ...)
FIND_IN SET(String, StringListe)
MAKE_SET(Bits, String1, String2, String3, ...)
EXPORT_SET(Bits,an,aus,[Trenner, [Anz.]])
LOWER(String) oder LCASE(String)
UPPER(String) oder UCASE(String)
LOAD_FILE(Dateiname)
Vergleichsoperatoren für Strings
String LIKE Muster [ESCAPE 'Char' ]
String NOT LIKE Muster [ESCAPE'Char']
String [NOT] REGEXP Muster
String [NOT] RLIKE Muster
STRCMP(String1, String2)
MATCH(Spaltel, ...) AGAINST (String)
MATCH(Spaltel, ...) AGAINST (String IN BOOLEAN MODE)*
* erst ab Version 4.0.1
Vergleichsoperatoren
=
< > oder !=
<=>
>=
<=
>
<
IS [NOT] NULL
- Gleichheit
- Ungleichheit
- NULL-sicheres ungleich
- grösser oder gleich
- kleiner oder gleich
- echt grösser
- echt kleiner
- NULL oder nicht
Funktionen für Intervalle
Ausdruck BETWEEN Min AND Max
Ausdruck IN (Wert1, Wert2, ...)
Ausdruck NOT IN (Wert1, Wert2, ...)
ISNULL(Ausdruck)
INTERVAL(Wert, N1, N2, ...)
Bit-Operatoren
I
&
>>
<<
~
- bitweise ODER
- bitweise UND
- Shift nach links
- Shift nach rechts
- bitweise Negation
BIT_COUNT(N)
- Anzahl gesetzter Bits
Eigene Variablen
Logische Operatoren
NOT oder !
OR oder I
AND oder &&
- logische Negation
- logisches ODER
- logisches UND
SET @Variablenname = Ausdruck
oder
@Variablenname := Ausdruck
Beispiel:
SELECT @minage := min(age) FROM friends;
Mathematische Funktionen
Benutzer verwalten
ABS (X)
SIGN(X)
MO D (X,Y)
FLOOR(X)
CEILING(X)
ROUND(X,[Stellen])
EXP(X)
LOG(X)
LOG10(Y)
POW(Basis,Exponent)
SQRT(X)
PI()
COS(X)
SIN(X)
TAN(X)
ACOS(X)
ASIN(X)
ATAN (X)
COT(X)
RAND([X])
LEAST(X1, X2[, X3, .., XN])
GREATEST(X1, X2[, X3,.., XN])
DEGREES(X)
RADIANS(X)
TRUNCATE(X,Stellen)
Benutzer anlegen
Funktionen zur Anwendung mit GROUP BY
COUNT(Ausdruck)
COUNT(DISTINCT Ausdruck, [Ausdruck])
AVG(Ausdruck)
MIN(Ausdruck)
MAX(Ausdruck)
SUM(Ausdruck)
STD(Ausdruck)
STDDEV(Audruck)*
BIT_OR(Ausdruck)
BIT_AND(Ausdruck)
* Erweiterung zu ANSI SQL. Dient der Kompatibilität zu ORACLE
GRANT Privilegien [Spalten] [, Privilegien [Spaltenliste] ] ON {Tabelle | * | *.* |
db_name.*} TO Anwender [IDENTIFIED BY [PASWORD] 'passwort' ] ... ]
[REQUIRE [
{ssl | X=509}] [
CIPHER Algo [AND] ]
[ISSUER Aufruf [AND] ]
[SUBJECT Betreff] ]
[WITH [GRANT OPTION | MAX QUERIES PER HOUR = # ] ]
Benutzer entfernen
REVOKE Privilegien [Spalten][, Privilegien [Spaltenliste]] ON {Tabelle | * | *.* |
db_name.*} FROM Anwender1 [, Anwender2 ] ...
Zugriffsebenen
GRANT und REVOKE erlauben/nehmen den Zugriff auf mehreren Ebenen.
* Global: Privilegien für alle Datenbanken
* Datenbankebene: Privilegien für alle Tabellen einer DB
* Tabellenebene: Privilegien für alle Spalten einer Tabelle
* Spaltenebene: Privilegien für einzelne Spalten einer Tabelle
Privilegientypen
ALL PRIVILEGES
ALTER
CREATE
DELETE
DROP
FILE
INDEX
PROCESS
REFERENCES
RELOAD
SELECT
SHUTDOWN
UPDATE
USAGE INSERT
Beispiele:
GRANT ALL PRIVILEGES ON *.*
TO Anwender@BDServer
IDENTIFIED BY'Passwort'
WITH GRANT OPTION;
Herunterladen