MySQL 创建多对多和一对一关系方法

目录
  • 一、创建多对多
    • 1.学生表
    • 2.课程表
    • 3.中间表
    • 4.插入数据
    • 5.查询学生1选了哪些科目
    • 6.查询id=2数学被谁选了
  • 二、MySQL 创建一对一关系
    • 1.一对一
    • 2.插入数据

一、创建多对多

1.学生表

create table students (
  
id int not null primary key auto_increment,
  
name varchar(45) not null
  
)engine=innodb default charset=utf8;

2.课程表

create table courses (
  
id int not null primary key auto_increment,
  
name varchar(45) not null 
  
)engine=innodb default charset=utf8;

3.中间表

create table stu_cour (
  
id int not null primary key auto_increment
  
course_id int not null,
  
stu_id int not null,
  
constraint cour foreign key(course_id) references courses(id),
  
constraint stu foreign key(stu_id) references students(id)
  
)engine=innodb default charset=utf8;

4.插入数据

insert into students values (0,"小王");
insert into students values (0,"小宋");
insert into students values (0,"小李");

insert into courses values (0,"语文");
insert into courses values (0,"数学");
insert into courses values (0,"英语");

insert into stu_cour values (0,1,1);
insert into stu_cour values (0,1,2);
insert into stu_cour values (0,1,3);
insert into stu_cour values (0,2,1);
insert into stu_cour values (0,2,3);
insert into stu_cour values (0,3,2);
insert into stu_cour values (0,3,3);

5.查询学生1选了哪些科目

SELECT courses.id,courses.name FROM courses 

INNER JOIN stu_cour ON stu_cour.course_id=courses.id

INNER JOIN students ON students.id= 1 

and students.id = stu_cour.stu_id;

6.查询id=2数学被谁选了

SELECT students.name FROM students 

INNER JOIN stu_cour ON stu_cour.stu_id =students.id

INNER JOIN courses ON courses.id= 2 

and stu_cour.course_id = courses.id;

二、MySQL 创建一对一关系

1.一对一

创建用户表:

