今日任務:
教學目標
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 連線條件2.2 顯示內連線或者:select * from a, b where 連線條件
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...