MySQL 创建主键,外键和复合主键的语句_Mysql

1.创建主键语法

ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名);

2.创建外键语法

ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ;

3.使用组合主键

如果一列不能唯一区分一个表里的记录时,可以考虑多个列组合起来达到区分表记录的唯一性,形式

①创建时:create table sc (
studentno int,
courseid int,
score int,
primary key (studentno,courseid) );
②修改时:alter table tb_name add primary key (字段1,字段2,字段3);

时间: 2024-09-18 01:29:20

MySQL 创建主键,外键和复合主键的语句_Mysql的相关文章

Java的Hibernate框架中复合主键映射的创建和使用教程_java

复合主键映射需要在映射配置文件中使用<composite-id>标签,该标签是指将一个类指定为相应的复合主键,它的name属性需要指定类文件中定义的属性值,并在该标签中添加<key-property>子标签. Note:想要使用复合映射必须要将复合主键放到一个类中,也就是讲复合主键属性和其它属性分到两个类中,并将复合主键的类实现接口Serializable,该接口隶属于java.io. 复合主键的映射关系的主键是由多个列复合而成的,对应到数据表中相当的简单,如下图: 1.类文件这里

Cassandra1.1.1建立复合主键后,如何再建立二级索引? -

最近在使用Cassandra,版本为1.1.1, CQL版本为3.0.0.遇到如下问题. 目标:利用复合主键进行查询和排序,并想利用二级索引进行多条件查询. 首先CQL建表,用到复合主键(instigator, startedAt): &http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; CREATE TABLE altercations ( instigator text, startedAt text, ships

hibernate(jpa)复合主键annotation声明方法

在设计数据库表的时候,往往会设计出带有复合主键的表,即表的记录由多 个字段联合标识,如: 表 CREATE TABLE TB_HOUR_DATA ( STAT_DATE DATE NOT NULL, PATH_ID NUMBER(20) NOT NULL, VALUE VARCHAR2(512 BYTE), TYPE NUMBER(1) NOT NULL ) 其中,复合主键为(STAT_DATE,PATH_ID,TYPE) 针对这种情况,hibernate(jpa) 的 annotation 映

hibernate注解方式实现复合主键

有时一个实体的主键可能同时为多个,例如同样是之前使用的"CustomerEO"实体,需要通过name和email来查找指定实体,当且仅当name和email的值完全相同时,才认为是相同的实体对象.要配置这样的复合主键,步骤如以下所示. (1)编写一个复合主键的类CustomerPK,代码如下. CustomerPK.java import java.io.Serializable; public class CustomerPK implements Serializable { pu

hibernate3学习笔记(十一)|复合主键

新建数据库User: 1.CREATE TABLE user (2. name VARCHAR(100) NOT NULL,3. phone VARCHAR(50) NOT NULL,4. age INT,5. PRIMARY KEY(name, phone)6.); 现将name和phone定义成复合主键.分别使用2种方法如下: 方法1.复合主键字段直接包含在PO类中. User.java(需要实现Serializable接口,并定义equals()和hashCode()方法) 1.packa

hibernate 复合主键 insert时有一个字段用sysdate获得oracle当前时间

问题描述 求问.复合主键insert时有一个字段用sysdate获得oracle当前时间怎么做.试了insert-sql.复合主键的时候有问题.该怎么办?

mysql使用mybatis批量添加数据,返回主键

问题描述 mysql使用mybatis批量添加数据,返回主键 mysql使用mybatis批量添加,使用各种方法都无法返回对应的主键,请兄弟们不吝赐教 解决方案 该功能无法实现,只能分步骤来,先插入在查询 解决方案二: 批量添加还要返回主键??这个不太可能吧.最多也就返回插入的条数.如果返回主键,那不是了返回一个list然后里面放主键?一条一条插入倒是可以返回主键 解决方案三: 分步骤来,先插入在查询

知道复合主键中一个字段属性值,如何得到另一个字段属性值

问题描述 我的复合主键是由2个字段组成的,现在能拿到其中一个字段的值,不知道如何拿到另一个值?小弟诚请各位高手解决,online等!谢谢了 解决方案 上面的发错了,用JDBC和hibernate都可以直接查询,返回的有可能是多条记录.JDBC: select id_a from table1 where id_bhibernate: 一般复合主键映射成一个实体对象如: public class Table1 { private TableId id; private String xxxProp

ehcache-Hibernate4 复合主键没法使用缓存啊

问题描述 Hibernate4 复合主键没法使用缓存啊 代码如下,在执行查询的时候,缓存无效果,非复合主键的都正常进入缓存 @Embeddable @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)public class StudentClassesPK implements Serializable{ private static final long serialVersionUID = 808696703601415

联合主键和复合主键区别

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