mysql02:连表

1,外键补充,一提到外键,肯定最少存在两张表的关系,外键有几个写几个就好

2,创建表的时候,最后一行不要加逗号,不然会报错的

mysql> create table userinfo(
    -> id int not null auto_increment primary key,
    -> name varchar(10),
    -> department_id int,
    -> ) engine=innodb default charset=utf8;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘) engine=innodb default charset=utf8‘ at line 5

3,两张表,创建简单的外键关系,这个报错的原因是因为department 表里面的id 不是唯一索引的,这个在后面会讲的我记忆当中

mysql> create table department(
    -> id int not null,
    -> department char(20)
    -> ) engine = innodb default charset utf8
    -> ;
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> create table userinfo2(
    -> id int not null auto_increment primary key,
    -> name varchar(10),
    -> department_id int,
    -> constraint fk_1 foreign key (department_id) references department(id)
    -> ) engine=innodb default charset=utf8;
ERROR 1822 (HY000): Failed to add the foreign key constraint. Missing index for constraint ‘fk_1‘ in the referenced table ‘department‘

4,所以应用上一小节学习的知识,修改department表里面的ID属性,正确写法如下,注意modify后面没有colume:

mysql> alter table department modify id int not null auto_increment primary key;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

5,修改完成之后,再次建立外键关系,成功!

mysql> create table userinfo2( id int not null auto_increment primary key, name varchar(10), department_id int, constraint fk_1 foreign key (department_id) references department(id) ) engine=innodb default charset=utf8;
Query OK, 0 rows affected, 1 warning (0.01 sec)

6,做一下老师上节课的作业,创建出学生,老师,课程,成绩表,并建立约束关系

原文地址:https://www.cnblogs.com/lisa-blog/p/10349216.html

时间: 2024-10-30 02:07:44

mysql02:连表的相关文章

MyCat实现读写分离+分库分表+全局表

前言 mycat功能强大,配置简单,作为数据库中间件,是一个非常优秀的开源产品,关于MyCat的部署安装,可以参考博文:MyCat部署安装. 本博文将展示mycat的如下功能: 读写分离: 分库分表: 全局表: 环境如下: 系统 IP 主机名 服务 Centos 7.5 192.168.20.2 mysql01 MySQL 5.7.24 Centos 7.5 192.168.20.3 mysql02 MySQL 5.7.24 Centos 7.5 192.168.20.3 mysql03 MyS

Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步

摘自:http://blog.csdn.net/javaee_sunny/article/details/53439980 目录(?)[-] Oracle 10g 物化视图语法如下 实例演示 主要步骤 在A节点创建原表和物化视图日志 在B节点创建连接A节点的远程链接 在B节点处创建目标表和与目标表名称相同的物化视图 在B节点处刷新物化视图 升级采用存储过程定时任务JOB方式定时刷新物化视图 进一步优化 文章更新记录 参考文章 Oracle 10g 物化视图语法如下: create materia

SqlServer给一个表增加多个字段语法

添加字段语法 alter table table_name add column_name +字段类型+ 约束条件 给一个表增加多个字段: use NatureData go alter table XunHu add MaleCount varchar(50) null, FemaleCount varchar(50) null, SubadultCount varchar(50) null, LarvaeCount varchar(50) null, TraceType varchar(50

凯撒密码、GDP格式化输出、99乘法表

1凯撒密码加密plaincode=input('请输入明文:')print('密文:',end='')for i in plaincode:print(chr(ord(i)+3),end='') 2.国家名称 GDP总量(人民币亿元) 中国 ¥765,873.4375澳大利亚 ¥ 78,312.4375 print('国家名称 GDP总量(人民币亿元)')print('{0:''<12}¥{1:''>10,.2f}'.format('中国',765873.4375))print('{0:''&

c打印9*9乘法表

c打印9*9乘法表(这里提供了两种打印方法).乘号两边有规律可寻,其左边递减,右边递增. 1 #include <stdio.h> 2 int main() 3 { 4 int i, j, result; 5 for (i = 9; i >= 1; i--) //外层循环,从9开始,每次循环自减1 6 { 7 for (j = 1; j <= i; j++) //内层循环,从1开始,每次循环自加1 8 { 9 result = i*j; 10 printf("%d*%d=

MySQL(九)之数据表的查询详解(SELECT语法)二

上一篇讲了比较简单的单表查询以及MySQL的组函数,这一篇给大家分享一点比较难得知识了,关于多表查询,子查询,左连接,外连接等等.希望大家能都得到帮助! 在开始之前因为要多表查询,所以搭建好环境: 1)创建数据表suppliers 前面已经有一张表是book表,我们在建立一张suppliers(供应商)表和前面的book表对应. 也就是说 让book中s_id字段值指向suppliers的主键值,创建一个外键约束关系. 其实这里并没有达到真正的外键约束关系,只是模拟,让fruits中的s_id中

C# 远程服务器 安装、卸载 Windows 服务,读取远程注册表,关闭杀掉远程进程

这里安装windows服务我们用sc命令,这里需要远程服务器IP,服务名称.显示名称.描述以及执行文件,安装后需要验证服务是否安装成功,验证方法可以直接调用ServiceController来查询服务,也可以通过远程注册表来查找服务的执行文件:那么卸载文件我们也就用SC命令了,卸载后需要检测是否卸载成功,修改显示名称和描述也用sc命令.至于停止和启动Windows服务我们可以用sc命令也可以用ServiceController的API,当停止失败的时候我们会强制杀掉远程进程,在卸载windows

数据库表:区域表system_district

区域表[system_district] 数据模型 建表脚本 -- ---------------------------- -- Table structure for system_district -- ---------------------------- DROP TABLE IF EXISTS `system_district`; CREATE TABLE `system_district` (   `district_id` bigint(20) unsigned NOT NUL

SQL Server 里面sql语句备份表

select * into 新表名字  from XXXX 新表名字中最好加入日期  提醒自己哪天创建 var code = $("#editWin input[name=Code]").val();        var re = new RegExp(/^[0-9a-zA-Z]*$/g);        if (!re.test(code)) {            Msg.show("请输入英文或数字", 9);            return fals