SQL Basis

Hoofdstuk 17 - Creating & Manipulating Tables

  • Er zijn grofweg 2 manieren om tabellen te maken
    1. Een tool gebruiken die wordt meegeleverd bij het DBMS
    2. SQL statements uitvoeren
  • Elk DBMS kan een andere syntax hebben voor het maken van tabellen
-- 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
);
  • Bij het maken van een nieuwe tabel moet de tabelnaam uniek zijn
  • Elke tabel kolom is NULL of niet NULL
  • Als een kolom niet NULL mag zijn moeten bij een INSERT alle velden worden opgegeven
  • Bij sommige DBMS-en kan bij het maken van de tabel NULL worden weggelaten want het is de standaard waarde
  • Een Primary key kan nooit NULL zijn
  • Bij het maken van een tabel kunnen standaard waarden worden opgegeven
  • Voor een standaard waarde wordt het DEFAULT keyword gebruikt

-- 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
);

  • Het is ook mogelijk om de huidige datum op te geven als standaard waarden
  • Bij de DBMS-en verschilt deze code, zie onderstaande tabel

DBMS Function / Varable
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
);
  • Tabel-eigenschappen kunnen gewijzigd worden met het keyword ALTER TABLE
    • Wijzig tabellen nooit als deze data bevatten
    • Alle DBMS-en staan het toe dat kollomen worden toegevoegd aan een tabel
    • Veel DBMS-en staan het niet toe wanneer kolommen gewijzig of verwijderd worden
    • Veel DBMS-en staan het toe dat kolomnamen gewijzigd worden
  • Het aanpassen van een tabel is nooit eenvoudig of consistent
  • Gebruik ALTER TABLE met voorzichtigheid! Maak eerst een backup
-- MySQL
ALTER TABLE ProductsBak
ADD prod_weight CHAR(20);	
  • DBMS-en gebruiken verschillende methoden voor het hernoemen van tabellen

DBMS Aanpak
Oracle / MySQL / MariaDB / DB2 / PostgrSQL 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;

Er is geen 'Undo' in SQL

  1. Voeg een kolom "website" toe aan de custCopy tabel en voeg ergens een URL toe

Deze oefening gaat ervan uit dat custCopy nog gevuld is met de gegevens uit H15, vraag 66. Het TRUNCATE-voorbeeld in H16 is alleen theorie en wordt niet automatisch uitgevoerd. Heb je het zelf uitgevoerd, maak custCopy dan opnieuw aan met H15, vraag 66; verwijder daarvoor eerst de lege tabel.



  1. Verwijder de custCopy tabel