MySQL数据库模式语法表现奇怪

时间:2016-10-28 01:49:32

标签: mysql sql

我正在尝试编写一个MySQL数据库(称为security_db.sql),其中我概述了一些关于安全防护作业的表。代码本身如下。抱歉奇怪的格式化。

drop database if exists security;

create database security;

use security;


drop table if exists caller;

drop table if exists number;

drop table if exists officer;

drop table if exists suspect;

drop table if exists report;

drop table if exists car;

drop table if exists writeup;

drop table if exists activitylog;

drop table if exists ticket;


create table caller

(

firstname varchar(64),

lastname varchar(64),

cellnumber int unsigned not null primary key,

location varchar(64),

);

insert into caller (firstname, lastname, cellnumber, location)

values (`Braydon`, `Rekart`, `2174088935`, `Stoddard`);

create table report

(

incidentreport varchar(64) not null primary key,

);
insert into report (incidentreport) values (`Testing this database.`);

reate table activitylog

(

report text not null,

date int not null primary key,

location varchar(64) not null,

);

insert into activitylog (report, date, location) values (`Testing this 

database`, `112233`, `OlinMahan`);

create table number

(

securityphone int not null primary key,

);

insert into number (securityphone) values (`1217666666`);

create table suspect

(
suspectfirstname varchar(64) not null,

suspectlastname varchar(64) not null,

weight int,

height int,

suspectid int not null primary key,

);

insert into suspect (suspectfirstname, suspectlastname, suspectid)

values (`Braydon`, `Rekart`, `3`);

create table writeup

(
recipientfirstname varchar(64) not null,

recipientlastname varchar(64) not null,

whogaveit varchar(64) not null,

reason text not null,

writeupid int not null primary key,

reason text not null,

writeupid int not null primary key,

);

insert into writeup (recipientfirstname, recipientlastname,

whogaveit, reason, writeupid) values (`Braydon`, `Rekart`, `Karson`, `Late`,

 `45`);

create table officer

(

officerid int not null primary key,

position varchar(64) not null,

firstname varchar(64) not null,

lastname varchar(64) not null,

);

insert into officer (officerid, position, firstname, lastname)

values (`1`, `Crewhead`, `Braydon`, `Rekart`);

create table car

(

make varchar(64),

color varchar(64),

model varchar(64),

licenseplatenumber varchar not null primary key,

);

insert into car (licenseplatenumber) values (`N33D4SP33D`);

create table ticket
(
ticketnumber int primary key,

writerfirstname varchar(64) not null,

writerlastname varchar(64) not null,

recipientfirstname varchar(64) not null,

recipientlastname varchar(64) not null,

recipientfirstname varchar(64) not null,

recipientlastname varchar(64) not null,

writerid int,
);

insert into ticket (ticketnumber, writerfirstname, writerlastname, 
recipientfirstname, recipientlastname)

values (`3`, `Braydon`, `Rekart`, `Karson`, `Gragert`);

它给我的错误如下。

  

的MySQL>使用安全性

     

数据库已更改

     

的MySQL> source security.db

     

查询OK,0行受影响(0.01秒)

     

查询正常,1行受影响(0.00秒)

     

数据库已更改

     

查询正常,0行受影响,1警告(0.00秒)

     

查询正常,0行受影响,1警告(0.00秒)

     

查询正常,0行受影响,1警告(0.00秒)

     

查询正常,0行受影响,1警告(0.00秒)

     

查询正常,0行受影响,1警告(0.00秒)

     

查询正常,0行受影响,1警告(0.00秒)

     

查询正常,0行受影响,1警告(0.00秒)

     

查询正常,0行受影响,1警告(0.00秒)

     

查询正常,0行受影响,1警告(0.00秒)

     

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在第7行')附近使用的语法

     

ERROR 1146(42S02):表'security.caller'不存在

     

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在第4行')附近使用的语法

     

ERROR 1146(42S02):表'security.report'不存在

     

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在第6行的')'附近使用的语法

     

ERROR 1146(42S02):表'security.activitylog'不存在

     

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在第4行')附近使用的语法

     

ERROR 1146(42S02):表'security.number'不存在

     

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在第8行')附近使用的语法

     

ERROR 1146(42S02):表'security.suspect'不存在

     

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在第8行')附近使用的语法

     

ERROR 1146(42S02):表'security.writeup'不存在

     

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在第7行')附近使用的语法

     

ERROR 1146(42S02):表'security.officer'不存在

     

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在第6行的“非空主键”附近使用的语法

     

ERROR 1146(42S02):表'security.car'不存在ERROR 1064   (42000):您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   在第9行附近')'

     

ERROR 1146(42S02):表'security.ticket'不存在

无论我如何摆弄语法,我似乎无法弄明白。我觉得这总是一个新手的错误,但我需要帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

在每个create table语句中的最后一个字段定义之后有一个额外的逗号,因此没有创建任何表,也没有任何插入成功。

示例:

...
location varchar(64) not null, <- this comma

);

您还可以在要错误插入的值周围使用反引号。反引号用于包含对象标识符,例如表或字段名称。字符串值应该用单引号或双引号括起来,不应该包含数值。

示例:

insert into caller (firstname, lastname, cellnumber, location)
values ('Braydon', 'Rekart', 2174088935, 'Stoddard');