本文目錄一覽:
- 1、mysql 多對多映射關係的篩選SQL怎麼寫
- 2、mysql資料庫中如何用一對多表示多對多
- 3、請問資料庫在創建表的時候如何設計表關係,一對一,一對多,多對多 請高手舉例說明。謝謝!!!
- 4、關於多對多關係表做一個級聯更新的問題(MYSQL),求高手解答SQL語句
- 5、mysql建立外鍵時,多對多如何建立?
- 6、mysql資料庫多對多的表怎麼寫
mysql 多對多映射關係的篩選SQL怎麼寫
call sp_add();
是不是你定義的過程有問題吧,並沒有指出返回結果來
像我這樣是可以的:
CREATE PROCEDURE sp_add(a int, b int,out c int)
begin
set c=a+ b;
end;
調用過程:
call sp_add (1,2,@a);
select @a;
mysql資料庫中如何用一對多表示多對多
拿用戶角色來說
用戶 ←多對多→ 角色
概念模型如下:
生成物理模型就成了2個1對多:
箭頭指向多的一方
請問資料庫在創建表的時候如何設計表關係,一對一,一對多,多對多 請高手舉例說明。謝謝!!!
多對多關係至少需要3個表,我們把一個表叫做主表,一個叫做關係表,另外一個叫做字典表或者副表(字典表是紀錄比較少,而且基本穩定的,例如:版塊名稱;副表是內容比較多,內容變化的,例如)。
按照資料庫的增刪查改操作,多對多關係的查找都可以用inner join或者
select * from 主表 where id in (select 主表id from 關係表)
1,角色任命型
特點:關係表兩外鍵組合無重複紀錄,關係表一般不需要時間欄位和主鍵,有一個表是字典類型的表。
界面特點:顯示主表,用checkbox或多選select設置多選關係。
例如:任命版主(用戶表-關係表-版塊名稱表),角色許可權控制等,用戶是5個版塊版主,只要關係表5行紀錄就可以確立,關係表的兩個外鍵具有聯合主鍵性質。
增加關係:如果沒有組合紀錄,insert之。
刪除關係:如果有組合紀錄,刪除之。
2,集合分組型
特點:同角色任命型類似,關係表兩外鍵組合無重複紀錄,關係表一般不需要時間欄位和主鍵。區別是主副表都不是字典表,可能都很大不固定。
界面特點:顯示主表,用搜索代替簡單的checkbox或多選select,或者一條一條的添加。
例如:歌曲專集(專集表-關係表-歌曲表)。手機分組(分組表-關係表-手機表)。用戶圈子(圈子表-關係表-用戶表)。文章標籤(文章表-關係表-標籤表)
增加關係:同版主任命型。
刪除關係:同版主任命型。
3,明細帳型
特點:關係表可以有重複紀錄,關係表一般有時間欄位,有主鍵,可能還有文字型的欄位用來說明每次發生關係的原因(消費)。
界面特點:顯示關係表,用radio或下拉設置單選關係。
例如:現金消費明細帳或訂單(用戶表-訂單表-消費原因表),用戶可能多次在同一事情上重複消費。積分變化紀錄也屬於這類。
增加關係:不管有沒有組合紀錄,insert之,紀錄時間。
刪除關係:根據關係表PK刪除。
4,評論回復型
特點:同明細帳型關係表一般有時間欄位,有主鍵,區別是重點在文字型的欄位用來說明每次發生關係的內容(評論回復)。
界面特點:回復文本框。
例如:論壇回復(用戶表-回復表-帖子表),用戶可能多次在不同帖子上評論回復費。
增加關係:不管有沒有組合紀錄,insert之,紀錄時間和文字。
刪除關係:根據關係表(回復表)PK刪除。
5,站內簡訊型
特點:主副表是同一個,關係表一般有時間欄位,有主鍵,重點在關係表文字型的欄位用來說明每次發生關係的內容(消息)或者其他標記位來表示文字已讀狀態時間等。
界面特點:回復文本框。
例如:站內簡訊(用戶表-簡訊表-用戶表),用戶可能給用戶群發或者單發,有標記位來表示文字已讀狀態時間等。
增加關係:不管有沒有組合紀錄,insert之,紀錄時間和文字。
刪除關係:根據關係表(回復表)PK刪除。
6,用戶好友型
特點:主副表是同一個,同集合分組型,關係表兩外鍵組合無重複紀錄,關係表一般不需要時間欄位和主鍵。
界面特點:同集合分組型,顯示主表,用搜索代替簡單的checkbox或多選select,或者一條一條的添加。
例如:下載站點的文件,(文件表-關係表-文件表)可以被軟體工具打開,軟體工具本身也是一種文件,可以被下載。用戶的好友,也是用戶(用戶表-好友關係表-用戶表)
增加關係:同版主任命型。
刪除關係:同版主任命型
關於多對多關係表做一個級聯更新的問題(MYSQL),求高手解答SQL語句
樓主這個級聯更新我才疏學淺給分為2步驟, 先更新A表。 在更新B表,一條語句更新2張表的寫法我目前寫不來。下面是我的sql 你看是否與你的要求一致。
–更新A表update A set A.tag=0 from A INNER JOIN ( –獲取 多對多關係C表 並根據A表時間來獲得需要更新的A表ID 和B表ID select c.Aid,c.Bid from C INNER JOIN A ON A.id = c.Aid INNER JOIN B ON B.id =c.Bid where A.TimegetDate() –根據某時間條件。 AND A.Tag =0 –A的Tag 為0 時 ) result
ON resule.Aid=A.ID
–更新B表update B set B.tag=0 from B INNER JOIN ( –獲取 多對多關係C表 並根據A表時間來獲得需要更新的A表ID 和B表ID select c.Aid,c.Bid from C INNER JOIN A ON A.id = c.Aid INNER JOIN B ON B.id =c.Bid where A.TimegetDate() –根據某時間條件。 AND A.Tag =0 –A的Tag 為0 時 ) result
ON resule.Bid=B.ID
mysql建立外鍵時,多對多如何建立?
一張表中的主鍵只能有一個,外鍵可以有多個,如果一張表中多個列都需要被別的表的外鍵參考,需要使用候選碼(非空並且唯一),具體到你的這個問題的需求可以考慮用如下方法解決:
把a表中的bookid和authorid都設置為非空並且唯一,即
create table a(bookid int not null unique, authorid int not null unique);
然後在book表和author表中就可以分別設置外鍵來參照a表中兩個不同的欄位了。
打開我的navicat,然後找到我的teacher表,選中它,然後點擊菜單欄上的『design table’
2. 在彈出的對話框中找到「Foreign Keys」,然後單機。
3. 然後會出現一個設置外鍵的界面,一共有七列。簡單介紹一下這幾列的意思。『name』:可以不填,你一會保存成功系統會自動生成。FieldName』:就是你要把哪個鍵設置為外鍵。這裡選擇『dept』,『Reference DadaBase』:外鍵關聯的資料庫。『Reference Table『 :關聯的表 這裡是dept表『Forgin filed Names』:關聯的的欄位,這裡是code『ondelete』:就是刪除的時候選擇的動作。這裡我的選擇是setNull,意思就是當關聯的表刪除以後,teacher》dept欄位會設置為null.
4. 設置完成後點擊『save』保存退出,也可以點擊『add Foreign Key』再添加一個外鍵。
打開我的navicat,然後找到我的teacher表,選中它,然後點擊菜單欄上的『design table』。如下圖:
2. 在彈出的對話框中找到「Foreign Keys」,然後單機。如下圖:
3. 然後會出現一個設置外鍵的界面,一共有七列。簡單介紹一下這幾列的意思。『name』:可以不填,你一會保存成功系統會自動生成。FieldName』:就是你要把哪個鍵設置為外鍵。這裡選擇『dept』,『Reference DadaBase』:外鍵關聯的資料庫。『Reference Table『 :關聯的表 這裡是dept表『Forgin filed Names』:關聯的的欄位,這裡是code『ondelete』:就是刪除的時候選擇的動作。這裡我的選擇是setNull,意思就是當關聯的表刪除以後,teacher》dept欄位會設置為null。如圖
4. 設置完成後點擊『save』保存退出,也可以點擊『add Foreign Key』再添加一個外鍵。k如圖:
mysql資料庫多對多的表怎麼寫
關係單獨維護一張關係表 這樣就OK了 一張用戶表,一張關係表。。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/309133.html