(SQL帮助)有人可以告诉我我在哪里错了吗?

时间:2014-08-12 20:09:13

标签: mysql sql database

我是一年级学生,我正在攻读计算机学位。我一直在设计一个基于设计和构建数据库的模块。

以下是我创建的数据库,这是基于已发布的案例研究。我试过使用验证器等没有运气。

当我尝试执行此代码时,我遇到了很多语法错误,请帮助我找不到解决方案。

CREATE TABLE `students` (

      PRIMARY KEY  (`STUDENT_ID`),
      UNIQUE KEY (`TENANT_ID`)

      `STUDENT_ID` INT (11) NOT NULL auto_increment,
      `TENANT_ID` INT (11) NOT NULL default '0',
      `NAME` VARCHAR (64) NOT NULL default '',
      `SURNAME` VARCHAR (64) NOT NULL default '',
      `DOB` DATETIME NOT NULL default '0000-00-00',
      `ADDRESS` VARCHAR (64) NOT NULL default '',
      `POSTCODE` VARCHAR (7) NOT NULL default '',
      `EMAIL` VARCHAR (64) NOT NULL default '',
        `PHONE` VARCHAR (14) NOT NULL default '',
      `CONFIRMED` INT (1) NOT NULL default '0',
        `GENDER` VARCHAR(6) NOT NULL CHECK (Gender IN ('M', 'F'))


    ) 

