Maison >base de données >tutoriel mysql >La base de données MySQL5.7 introduit les connexions de tables, les sous-requêtes et les clés étrangères

La base de données MySQL5.7 introduit les connexions de tables, les sous-requêtes et les clés étrangères

coldplay.xixi
coldplay.xixiavant
2021-01-26 09:27:092413parcourir

La base de données MySQL5.7 introduit les connexions de tables, les sous-requêtes et les clés étrangères

Recommandations d'apprentissage gratuites : tutoriel vidéo MySQL

Répertoire d'articles

      • Jointure de table
        • Jointure interne
        • Jointure à gauche
        • Jointure à droite
        • Sous-requête
      • Auto-association
      • Clé étrangère
        • Introduction à la clé étrangère
        • Création Définir des contraintes de clé étrangère lorsque la table

Connexion à la table

  • Lors de l'interrogation de la source de la colonne de le résultat Lorsqu'il y a plusieurs tables, vous devez connecter plusieurs tables dans un grand ensemble de données, puis sélectionner les colonnes appropriées pour revenir à mysql
  • À ce stade, vous devez connecter les tables

Jointure interne

  • La jointure interne sélectionne uniquement les enregistrements correspondants dans deux tables
select * from 表1 inner join 表2 on 表1.列 = 表2.列-- 显示学生的所有信息,但只显示班级名称select s.*, c.name from students s inner join classes c on s.id=c.id;-- 将班级名称显示在第一列select c.name, s.* from students s inner join classes c on s.id=c.id;-- 查询 有能够对应班级的学生以及班级信息,按照班级进行排序select c.name, s.* from students s inner join classes c on s.cls_id = c.id order by c.name asc;-- 当同一个班级时,按照学生的id进行从小到大排序select c.name, s.* from students s inner join classes c on s.cls_id = c.id order by c.name asc, s.id asc;

La base de données MySQL5.7 introduit les connexions de tables, les sous-requêtes et les clés étrangères
La base de données MySQL5.7 introduit les connexions de tables, les sous-requêtes et les clés étrangères
Insérer la description de l'image ici

Jointure gauche

Le résultat de la requête correspond aux données correspondant aux deux tables. Les données contenues dans la table de gauche sont remplies de null pour les données qui n'existent pas. dans la table de droite

select * from 表1 left join 表2 on 表1.列=表2.列-- students表左连接classes表 并查看班级为null的数据select * from students s left join classes c on s.cls_id=c.id having s.cls_id is null;-- 左连接 并且 查询 s.cls_id=1 并且 s.name="small-j" 的数据select * from students s left join classes c on s.cls_id=c.id having s.cls_id=1 and s.name="small-j";

La base de données MySQL5.7 introduit les connexions de tables, les sous-requêtes et les clés étrangères

Jointure à droite

Le résultat de la requête correspond aux données correspondant aux deux tables. le tableau de droite est utilisé pour les données qui n'existent pas dans le tableau de gauche.

select * from 表1 right join 表2 on 表1.列 = 表2.列;

Subquery

Dans certains cas, lors d'une requête, la condition requise est le résultat d'une autre instruction select. Dans ce cas, il est nécessaire d'utiliser Subquery.

select * from 表 where 表(子查询语句)-- 查询出students中身高最高的男生。显示名字和身高select s.name, s.high from students s where high=(select max(high) from students) and gender="男";-- 查询出高于平均身高的学生信息select * from students where high>(select avg(high) from students);-- 查询学生班级号cls_id能够对应的学生信息select * from students where cls_id in (select id from students);-- 查询最大年龄的女生的idselect * from students where id=(select max(id) from students where gender="女") and  gender="女";

Insérer la description de l'image ici

Auto-association

Comprenez-le simplement comme une requête de connexion entre lui-même et lui-même

-- 查询广东省下的所有广东市select * from cities c inner join provinces p on c.provinceid=p.provinceid having p.province="广东省";-- 查询广东省下的所有广东市-- 自关联select * from areas a inner join areas b on a.id=b.pid having a.name="广东";

La base de données MySQL5.7 introduit les connexions de tables, les sous-requêtes et les clés étrangères
La base de données MySQL5.7 introduit les connexions de tables, les sous-requêtes et les clés étrangères

Clé étrangère

Introduction à la clé étrangère

  • La clé étrangère de MySQL (clé étrangère) est une table Spéciale champs. Pour deux tables ayant une relation associée, la table où se trouve la clé primaire du champ associé est la table principale (table parent), et la table où se trouve la clé étrangère est la table secondaire (table enfant).
  • Remarque : Les clés primaires ne peuvent pas contenir de valeurs nulles, mais les valeurs nulles sont autorisées dans les clés étrangères, c'est-à-dire tant que chaque valeur non nulle de la clé étrangère apparaît dans le clé primaire spécifiée, ceci Le contenu de la clé étrangère est correct.

Définir les contraintes de clé étrangère lors de la création d'une table

  • Lors de la création d'une clé étrangère, la table esclave doit être supprimée avant que la table maître puisse être supprimée.
  • Créez la table esclave lorsque la table maître doit exister.
  • L'association de clé étrangère de la table secondaire doit être la clé primaire de la table primaire, et les types de la clé primaire et de la clé étrangère doivent être cohérents.
[constraint 外键名] foreign key (字段名 [,字段名2, ...]) references  主键列1 [, 主键列2, ...]
-- 创建班级表create table classes(
    id int(4) not null primary key,
    name varchar(36));-- 创建学生表create table student(
    sid int(4) not null primary key,
    sname varchar(30),
    cid int(4) not null);-- 创建直接含有外键关系的学生表create table student(
  	sid int(4) not null primary key,
  	sname varchar(30),
  	cid int(4) not null,
  	constraint pk_id foreign key (cid) references classes(id));-- 通过alter来添加外键关系alter table student add constraint pk_id foreign key (cid) references classes(id);-- 删除外键约束alter table student drop foreign key pk_id;

La base de données MySQL5.7 introduit les connexions de tables, les sous-requêtes et les clés étrangères

La base de données MySQL5.7 introduit les connexions de tables, les sous-requêtes et les clés étrangères

Recommandations d'apprentissage gratuites associées : base de données mysql(vidéo)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Maîtriser MYSQL AvancéArticle suivant:Maîtriser MYSQL Avancé