Startseite
Stellenmarkt
Downloads
Kontakt
  Community Center:   Forum  |  Gruppen  |  Chat  |

Zurück   Forum Fachinformatiker.de > Fachliches > Datenbanken



Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22.02.2010, 22:55   #1
Reg.-Benutzer
 
Reg.-Datum: 22.02.2010
Standard MySQL-Befehle

Hi ich habe einige Probleme, was MySQL angeht. Für mich is das meiste noch ziemlich neu, weil ich das Fach noch nicht so lange in der Schule habe. Als Gruppe haben wir jetzt die Aufgabe eine Datenbank für ein Dateiverwaltungssystem zu erstellen. Die Attribute sollen dabei sein: Name, Größe, geändert am, Nutzer (eigene Entität) und Zugriffsrechte wie Lese- und Schreibrecht
Wir benutzen zurzeit das Programm SQLyog.
Die Aufgabe lautet:
Überlegt euch, welche Fragestellungen für ein Datenverwaltungsprogramm sinnvoll sind und erstellt die entsprechenden Queries.
Jetzt habe ich die Frage, welche Queries man machen könnte, da ich ehrlich gesagt mich überhaupt nicht mit den einzelnen Begriffen auskenne.
Ich habe hier mal das Entity-Relationship-Model zu der Aufgabe:

http://img404.imageshack.us/img404/9731/ermodell.jpg

Dabei wären ja z.B Fragen wie: Wann hat der Nutzer mit dem Namen ... die Datei mit der ID ... das letzte Mal geändert? oder einfach Welche Datei wurde zuletzt am ... geändert? sinnvoll.
Aber wie würden die Queries zu solchen Fragen heißen?

Könnte mir möglicherweise jemand dabei helfen und mir ein paar Vorschläge geben?
Wäre jedem sehr dankbar, der mir eine Antwort gibt.
Will_Malecken ist offline   Mit Zitat antworten
Alt 23.02.2010, 07:05   #2
Reg.-Benutzer
 
Benutzerbild von kingofbrain
 
Reg.-Datum: 23.09.2001
Ort: Landsberg a. Lech
Standard

Also zunächst bist Du im falschen Unterforum. Bitte doch einen der Moderatoren, dass er Deinen Beitrag verschiebt, dann erhältst Du vermutlich auch mehr Antworten.
Danach brauchen wir Deinen Ansatz. Du hast Dir ja schon überlegt, was Du abfragen willst. Wie sehen Deine Queries aus? Wenn Du noch gar nichts hast, dann versuche erst, mit Eigeninitiative etwas zu erstellen, was danach mit Hilfe des Forums verbessert und optimiert wird.
Weißt Du, wie SQL-Abfragen prinzipiell aufgebaut sind? Wenn nein, nachlesen. Wenn ja, dann versuche, in diesen Aufbau Deine Fragestellungen einzubauen.

Schöne Grüße,

Peter
__________________
DON'T PANIC.
kingofbrain ist offline   Mit Zitat antworten
Alt 23.02.2010, 07:42   #3
Administrator + Moderator
C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
 
Benutzerbild von Klotzkopp
 
Reg.-Datum: 10.07.2001
Ort: Essen
Standard

Verschoben -> Datenbanken
__________________
"Funktioniert nicht" ist keine ausreichende Fehlerbeschreibung.
Klotzkopp ist offline   Mit Zitat antworten
Alt 23.02.2010, 13:03   #4
Reg.-Benutzer
 
Reg.-Datum: 22.02.2010
Standard

Oh okay danke schonmal an euch.
Ich werds mal versuchen. Habe da nicht so wirklich Ahnung von. Ich kenne z.B nur sowas wie: SELECT FROM Kunden WHERE ID=3
Also man sieht ja schon wie viel Ahnung ich davon habe
Will_Malecken ist offline   Mit Zitat antworten
Alt 23.02.2010, 13:13   #5
Reg.-Benutzer
 
Benutzerbild von kingofbrain
 
Reg.-Datum: 23.09.2001
Ort: Landsberg a. Lech
Standard

Warum, das ist der Anfang. Allerdings hat Du vergessen, was Du selektieren möchtest.
Und jetzt kannst Du nicht nur über eine Tabelle selektieren, sondern über mehrere, und kannst in der WHERE-Klausel ein wenig anspruchsvollere Dinge tun.
Nimm Dir mal eine Deiner skizzierten Abfragen vor und versuche, ein SQL-Statement zu formulieren.

Peter
__________________
DON'T PANIC.
kingofbrain ist offline   Mit Zitat antworten
Alt 23.02.2010, 13:42   #6
Reg.-Benutzer
 
Reg.-Datum: 22.02.2010
Standard

Ah okay ;D also ich benutz ja das Programm SQLyog und dafür hatten wir in der Gruppe schon diesen Text fertig:

DROP DATABASE Dateiverwaltungssystem ;
CREATE DATABASE Dateiverwaltungssystem ;
USE Dateiverwaltungssystem;

CREATE Table Datei(D_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
Name varchar(25) Not Null,
Größe_in_MB varchar(25) Not Null,
Zuletzt_geaendert_am DATE Not Null);