CREATE TABLE users (

id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(50) NOT NULL

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

用户信息表:

CREATE TABLE users_info (

id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,

age int NOT NULL,

phone varchar(11) NOT NULL,

user_id int not null,
constraint user_info foreign key(user_id) references users(id)

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.插入数据

insert into users values (0,"小王");
insert into users values (0,"小宋");

insert into users_info values (0,12,'13812345678',1);
insert into users_info values (0,14,'13812345679',2);

查询人的全部信息:

select * from users inner join users_info on
users_info.user_id =users.id;

到此这篇关于MySQL 创建多对多和一对一关系方法的文章就介绍到这了,更多相关MySQL 创建多对多和一对一内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL存储过程的创建、调用与管理详解

    存储过程简介 为什么要用存储过程? MySQL5.0 版本开始支持存储过程. 大多数 SQL 语句都是针对一个或多个表的单条语句.并非所有的操作都那么简单.经常会有一个完整的操作需要多条语句才能完成. 存储过程简单来说,就是为以后的使用而保存的一条或多条 MySQL 语句的集合.可将其视为批处理文件.虽然他们的作用不仅限于批处理. 存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用. 存储过程的优点 通过把处理封装在容易使用的单元中,简化复杂的操作: 简化对变动的管理.如果表名.

  • MySQL如何快速创建800w条测试数据表

    目录 一.数据插入思路 1.创建内存表 2.创建普通表 3.创建存储函数 4.创建存储过程 6.导入数据 7.内存不足 8.查看结果 9.插入800W条数据 二.MySQL深度分页 1.测试深度分页 一.数据插入思路 如果一条一条插入普通表的话,效率太低下,但内存表插入速度是很快的,可以先建立一张内存表,插入数据后,在导入到普通表中. 1.创建内存表  View Code 2.创建普通表 普通表参数设置和内存表相同,否则从内存表往普通标导入数据会报错.  View Code 3.创建存储函数 产

  • MySQL创建定时任务

    定时任务是老生常谈了,因为我们总是需要定时修改特定的数据. 实现它的方法肯定不止一种,但我在相当长一段时间里都是用程序编码去做的,今天突然想到“为什么一定要采用调用的方式?”,用数据库自身的能力去实现不是更好么? 通过了解,mysql的事件机制可以完成定时任务,其原理是在指定的时间调用指定的存储过程.现在很简单了不是?开搞. 首先,我们需要一个存储过程,虽然很简单,但考虑到入门童鞋,我还是贴出一个例子: delimiter $$; create procedure del_car_viol()

  • 一文弄懂MySQL索引创建原则

    目录 一.适合创建索引 1.字段的数值有唯一性限制 2.频繁作为Where查询条件的字段 3.经常Groupby和Orderby的列 4.Update.Delete的where条件列 5.Distinct字段需要创建索引 6.多表Join连接操作时,创建索引注意事项 7.使用列的类型小的创建索引 8.使用字符串前缀创建索引 9.区分度高的列适合作为索引 10.使用最频繁的列放到联合索引的左侧 11.在多个字段都要创建索引的情况下,联合索引由于单值索引 二.不适合创建索引 1.在where中使用不

  • mysql创建表添加字段注释的实现方法

    直接po代码和案例 #创建表的时候写注释 CREATE TABLE userinfo( id INT COMMENT '编号', uname VARCHAR(40) COMMENT '用户名', address VARCHAR(120) COMMENT '家庭住址', hobby VARCHAR(200) COMMENT '爱好' )COMMENT = '用户信息表'; #修改表的注释 ALTER TABLE userinfo COMMENT '用户信息资料表'; #修改字段的注释,注意:字段名

  • mysql数据库入门第一步之创建表

    创建数据库 右键-新建数据库 输入库名.选择字符集和排序规则,点确定 创建数据库成功 新建表 my-表-右键-新建表 如上图所示,在第一个标签页"栏位"中 名:字段的名字 类型:字段的类型,有几十种,常用的有以下几种 char,可以存定长的字符串 varchar,可以存变长的字符串(定长和变长的区别在长度中介绍) int,可以存-2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 之间的数字 datetime,可以存日期类型的数据 长度:数

  • MySQL创建索引需要了解的

    前言: 在 MySQL 中,基本上每个表都会有索引,有时候也需要根据不同的业务场景添加不同的索引.索引的建立对于数据库高效运行是很重要的,本篇文章将介绍下创建索引相关知识及注意事项. 1.创建索引方法 创建索引可以在建表时指定,也可以建表后使用 alter table 或 create index 语句创建索引.下面展示下几种常见的创建索引场景. # 建表时指定索引 CREATE TABLE `t_index` (   `increment_id` int(11) NOT NULL AUTO_I

  • MySQL 创建多对多和一对一关系方法

    目录 一.创建多对多 1.学生表 2.课程表 3.中间表 4.插入数据 5.查询学生1选了哪些科目 6.查询id=2数学被谁选了 二.MySQL 创建一对一关系 1.一对一 2.插入数据 一.创建多对多 1.学生表 create table students (    id int not null primary key auto_increment,    name varchar(45) not null    )engine=innodb default charset=utf8; 2.

  • MySQL创建用户和权限管理的方法

    一.如何创建用户和密码 1.进入到mysql数据库下 mysql> use mysql Database changed 2.对新用户增删改 1.创建用户 # 指定ip:192.118.1.1的chao用户登录 create user 'chao'@'192.118.1.1' identified by '123'; # 指定ip:192.118.1.开头的chao用户登录 create user 'chao'@'192.118.1.%' identified by '123'; # 指定任何i

  • MySQL创建带特殊字符的数据库名称方法示例

    前言 这篇文章抓哟讲解了关于如何实现在MySQL中创建带有特殊字符的数据库名称,这里的特殊字符包含:!@#$%^ 方法如下 使用反引号`将数据库名称包含住,反引号`(使用引号是不可以的)即在英文输入法状态下,按Esc键对应下方的键即可出来.当然在没有使用反引号`包含数据库名称的时候,若数据库名称含有特殊字符,则会报错. 例如,使用下面的创建命令是会报错的: mysql> CREATE DATABASE www.mafutian.net DEFAULT CHARSET UTF8; 1064 - E

  • Laravel5.1 框架模型一对一关系实现与使用方法实例分析

    本文实例讲述了Laravel5.1 框架模型一对一关系实现与使用方法.分享给大家供大家参考,具体如下: 这篇文章主要记录模型的一对一关系,关联关系是Model的一种非常方便的功能. 1 实现一对一关系 1.1 准备工作 首先我们需要创建两张表和对应的两个模型,第一个模型是用户表,第二个模型是账号表. 这里 我们的逻辑是:一个用户信息下只能有一个账号,一个账号只能被一个用户所拥有,这就是一对一关系. 1.1.1 用户信息表 生成模型和迁移文件: php artisan make:model Use

  • php为什么选mysql作为数据库? Mysql 创建用户方法

    1.php为什么选mysql作为数据库? 2.Mysql数据库创建用户 本文主要写mysql创建用户的语句的区别,转自isher的blogspot,由于在写入时想到了为什么不换用其他数据库的时候,搜索了一下google为什么php会选择mysql作数据库,没有发现相关报道,边决定找到起因,同时此问题由我个人总觉得出,不代表广大php老鸟群们的意见,如有不周请指出 php为什么选mysql做为数据库? mysql是最早的开源数据库(基于GPL,GPL2开源协议开发,享有共享原则,现有一部分已规划到

  • MySQL创建数据库的两种方法

    本文为大家分享了两种MySQL创建数据库的方法,供大家参考,具体内容如下 第一种方法:使用 mysqladmin 创建数据库 使用普通用户,你可能需要特定的权限来创建或者删除 MySQL 数据库. 所以我们这边使用root用户登录,root用户拥有最高权限,可以使用 mysql mysqladmin 命令来创建数据库. 实例 以下命令简单的演示了创建数据库的过程,数据名为 TUTORIALS: [root@host]# mysqladmin -u root -p create TUTORIALS

  • MySQL创建用户与授权及撤销用户权限方法

    MySQL中创建用户与授权的实现方法. 运行环境:widnows xp professional + MySQL5.0 一, 创建用户 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码,密码可以为空,

  • linux下mysql创建新的用户的方法

    1.以root身份登录到MySQL服务器中. $ mysql -u root -p 当验证提示出现的时候,输入MySQL的root帐号的密码. 2.创建一个MySQL用户 使用如下命令创建一个用户名和密码分 为"username"和"userpassword"的用户. mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'userpassword'; 一旦用户被创建后,包括加密的密码.权限和资源限制在

  • mysql 设置自动创建时间及修改时间的方法示例

    本文实例讲述了mysql 设置自动创建时间及修改时间的方法.分享给大家供大家参考,具体如下: 第一种,通过ddl进行定义 CREATE TABLE `course` ( `course` varchar(255) DEFAULT NULL, `user` varchar(255) DEFAULT NULL, `score` int(11) DEFAULT NULL, `id` int(11) NOT NULL AUTO_INCREMENT, `create_time` datetime DEFA

  • mysql创建存储过程实现往数据表中新增字段的方法分析

    本文实例讲述了mysql创建存储过程实现往数据表中新增字段的方法.分享给大家供大家参考,具体如下: 需求: 往某数据库的某个表中新增一个字段(若该字段已存在,则不做操作:若该字段不存在,则新增) 百度了n久,没有符合要求的例子,只有参考加自己琢磨,最终终于给弄出来了,以下是几个版本的更迭 第一版: DELIMITER $$ CREATE PROCEDURE insert_column() BEGIN IF NOT EXISTS(SELECT 1 FROM information_schema.c

随机推荐