2012-04-12 15 views
0

Relations:MySQL, Einfügen und Löschen

Product(maker, model, type) 
PC(model, speed, ram, hd, price) 
Laptop(model, speed, ram, hd, screen, price) 
Printer(model, color, type, price) 

A. Using two INSERT statements, store in the database the fact that PC model 1100 is made by manufacturer C, has a speed of 3.2, and RAM 1024, hard disk 180, and sells $2499 
B. Insert the facts that for every pc there is a laptop with the same manufacturer, speed, ram, and hard disk, a 17 inch screen, a model number 1100 greater, and a price 500 more 
C. Delete all pc's with less than 100 gigabytes of hd space 
D. Delete all laptops made by a manufacturer that doesn't make printers 
E. Manufacturer A buys Manufacturer B. Change all products made by b so now they are made by a. 
F. For each pc, double the amount of RAM and add 60gb to the amount of hd. 
G. For each laptop made by manufacturer b, add one inch to the screen size and subtract 100 from the price 

Zuerst für jedes dieser Beispiele, die ich meine Datenbank werde ändern, ist es eine Möglichkeit, eine schnelle Kopie meiner Datenbank, falls ich eine Änderung vermasseln zu machen ?

Wie kann ich zwei Insert-Anweisungen für Frage A verwenden? Ich weiß "INSERT IN R (A, B, C) WERTE (a, b, c);" Sollte ich INSERT IN WERTE xyz UND INSERT IN WERTE sqr einfügen?

Für Buchstabe B, ist das eine Einschränkung? Muss ich meine Datenbank neu erstellen und InnoDB verwenden? (Ich bin mir nicht sicher, was das bedeutet, ich weiß nur, es bedeutet, dass ich Beschränkungen dann verwenden kann ....?.)

Buchstaben C und D sind direkt an mich. "DELETE FROM R WHERE;"?

für die letzten drei, wie kann ich gehen, um diese Änderungen zu machen? ich bin ziemlich sicher, dass der UPDATE-Befehl. So etwas wie

UPDATE pc SET ram = 2*ram, hd = hd + 60; 

Vielen Dank für jede Hilfe im Voraus!

+1

Sind das Hausaufgaben? Wenn ja, wäre es eine gute Idee, das "Hausaufgaben" -Tag zu verwenden und auch Ihre Fragen etwas einzugrenzen. – octern

+1

Um Ihre Datenbank zu sichern, verwenden Sie mysqldump -p -u user backupfile.sql. Für etwas flexiblere, schauen Sie in Transaktionen. Sie ermöglichen es Ihnen, eine Reihe von Operationen auszuführen und sie dann entweder an die Datenbank zu übergeben oder sie bei Bedarf zurückzurollen. – octern

Antwort

0

Sie sollten immer beginnen mit

start transaction;

und endet mit entweder commit;, wenn die Änderungen wie erwartet oder rollback;, wenn sie dies nicht wieder den Zustand zurückkehren wird vor dem Start Transaktionsbefehl.

A

insert into Product(maker, model, type) values ('C','1100'...); 
insert into PC(model, speed, ram, hd, price) values ('1100',.....); 

B

insert into Laptop(model, speed, ram, hd, screen, price) select model,speed,ram,hd,'17',price-100 from pc; 

so etwas wie dieses

Für die anderen, die Sie auf dem richtigen Weg sind.

Achten Sie darauf, um die Transaktion verwenden Ihre Daten nicht in Unordnung zu bringen und Sie können tun, wie es einen MySQL-Dump oder einfach erstellen zurück Tabelle mit

create table pCBAK als (Select * from PC) verwendet, wurde vorgeschlagen, ;

Viel Glück

+0

A macht Sinn, aber wie würde ich zwei INSERT-Anweisungen verwenden? –

+0

Ich aktualisierte die Antwort mit der fehlenden Einfügung im Produkt, deshalb braucht man 2 davon. – Stainedart

+0

Ich kann die Transaktion nicht zur Arbeit bringen. zerstörte meine Datenbank. Ich habe meine erste Anfrage START TRANSACTION gemacht. Dann habe ich ein paar Fragen gestellt, dann ROLLBACK; Das hat nichts getan. Es hat jede Änderung beibehalten, die ich gemacht habe. –