-- MySQL CREATE TABLE ProductsBak ( prod_id CHAR(10) NOT NULL, vend_id CHAR(10) NOT NULL, prod_name CHAR(254) NOT NULL, prod_price DECIMAL(8,2) NOT NULL, prod_desc VARCHAR(1000) NULL );
-- MySQL CREATE TABLE OrderItemsBak ( order_num INTEGER NOT NULL, order_item INTEGER NOT NULL, prod_id CHAR(10) NOT NULL, quantity INTEGER NOT NULL DEFAULT 1, item_price DECIMAL(8,2) NOT NULL );
| DBMS | Function / Variable |
|---|---|
| Oracle | SYSDATE |
| MySQL | CURRENT_DATE() / NOW() |
| SQL SERVER | GETDATE() |
| PostgreSQL | CURRENT_DATE |
| DB2 | CURRENT_DATE |
| SQLite | date('now') |
-- MySQL CREATE TABLE OrdersBak ( order_num INTEGER NOT NULL, order_date DATETIME NOT NULL DEFAULT NOW(), cust_id INTEGER NOT NULL );
-- MySQL ALTER TABLE ProductsBak ADD prod_weight CHAR(20);
| DBMS | Approach |
|---|---|
| Oracle / MySQL / MariaDB / DB2 / PostgreSQL | RENAME statement |
| SQL Server | sp_rename |
| SQLite | ALTER TABLE |
-- MySQL RENAME TABLE ProductsBak TO ProductsBackup; -- Oracle: RENAME ProductsBak TO ProductsBackup;
-- Oracle / MySQL / SQL Server DROP TABLE ProductsBackup; DROP TABLE OrderItemsBak; DROP TABLE OrdersBak;
SQL does not provide a general-purpose Undo command
This exercise assumes custCopy still contains the data from Chapter 15, exercise 66. The TRUNCATE example in Chapter 16 is theoretical and is not run automatically. If you ran it yourself, drop the empty table and recreate custCopy using Chapter 15, exercise 66.