MySQL Een primaire sleutel maken in een nieuwe tabel
Home

MySQL Een primaire sleutel maken in een nieuwe tabel

MySQL Een primaire sleutel maken in een nieuwe tabel

Meestal creëer je een primaire sleutel wanneer je de tabel maakt. Zie MySQL Een primaire sleutel maken in een bestaande tabel om een sleutel te maken in een reeds bestaande tabel.

Probleem

Je kan ook een primaire sleutel aanmaken tijdens het maken van een tabel. Daarvoor voeg je eerst een nieuwe kolom toe met de naam Id van het gegevenstype int. Gebruik ook de auto_increment clausule om de waarde van Id kolom met 1 te vermeerderen als er een nieuwe rij in de tabel wordt toegevoegd.

Je kan de beginwaarde zelf bepalen met:

ALTER TABLE Boeken AUTO_INCREMENT = 5;

Ga naar de MySQL reference voor meer details.

Oplossing

De naam van de primaire sleutel bestaat uit een prefix pk_, gevolgd door de naam van de tabel in pascalnotatie, gevolgd door een underscore en tenslotte de naam van de kolom of kolommen ook in Pascal notatie waarop de primaire sleutel toegepast wordt. Dit is geen verplichting maar een afspraak.

-- JI
-- 15 april 2018
--
-- Begin altijd met op te geven in welke database
-- je wilt werken!!!!!!
use ModernWays;
-- ga na als de tabel al bestaat
drop table if exists Boeken;

-- de naam van de tabel in pascalnotatie
create table Boeken(
    Voornaam nvarchar(50),
    Familienaam nvarchar(80),
    Titel nvarchar(255),
    Uitgeverij nvarchar(255),
    Stad nvarchar(50),
    -- alleen het jaartal, geen datetime
    -- omdat de kleinste datum daarin 1753 is
    -- varchar omdat we ook jaartallen kleiner dan 1000 hebben
    Verschijningsjaar varchar(4),
    Herdruk varchar(4),
    Commentaar nvarchar(2000),
    Categorie nvarchar(120),
    InsertedBy nvarchar(255),
    Id int auto_increment not null,
    constraint pk_boeken_Id primary key(id)
);

Om de rijen opnieuw toe te voegen voer je de volgende script uit (je kan die opslaan in een bestand met de naam BoekenInsertAll_3_JI.sql):

