mysql多表操作

2022-09-13 18:30:09 字數 1567 閱讀 5833

select * from 表1,表2 where 表1.欄位=表2.欄位; //隱式內連線,使用where條件消除笛卡爾積

select * from 表1 inner join 表2 on 表1.欄位=表2.欄位 //顯式內連線,如果是多張表,則一直在join..on後依次新增join..on即可

左外連線:以左邊表為主,返回左邊表中選中欄位的所有資料,若右表中無資料,則顯示為null

select 表1.*, `biao2.欄位from 表1

left join 表2 on 表1.欄位= 表2.欄位

右外連線:以右邊表為主,返回右表中的所有資料,若左表無資料,顯示null

update 表1, 表2 set 表1.欄位='***',表2.欄位='yyy' where 表1.欄位=表2.欄位 //例如update t1,t2 set t1.a=2這樣的語法,表2不能為空表

update 表1 join 表2 on 表1.欄位=表2.欄位 set 表1.欄位='***',表2.欄位='yyy'

update 表1 left join 表2 on 表1.欄位=表2.欄位 set 表1.欄位='***',表2.欄位='yyy'

update 表1 right join 表2 on 表1.欄位=表2.欄位 set 表1.欄位='***',表2.欄位='yyy'

delete 表1,表2 from 表1 left(right) join 表2 on 表1.欄位=表2.欄位 where 表1.欄位=? //刪除表1和表2有關聯的資訊,條件是傳入的表1欄位引數相等

delete 表1 from 表1,表2 where 表1.欄位=表2.欄位 //刪除表1所有與表2有關聯的資料

內連線刪除會導致乙個問題:第乙個表有需要刪除的資料,但是後面的表沒有關聯的資料,會造成任何資料都不被刪除(因為沒有滿足內連線的條件)

內連線和外連線

無法一條語句完成多表插入。解決辦法是:利用last_insert_id(),獲取插入sql語句後最新的id(id為自增主鍵)

先插入主表資料,返回新增的資料id,得到id後再向從表插入資料。

insert into t_user (id,name,password) values(%s,%s,%s)

insert into user_receive(user_id,address) values(last_insert_id(),%s)

select * from 表1 order by 列1--------預設是按照公升序排序

select * from 表1 order by 商品編號, 數量;

------------先按照商品編號公升序排序,如果商品編號相同,再按照數量公升序排序

select * from sell order by 商品編號 desc, 數量;

-------先按「商品編號」降序排序 如果商品編號相同 再按照sal公升序排序

-------記住『數量』是公升序不是降序

-------例如:order by a desc, b, c, d desc只對a產生影響 不會對後面的b c d 產生影響

select * from 表名 limit 10

-----查詢前十行

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.為什麼要拆表 1.1表的準備 建立一張分類表 類別id,類別名稱.備註 類別id為主鍵並且自動增長 建立一張明星表 明星id,明星名稱,明星身價,明星年齡,明星性別,明星類別.備註 明星id為主鍵並且自動增長 2.引用完整性 表和表之間存在一種關係,但是這個關係需要誰來維護和...