-
navicat添加外键_mysql如何添加一个表的外键(使用Navicat数据库管理工具)
2020-12-22 14:27:10例如用户表与老师表之间:假设一个老师有多个学生,而每个学生只有这一个老师,老师与...在学生表中添加一个字段tid(用来指向teacher表的主键)二.在特定数据库打开命令列界面,修改student表添加外键通用建立外键m...例如用户表与老师表之间:
假设一个老师有多个学生,而每个学生只有这一个老师,老师与学生关系就是标准的一对多(1:n)。
添加外键就是在多的地方添加外键,简单来说,就是在student学生表中添加引用老师主键的外键。
具体操作:
第一种情况:
在已建立好这两个表的前提下,
一.在学生表中添加一个字段tid(用来指向teacher表的主键)
二.在特定数据库打开命令列界面,修改student表添加外键
通用建立外键mysql语句如下:
alter table student add foreign key(tid) references teacher(id);
alter table 子表的数据表名 add foreign key(子表的外键名称) references 父表的数据表名称(父表的主键名称);
第二种情况,还未创建表时
一.创建一个父表(teacher),主键作为子表(student)的外键:
create table `teacher`(
id int primary key auto_increment,
name varchar(20)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
2:创建子表,外键是父表的主键:
create table `student`(
id int primary key auto_increment,
name varchar(20),
tid int,
foreign key(tid) references teacher(id)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
ps:说明一个报错,第一种情况的,必须要先在student表中建立一个tid字段,否则立刻执行alter table ...语句会报如下错:
Cannot add or update a child row: a foreign key constraint fails (mybatis.#sql-13f0_2, CONSTRAINT #sql-13f0_2_ibfk_1 FOREIGN KEY (id) REFERENCES teacher (id))
from lj 2020-06-23
-
mysql查找倒数第四个字符为w_实操:带like关键字的查询1查找student表中name字段值以字符“s”开头的学生id;...
2021-02-08 13:56:48【简答题】(3)在stu,sign,stu_mark表中分别添加三条记录。写一条查询,作用是:查询报考北大学生的学号,姓名,地址,电话,分数等信息。【简答题】(4)创建视图beida,包括考上北大学生的学号,姓名,成绩和报考学校名称。...【简答题】实操:空值查询1查询student表中gender为空值的记录;2查询student表中gender不为空值的记录。
【简答题】(3)在stu,sign,stu_mark表中分别添加三条记录。写一条查询,作用是:查询报考北大学生的学号,姓名,地址,电话,分数等信息。
【简答题】(4)创建视图beida,包括考上北大学生的学号,姓名,成绩和报考学校名称。(假设>=720分能考上北大)
【简答题】(5)创建考上清华大学的学生视图qinghua,并更新视图。(假设>=725分能考上北大)
【简答题】用具体实例演示事务的回滚。
【简答题】用具体实例演示事务的提交。
【简答题】2.2 修改表(10) 1 )customer表:将马云的邮政编码改为:110120 ,地址改为:北边小湖边(5)
【简答题】简述事务概念、特点、语法结构。
【简答题】通过转账案例演示如何使用事务: 首先开启一个事务,然后通过update语句将a账户的100元钱转给b账户,最后提交事务。
【简答题】2.定义错误代码为42000的条件,及其处理程序set @x=1;
【简答题】2.3 删除表(10) 新建表new_vendor:表结构如下: 字段名 数据类型 长度 约束 描述 vid int 11 非空,主键 唯一的供应商ID,自动增长 vname varchar 50 非空 供应商姓名 vaddress varchar 50 默认为null 供应商地址 vcountry varchar 50 默认为null 供应商所在国家 1 )将vendor表中的vid,vname,vaddress,vcountry复制到new_vendor表中(5) 2 )删除new_vendor表中所有数据(5)
【简答题】实操:带like关键字的查询1查找student表中name字段值以字符“s”开头的学生id;2查询student表中name字段值以字符“w”开始,以字符“g”结束的学生id。
【简答题】3.按提供语句,创建stu表,创建存储过程addcount能够获取表stu中的记录数和ID之和。
【简答题】2.基于单表student表,创建视图view_stu,视图分别定义字段id,name,math,chinese,math+chinese(计算某个学生的数学+语文的成绩之和)
【简答题】4 )供应商表:vendor添加以下数据:(4)
【简答题】实操:带between and关键字的查询1查询student表中id值在2--5之间学生姓名;2查询student表中id值不在2--5之间学生姓名。
【简答题】4.列举两种删除用户的方法。
【简答题】3.定义存储过程proc(),作用是查看数据表stu中所有性别为男的记录。
【简答题】2.1 添加数据(20) 1 )为顾客表:customer添加以下数据:(4)
【简答题】带关系运算符的查询1查询student表中id为4的学生的姓名;2查询student表中grade大于80的学生姓名。
【简答题】2 )为产品表:product添加以下数据:(4)
【简答题】6.mysql中权限信息存储在哪个数据库的哪些表中?
【简答题】3.mysql中,用户信息保存在哪个位置?用三种不同的方式,创建新用户user1,user2,user3,密码全设为123,将创建语句和查看user表的截图放下边。
【简答题】实操:带distinct关键字的查询1查询student表中gender字段的值,查询记录不能重复;2查询student表中gender和name字段,使用distinct关键字作用于这两个字段。
【简答题】查询student表中所有记录,将各个字段使用下划线“_”连接起来。
【简答题】1select语句中指定所有字段查询的语法 ;2select语句中使用星号(*)通配符代替所有字段查询的语法。
【简答题】(2)新建表stu,sign,stu_mark,并用desribe命令查看这三个表的结构,将截图如下。
【简答题】3.在基本表student和stu_info上创建视图stu_class(id,name,class)。
【简答题】(1)查看所操作的Mysql环境中有没有chapter06这个数据库,如有,请删除后,再新建chapte06这个数据库。请将上操作语句及操作截图如下。
【简答题】1.什么是视图?视图的优点,建立视图的语句是?
【简答题】4.查看视图view_stu的字段信息,状态信息,定义语句和字符编码。
【简答题】为student表起一个别名s,并查询student表中gender字段值为“女”的记录
【简答题】英语中你知道的词性有哪些?英语缩写是什么?
【简答题】5.修改root用户密码的操作是?root用户修改普通用户密码的方式是?
【简答题】查询student表中的id和gender字段值,如果gender字段值为“男”则返回1,否则返回0。
【简答题】7.用grant语句新建用户user4,并查看user表中其权限,然后,使用user4用户登录,用show databases;命令查看其管理的数据库。
【简答题】5.删除proc()。
【简答题】实操:带in关键字查询1查询student表中id为1、2、3的记录;2查询student表中id不为1、2、3的记录
【简答题】8.使用revoke语句收回user4的insert权限,并查看user表中其权限信息;再用revoke语句收回user4的所有权限,然后,使用user4用户登录,用show databases;命令查看其管理的数据库。
【简答题】2.在前一题基础上,删除chapter08数据库,然后还原chapter08数据库,将操作过程写在下边。
【简答题】查询student表中的所有记录的name和gender字段值,并为这两个字段起别名stu_name和stu_gender。
【简答题】1.请写出用mysqldump命令备份chapter08数据库的SQL语句。
【简答题】1.简述存储过程的作用,及创建的语法结构。
【简答题】5 )库存表:recruit添加以下数据:(4)
【简答题】2.在chapter06数据库中创建一个stu表(name,grade,gender),并向表中添加数据,('tom',60,'男'),('jack',70,'男'),('rose',90,'女'),('lucy',100,'女');并查看数据表是建立是否正常。
【简答题】3 )订单表:order1添加以下数据:(4)
【简答题】编写存储过程proc(),在存储过程中编写SQL语句,要求如下: (1)实现1-10之间数字的遍历。 (2)当数字大于10退出遍历过程。 (3)数字在1-10之间时,遍历数字并输出。
【简答题】4.查看是否定义proc()这个存储进程,并调用执行验证结果。
【简答题】事务的四大特性都有哪些?
【简答题】2 )product表:将产品编号为2的产品描述改为:我世界最牛的手机,手机中的大哥大(5)
-
StudentInfo 基于SSM的学生信息管理系统...2019.6.19:新增成绩录入,鉴于这是一个简单的学习项目,因为时间问题暂停更新,会陆续解决已有bug 已停更 当你的才华还撑不起你的野心的时候,你就应该静下心来学习。
-
数据库(入门八)表中的约束条件以及表中的关联关系
2020-04-29 14:18:40常用的约束条件 在Navicat 中设置主键如下图 主键添加 如果把用户的Id 设置为主键,那么每多一...实现:而班级表中的班级id(在班级表中的班级Id 作为主键),学生表定义一个字段(学生班级id)作为外键,该外键 ...常用的约束条件
在Navicat 中设置主键如下图
主键添加
如果把用户的Id 设置为主键,那么每多一个用户,主键就会自动增长一条数据,并且每个人的id还不重复。表中关系
一对多的关系
一对多关系,为一个表中的数据对应着另外一张表的多条数据
例如:班级 与 学生 之间的关系
实现:而班级表中的班级id(在班级表中的班级Id 作为主键),学生表定义一个字段(学生班级id)作为外键,该外键 关联上 班级表中的主键。
Navicat中的设置图
这里 添加的cla_id (学生id) 去参考班级表中的id .
总结:一对多总结为 多的一方,参考少的一方。一对一模式
一对一:该表中的一条记录,对应着另一张表的一条记录。
比如: 学生和学生的个人信息。
实现方式:两张表中,某一张表中的外键关联到另一张表中的主键,索引设置为唯一。多对多模式
多对多:两张表中的每条记录都对应着另外一张表中的多条记录。
比如: 学生与课程
实现方式:
建设第三张表,我们只需要把两张表中的主键(课程id 学生id )分别作为外键进行保存
Navicat中设置第三张表如下图
自关联一对多
自关联 :顾名思义,就是表内数据关联表内的
比如: 商品类型(电子类的id),对应着商品 有手机,电子表等
比如下图中,这张表 pid 要关联到自己表中的id。
-
Django学生信息管理系统(6)学生成绩添加和学生成绩查询(多对对关系)
2018-05-18 19:33:18由于在前面我使用的是mangtomany的方式添加的多对多关系,在这个功能中,由于要涉及到分数,而分数和课程已经学生的关系甚至和课程的关系都是一对多,所以分数字段在学生与课程表的中间表,是最符合他们之间的关系。...一、简述
这个部分可以算是这个系统的难点部分了,主要涉及到了对多对多表格关系之间的操作
由于在前面我使用的是mangtomany的方式添加的多对多关系,在这个功能中,由于要涉及到分数,而分数和课程已经学生的关系甚至和课程的关系都是一对多,所以分数字段在学生与课程表的中间表,是最符合他们之间的关系。
但是由于使用manytomany的方法,无法直接对中间表进行操作,所以必须要从新定义这个中间表的model。但是这个时候再来从新定义一个相同的中间表会导致更改很多东西。所以为了我再次地应了一个新的中间表(score)
新的score表在每次选择或者取消课程的同时也进行一次相对应的操作
score表的建立方式, 由于前几次migrate出现了错误,导致我在migrate的时候出现了很多错误,所以在这里我还是直接使用Navicat进行表格的建立
create table score( id int not null auto_increment, course_id int default null, stu_id int default null, primary key(id), foreign key(course_id) references course(id), foreign key(stu_id) references student )
虽然没有使用python manage.py makemigrations这些操作,model模型的定义还是不能少
class StuCourse(models.Model): student = models.ForeignKey(Student) course = models.ForeignKey(Course) score = models.IntegerField(null=True, blank=True) class Meta: db_table = 'scores'
上面需要注意的是blank,null属性的区别,前者是在表单提交时是否可以为空,后者是数据库中是否可以为空,如果想要想创建学生id和课程id,再添加score,请一定要加上blank=True。否则后果自负。
二、添加方法:
def sure_scores(request): if request.method == 'POST': course_id = request.POST.get('course_id') stu_id = request.POST.get('stu_id') stu = Student.objects.get(pk=stu_id) g_id = stu.g_id course_id_score = request.POST.get('score_'+course_id) stucourse = StuCourse.objects.get(course_id=course_id, student_id=stu_id) stucourse.score = int(course_id_score) stucourse.save() return HttpResponseRedirect(reverse('course:currentgs', kwargs={'g_id': g_id}))
没有进行过多的页面渲染,这个页面是先通过选择班级,再跳转进入的,目前只有第一个学生进行了选课的操作,如图所示。
三、查询方法
def select_scores(request): if request.method == 'GET': s_name = request.session['s_name'] stu = Student.objects.get(s_name=s_name) stucourses = stu.stucourse_set.all() return render(request, 'selscores.html', {'stucourses': stucourses, 'stu': stu})
查询方法是先找到对应id所有的stucourses, 通过单个stucourse.course的方法可以直接找到所对应的course对象,从而达到相识课程名的效果。到此,这个学生信息管理系统也就基本完成了。但是由于项目中,遇到的某些事,中间暂停了一段时间,最终的效果其实并没有完全达到我之前想要达到的效果。
目前未完成的功能:管理员登录功能、用户登录验证功能
这两个功能,我将在下一篇介绍MiddleWare中间件的时候,一起实现。
-
sqlserver中操作主从关系表的sql语句
2021-01-19 22:31:27典型的方法就是对于主表的各数据字段进行更新或新增,对于从表一般都会先删除相关的所有记录,然后再进行插入。也就是说每次保存时,从表的数据都要重新执行一遍删除再插入的...应用场景,在学生管理中,添加一条学生 -
数据库表设计(一对多,多对多)
2018-09-26 09:21:05目录 一、总结 二、数据表设计(一对多,多对多) 三、数据库怎么设计多对多的数据表 ...1、项目中小组和主题之间是多对多的 ...3、多对多的话:比如老师和学生,建立一个关系表,表id,老师id,学生id即可... -
怎样用EXCEL对数值型字段进行分组?
2018-09-01 15:57:33如图,表1是原始数据,在表1中添加一个辅助列“分组”就形成了表2.字段“分组”是根据字段“成绩”决定的。学生成绩在0-59区间为“不及格”,在60-75区间为“及格”……分组的依据见表3.把表1变成表2就是数值分组。 ... -
怎样用python pandas对数值型字段进行分组?
2018-09-02 10:00:24如图,表1是原始数据,在表1中添加一个辅助列“分组”就形成了表2.字段“分组”是根据字段“成绩”决定的。学生成绩在0-59区间为“不及格”,在60-75区间为“及格”……分组的依据见表3.把表1变成表2就是数值分组。 ... -
用EXCEL Power Query怎样对数值型字段进行分组?
2018-09-01 16:35:13如图,表1是原始数据,在表1中添加一个辅助列“分组”就形成了表2.字段“分组”是根据字段“成绩”决定的。学生成绩在0-59区间为“不及格”,在60-75区间为“及格”……分组的依据见表3.把表1变成表2就是数值分组。 ... -
mysql update触发器 state改变时添加日志
2020-04-02 14:05:58mysql的触发器功能十分强大,这里主要是使用触发器来为状态的...这里我要在student表添加一个触发器用于监听表中的state字段发生变化的时候就添加一条日志 定义的内容为: begin if new.state!=old.state then ... -
数据库表的约束
2021-01-05 19:10:55通常情况下,一般会给表添加一个id字段,用作唯一标识,设置为主键,主键一般是提供给数据库操作使用的(查询,修改,删除等等),主键不能重复,也不能为空。 比如: 一个人的身份证号、一个人手机号,一个学生的学号... -
使用PowerDesigner搭建学生选课管理系统(学生老师管理员一体系结构)由基础设计至数据库生成(SQL语句源...
2020-10-04 19:45:15我们建立管理员表、老师表、学生表,起初每张表的属性没有必要填的过于全面,我们开始要注重的是表之间的关系,表的属性可以在后面添加 1、建第一类表 老师和学生之间是多对多的关系(n:n) 学生和管理员之间是多对... -
【Hibernate】(4)Hibernate的多表操作、级联操作与延迟加载
2017-08-19 10:22:22一、多表操作关系型数据库具有三种常用关系:一对一关系、一对多...在Hibernate映射中,在院系表中添加一个集合属性,集合属性存放该院系下的学生。学生表中将院系编号字段映射成一个院系类对象。这样通过院系类对象的 -
mysql学生选课系统的关系模型_使用PowerDesigner搭建学生选课管理系统(学生老师管理员一体系结构)由基础...
2021-02-08 07:07:20思考构图大小及范围首先,...制作概念模型我们建立管理员表、老师表、学生表,起初每张表的属性没有必要填的过于全面,我们开始要注重的是表之间的关系,表的属性可以在后面添加1、建第一类表老师和学生之间是多对... -
Mysql Sql使用二:数据操作(多表)
2016-05-11 17:27:59子查询数据库的设计一对多在多方需要添加一个字段,并且和一放主键的类型必须是相同的。把该字段作为外键指向一方的主键。 eg:生活中一个部门下有多个员工,一个员工属于一个部门。多对多拆开两个一对多的关系,... -
mysql多对多表设计_数据库怎么设计多对多的数据表
2021-01-19 19:55:55数据库怎么设计多对多的数据表一、总结1、项目中小组和主题之间是多对多的2、可以将常用信息和不常用信息分成两个表来优化数据库2、一对多的话:在多的里面建立一的字段,比如母亲(一)和孩子(多),在孩子里面添加... -
多级表查询之业务装配方式
2019-01-07 15:24:00多表关联查询 表结构 ...学生表(s_student)字段有id、name、age、gender,cid ...班级(t_class),字段有id,name,room ...创建班级类(Clazz)和学生类(Student),并在student中添加一个C... -
mysql第一天作业
2017-07-24 19:17:001、在一个数据库中创建学生表,...2、在学生表添加一个班级字段,字符串类型,非空约束 3、将姓名字段改为唯一约束 4、将学生表名改为stu 转载于:https://www.cnblogs.com/z-x-y/p/7230579.html... -
ACCESS数据库联结表实现
2020-05-12 08:07:49** 本文的主要内容为记录一下ACCESS数据库中两张表的联结,联结的好处是可以关联两张数据表,观看数据时不用...图1位学生信息表,表格有四个字段,序号、学号、姓名、和性别,图2为学生成绩表,也是四个字段,分别为 -
java-hibernate框架4(hibernate多表操作,级联操作与延迟加载,多对多关系操作,hibernate缓存技术)
2016-10-02 00:27:071、Hibernate多表操作 关系型数据库具有三种常用关系:一对一关系、一对多关系和多对多关系。 建立了一对多关系的表之间,一方中的表叫“主表”,多方中的...在Hibernate映射中,在院系表中添加一个集合属性,集合 -
学生学籍管理信息系统
2009-05-28 14:51:27④ 用户对学生在校期间个人基本信息发生变化的,在系统中进行修改 ⑤ 期末考试结束,把每个学生的成绩进行录入、修改、查询和打印 3.功能 3.1功能划分 学生档案管理系统必须完成以下功能: 系统管理模块学籍管理... -
数据表设计三大范式
2020-08-23 15:06:32一、第一范式1NF ...如果有一个新的系还没有开始找到学生,那么不能讲该系的信息添加到数据表中去,从数据表中看不到该系的存在 如果将某个系的学生信息全部删除,那么这个系在数据表里也就不存在了, -
数据库怎么设计多对多的数据表
2018-05-11 00:50:00数据库怎么设计多对多的数据表 ...3、多对多的话:比如老师和学生,建立一个关系表,表id,老师id,学生id即可 二、数据表设计(一对多,多对多) 做一个项目,必然是少不了数据库设计的!在... -
mybatits中xml关联查询的配置问题
2017-06-04 15:12:39我现在在学生表的xml中只配置了学生表字段,实体类中也只写学生字段。 我在xml中语句中进行关联查询,效果也没出错。 既然没出错,为什么还要配置关联? 不明白关联的作用,现在如果我要删除个学生信息,还需要自己... -
java-课后作业-JDBC-学生信息管理系统----
2020-12-06 16:00:52在数据库中建立一个表 表名为学生 表结构为:学号, 姓名, 性别, 年龄, JAVA语言, 数据结构, 数据库, 总分 功能要求: 实现对对数据库的增, 删, 改, 查操作 界面展示与功能说明 本次作业使用SQLi -
MySQL中范式的关系
2020-07-16 16:42:081.多表之间的关系 1)一对一: 例子:人和身份证 分析:一个人只有一个身份证,一个...实现方式:多对多关系实现需要借助第三张中间表,中间表至少包含两个字段,这两个字段作为第三张表的外键, 分别指向两张表的 -
J2EE系列之MyBatis学习笔记(四)-- mybatis关系映射(一对一映射)
2017-06-14 09:29:30这一讲讲述mybatis如何实现一对一关系映射。...2.修改表t_student,添加一个addressId字段,这个字段对应t_address表的主键: 这样我们就实现了这两个表的一对一映射。 3.工程中新建类Address: package com.test