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

(一)数据库关联查询

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

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

Mysql关联查询--主键+外键_第1张图片
逻辑运算
And
Mysql关联查询--主键+外键_第2张图片
Or
Mysql关联查询--主键+外键_第3张图片
Not
Mysql关联查询--主键+外键_第4张图片
模糊查询
   SELECT * FROM student WHERE name LIKE “小%”
    %pip 0到多个字符
范围查询
Mysql关联查询--主键+外键_第5张图片
查询为空
Mysql关联查询--主键+外键_第6张图片
不为空
Mysql关联查询--主键+外键_第7张图片
排序
   SELECT * FROM student ORDER BY age;
以年龄排序
Mysql关联查询--主键+外键_第8张图片
多条件排序,第一个条件为主排序条件
Mysql关联查询--主键+外键_第9张图片

排倒叙 在后面加上desc
Mysql关联查询--主键+外键_第10张图片

筛选和排序连用(先筛选再排序)
Mysql关联查询--主键+外键_第11张图片
子查询
  子查询是一种嵌套查询,将一个查询用小括号包围起来,然后作为下一个查询的结果,子查询必须有别名。
  SELECT nan.name FROM (SELECT name,age FROM student WHERE gender=”男” ) AS nan WHERE age = 18;
  Mysql关联查询--主键+外键_第12张图片

(二)数据库关联查询

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

	id                               P_id

  在这里插入图片描述
这两张表通过parent的id来关联
查询老张的所有儿子
Mysql关联查询--主键+外键_第13张图片
查询李3的父亲
Mysql关联查询--主键+外键_第14张图片

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

专业            课程

Mysql关联查询--主键+外键_第15张图片 Mysql关联查询--主键+外键_第16张图片
  关系
Mysql关联查询--主键+外键_第17张图片
Python所有的课程
Mysql关联查询--主键+外键_第18张图片
包含计算机基础所有的专业

父子id关系
在商品类型当中会涉及到子类型
举个栗子:
服装
男装
中山装
高级中山装
Parent_id
Mysql关联查询--主键+外键_第19张图片

(三)数据库关联查询

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

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 ;
在这里插入图片描述
删除主键只是删除了主键类型,并没有删除字段
Mysql关联查询--主键+外键_第21张图片
如果主键设置自增长,先通过修改语句去掉自增长,然后在删除主键。
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、外键字段的数据必须一表对应字段有的数据。
  在这里插入图片描述
  Mysql关联查询--主键+外键_第22张图片
  多对多关系

专业               课程
Mysql关联查询--主键+外键_第23张图片     Mysql关联查询--主键+外键_第24张图片
  关系
Mysql关联查询--主键+外键_第25张图片

创建多对多关系:
创建专业表
  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字段进行外键关联
);

你可能感兴趣的:(Mysql关联查询--主键+外键)