HiveBrain v1.2.0
Get Started
← Back to all entries
snippetsqlMinor

Create table statement in MYSQL

Submitted by: @import:stackexchange-dba··
0
Viewed 0 times
mysqltablecreatestatement

Problem

I am trying to create the following table in MYSQL and is giving errors,

CREATE TABLE CUSTOMER (
CUS_ID INT NOT NULL AUTO_INCREMENT,
CUS_NAME VARCHAR,
CUS_DOB DATE,
CUS_ADDR VARCHAR,
CUS_EMAIL VARCHAR,
CUS_TEL VARCHAR,
CUS_PW VARCHAR,
CUS_JOINDATE DATETIME,
CUS_LASTACCESS DATE)

#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 ' CUS_DOB DATE, CUS_ADDR VARCHAR, CUS_EMAIL VARCHAR, CUS_TEL VARCHAR, CUS_PW' at line 3

Solution

There are two things wrong with it.

Firstly, you need to specify maximum data lengths for the VARCHAR columns.

Secondly, the AUTO_INCREMENT column has to be the PRIMARY KEY.

The following DDL statement will work:

CREATE TABLE CUSTOMER ( 
  CUS_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  CUS_NAME VARCHAR(32), 
  CUS_DOB DATE, 
  CUS_ADDR VARCHAR(128), 
  CUS_EMAIL VARCHAR(64), 
  CUS_TEL VARCHAR(16), 
  CUS_PW VARCHAR(32), 
  CUS_JOINDATE DATETIME, 
  CUS_LASTACCESS DATE
);


Obviously you'll need to change the VARCHAR types to reflect the sizes needed for your data.

Code Snippets

CREATE TABLE CUSTOMER ( 
  CUS_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  CUS_NAME VARCHAR(32), 
  CUS_DOB DATE, 
  CUS_ADDR VARCHAR(128), 
  CUS_EMAIL VARCHAR(64), 
  CUS_TEL VARCHAR(16), 
  CUS_PW VARCHAR(32), 
  CUS_JOINDATE DATETIME, 
  CUS_LASTACCESS DATE
);

Context

StackExchange Database Administrators Q#15463, answer score: 5

Revisions (0)

No revisions yet.