MYSQL建表语法(主键,外键,联合主键)

在看《Learning SQL》第二版,

慢慢打实SQL的基础。

建表一:

CREATE TABLE person (person_id SMALLINT UNSIGNED, fname VARCHAR(20), lname VARCHAR(20), gender ENUM('M', 'F'), birth_date DATE, street VARCHAR(30), city VARCHAR(20), state VARCHAR(20), country VARCHAR(20), postal_code VARCHAR(20), CONSTRAINT pk_person PRIMARY KEY (person_id) );

 

建表二:

CREATE TABLE favorite_food (person_id SMALLINT UNSIGNED, food VARCHAR(20), CONSTRAINT pk_favorite_food PRIMARY KEY (person_id, food), CONSTRAINT fk_fav_food_person_id FOREIGN KEY (person_id) REFERENCES person (person_id) );

时间: 2024-09-23 11:00:03

MYSQL建表语法(主键,外键,联合主键)的相关文章

Hibernate(5)—— 联合主键 、一对一关联关系映射(xml和注解) 和 领域驱动设计

俗话说,自己写的代码,6个月后也是别人的代码--复习!复习!复习!涉及的知识点总结如下: One to One 映射关系 一对一单向外键(XML/Annotation) 一对一双向外键关联(XML/Annotation) 联合主键 一对一单向外键联合主键(Xml/Annotation) 一对一组件关联(XML/Annotation) 理解组件 领域驱动设计--自动生成数据库脚本 一对一关系的小结 一些出错问题的总结   自动生成数据库脚本 一般在项目开发过程中,我们的习惯是先建好数据库和表,然后

[Hibernate开发之路](5)联合主键

现在大家都不推荐使用联合主键,关键是因为其需要自己手工维护,比较麻烦.但是一个项目可能因为历史遗留原因,你不得不面对联合主键.  Hibernate联合主键问题解决如下: 可以使用一个组件作为一个实体类的标识符.你的组件类必须满足以下要求:  (1)它必须实现 java.io.Serializable 接口  (2)它必须重新实现 equals() 和 hashCode() 方法,始终和组合关键字在数据库中的概念保持一致  注意:在 Hibernate3 中,第二个要求并非是 Hibernate

联合主键和复合主键区别

问题描述 在数据库中,什么是联合主键和复合主键?他们之间有什么区别?他们应用场景是什么?他们和普通主键id有什么区别? 解决方案 什么是数据表的复合主键所谓的复合主键 就是指你表的主键含有一个以上的字段组成比如create table test( name varchar(19), id number, value varchar(10), primary key (name,id))上面的name和id字段组合起来就是你test表的复合主键它的出现是因为你的name字段可能会出现重名,所以要加

mysql-MySQL建表语句怎么出错了?

问题描述 MySQL建表语句怎么出错了? CREATE TABLE posts (post_id int(8) unsigned NOT NULL AUTO_INCREMENT,PRIMARY KEY(post_id), post_user_id int(8) unsigned, post_date int(10) unsigned, post_url varchar(100), post_title varchar(100), post_end_date int(10) unsigned, p

cvs 数据库 主键外键-CVS格式文件数据导入新数据库后自动生成主键外键

问题描述 CVS格式文件数据导入新数据库后自动生成主键外键 以前将数据库中的数据导出来了,后来手贱把给数据库毁了. 现在希望通过以前导出来的CVS文件数据恢复以前的数据库,最好是自动的,主键外键自动关联自动生成[里边表实在太多了]. 什么数据库都行,什么MySQL.SQLServer都可以,只求能重建以前的数据库啊! 不知道各位大神有没有可行的办法啊? 解决方案 没办法,只有数据.需要添加SQL语句

查询表主键外键信息的SQL

我的BSOOC里需要一个查询表主键外键信息的SQL,昨晚研究到凌晨1点,终于能实现这个目标:Oracle:select o.obj# as objectId, o.name AS tableName, oc.name AS constraintName,       decode(c.type#, 1, 'C', 2, 'P', 3, 'U',              4, 'R', 5, 'V', 6, 'O', 7,'C', '?') as constraintType,        c

mysql auto_increment 与 联合主键冲突问题

mysql 5.5之前,auto_increment字段必须为主键,有的时候,这种自增字段,并没有多大的实际意义,而我们需要多个字段组成主键. 例如: 用户只能对购买的商品,进行一次评价,评价的自增ID,没什么用处,用户的ID和商品ID组成的联合主键,意义就大的多了.如果想保留auto_increment字段,就要使用高版本的mysql了. mysql> ALTER TABLE `order` DROP PRIMARY KEY ,ADD PRIMARY KEY ( `user_id` , `or

Mysql的联合主键

mysql的联合主键:用2个字段(或者多个字段,后面具体都是用2个字段组合)来确定一条记录,说明,这2个字段都不是唯一的,2个字段可以分别重复,这么设置的好处,可以很直观的看到某个重复字段的记录条数. 在mysql当中我们经常认为主键只能设置一个,那如果我们想设置两个呢?如下图: CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date` varchar(25) DEFAULT NULL, `sess_id` varcha

jpa 外键做联合主键-JPA 外键做联合主键 报错

问题描述 JPA 外键做联合主键 报错 get.set方法hashCode.equals都有 在Valuator报错 Persistent type of override attribute "pk.pjcontype" cannot be resolved Pjrelation.java 在Pjrelation中报错 In attribute 'pjrelation', the "mapped by" value 'pk.valuator' cannot be