CREATE Table Nutzer (N_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
Nickname varchar(25)Not Null);

CREATE Table greift_zu (id int(10) NOT NULL auto_increment primary key ,
Leserecht varchar(5) NOT NULL,
Schreibrecht varchar(5) NOT NULL );

Und jetzt habe ich da mal eine Querie eingegeben. Die Frage war: Welche Datei wurde zuletzt am ... geändert?
SELECT D_ID, NAME FROM datei WHERE zuletzt_geaendert_am='2010-02-23';

Ist die soweit richtig? Mich wundert nur warum er das "Name" auch blau kennzeichnet als wäre es sowas wie "SELECT". Wir haben in der Tabelle noch nichts eingegeben aber eigentlich müsste diese Querie doch möglich sein oder? Auf jeden Fall zeigt er keinen Fehler und da kommen die beiden Spalten die ich haben will.
Will_Malecken ist offline   Mit Zitat antworten
Alt 23.02.2010, 13:50   #7
Reg.-Benutzer
 
Reg.-Datum: 22.02.2010
Standard

Achja genau noch eine Frage. War das so richtig mit dem Datum oder wie muss man die auch noch eingeben?
Will_Malecken ist offline   Mit Zitat antworten
Alt 23.02.2010, 15:32   #8
Reg.-Benutzer
 
Benutzerbild von kingofbrain
 
Reg.-Datum: 23.09.2001
Ort: Landsberg a. Lech
Standard

Das sieht zum Teil schon ganz gut aus.
Warum habt Ihr denn bei der Tabelle greift_zu bei der Primärschlüsseldefinition einen anderen Datentyp als bei den anderen genommen?
"name" ist ein reserviertes Wort in MySQL, deshalb könnte es hier Schwierigkeiten geben. Mit einfachen Anführungszeichen oder Backticks kann man den Feldnamen aber so maskieren, dass er dennoch funktioniert. Aber vermutlich zeigt Euer Werkzeug das Wort deshalb als Syntaxelement an.
Wie die genaue Syntax bei MySQL für die Angabe eines Datums als Zeichenkette ist, musst Du kurz in der Doku nachschauen, das weiß ich nicht auswendig. Aber es gibt auch Funktionen, mit denen Du die einzelnen Werte des Datums angeben kannst und den korrekten Datentyp erhältst, bzw. eine Zeichenkette plus ein bestimmtes Format angibst, und das als Datum interpretiert wird.
Das Schöne an SQL ist doch, dass man schnell was ausprobieren kann. Warum packt Ihr nicht einfach ein paar Datensätze in die Tabellen und probiert die Queries mal in echt aus? Das ist viel interessanter, als sie nur trocken aufzuschreiben.

Schöne Grüße,

Peter
__________________
DON'T PANIC.
kingofbrain ist offline   Mit Zitat antworten
Alt 23.02.2010, 15:56   #9
Reg.-Benutzer
 
Benutzerbild von Reinhold
 
Reg.-Datum: 16.01.2003
Ort: Raum Osnabrück
Standard

Moin,

Zitat:
Zitat von Will_Malecken Beitrag anzeigen
..hatten wir in der Gruppe schon diesen Text fertig:

DROP DATABASE Dateiverwaltungssystem ;
CREATE DATABASE Dateiverwaltungssystem ;
USE Dateiverwaltungssystem;

CREATE Table Datei(D_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
Name varchar(25) Not Null,
Größe_in_MB varchar(25) Not Null,
Zuletzt_geaendert_am DATE Not Null);

CREATE Table Nutzer (N_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
Nickname varchar(25)Not Null);

CREATE Table greift_zu (id int(10) NOT NULL auto_increment primary key ,
Leserecht varchar(5) NOT NULL,
Schreibrecht varchar(5) NOT NULL );

Und jetzt habe ich da mal eine Querie eingegeben. Die Frage war: Welche Datei wurde zuletzt am ... geändert?
SELECT D_ID, NAME FROM datei WHERE zuletzt_geaendert_am='2010-02-23';

Ist die soweit richtig?
liegt das Problem ggf darin, dass keine Dateien angezeigt werden? Dann liegt das bestimmt daran, das du zwischen den Create-Kommandos und deinem Select-Statement offenbar kein einziges Insert-Kommando abgesetzt hast.
Das ist hier ungefähr so wie bei Verdauung; es kommt nur was raus, wenn man früher mal was eingefüllt hat.

hth

Reinhold
__________________
In fünfzig Jahren wird der Schachweltmeister von einer Rechenmaschine besiegt werden. (Konrad Zuse im Jahr 1938)
---
Blödes Mistding! (der Schachweltmeister Garri Kasparow nach seiner Niederlage gegen den Schachcomputer Deep Blue im Jahr 1997)
Reinhold ist offline   Mit Zitat antworten
Alt 23.02.2010, 17:07   #10
Reg.-Benutzer
 
Reg.-Datum: 22.02.2010
Standard

