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;
Sito: 7ecnologie
Sezione: 12. SQL
Capitolo: 02. Comandi di DML
Paragrafo: 02. Esempi di Insert/Update/Delete
Indice dei capitoli: 00. Risorse - 01. Generalità - 02. Comandi di DML - 03. Comandi di DDL - 04. Comandi di DCL - 05. Comandi di TCL - 06. SQLite - 07. Tutorial - 98. Esercizi
Indice dei paragrafi: 01. Esempi di Query - 02. Esempi di Insert/Update/Delete