INSERT INTO `students` VALUES (`01', '001', ‘GRASS’, ‘LIAM’, ‘20-JUL-1992’,‘M’,'5 BROWN LANE','SS8 4FG','lgrass@gmail.com', `07458914578', );
INSERT INTO `students` VALUES (`02', '002', ‘BONES’, ‘PAUL’, ‘01-OCT-1991’,‘M’,'112 SAND WAY','CM15 7GT','pbones@gmail.com', `07985214748', );
INSERT INTO `students` VALUES (`03', '003', ‘KOLINSKY’, ‘RAV’, ‘19-SEP-1991’,‘M’,'111 ROVER ROAD','ER44 4RT','rkoli@gmail.com', `07723698517', );
INSERT INTO `students` VALUES (`04', '004', ‘MKO’, ‘LUCY’, ‘02-DEC-1992’,‘F’,'4 PEM GROVE','E12 W34','mko@gmail.com', `07528963756', );
INSERT INTO `students` VALUES (`05', '005', ‘MAKAMA’, ‘JENNY’, ‘23-JAN-1991’,‘F’,'4445 GOGG LANE','WC1E 3ER','makama@gmail.com', `07985641577', );
INSERT INTO `students` VALUES (`06', '006', ‘RAKTA’, ‘RAUL’, ‘10-MAY-1991’,‘M’,'234 ELA ROAD','SS8 4FG','rrakta@gmail.com', `07854711147', );
INSERT INTO `students` VALUES (`07', '007', ‘KUELA’, ‘CARLORINA’, ‘15-JUN-1992’,‘F’,'234 GRAND ROAD','BD8 9RR','ckuela@gmail.com', `07444589214', );
INSERT INTO `students` VALUES (`08', '008', ‘GEORGE’, ‘BEST’, ‘18-OCT-1991’,‘M’,'4 RAIL ROAD','MM5 5NN','gbest@gmail.com', `07884710369', );
INSERT INTO `students` VALUES (`09', '010', ‘KNOW’, ‘WER’, ‘02-FEB-1992’,‘F’,'9 LANE LANE','BG74 8UH','wknow@gmail.com', `07474010502', );
INSERT INTO `students` VALUES (`10', '010', ‘FAN’, ‘FANWELL’, ‘10-NOV-1992’,‘M’,'2 GNOME ROAD','GF3 8VA','ffan@gmail.com', `07425800369', );

CREATE TABLE `accommodation` (

    PRIMARY KEY  (`ROOM_ID`)
    UNIQUE KEY (`HALLS_NAME`) 

    `ROOM_ID` INT (11) NOT NULL AUTO_INCREAMENT,
    `TYPE` VARCHAR (64) NOT NULL default '',
    `PRICE` INT (11) NOT NULL default '0',
    `HALLS_NAME` VARCHAR (64) NOT NULL default '',
    `STATUS` INT (1) NOT NULL default '0',
    `TENANT_ID` INT (11) NOT NULL default '',
    `START_DATE` DATETIME NOT NULL default '0000-00-00 00:00:00',
    `END_DATE` DATETIME NOT NULL default '0000-00-00 00:00:00',

  INSERT INTO `accommodation` VALUES (`0001`, `ENSUITE`, `400`, `FOX`, `OCCUPIED`, `001`, `01-OCT-2009`, `01-OCT-2010`,);
  INSERT INTO `accommodation` VALUES (`0002`, `SINGLE`, `200`, `FOX`, `OCCUPIED`, `002`, `01-OCT-2009`, `01-OCT-2010`,);
  INSERT INTO `accommodation` VALUES (`0003`, `SINGLE`, `200`, `FOX`, `OCCUPIED`, `003`, `01-OCT-2009`, `01-OCT-2010`,);
  INSERT INTO `accommodation` VALUES (`0004`, `DISABLED`, `600`, `FOX`, `OCCUPIED`, `004`, `01-OCT-2009`, `01-OCT-2010`,);
  INSERT INTO `accommodation` VALUES (`0001`, `SINGLE`, `300`, `CUB`, `OCCUPIED`, `005`, `01-OCT-2009`, `01-OCT-2010`,);
  INSERT INTO `accommodation` VALUES (`0002`, `SINGLE`, `300`, `CUB`, `VACANT`, ``, ``, ``,);
  INSERT INTO `accommodation` VALUES (`0003`, `ENSUITE`, `500`, `CUB`, `OCCUPIED`, `006`, `01-OCT-2009`, `01-OCT-2010`,);
  INSERT INTO `accommodation` VALUES (`0004`, `SINGLE`, `300`, `CUB`, `VACANT`, ``, ``, ``,);
  INSERT INTO `accommodation` VALUES (`0001`, `ENSUITE`, `500`, `TIGER`, `OCCUPIED`, `007`, `01-OCT-2009`, `01-OCT-2010`,);
  INSERT INTO `accommodation` VALUES (`0002`, `ENSUITE`, `500`, `TIGER`, `OCCUPIED`, `008`, `01-OCT-2009`, `01-OCT-2010`,);
  INSERT INTO `accommodation` VALUES (`0003`, `ENSUITE`, `500`, `TIGER`, `VACANT`, ``, ``, ``,);
  INSERT INTO `accommodation` VALUES (`0004`, `ENSUITE`, `500`, `TIGER`, `VACANT`, ``, ``, ``,);
  INSERT INTO `accommodation` VALUES (`0001`, `SINGLE`, `200`, `LION`, `OCCUPIED`, `009`, `01-OCT-2009`, `01-OCT-2010`,);
  INSERT INTO `accommodation` VALUES (`0002`, `SINGLE`, `200`, `LION`, `OCCUPIED`, `010`, `01-OCT-2009`, `01-OCT-2010`,);
  INSERT INTO `accommodation` VALUES (`0003`, `ENSUITE`, `500`, `LION`, `VACANT`, ``, ``, ``,);
  INSERT INTO `accommodation` VALUES (`0003`, `ENSUITE`, `500`, `LION`, `VACANT`, ``, ``, ``,);


  CREATE TABLE `staff` (

  PRIMARY KEY  (`EMPLOYEE_ID`)
  UNIQUE KEY (`EMAIL`)

      `EMPLOYEE_ID` INT (11) NOT NULL AUTO_INCREAMENT,
      `SURNAME` VARCHAR (64) NOT NULL default '',
      `GENDER` INT (1) NOT NULL default 'M',
      `INSPECTS` VARCHAR (64) NOT NULL default '',
      `RECRUITED` INT (11) NOT NULL default '',
      `POSTCODE` VARCHAR (7) NOT NULL default '',      
      `DOB` datetime NOT NULL default '0000-00-00',
      `POSITION` VARCHAR (64) NOT NULL default '',
      `SALARY` INT (11) NOT NULL default '0',
      `EMAIL` VARCHAR (64) NOT NULL default '',

    ) 

  DELIMITER //
  DROP TRIGGER IF EXISTS MAX_NUM//
  CREATE TRIGGER MAX_NUM BEFORE INSERT ON STAFF
  FOR EACH ROW 

  BEGIN
  IF NEW.SALARY < 0 or NEW.SALARY > 75000 THEN
  SET NEW.AGE = NULL;
  END IF;
  END//
  DELIMITER;

INSERT INTO `staff` (SALARY) VALUES (-1);
INSERT INTO `staff` (SALARY) VALUES (75001);
INSERT INTO `staff` (SALARY) VALUES (75000);
INSERT INTO `staff` (`0010`, `RHODES`, `M`, `LION`, `2010`, `SD20 52RF`, `10-DEC-1985`, `MANAGER`, `74999`, `rhodes@abbey.ac`,);
INSERT INTO `staff` (`0010`, `HEINZE`, `F`, `CUB`, `2009`, `WC1 4RF`, `10-DEC-1985`, `SUPERVISOR`, `71999`, `heinze@abbey.ac`,);
INSERT INTO `staff` (`0010`, `BARNES`, `F`, `FOX`, `2010`, `DD4 5VB`, `10-DEC-1985`, `ADMINISTRATOR`, `34999`, `barnes@abbey.ac`,);
INSERT INTO `staff` (`0010`, `COLE`, `F`, `TIGER`, `2010`, `NT34 5TG`, `10-DEC-1985`, `CLERK`, `22999`, `cole@abbey.ac`,);
INSERT INTO `staff` (`0010`, `LUPIRE`, `M`, `LION`, `2010`, `E4 2EE`, `10-DEC-1985`, `CARE TAKER`, `14999`, `lupire@abbey.ac`,);
INSERT INTO `staff` (`0010`, `WILSHIRE`, `F`, `TIGER`, `2010`, `WE3 8CV`, `10-DEC-1985`, `SECRETARY`, `74999`, `wilshire@abbey.ac`,);
INSERT INTO `staff` (`0010`, `WALDON`, `M`, `FOX`, `2010`, `AS1 2DF`, `10-DEC-1985`, `ACCOUNTANT`, `74999`, `waldon@abbey.ac`,);
INSERT INTO `staff` (`0010`, `KNIGHT`, `F`, `LION`, `2010`, `XC23 1WA`, `10-DEC-1985`, `ADMINISTRATOR`, `34999`, `knight@abbey.ac`,);
INSERT INTO `staff` (`0010`, `GRANT`, `M`, `TIGER`, `2010`, `ED2 5GB`, `10-DEC-1985`, `SUPERVISOR`, `71999`, `grant@abbey.ac`,);
INSERT INTO `staff` (`0010`, `RAY`, `M`, `CUB`, `2010`, `SS0 9ST`, `10-DEC-1985`, `ADMINISTRATOR`, `34999`, `ray@abbey.ac`,);

4 个答案:

答案 0 :(得分:2)

真是一团糟。您正在使用某些值的开盘/收盘价,其他人的反推,以及反对和/或报价的不匹配。

INSERT INTO `students` VALUES (`01', '001', ‘GRASS’, ‘LIAM’, ‘20-JUL-1992’,‘M’,'5 BROWN LANE','SS8 4FG','lgrass@gmail.com', `07458914578', );

请注意这一部分:

`07458914578'

这是不匹配的。也不要使用反引号来编写字符串或值。这些是指定列,数据库和表名称。最后你还有一个逗号表示另一个值,但你没有留下任何东西。它应该是NULL''

为安全起见,您插入的所有值都应该只是单个非方向引号:'

答案 1 :(得分:2)

评论时间有点长。

以下是我注意到的一些事情:

  • 键的声明在列的定义之后。
  • 唯一键约束后面没有逗号。
  • 每个表中的最后一列声明都有一个逗号,这是不正确的。
  • 代码在值的声明中混合反引号和单引号。

您可能还有其他错误。

您应该从students表开始,然后开始工作。然后,将插入运行到表中。然后转到下一个表格。增量方法是如何修复这些类型的编码问题。

答案 2 :(得分:1)

暂无法发表评论,请点击此处:

首先,您是如何提出此查询的?我看到许多引号(`)SQL会混淆。我建议一直使用'。的编辑

其次,你的表名,你不必使用引号。我猜你是先修好所有的引号,它会扼杀大量的错误。

答案 3 :(得分:0)

UNIQUE KEY (`TENANT_ID`),

你需要那个逗号。

编辑:我坚持通过this并且它说只需添加逗号就可以了SQL,但是现在仔细观察,其他人已经提到了很多其他问题。