Ja okay stimmt. Das müssen wir noch ändern. Wir haben uns nur die Arbeit aufgeteilt, deswegen sollte ich jetzt nur so ein paar Queries erstellen^^. Wäre besser wenn wir da erstmal was reinschreiben ;D Das mit dem Datum schau ich nochmal nach. Werde dann wahrscheinlich noch nacher schreiben oder spätestens morgen.

Dank euch schonmal wieder
Will_Malecken ist offline   Mit Zitat antworten
Alt 23.02.2010, 20:43   #11
Reg.-Benutzer
 
Reg.-Datum: 22.02.2010
Standard

So ich habe jetzt einfach mal 4 einfache Queries... erstmal der Quelltext:
DROP DATABASE Dateiverwaltungssystem ;
CREATE DATABASE Dateiverwaltungssystem ;
USE Dateiverwaltungssystem;

CREATE Table Datei(D_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
Dateiname varchar(25) Not Null,
Größe_in_MB varchar(25) Not Null,
Zuletzt_geändert_am DATE Not Null);

CREATE Table Nutzer (N_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
Nickname varchar(25)Not Null);

CREATE Table Zugriff (N_ID int(10) NOT NULL auto_increment primary key ,
Leserecht varchar(5) NOT NULL,
Schreibrecht varchar(5) NOT NULL );


INSERT INTO Datei (Dateiname, Größe_in_MB, Zuletzt_geändert_am) VALUES ("Harry Potter.jpg", "1", "2008-11-02"), ("Informatik.gif", "5", "2010-02-22");

INSERT INTO Nutzer (Nickname) VALUES ("Hauke"), ("Christian"), ("Axelnator3000");

INSERT INTO Zugriff (Leserecht, Schreibrecht) VALUES ("Ja","Nein"), ("Ja","Ja"), ("Ja","Nein");

nur ein Beispiel^^

und jetzt die Queries:
SELECT D_ID, Dateiname FROM datei WHERE zuletzt_geändert_am='2008-11-02';
SELECT Dateiname, Größe_in_MB FROM datei WHERE Zuletzt_geändert_am='2010-02-22';
SELECT N_ID FROM Zugriff WHERE Leserecht='ja' AND Schreibrecht='nein';
SELECT N_ID FROM Zugriff WHERE Leserecht='ja' AND Schreibrecht='ja';


müsste eigentlich in Ordnung sein... Habe es auch schon getestet. Keine Fehler :P

Dann mach ich noch eine zu der Frage: Wie heißt die Datei, die größer ist als 3mb?
Das sollte dann reichen
Will_Malecken ist offline   Mit Zitat antworten
Alt 23.02.2010, 20:45   #12
Reg.-Benutzer
 
Reg.-Datum: 22.02.2010
Standard

Würde mich freuen falls ihr noch Verbesserungsvorschläge habt ;D
Will_Malecken ist offline   Mit Zitat antworten
Alt 23.02.2010, 20:55   #13
Reg.-Benutzer
 
Reg.-Datum: 23.02.2010
Standard bam

Zitat:
Zitat von Will_Malecken Beitrag anzeigen

Dann mach ich noch eine zu der Frage: Wie heißt die Datei, die größer ist als 3mb?
SELECT Dateiname FROM datei WHERE Größe_in_MB>3
AFFE_MIT_WAFFE ist offline   Mit Zitat antworten
Alt 23.02.2010, 20:57   #14
Administrator + Moderator
C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
 
Benutzerbild von Klotzkopp
 
Reg.-Datum: 10.07.2001
Ort: Essen
Standard

Zitat:
Zitat von Will_Malecken Beitrag anzeigen
Das sollte dann reichen
Ich weiß ja nicht. Wie wäre es denn mit einer Abfrage, die eine Verbundoperation beinhaltet? Ein realitätsnaher Anwendungsfall wäre beispielsweise die Frage, ob ein Nutzer namens X die Datei namens Y verändern darf.
__________________
"Funktioniert nicht" ist keine ausreichende Fehlerbeschreibung.
Klotzkopp ist offline   Mit Zitat antworten
Alt 23.02.2010, 21:17   #15
Reg.-Benutzer
 
Reg.-Datum: 22.02.2010
Standard

Oh besten dank für die Querie ;D
Und danke für eure schnellen Antworten...
Stimmt das wäre auch noch ne gute Idee bloß leider weiß ich nicht wie ich 2 Tabellen mit einander verknüpfen kann. Also ich mein eine Querie wie diese , die 2 Tabellen beinhaltet. Das wäre auch meine nächste Frage gewesen.
Will_Malecken ist offline   Mit Zitat antworten
Antwort

Lesezeichen
Zurück   Forum Fachinformatiker.de > Fachliches > Datenbanken

Themen-Optionen
Ansicht


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySQL wird nicht richtig installiert Ramiel Datenbanken 22 10.02.2009 20:26
MySQL Lizenzfrage ReneMe Datenbanken 2 06.11.2008 08:11
Wie kann ich MySQL Befehle auf der Konsole absetzen? tobias-digital Datenbanken 3 08.05.2002 18:06
MySQL Befehle Scratch Datenbanken 1 19.12.2001 03:17


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:04 Uhr.