MySql多表操作

2021-08-19 06:56:27 字數 2952 閱讀 4122

今日任務:

教學目標

1.為什麼要拆表

1.1表的準備

​ 建立一張分類表(類別id,類別名稱.備註:類別id為主鍵並且自動增長)

​ 建立一張明星表(明星id,明星名稱,明星身價,明星年齡,明星性別,明星類別.備註:明星id為主鍵並且自動增長)

2.引用完整性

​ 表和表之間存在一種關係,但是這個關係需要誰來維護和約束?

2.1外來鍵約束

​ 外來鍵作用:保證引用完整性,也就是說資料的準確

​ 外來鍵需要注意的地方:

​ 1.外來鍵一定要指向主鍵!!!有主鍵才有外來鍵

​ 2.外來鍵列的型別一定要和參照的主鍵的型別一致;

2.2練習

建立一張商品表和商品對應的分類表

create table product(

pid int primary key auto_increment,

pname varchar(50) not null,

pnum int,

ptype int);

create table category(

cid int primary key auto_increment,

cname varchar(30));

​新增外來鍵方式:

alter table product add foreign key(ptype) references category(cid);

注意:

3.多表的關係

3.1一對多(掌握)

3.2 多對多(掌握)

3.3一對一(了解)

3.4.練習

1.交叉查詢(了解)

​ 若干表沒有條件的連線在一起

select a.*,b.* from a,b;

或者 select *from a,b;

注:

2.內連線查詢(重點)

2.1 隱式內連線

select a.*,b.* from a,b where 連線條件

或者:select * from a, b where 連線條件

2.2 顯示內連線

select a.*,b.* from a [inner] join b on 連線條件

或者:select * from a [inner] join b on 連線條件 where 其它條件

注:

練習:查詢所有類別下的商品,並且商品**大於4000,如果該類別下沒有商品則不顯示

以左邊的表為主表,如果滿足條件則顯示,不滿足則不顯示。

4.外連線(重點)

4.1左外連線

​ 以join左邊的表為主表,展示主表的所有資料,根據條件查詢連線右邊表的資料,若滿足條件則展示,若不滿足則以null顯示

select a.*,b.* from a left [outer] join b on 條件

或者:select *from a表 left [outer] join b表 on 條件

練習:查詢所有類別下的商品資訊.

4.2右外連線(了解)

​ 以join右邊的表為主表,展示它的所有資料,根據條件查詢join左邊表的資料,若滿足則展示,若不滿足則以null顯示

select a.*,b.* from a right [outer] join b on 條件

或者:select *from 表a right [outer] join 表b on 條件

練習:查詢所有商品所對應的類別資訊

5.子查詢(重點!!!)

5.1什麼是子查詢

5.2步驟解析

eg:查詢身價大於寶寶的的明星資訊

第二步:以寶寶的身價去查詢身價大於這個數的明星資訊

兩步合併成一步

5.4練習

第二步:以霆鋒的類別,去查詢類別等於這個的所有明星資訊

兩步合併成一步,如果查詢到的結果不要包含霆鋒

select * from star where type=(select type from star where name="霆鋒") and name != "霆鋒"

查詢類別是寶劍隊的所有明星資訊

​6.聯合查詢(了解,幾乎用不到)

6.1作用

6.2語法

6.3練習

create table a(

name varchar(10),

score int);​

create table b(

name varchar(10),

score int,

num int);​

insert into a values('a',10),('b',20),('c',30);

insert into b values('a',10,30),('b',20,40),('d',40,50);

7 分頁查詢(掌握,重點),分頁更在排序後面!

(客戶端向伺服器端傳頁數)

一頁顯示3條資料: 第1頁: a = 0; b = 3;

​ 第2頁: a = 3; b = 3;

​ 第3頁:a = 6; b = 3;

​ 第四頁:a=9,b=3.

​ 練習: 查詢商品表前兩條記錄

​ 查詢商品表第三條和第四條記錄

​ 查詢商品表中最低**所對應的商品名

​ 安卓、ios裡面下拉重新整理,上拉載入更多

客戶端傳送請求給伺服器,請求中包含要請求的頁數

1.今日語句。(至少兩遍)

2.將**案例中的user、訂單、商品、分類表建立好,並用外來鍵進行關聯。

3.往**中的四張表中插入資料,並進行連線查詢(兩張表之間的連線查詢)。

4.資料中的多表練習

5.預習jdbc的東西(重要)

mysql的多表操作 MySQL多表操作

交叉連線 交叉連線 cross join 又稱笛卡爾連線 cartesian join 或叉乘 product 它是所有型別內連線的基礎。它把表看作是行記錄的集合,交叉連線即返回這兩個集合的笛卡爾積。這其實等價於內連線的連線條件始終為 真 或連線條件不存在。笛卡爾積引用自數學,在數學中,兩個集合x和...

MySQL多表操作

方式一 create table stu sid int primary key,sname varchar 20 age int 方式二 create table stu sid int,sname varchar 20 age int,primary key sid 方式三 create tab...

MySQL多表操作

1 笛卡爾積 兩個集合的所有組合 select from 表1,表2 2 內連線查詢 隱式內連線 select from 表1,表2 where 表1.欄位1 表2.id select 表1.欄位1,表1,欄位2,表2.欄位1 from 表1,表2 where 表1.欄位1 表2.id select...