sql fout
CREATE TABLE bestuur
(
bestid int AUTO_INCREMENT NOT NULL DEFAULT '',
voornaam char(30) NOT NULL DEFAULT '',
tussenvoegsel varchar(10) NOT NULL DEFAULT '',
achternaam char(30) NOT NULL DEFAULT '',
functie char(30) NOT NULL DEFAULT '',
postcode varchar(6) NOT NULL DEFAULT '',
huisnummer varchar(5) NOT NULL DEFAULT '',
telefoon int(10) NOT NULL DEFAULT '',
PRIMARY KEY (bestid)
)
en k krijg deze error:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE bestuur
(
bestid int AUTO_INCREMENT NOT NULL,
vo
wat doe k fout??
die " zijn niet nodig.
CREATE TABLE bestuur (
bestid int(11) NOT NULL AUTO_INCREMENT,
voornaam char(30) NOT NULL DEFAULT '',
tussenvoegsel varchar(10) NOT NULL DEFAULT '',
achternaam char(30) NOT NULL DEFAULT '',
functie char(30) NOT NULL DEFAULT '',
postcode varchar(6) NOT NULL DEFAULT '',
huisnummer varchar(5) NOT NULL DEFAULT '',
telefoon int(10) NOT NULL DEFAULT '',
PRIMARY KEY (bestid)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Quote:
So, if we are to create the customer table specified as above, we would type in
CREATE TABLE customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date)
Sometimes, we want to provide a default value for each column. A default value is used when you do not specify a column's value when inserting data into the table. To specify a default value, add "Default [value]" after the data type declaration. In the above example, if we want to default column "Address" to "Unknown" and City to "Mumbai", we would type in
CREATE TABLE customer
(First_Name char(50),
Last_Name char(50),
Address char(50) default 'Unknown',
City char(50) default 'Mumbai',
Country char(25),
Birth_Date date)
CREATE TABLE customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date)
Sometimes, we want to provide a default value for each column. A default value is used when you do not specify a column's value when inserting data into the table. To specify a default value, add "Default [value]" after the data type declaration. In the above example, if we want to default column "Address" to "Unknown" and City to "Mumbai", we would type in
CREATE TABLE customer
(First_Name char(50),
Last_Name char(50),
Address char(50) default 'Unknown',
City char(50) default 'Mumbai',
Country char(25),
Birth_Date date)
De kolom 'functie' gaat nu problemen opleveren, meerdere personen kunnen dezelfde functie hebben: vakkenvuller, vakenvuller, vakenvuler, etc. etc.
Hier kun je dus niets meer mee, zet dit dus in een aparte tabel en sla in de tabel 'bestuur' (rare naam, het begrip 'bestuur' is een eigenschap die bij een persoon hoort, sla je dus op in een record) het id van het bijbehorende record op. En je maakt uiteraard een foreignkey aan. Vergeet niet om de innoDB-engine te gebruiken, MyISAM heb je geen drol aan.
@SanThe
ik zal het even proberen alvast bedankt
@frank
ik blijf normaliseren met dat gebeuren..
maar wel goed dat je het zegt want ten eerste is het veiliger en het is een informatica opdracht voor sql dus k moet uhm eigenlijk zo ver mogelijk normaliseren
Edit:
@SanThe thnq hij werkt..
maar ligt t nou alleen aan onderin auto_increment = 1 en die default weghaen??
@SanThe thnq hij werkt..
maar ligt t nou alleen aan onderin auto_increment = 1 en die default weghaen??
Gewijzigd op 01/01/1970 01:00:00 door Nicoow Unknown
PostgreSQL.
In PostgreSQL kun je ook je eigen datatypes aanmaken, bv. het datatype 'postcode'. Wanneer je dit goed doet, zal PostgreSQL er zelf voor zorgen dat er uitsluitend een geldige postcode kan worden opgegeven. Wanneer je simpelweg een VARCHAR(6) gebruikt, kan er alle mogelijke onzin in worden gezet.
Tevens loop je met MySQL het risico dat je een deel van de data kwijt raakt, wanneer je '1234 AB' (dus met spatie) probeert op te slaan, raak je de B kwijt... MySQL zal je daar geen foutmelding op geven, je hebt dus geen flauw idee of een insert nu wel of niet is geslaagd.
Offtopic en man-on-a-mission-mode: Een informatica-opdracht in SQL en jullie lopen te prutsen met MySQL? Neem eens een echte database (lees: echte DBMS) en installeer vervolgens b.v. In PostgreSQL kun je ook je eigen datatypes aanmaken, bv. het datatype 'postcode'. Wanneer je dit goed doet, zal PostgreSQL er zelf voor zorgen dat er uitsluitend een geldige postcode kan worden opgegeven. Wanneer je simpelweg een VARCHAR(6) gebruikt, kan er alle mogelijke onzin in worden gezet.
Tevens loop je met MySQL het risico dat je een deel van de data kwijt raakt, wanneer je '1234 AB' (dus met spatie) probeert op te slaan, raak je de B kwijt... MySQL zal je daar geen foutmelding op geven, je hebt dus geen flauw idee of een insert nu wel of niet is geslaagd.
dus dat k niet helemaal opnieuw moet schrijven??
hij moet namelijk volgende week af :P
en zou je me dan willen uitleggen hoe k dan die postcode ding kan maken enzo
Gewijzigd op 01/01/1970 01:00:00 door Nicoow Unknown
Dan het aanmaken van een postcode-dataformaat in PostgreSQL:
Stap 1) Aanmaken van het domain
Code (php)
1
2
3
2
3
CREATE DOMAIN zip_code_nl
AS varchar
CONSTRAINT validate_zip_code_nl CHECK (((VALUE)::text ~ '^[0-9]{4}[a-zA-Z]{2}$'::text));
AS varchar
CONSTRAINT validate_zip_code_nl CHECK (((VALUE)::text ~ '^[0-9]{4}[a-zA-Z]{2}$'::text));
Nu wordt in het schema 'public' (er is tenslotte geen ander schema opgegeven) het datatype 'zip_code_nl' aangemaakt.
Stap 2) Aanmaken tabel 'test' in schema 'public'
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
CREATE TABLE test
(
id serial NOT NULL,
postcode zip_code_nl NOT NULL,
CONSTRAINT pk_id PRIMARY KEY (id)
)
WITHOUT OIDS;
(
id serial NOT NULL,
postcode zip_code_nl NOT NULL,
CONSTRAINT pk_id PRIMARY KEY (id)
)
WITHOUT OIDS;
Stap 3) Invoeren van wat data
Resultaat: gaat fout, is namelijk geen geldige postcode, zie de check in het domain.
Resultaat: Ok! Precies wat je wilde hebben
Wil je ook een spatie in de postcode hebben, dan moet je de check even aanpassen.
Gebruik dan i.p.v. '^[0-9]{4}[a-zA-Z]{2}$' de regex
'^[0-9]{4}\\s{0,1}[a-zA-Z]{2}$' voor een optionele spatie of
'^[0-9]{4}\\s{1}[a-zA-Z]{2}$' voor een verplichte spatie.
Hoe je PostgreSQL installeert, kun je op www.postgresql.org vinden.
want k ken dat wel gaan invoeren maar k weet ook graag wat k doe :P
anders heb k er de volgende keer niks aan :P
en k denk dat je me hebt overtuigd om op PostgreSQL over te stappen want die format dingen aanmaken is best handig
dé handleiding. Lijkt me handiger dat je die er even bijpakt. Deze is ook in pdf-vorm te verkrijgen.
Ik gebruik momenteel versie 8.1, hoewel versie 8.2 ook al beschikbaar is.
Tja, ik kan het gaan voorkauwen, maar het staat allemaal in Ik gebruik momenteel versie 8.1, hoewel versie 8.2 ook al beschikbaar is.