-- JI
-- 13 november 2012
-- Werken met INSERT
-- Bestandsnaam: BoekenInsertAlfredDenker.sql
use ModernWays;
insert into Boeken(
   Voornaam,
   Familienaam,
   Titel,
   Stad,
   Uitgeverij,
   Verschijningsjaar,
   Herdruk,
   Commentaar,
   Categorie,
   InsertedBy
)
values (
   'Alfred',
   'Denker',
   'Onderweg in Zijn en Tijd',
   '',
   'Damon',
   '2017',
   '',
   'Geen commentaar',
   'Filosofie',
   'JI'
),
(
   'Aurelius',
   'Augustinus',
   'De stad van God',
   'Baarn',
   'Uitgeverij Baarn',
   '1983',
   '1992',
   'Nog te lezen',
   'Theologie',
   'JI'
),
('Gerard', 'Visser', 'Heideggers vraag naar de techniek', 'Nijwegen', '', '2014', '', '', 'Filosofie', 'JI'),
('Diderik', 'Batens', 'Logicaboek', '', 'Garant', '1999', '', '', 'Filosofie', 'JI'),
('Samuel', 'Ijsseling', 'Heidegger. Denken en Zijn. Geven en Danken', 'Amsterdagm', '', '2014', '', 'Nog te lezen', 'Filosofie', 'JI'),
('Jacob', 'Van Sluis', 'Lees wijzer bij Zijn en Tijd', '', 'Budel', '1998', '', 'Goed boek', 'Filosofie', 'JI'),
('Emile', 'Benveniste', 'Le vocabulaire des institutions Indo-Européennes. 2. Pouvoir droit religion', 'Paris', 'Les ditions de minuit', '1969', '', 'Een goed geschiedenis boek','Linguistiek', 'JI'),
('Evert W.', 'Beth', 'De Wijsbegeerte der Wiskunde. Van Parmenides tot Bolzano', 'Antwerpen', 'Philosophische Biliotheek Uitgeversmij. N.V. Standaard-Boekhandel', '1944', '?', 'Een goed boek', 'Filosofie', 'JI'),
('Evert W.', 'Beth', 'Wijsbegeerte der Wiskunde', 'Antwerpen', 'Philosophische Biliotheek Uitgeversmij. N.V. Standaard-Boekhandel', '1948', '?', 'Een goed boek','Wiskunde', 'JI'),
('Rémy', 'Bernard', 'Antonin le Pieux. Le siècle d''or de Rome 138-161', '?', 'Librairie Arthme Fayard', '2005', '', 'Een goed boek', 'Geschiedenis', 'JI'),
('Marc', 'Bloch', 'Rois et serfs et autres écrits sur le servage', 'Paris', 'La boutique de l''histoire', '1996', '', 'Een goed boek','Geschiedenis', 'JI'),
('Pierre', 'Bonte en Michel Izard', 'Dictionnaire de l''etnologie et de l''anthropologie', '?', 'PUF', '1991', '', 'Een goed boek','Anthropologie', 'JI'),
('Robert', 'Bly', 'The sibling society', 'Londen', 'Persus', '1996', '?', 'Een interessant boek', 'Antropologie','JI'),
('Fernand', 'Braudel', 'De middellandse zee. Het landschap en de mens', 'Amsterdam/Antwerpen', 'Uitgeverij Contanct', '1992', '?', 'Uit het Frans vertaald: La méditerranée. La part du milieu. Parijs: Librairie Armand Colin, 1966', 'Geschiedenis', 'JI'),
('Timothy', 'Gowers', 'Wiskunde, de kortste introductie', 'Utrecht', 'Uitgeverij Het Spectrum B.V.', '2003', '', 'Oorpronkelijke titel: Mathematics a very schort introduction. Oxford University Press, 2002', 'Wiskunde', 'JI'),
('Emile', 'Benveniste', 'Le vocabulaire des institutions Indo-Européennes. 1. économie, parenté, société', 'Paris', 'Les Éditions de minuit', '1969', '', 'Een goed geschiedenis boek','Linguistiek', 'JI'),
('Marc', 'Bloch', 'Apologie pour l''histoire ou métier d''historien', 'Paris', 'Armand Colin', '1949', '2018', 'Tweede uitgave','Geschiedenis', 'JI'),
('Fernand', 'Braudel', 'L''identité de la France', 'Paris', 'Arthaud', '1992', '', 'C''est l''oeuvre finale de l''un des plus importants historiens français du XXe siècle.', 'Geschiedenis', 'JI'),
('Fernand', 'Braudel', 'Civilisation matérielle, économie et capitalisme, XVe-XVIIIe siècle, Tome 1 : Les Structures du Quotidien', 'Paris', 'Armand Colin', '1986', '', 'Belangrijk boek, deel 1 van 3 delen', 'Geschiedenis', 'JI'),
('Fernand', 'Braudel', 'Civilisation matérielle, économie et capitalisme, XVe-XVIIIe siècle, Tome 2 : Les Jeux de l''échange', 'Paris', 'Armand Colin', '1986', '', 'Belangrijk boek, deel 2 van 3 delen', 'Geschiedenis', 'JI'),
('Fernand', 'Braudel', 'Civilisation matérielle, économie et capitalisme, XVe-XVIIIe siècle, Tome 3 : Le temps du monde', 'Paris', 'Armand Colin', '1986', '', 'Belangrijk boek, deel 3 van 3 delen', 'Geschiedenis', 'JI');

JI
2018-04-15 15:04:09