间的执行问题,MySQL建外键报错
分类:计算机网络

mysql max 与 where 间的执行问题,mysqlmax

mysql max 与 where 间的执行问题

执行sql:

CREATE TABLE `grades` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `student_id` int(20) NOT NULL,
  `subject` varchar(20) COLLATE utf8_bin DEFAULT NULL,
  `grades` varchar(20) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

insert  into `grades`(`id`,`student_id`,`subject`,`grades`) values (1,1,'语文','80'),(2,1,'数学','89'),(3,2,'语文','90');

CREATE TABLE `student` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

insert  into `student`(`id`,`name`) values (1,'xiaoming'),(2,'xiaohong'),(3,'xiaobai');

执行结果:

图片 1

执行结果1:

 图片 2

 


执行结果2:

 图片 3

 

执行结果3:

图片 4

执行结果4:

 图片 5

执行结果5:

 图片 6

 

 

由此可见:

1.max是在where条件之前执行的,

2.而group by 又是在max之前执行的

3.当where 与 group by 同时出现 优先执行where条件

 

max 与 where 间的执行问题,mysqlmax mysql max与where间的执行问题 执行sql: CREATE TABLE `grades` ( `id` int(20) NOT NULL AUTO_INCREMENT, `student_id` int(20)...

  `category` int(11) DEFAULT '0' COMMENT '分类',

出错的原因在于2个字段的int的类型不同,article.category_id 有 unsigned 属性,而 category.id 没有这个属性。

数据库设计:

文章表:
<code>
CREATE TABLE article (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
category_id int(10) unsigned NOT NULL DEFAULT '0',
title varchar(45) NOT NULL DEFAULT '',
content text NOT NULL,
status tinyint(4) NOT NULL DEFAULT '0',
create_time int(10) unsigned NOT NULL DEFAULT '0',
update_time int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</code>

CREATE TABLE `checkin_record` (

最终category表的结构如下:
<code>
CREATE TABLE category (
id int(11) unsigned NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
sort int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</code>

  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',

外键是,article.category_id 关联 category.id ;

  PRIMARY KEY (`id`)

今天使用Hibernate的时候,它会自动帮助建立表外键,但是报错了,仔细一看问题出在MySQL上,原因如下:
分类表:
<code>
CREATE TABLE category (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
sort int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</code>

3.单词本词典存储表,表名由book_storage_和单词本id拼成

CREATE TABLE `book_category` (

CREATE TABLE `book_storage_1` (

1.单词本表

  `name` varchar(64) DEFAULT '' COMMENT '单词本名称',

  `storage_id` int(10) DEFAULT '0' COMMENT '已学单词书的最后的单词id',

6.打卡记录表

  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',

  `create_at` int(11) DEFAULT '0' COMMENT '创建时间',

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='单词本表';

  `create_at`  int(10) DEFAULT '0' COMMENT '创建时间',

  `phone` char(13) NOT NULL DEFAULT '' COMMENT '手机号',

) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8;

功能包括登录,注册,密码找回,查看学习进度,单词本选择与切换,打卡记录,账号设置等功能

  `uid` int(11) DEFAULT '0' COMMENT '用户id',

用户中心:

4.学习记录表

  `email` varchar(90) NOT NULL DEFAULT '' COMMENT '电子邮件',

  `ph_am` varchar(32) DEFAULT NULL COMMENT '美语音标',

  `book_id` int(10) DEFAULT '0' COMMENT '单词书id',

主要分为2部分:学习中心和用户中心

  `word` varchar(32) DEFAULT NULL,

  PRIMARY KEY (`id`)

  UNIQUE KEY `unq_word` (`word`)

  `create_at` int(11) DEFAULT '0' COMMENT '创建时间',

  PRIMARY KEY (`id`)

5.用户表

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `name` varchar(64) DEFAULT '' COMMENT '类别名称',

  `passwd` varchar(512) NOT NULL DEFAULT '' COMMENT '加密密码',

  `book_id` int(11) DEFAULT '0' COMMENT '单词本id',

  PRIMARY KEY (`id`)

CREATE TABLE `user` (

CREATE TABLE `study_record` (

) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 comment '打卡记录';

2.单词本类别表,如可以分为四级,六级,雅思,托福等

  `create_time` date NOT NULL COMMENT '创建时间',

  `chinese` varchar(1024) DEFAULT NULL COMMENT '中文释义 json存储',

  `active_book_id` int(11) DEFAULT '0' COMMENT '当前激活的单词本',

  `create_at` int(11) DEFAULT '0' COMMENT '创建时间',

  PRIMARY KEY (`id`),

  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',

学习中心:

  `id` int(11) NOT NULL AUTO_INCREMENT,

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='单词本类别表';

  `checkin_day` date NOT NULL COMMENT '打卡日期',

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='单词本表';

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `avatar` varchar(512) NOT NULL DEFAULT '' COMMENT '头像图片',

  `uid` int(10) DEFAULT '0' COMMENT '用户id',

  `ph_en` varchar(32) DEFAULT NULL COMMENT '英语音标',

  UNIQUE KEY `idx_email` (`email`)

  `name` varchar(20) NOT NULL DEFAULT '' COMMENT '姓名',

CREATE TABLE `book` (

  PRIMARY KEY (`id`),

本文由美高梅网址发布于计算机网络,转载请注明出处:间的执行问题,MySQL建外键报错

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文