02. Esempi di Insert/Update/Delete

Schema logico del database orders

Gli esempi inclusi in questa pagina fanno riferimento al database di default predisposto dal sito w3schools.com:

Customers(CustomerID, CustomerName, ContactName, Address, City, PostalCode, Country)

Categories(CategoryID, CategoryName, Description)

Employees(EmployeeID, LastName, FirstName, BirthDate, Photo, Notes)

OrderDetails(OrderDetailID, OrderID↑, ProductID↑, Quantity)

OrderID FK (Orders.OrderID)

ProductID FK(Products.ProductID)

Orders(OrderID, CustomerID↑, EmployeeID↑, OrderDate, ShipperID↑)

CustomerID FK (Customers.CustomerID)

EmployeeID FK(Employees.EmployeeID)

ShipperID FK (Shippers.ShipperID)

Products(ProductID, ProductName, SupplierID↑, CategoryID↑, Unit, Price)

SupplierID FK (Suppliers.SupplierID)

CategoryID FK (Categories.CategoryID)

Shippers(ShipperID, ShipperName, Phone)

Suppliers(SupplierID, SupplierName, ContactName, Address, City, PostalCode, Country, Phone)


INSERT

Prima di eseguire queste INSERT ripristinare il database del w3schools

INSERT INTO Customers VALUES (99, "Tito Tazio", "Titos", "Via Nuova", "Neaples", "80100", "Italy");

INSERT INTO Customers (CustomerID, CustomerName, ContactName, Address, City, PostalCode, Country) VALUES (999, "Tito Tazio", "Titos", "Via Nuova", "Neaples", "80100", "Italy");

Nota:

Ripetendo le stesse operazioni di INSERT più volte si otterrebbe un fallimento perché le chiavi corrispondenti al CustomerId (valori 99 e 999) risulterebbero già presenti e si incorrerebbe nell'errore di chiave duplicata.


INSERT INTO Customers VALUES (NULL, "Tito Tazio", "Titos", "Via Nuova", "Neaples", "80100", "Italy");

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country) VALUES ("Tito Tazio", "Titos", "Via Nuova", "Neaples", "80100", "Italy");

Note:

Le due precedenti INSERT non specificano alcun valore per il campo CustomerID. Nel primo caso al posto del valore numerico è utilizzata la costante NULL mentre nel secondo caso il campo CustomerID non è elencato.

La validità delle istruzioni deriva dal fatto che al momento della creazione della tabella il campo CustomerID è stato definito di tipo Auto-increment. Questo significa che il valore per la chiave, se non è specificato esplicitamente nella INSERT oppure è utilizzata la costante NULL, viene generato automaticamente dall'RDBMS per incremento.

Sul sito del w3schools e con SQLite è possibile risalire all'ID dell'ultimo record inserito tramite il seguente comando SQL:


SELECT last_insert_rowid();


UPDATE

UPDATE Customers SET CustomerName="Paperino", ContactName="Papero" WHERE CustomerId=99;

Nota:

L'operazione di UPDATE fallisce se non è stata precedentemente eseguita la INSERT.


DELETE

DELETE FROM Customers WHERE CustomerId=99;