Mysql关联查询--主键+外键

(一)数据库关联查询

  • 数据库条件查询
  • 条件查询:
        SELECT * FROM student WHERE age=18
    比较运算符

>、<、 =、>= 、<=、<>、 !=**

在这里插入图片描述
逻辑运算
And
在这里插入图片描述
Or
在这里插入图片描述
Not
在这里插入图片描述
模糊查询
   SELECT * FROM student WHERE name LIKE “小%”
    %pip 0到多个字符
范围查询
在这里插入图片描述
查询为空
在这里插入图片描述
不为空
在这里插入图片描述
排序
   SELECT * FROM student ORDER BY age;
以年龄排序
在这里插入图片描述
多条件排序,第一个条件为主排序条件
在这里插入图片描述

排倒叙 在后面加上desc
在这里插入图片描述

筛选和排序连用(先筛选再排序)
在这里插入图片描述
子查询
  子查询是一种嵌套查询,将一个查询用小括号包围起来,然后作为下一个查询的结果,子查询必须有别名。
  SELECT nan.name FROM (SELECT name,age FROM student WHERE gender=”男” ) AS nan WHERE age = 18;
  在这里插入图片描述

(二)数据库关联查询

数据库关系搭建一对一,一对多,多对多:
  数据库关系针对是多表之间的联系。
  一对一
  两个表的每条数据之间,存在唯一映射关系。
  举个栗子:
   用户登陆表  用户
   手机号    姓名
   验证码    身份证号
    头像
   邮箱
   手机号
   一对多
   将两个表分为一个一表,一个多表,一表当中数据可以对应多表当中的多条数据,多表当中的一条数据只能对应一表当中的一条数据。
   举个栗子:
   父亲(一表)    儿子(多表)
   张三        张1
             张2

	id                               P_id

  在这里插入图片描述
这两张表通过parent的id来关联
查询老张的所有儿子
在这里插入图片描述
查询李3的父亲
在这里插入图片描述

多对多
一个表当中数据可以对应另一个表当中的多条数据,反之亦然。

专业            课程

在这里插入图片描述 在这里插入图片描述
  关系
在这里插入图片描述
Python所有的课程
在这里插入图片描述
包含计算机基础所有的专业

父子id关系
在商品类型当中会涉及到子类型
举个栗子:
服装
男装
中山装
高级中山装
Parent_id
在这里插入图片描述

(三)数据库关联查询

主键
  主键(primary key):全称叫做“主键约束”,可以是一列或者多列组合,其值可以唯一标识这条数据。
所以主键唯一性,不可以为空。
  创建主键
创建表的时候创建主键
CREATE TABLE food(id INT PRIMARY KEY,name CHAR(32));
在这里插入图片描述
创建主键,并且自增长
CREATE TABLE food(id INT PRIMARY KEY AUTO_INCREMENT,name CHAR(32))。
在这里插入图片描述
添加主键
在已经存在的表当中添加主键

ALTER TABLE food ADD PRIMARY KEY (id);
在这里插入图片描述

ALTER TABLE food ADD PRIMARY KEY AUTO_INCREMENT (id); 由于版本 问题,当前命令不会报错,但是无法将主键设置自增长。导致添加的 数据主键为0
ALTER TABLE food MODIFY id INT AUTO_INCREMENT PRIMARY EKY;
在这里插入图片描述
添加实际上是将一个已经存在的字段修改为主键
删除主键
ALTER TABLE food DROP PRIMARY KEY ;
在这里插入图片描述
ALTER TABLE food DROP PRIMARY KEY ;
在这里插入图片描述
删除主键只是删除了主键类型,并没有删除字段
在这里插入图片描述
如果主键设置自增长,先通过修改语句去掉自增长,然后在删除主键。
ALTER TABLE food MODIFY id INT; 去掉自增长
ALTER TABLE food DROP PRIMARY KEY ; 删除主键

(四)数据库关联查询

外键
  外键:(foreign key):全称叫做“外键约束”,主要用来约束一对多关系, 一对多关系当中,多表当中用外键来关联一表当中的主键字段。
  create table parent(id int primary key auto_increment,name char(32));
  create table child(id int primary key auto_increment,name   char(32),p_id int, foreign key(p_id) references parent(id));
  1、必须先有外键字段,再设置外键
  2、一表必须先创建出来,最好有主键;
  3、外键字段的数据必须一表对应字段有的数据。
  在这里插入图片描述
  在这里插入图片描述
  多对多关系

专业               课程
在这里插入图片描述     在这里插入图片描述
  关系
在这里插入图片描述

创建多对多关系:
创建专业表
  create table major(id int primary key auto_increment,name char(32));
创建课程表
  create table course(id int primary key auto_increment,name char(32));
创建关系表
  create table major_course(
  id int primary key auto_increment, 设置主键
  major_id int, 设置和专业关联的字段
  course_id int, 设置和课程关联的字段
  foreign key(major_id) references major(id), 使用major_id和major表的 id字段进行外键关联
  foreign key(course_id) references course(id)使用course_id和course表 的id字段进行外键关联
);
创建专业表
  CREATE TABLE major(id INT PRIMARY KEY    AUTO_INCREMENT,name CHAR(32));
创建课程表
  CREATE TABLE course(id INT PRIMARY KEY AUTO_INCREMENT,name CHAR(32));

创建关系表
  CREATE TABLE major_course(
  Id INT PRIMARY KEY AUTO_INCREMENT, 设置主键
  major_id INT, 设置和专业关联的字段
  course_id INT, 设置和课程关联的字段
  FOREIGN KEY(major_id) REFERENCES major(id), 使用major_id和  major 表的id字段进行外键关联
  FOREIGN KEY(course_id) REFERENCES COURSE(id)使用course_id和 course表 的id字段进行外键关联
);

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值