精华内容
下载资源
问答
  • 一、SQL语句创建数据设置外键关系 create table demo.ChineseCharInfo ( ID int not null auto_increment, Hanzi varchar(10) not null, primary key (ID) ) engine=innodb auto_increment=
  • 中已有字段设置 外键 似乎不能设置为主键即使定义没有定义主键也会报错 如 Multiple primary key defined 1。添加新字段 alter table 表名 add 字段名 字段描述; alter table student add phone varchar(20);...

    将表中已有字段设置 外键
    似乎不能设置为主键即使定义时没有定义主键也会报错 如
    Multiple primary key defined

    1。添加新字段
    alter table 表名 add 字段名 字段描述;

    alter table student add phone varchar(20);
    

    2。设置外键
    alter table 表名 add constraint 键名 foreign key(外键名) references 主表名(主表主键名)

    alter table grade add constraint g_id foreign key(g_id) references school(id)
    

    8.一对多关系
    1.设计表
    1.班级表
    create table classes(classid int primary key auto_increment,classname varchar(20));

    2.学生表
    create table student2(studentid int primary key auto_increment,studentname varchar(20) not null,classid int,foreign key(classid) references classes(classid))
    外键格式: foreign key(外键字段名) references 表名(关联字段名)

       classid班级id是外键,需要关联classes班级表的classid主健,  
    

    2.插入数据
    1.班级表
    insert into classes values(0,“py01”),(0,“py02”),(0,“py03”),(0,“java01”),(0,“h501”),(0,“ui01”),(0,“java02”),(0,“h502”),(0,“ui02”);
    2.学生表
    insert into student2 values(0,“张三”,4);
    insert into student2 values(0,“李四”,1);
    insert into student2 values(0,“王五”,1);
    insert into student2 values(0,“赵六”,2);
    insert into student2 values(0,“田七”,1);

    注意:如果关联的外键,而外键的值在关联的表中不存在,则无法成功插入
    error: insert into student2 values(0,“胖八”,11);

    3.多表查询数据
    1.需求: 查看所有的学生姓名及其所在的班级 ?
    例:
    select student2.studentname,classes.classname from student2,classes where student2.classid = classes.classid;
    注: 1.表名.字段名 可以指定到对应表中的某个字段,在多表联合查询的时候使用
    2.在多表联合查询的时候,from后面可以跟多个表
    2.需求2: 展示py01班所有的学生?
    select student2.studentname,classes.classname from student2,classes where student2.classid = classes.classid and classes.classid=1;
    3.需求3: 展示所有学生的所有信息?
    select student2.,classes. from student2,classes where student2.classid = classes.classid;
    4.连接关系查询
    1.内连接 inner join
    1.查询所有学生及姓名 ?
    select student2.studentname,classes.classname from student2 inner join classes on student2.classid = classes.classid;
    2.左外连接 left join
    select student2.studentname,classes.classname from classes left join student2 on student2.classid = classes.classid;
    3.右外连接 right join

    4.格式:  select .... from 表1 inner/left/right join 表2  on  条件;
    

    9.多对多
    1.设计表
    1.学生表
    create table student3(studentid int primary key auto_increment,studentname varchar(20) not null);
    2.课程表
    create table courses(coursesid int primary key auto_increment,coursesname varchar(20));
    3. 学生 —课程 表即选修课表
    create table elective(studentid int,coursesid int,primary key(studentid,coursesid),foreign key(studentid) references student3(studentid),foreign key(coursesid) references courses(coursesid));

    选修课

    2.插入数据
    插入学生:
    insert into student3 values(0,“张三”);
    insert into student3 values(0,“李四”);
    insert into student3 values(0,“王五”);
    insert into student3 values(0,“赵六”);
    insert into student3 values(0,“田七”);

    插入课程:

    insert into courses values(0,“python”);
    insert into courses values(0,“java”);
    insert into courses values(0,“h5”);
    insert into courses values(0,“ui”);

    插入选修课数据:
    insert into elective values(1,1);

    insert into elective values(1,2);
    insert into elective values(1,4);
    insert into elective values(3,1);
    insert into elective values(3,4);

    insert into elective values(1,1);
    注意:如果关联了外键,而外键的值在关联的表中不存在,则无法成功插入,

    3.查询数据
    查询学生的选修课
    select student3.*,courses.* from student3,courses,elective where student3.studentid = elective.studentid and courses.coursesid = elective.coursesid;

    mysql数据库。
    多表查询时
    select … from 表1 inner/left/right join 表2 on 条件;
    假设有班级表 学生表
    inner join 内联。查询数据为两表重合部分。即学生表外键关联了班级表的部分。 而学生表外键为空部分 班级表未被关联部分 不做为查询库
    left out join/left join 左外连接 即使表1 中没有外键关联 或者 被关联 也作为查询库。
    right out join/right join 右外连接 表2 中的数据作为查询库。同左外连接。

    展开全文
  • mysql创建表(带外键)

    千次阅读 2020-06-16 17:54:51
    创建department: create table department( dept_name varchar(20), budget int, descript varchar(20), primary key(dept_name) ); 创建course: create table course( course_id varchar(20), deptnames ...
    创建department表:
    create table department(
    dept_name varchar(20),
    budget int,
    descript varchar(20),
    primary key(dept_name)
    );
    
    创建course表:
    create table course(
    course_id varchar(20),
    deptnames varchar(20),
    credits int,
    foreign key(deptnames) references department(dept_name));
    
    course表的外键deptnames指向department表的dept_name
    若要删除department,course这两个表,则必须先删除course表,再删除department
    展开全文
  • 关于Mysql新建表时设置外键或者从已有中添加外键 *外键:在从中与主主键对应的那一列,如:下面例子中的联系人中的(lkm_cust_id) 主: 一方,用来约束别人的: 多方,被别人约束的 1.新建表时 ...

    关于Mysql新建表时设置外键或者从已有表中添加外键

    *外键:在从表中与主表主键对应的那一列,如:下面例子中的联系人表中的(lkm_cust_id)

    • 主表: 一方,用来约束别人的表
    • 从表: 多方,被别人约束的表

    1.新建表时

    [CONSTRAINT] [外键在这里插入代码片约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名);
    

    例如: 此处在联系人表中添加外键(cust_id)

    /*创建客户表*/
    CREATE TABLE cst_customer (
      cust_id bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',
      PRIMARY KEY (`cust_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=94 DEFAULT CHARSET=utf8;
    
    /*创建联系人表*/
    CREATE TABLE cst_linkman (
      lkm_id bigint(32) NOT NULL AUTO_INCREMENT COMMENT '联系人编号(主键)',
      lkm_cust_id bigint(32) NOT NULL COMMENT '客户id(外键)',
      PRIMARY KEY (`lkm_id`),
      CONSTRAINT `FK_cst_linkman_lkm_cust_id` FOREIGN KEY (`lkm_cust_id`) REFERENCES `cst_customer` (`cust_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
    
    1. 在已有表中添加外键
      语法:
    ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主
    键字段名);
    

    3.补充----设置外键时on条件说明

    • . cascade方式
      在父表上update/delete记录时,同步update/delete掉子表的匹配记录

      . set null方式
      在父表上update/delete记录时,将子表上匹配记录的列设为null
      要注意子表的外键列不能为not null

      . No action方式
      如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作

      . Restrict方式
      同no action, 都是立即检查外键约束

      . Set default方式
      父表有变更时,子表将外键列设置成一个默认的值 但Innodb不能识别

    展开全文
  • mysql创建表时添加外键约束产生Cannot add foreign key constraint 例如创建了user(user_id pk)和role(role_id pk),当创建user_role(user_id fk,role_id fk)关联的时候就出现问题。 1.所添加外键必须是另一...

    mysql创建表时添加外键约束产生Cannot add foreign key constraint

    例如创建了user(user_id pk)表和role(role_id pk)表,当创建user_role(user_id fk,role_id fk)关联表的时候就出现问题。

    1.所添加外键必须是另一个表的主键。

    2.所关联的外键的类型必须和另一个表的主键相同.user中的user_id的类型必须和user_role中的user_id的类型相同;role中的role_id的类型必须和user_role中的role_id的类型相同

    3.使用navicat连接mysql时,没有新建数据库,使用的是默认数据库,其原因主要是
    数据库引擎不同!
    查询user表数据库引擎语句show create table user;
    查询结果如下所示:
    CREATE TABLE user (
    user_id int(11) NOT NULL,
    username varchar(30) NOT NULL,
    PRIMARY KEY (user_id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    查询role表数据库引擎语句show create table role;
    CREATE TABLE role (
    role_id int(11) NOT NULL,
    rolename varchar(30) NOT NULL,
    PRIMARY KEY (role_id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    展开全文
  • 命令:altertable需加外键addconstraint外键名foreignkey(需加外键表的字段名)referencnes关联表名(关联字段名); 注意:外键名不能重复
  • Mysql 创建表外键

    千次阅读 2016-03-21 14:51:57
    1.定义,可以指定主键 create table sc (sno char(9),courseno char(10),grade smallint, primary key (sno,courseno)); 2.插入数据 insert into sc values ('31101','01',89); insert into sc values ('...
  • 1.什么时候用主键?主键的用处?保证数据的唯一性 2.一张只能有一个主键吗?√ 3.一个主键只能是一列吗...另外,需要注意外键名不能重复,故在进行外键命名,比如t2和t1进行外键关联,则命名为fk_t2_t1,若t3和..
  • MySQL表创建外键

    2020-07-16 21:56:32
    fk_goods_category外键描述,表示从商品关联到分类 foreign key(cid)当前goods商品中的cid字段作为了外键 references关联参照 category(cid)当前中的外键cid去关联的是分类中的主键cid */ CONSTRAINT fk_...
  • 删除不是特别常用,特别是对于存在外键关联的,删除更得小心。但是在开发过程中,发现Schema设计的有问题而且要删除现有的数据库中所有的来重新创建也是常有的事情;另外在测试的时候,也有需要重新创建数据库...
  • 用Navicat for mysql创建表,在设置外键的时候,删除和更新两列有四个值可以选择:CASCADE、NO ACTION、RESTRICT、SET NULL CASCADE、NO ACTION、RESTRICT、SET NULL区别如下: CASCADE:父delete、update...
  • 下面是已经创建好的两个数据!(还未加外键约束) 1. mysql> show columns from message;//信息 +-----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default |...
  • 创建表时创建user为例 : create table user( id int PRIMARY KEY auto_increment, name VARCHAR(20), age int, birthday date, dept_id int, constraint emp_deptid_fk foreign key(dept_id) references dept...
  • 主要介绍了MySQL无法创建外键的原因及解决方法,然后在文中给大家及时了MySQL无法创建外键、查询外键的属性知识,感兴趣的朋友一起看看吧
  • MYSQL 建表加主外键

    千次阅读 2019-02-27 14:54:00
     -- 方式一:不指定外键名称,数据库自动生成  foreign key (CharID) references ChineseCharInfo(ID) on delete cascade on update cascade     -- 方式二:指定外键名称为(FK_Name)  -- constraint FK_...
  • 报错 Foreign keys are not supported by MyISAM engine. You could change table's engine to INNODB or some other relational engine 解决 将下图中的"引擎"一栏改为InnoDB
  • 【精华版】mysql创建表(带外键)

    万次阅读 2017-04-17 23:26:53
    创建department: create table department( dept_name varchar(20), budget int, descript varchar(20), primary key(dept_name) ); 创建course: create table course( course_id varchar(20), deptnames ...
  • mysql外键设置方式

    万次阅读 多人点赞 2018-08-27 09:54:51
    mysql外键设置方式/在创建索引,可指定在delete/update父表时,对子进行的相应操作, 包括: restrict, cascade,set null 和 no action ,set default. restrict,no action: 立即检查外键约束,如果子有匹配...
  • 定义一个教师、一个学生;在学生中引用教师ID create table teachers(teacherID int not null auto_increment primary key,teacherName varchar(8)); create table students(studentID int not null auto_...
  • 创建外键语法 ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子列] REFERENCES news_type[主表名] (id)[主列] ; 3.使用组合主键 如果一列不能唯一区分一...
  • sql语句建表时设置外键约束

    千次阅读 2020-03-20 17:31:09
    建表时创建外键约束 --学生借阅图书 create table borrow( sno number(8), bno number(5), primary key(bno,sno), --联合主键 foreign key (bno) references book(bno), --借阅中的bno是book中的主键 foreign ...
  • DROP TABLE IF EXISTS News ;... COMMENT ‘主键’ 备注 PRIMARY KEY (Id) 主键标识符 创建外键: alter table News add constraint fk foreign key (NewsClassifyId) references NewsClassify(Id);
  • mysql表创建好后添加外键

    万次阅读 2017-10-12 17:36:10
    命令:alter table 需加外键 add constraint 外键名 foreign key(需加外键表的字段名) referencnes 关联表名(关联字段名); 注意:外键名不能重复 ALTER TABLE STORE_FRONTINFO ADD CONSTRAINT FK_STORE_FR_...
  • 创建表1.如果是5.6以下timestamp(3)改为timestamp不然报错create table ACT_RE_MODEL ( ID_ varchar(64) not null, REV_ integer, NAME_ varchar(255), KEY_ varchar(255), CATEGORY_ varchar(255), CREATE_...
  • 嗨,看看这里:http://www.sitepoint.com/mysql-foreign-keys-quicker-database-development/ [^]
  • 创建: 班级 CREATE TABLE class(cid INT PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(15) NOT NULL) 第一种://1.在属性值后面直接添加 CREATE TABLE student(sid INT AUTO_INCREMENT, sname VARCHAR(10) NOT ...
  • 今天在给mysql创建表时,总是报错: 后来了解到,一个数据库中,外键必须唯一,找出整个数据库中重复外键的方法: select TABLE_SCHEMA, TABLE_NAME from information_schema.KEY_COLUMN_USAGE where ...
  • MySQL创建外键时,提示错误,但只提示很简单的信息:ERROR 1005 (HY000): Can’t create table ‘db_qxztc.qx_userssssnew’ (errno: 150)。根本起不到解决问题的作用。 要看错误的详细提示,可以使用命令:(在...
  • mysql创建表时,设置自增字段

    万次阅读 2016-03-14 12:37:06
    比如可以这样,auto_increment关键字就表示自增.自增字段必须是主键,要定义primary ...php运行,如果出现mysql查询错误.,可以通过die(mysql_error()); 打印错误提示信息. ? 1 2 3 4 5 6...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 87,152
精华内容 34,860
关键字:

mysql创建表时设置外键

mysql 订阅