mysql表一对多关系,mysql表与表之间的关系(多对多,一对多)
#创建数据库
CREATE DATABASE day15;
#使用
USE day15;
#创建表
CREATE TABLE test1(
id INT PRIMARY KEY AUTO_INCREMENT,#这是主键
num INT UNIQUE,#这个唯一键不起作用?
NAME VARCHAR(22)
);
#存入数据
INSERT INTO test1(NAME) VALUES(‘aaa‘);
#删除数据但是不重置自动增长数
DELETE FROM test1;
#删除数据重置行数(相当于删除掉整个表,然后再创建)
TRUNCATE TABLE test1;
############表与表之间的关系#####################
###一对多(B表外键字段存着A表的唯一主键表示拿一行被A表引用)
#主表user
CREATE TABLE t_user(
id VARCHAR(22),
username VARCHAR(22),
PASSWORD VARCHAR(32)
);
#主表的主键
ALTER TABLE t_user ADD CONSTRAINT PRIMARY KEY (id);
#从表:book表
CREATE TABLE t_book(
id VARCHAR(22),
title VARCHAR(55),
author VARCHAR(50),
user_id VARCHAR(32)#外键
);
#从表外键引用主表主键
#格式:ALTER TABLE 从表名 ADD CONSTRAINT FOREIGN KEY (从表外键) REFERENCES 主表名 (主表主键);
ALTER TABLE t_book ADD CONSTRAINT FOREIGN KEY (user_id) REFERENCES t_user (id);
###测试(查询)
#主表存入数据
INSERT INTO t_user(id,username,PASSWORD) VALUES(‘u001‘,‘琳琳‘,‘1234‘);
INSERT INTO t_user(id,username,PASSWORD) VALUES(‘u002‘,‘问我‘,‘1234‘);
INSERT INTO t_user(id,username,PASSWORD) VALUES(‘u003‘,‘恩恩‘,‘1234‘);
#从表存入数据
INSERT INTO t_book(id,title,author,user_id) VALUES(‘b001‘,‘短剑‘,‘丽丽‘,‘u001‘);
INSERT INTO t_book(id,title,author,user_id) VALUES(‘b002‘,‘宿舍‘,‘恩恩‘,‘u003‘);
INSERT INTO t_book(id,title,author,user_id) VALUES(‘b003‘,‘方法‘,‘额额‘,‘u001‘);
INSERT INTO t_book(id,title,author,user_id) VALUES(‘b004‘,‘覆盖‘,‘44‘,‘u002‘);
#主表主键不能被删除或更新,以为从表在使用
DELETE FROM t_user WHERE id=‘u001‘;
#############查询
#1,笛卡尔积,两个表的乘积集合
SELECT * FROM t_user,t_book;
SELECT COUNT(*) FROM t_user,t_book;
#2 隐式内连接
SELECT * FROM t_user,t_book WHERE t_user.id = t_book.user_id;
SELECT t_user.username,t_book.title FROM t_user,t_book WHERE t_user.id=t_book.user_id;
#3内连接
SELECT u.username,b.title FROM t_user u INNER JOIN t_book b ON u.id =b.`user_id`;
###4外链接
#左外连接:查询A表所有内容,设定条件显示B表内容
SELECT * FROM t_user u LEFT OUTER JOIN t_book b ON u.id = b.user_id;
#右外链接:查询B表所有内容,显示符合条件的A表内容
SELECT * FROM t_user u RIGHT OUTER JOIN t_book b ON u.id = b.user_id;
#######多对多(多对多是B表多项被A表多项引用)
##主表:学生表
CREATE TABLE m_student(
id VARCHAR(32) PRIMARY KEY, #主键
NAME VARCHAR(50),
age INT
);
##主表:中间表,学生课程表
CREATE TABLE m_course(
id VARCHAR(32) PRIMARY KEY, #主键
content VARCHAR(50),
teacher VARCHAR(50)
);
##从表:中间表,学生课程表
CREATE TABLE m_student_course(
student_id VARCHAR(32), #学生对应外键
course_id VARCHAR(32) #课程表对应外键
);
#######关系
###中间表与学生表:主外键关系
ALTER TABLE m_student_course ADD CONSTRAINT FOREIGN KEY (student_id) REFERENCES m_student (id);
###中间表与课程表:主键关系
ALTER TABLE m_student_course ADD CONSTRAINT FOREIGN KEY (course_id) REFERENCES m_course (id);
###联合主键
ALTER TABLE m_student_course ADD CONSTRAINT PRIMARY KEY (student_id,course_id);
###外键删除
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
###测试
INSERT INTO m_student(id,NAME,age) VALUES(‘s001‘,‘宿舍‘,‘22‘);
INSERT INTO m_student(id,NAME,age) VALUES(‘s002‘,‘宿33‘,‘32‘);
INSERT INTO m_course(id,content,teacher) VALUES(‘c001‘,‘去你妹‘,‘问我‘);
INSERT INTO m_course(id,content,teacher) VALUES(‘c002‘,‘sad‘,‘恩恩‘);
INSERT INTO m_course(id,content,teacher) VALUES(‘c003‘,‘fdsa‘,‘额额‘);
INSERT INTO m_student_course(student_id,course_id) VALUES(‘s001‘,‘c001‘);
INSERT INTO m_student_course(student_id,course_id) VALUES(‘s002‘,‘c001‘);
INSERT INTO m_student_course(student_id,course_id) VALUES(‘s001‘,‘c002‘);
INSERT INTO m_student_course(student_id,course_id) VALUES(‘s002‘,‘c003‘);
##查询:某人学某课
#隐式内连接
SELECT s.name , content FROM m_student s, m_student_course sc , m_course c
WHERE s.id = sc.student_id AND sc.course_id = c.id;
#内连接
SELECT s.name , c.content FROM m_student s
INNER JOIN m_student_course sc ON s.id = sc.student_id
INNER JOIN m_course c ON sc.course_id = c.id;
原文:http://www.cnblogs.com/linjiqian/p/4488959.html
mysql表一对多关系,mysql表与表之间的关系(多对多,一对多)相关推荐
- python类与类的关系_python 类与类之间的关系
一.依赖关系(紧密程度最低) (1)简单的定义:就是方法中传递一个对象.此时类与类之间存在依赖关系,此关系比较低. (2)实例植物大战僵尸简易版 题目要求:创建一个植物,创建一个僵尸 1.植物:名字. ...
- python中类与对象之间的关系_python 类与类之间的关系
一.依赖关系(紧密程度最低) (1)简单的定义:就是方法中传递一个对象.此时类与类之间存在依赖关系,此关系比较低. (2)实例植物大战僵尸简易版 题目要求:创建一个植物,创建一个僵尸 1.植物:名字. ...
- python中类与对象之间的关系_python类与类之间的关系
在面向对象中,类和类之间也可以产生相关的关系 类中的关系: 依赖关系是最轻的,最重的是继承关系,关联关系是比较微妙的 依赖关系 执行某个动作的时候,需要xxx来帮助完成这个操作,此时的关系是最轻的. ...
- python中简述对象和类的关系_python 类与类之间的关系
一.依赖关系(紧密程度最低) (1)简单的定义:就是方法中传递一个对象.此时类与类之间存在依赖关系,此关系比较低. (2)实例植物大战僵尸简易版 题目要求:创建一个植物,创建一个僵尸 1.植物:名字. ...
- python类的继承关系,python——类和类之间的关系(继承多态)
1.类和类之间的关系有三种:is-a.has-a和use-a关系. is-a关系也叫继承或泛化,比如学生和人的关系.手机和电子产品的关系都属于继承关系. has-a关系通常称之为关联,比如部门和员工的 ...
- java c 关系_C语言和java之间的关系
近些年来,移动互联网在全世界范围内的迅速发展,使得计算机行业也迅速发展,那c语言和java语言作为计算机语言中两种,相应的逐渐被人们了解和关注,想学习和从事c语言和java的朋友也越来越多.那同样都是 ...
- 二元函数连续与偏导数存在的关系_怎样理解多元函数,连续与偏导存在的关系,偏导连续之间的关系...
展开全部 多元函数连续不是偏导存在的充分条件也不是必要条件.62616964757a686964616fe78988e69d8331333366306464 而偏导连续则是更强的条件,即偏导存在且连续 ...
- mysql、orcl中database、schema、user之间的关系
对于MySQL而言,"database 数据库" 和 "schema 模式" 是同一件事.具体区分如下表: In MySQL: server instance ...
- 简述机器指令与微指令之间的关系_机器指令与微指令之间的关系是(
[多选题]人住宾馆后,为了预防火灾事故的发生,导游人员应( ). [多选题]一般会计报表的数据来源有____. [单选题]一个n个顶点的连通无向图,其边的个数至少为( ). [单选题]选用对比剂注射参 ...
- cpu和内存的关系(CPU,内存和cache之间的关系)
CPU.内存.主板三者间关系.插座形式.安装注意事项 这种问题很难回答,你可以找一本书看,呵呵 .我只能说出一点,CPU读取数据速度很慢,因为要从硬盘读取,所以用内存来读取.但是用 内存卡,段电后会丢 ...
最新文章
- PyQt4编程之简短地做出多个选择框
- 特岗计算机老师年度总结,特岗教师个人年度工作总结
- 技术解析:如何用pyecharts绘制时间轮播图
- java地图点线面_openlayers之点,线,面(以城市,河流,省份为例,分别对应点线面)...
- 深圳部分写字楼租金暴跌,为何会出现这种情况?
- pythonresponse对象的属性_Scrapy中response属性以及内容提取
- php like %%,thinkphp实现like模糊查询实例
- 百度谷歌2013年母亲节 赏析中文搜索引擎庆祝涂鸦
- 一个简单的c# 贪吃蛇程序
- H - 命运(动态规划) 数塔问题
- JExcel - 学习总结(1)
- 地震日记-2008-05-14
- 【路径大全】iphone所有文件路径。CYDIA
- 音视频技术开发周刊 | 243
- 今天讲一下完整的前端模块化,很实用
- 中文姓名按照拼音排序-python
- php 算生存曲线,生存曲线(三):统计分析方法这么多,到底选哪个?
- 无法接收到github邮箱验证码的解决方法
- git教程(涵盖GitHub\Gitee\Gitlab)
- Kafka 消息中间件