當前位置:首頁 » 編程語言 » sql互斥
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql互斥

發布時間: 2022-10-04 23:09:26

1. 如何在MS sql標設計中使多個屬性值互斥

你的資料庫這樣設計不好,當某種產品只需要一種配料的時候,就浪費了存儲空間。而當以後有新的產品需要多餘三種配料的時候,那時候增加欄位,會導致程序大的改動,難道我們的程序就不做需要3種以上配料的產品了嗎?

資料庫結構修改為:(產品,配料),增加唯一索引(產品,配料)

這樣資料庫中的例子為:
產品 配料
餅干 麵粉
餅干 白糖
餅干 食鹽
牛奶花生 花生
牛奶花生 牛奶

你可能覺得這樣修改以後,程序稍微要麻煩一點點,但是這樣的程序能對付任意多個配料的產品,把系統的功能提示了,壽命延長了,而且通過聯合唯一索引達到了你要求的約束。

2. sql位運算符

按位運算符
位運算符在兩個表達式之間執行位操作,這兩個表達式可以為整型數據類型分類中的任何數據類型。

運算符含義
&(按位 AND) 按位 AND(兩個操作數)。
|(按位 OR) 按位 OR(兩個操作數)。
^(按位互斥 OR) 按位互斥 OR(兩個操作數)。

位運算符的操作數可以是整型或二進制字元串數據類型分類中的任何數據類型(但 image 數據類型除外),此外,兩個操作數不能同時是二進制字元串數據類型分類中的某種數據類型。下表顯示所支持的操作數數據類型。

左邊操作數 右邊操作數
binary int、smallint 或 tinyint
bit int、smallint、tinyint 或 bit
int int、smallint、tinyint、binary 或 varbinary
smallint int、smallint、tinyint、binary 或 varbinary
tinyint int、smallint、tinyint、binary 或 varbinary
varbinary int、smallint 或 tinyint

SELECT 3 & 9
結果為1
3的二進制:00000011
9的二進制:00001001
按位進行AND操作時,只有第1位上兩者都是1,其它位都有一個為0,所以結果為二進制的0001

SELECT 3 | 9
結果為11
按位進行OR操作時,可以認為就是加法運算

SELECT 3 ^ 9
結果為10
3的二進制:00000011
9的二進制:00001001
按位進行異或操作時,只有位上兩者不相同(1與0)結果才會是1,如果相同(1與1或0與0)則為0,在這里第一位上都是1,結果為0;第三位上都是0,結果為1;其它為1;所以結果為二進制的1010,也就是十進制的10

3. 如何來解決資料庫管理互斥問題

1. 首先,需要建立一個全局靜態的互斥量;例如:
using System.Threading;
private static Mutex m;

2. 修改原先操作資料庫的部分,注意的是(資料庫查詢是不需要的):
if(m==null)
m=new Mutex();

//Enter into mutex area
m.WaitOne();

//Execute sql command here

//Depart from mutex area
m.ReleaseMutex();

4. SQL中的符號^,!,$,#,&,各表示什麼意思

^(位異或)
對兩個整數值執行「位異或」運算。它會將第一個操作數的每一位與第二個操作數中對應的每一位進行比較。如果一位是 0,另一對應位是 1,則相應結果位設置為
1。如果兩位都是 0 或兩位都是 1,則相應結果位設置為 0。

兩個條件必須都為有符號的整數數據類型,或都為無符號的整數數據類型。

!(邏輯非)! 運算符不能與其他運算符一起使用。例如,不能將 ! 和 > 運算符組合為 !>. 運算符。

&(位與)
對兩個整數值執行「位與」運算。它會將第一個操作數的每一位與第二個操作數中對應的每一位進行比較。如果兩位都是 1,則相應的結果位設置為
1。否則,相應的結果位設置為 0。

兩個條件都必須是有符號整數類型,或者都必須是無符號整數類型。

$,# 這兩個沒有實際含義

5. 請問怎麼用sql篩選互斥事務

select * from sheet4 AS A
where not exists (select * from sheet4 where 對應的事務代碼<A.對應的事務代碼 and 對應的事務代碼=A.互斥的事務代碼 and 互斥的事務代碼=A.對應的事務代碼)

6. 求sql,取2表中互斥數據

select * from a where c not in (select c from b )