首頁 > 資料庫 > mysql教程 > MySQL5.7資料庫介紹表連接、子查詢、外鍵

MySQL5.7資料庫介紹表連接、子查詢、外鍵

coldplay.xixi
發布: 2021-01-26 09:27:09
轉載
2383 人瀏覽過

MySQL5.7資料庫介紹表連接、子查詢、外鍵

免費學習推薦:mysql影片教學

文章目錄

      • 表連線
        • 內連線
        • 左邊連線
        • 右邊連線
        • 子查詢
      • 自關聯
      • 外鍵
        • #外鍵介紹
        • 創建表時設定外鍵約束

表連接

  • 當查詢結果的列來源於多張表時,需要將多張表連接成一個大的資料集,再選擇合適的列返回mysql
  • 這時需要表格進行連接

內連接

  • 內連接只選出兩張表中互相匹配的記錄
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;
登入後複製

MySQL5.7資料庫介紹表連接、子查詢、外鍵
MySQL5.7資料庫介紹表連接、子查詢、外鍵
在這裡插入圖片描述

左連接

查詢的結果為兩個表匹配到的數據,左表持有的數據,對於右表中不存的數據使用null填充

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";
登入後複製

MySQL5.7資料庫介紹表連接、子查詢、外鍵

右連接

查詢結果為兩個表匹配到的數據,右表持有的數據,對於左表中不存在的數據使用null填充。

select * from 表1 right join 表2 on 表1.列 = 表2.列;
登入後複製

子查詢

某些情況下,當進行查詢的時候,需要的條件是另外一個select語句的結果,這個時候,就要使用到子查詢

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="女";
登入後複製

在這裡插入圖片描述

自關聯

簡單理解為自己與自己進行連接查詢

-- 查询广东省下的所有广东市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="广东";
登入後複製

MySQL5.7資料庫介紹表連接、子查詢、外鍵
MySQL5.7資料庫介紹表連接、子查詢、外鍵

外鍵

外鍵介紹

  • MySQL的外鍵(foreing key)是表格的一個特殊字段。對於兩個具有關聯關係的表而言,相關聯欄位的主鍵所在表就是主表(父表),外鍵所在的表是從表(子表)。
  • 注意: 主鍵不能包含空值,但允許在外鍵中出現空值,也就是說,只要外鍵的每個非空值出現在指定的主鍵中,這個外鍵的內容就是正確的。

建立表格時設定外鍵限制

  • 當建立外鍵的時候,必須先刪除從表才能刪除主表。
  • 主表需存在時建立從表。
  • 從表的外鍵關聯必須是主表的主鍵,且主鍵與外鍵的類型必須保持一致。
[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;
登入後複製

MySQL5.7資料庫介紹表連接、子查詢、外鍵

MySQL5.7資料庫介紹表連接、子查詢、外鍵

### #####相關免費學習推薦:#########mysql資料庫#########(影片)#########

以上是MySQL5.7資料庫介紹表連接、子查詢、外鍵的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板