首先建立一個外鍵,然後在與你網頁提交的時候執行兩個語句,一般在提交數據的時候都會分到一個網頁里轉換一下數據,把在客戶機上填的數據分成兩部分,在下面你執行兩個插入語句就可以了,把數據分好插入兩個不同的表這樣就不會出問題了。
在著建立一個資料庫不就是在這方面應用的嗎。
❷ MSSQL查詢結果排除重復
select min(a.id) as id , a.uid, a.sort
from proct a,
(select uid, max(sort) as sort
from proct
group by uid) b
where a.uid = b.uid
and a.sort = b.sort
group by a.uid, a.sort
❸ 求解: 資料庫限制兩欄位不允許任何重復值.MSSQL或MYSQL或其他都行
你要求每插入一條記錄,三個欄位值都要和資料庫現有的所有記錄欄位值不同,如果已經存在,就不能插入,用代碼或者函數實現(例如:select count(*) from 表 where a not in('當前要插入 的a值','當前要插入 的b值','當前要插入 的c值') and b not in('當前要插入 的a值','當前要插入 的b值','當前要插入 的c值') and c not in ....),sql需要優化(考慮使用exist )
其實我再想是不是你理解錯需求了?這個實現不管怎樣,性能都不太好,實際項目中,一般不會這么設計的
❹ mssql去除相同記錄
personal_memberid 是主鍵的話,下面是保留重復記錄中personal_memberid最小的那個賬號,如果這個id是自增的,那麼就是保留最早注冊的那個賬號
DELETE FROM personal_user
WHERE personal_memberid NOT IN
(
SELECT MIN(personal_memberid)
FROM personal_user
GROUP BY personal_mobile, personal_name
)
❺ MSSQL資料庫如何優化
1. 保證在實現功能的基礎上,盡量減少對資料庫的訪問次數;通過搜索參數,盡量減少對表的訪問行數,最小化結果集,從而減輕網路負擔;能夠分開的操作盡量分開處理,提高每次的響應速度;、使用SQL時,盡量把使用的索引放在選擇的首列;演算法的結構盡量簡單;在查詢時,不要過多地使用通配符,而且要用到幾列就選擇幾列,如:
SELECT C1,C2 FROM T1;
在可能的情況下盡量限制盡量結果集行數,如:
SELECT TOP 300 C1,C2FROM T1,因為某些情況下用戶是不需要那麼多的數據的, 避免用!=或<> ISNULL或IS NOT NULL、IN ,NOT IN等這樣的操作符,因為這會使系統無法使用索引,而只能直接搜索表中的數據。例如:
SELECT C1 FROM T1 WHERE C1 != 'B%'
2. 合理使用EXISTS,NOT EXISTS子句。如下所示:
1)SELECT SUM(T1.C1)FROM T1 WHERE((SELECTCOUNT(1)FROM T2 WHERE T2.C2=T1.C2)>0)
2)SELECT SUM(T1.C1) FROM T1WHERE EXISTS( SELECT 1 FROM T2 WHERET2.C2=T1.C2)兩者產生相同的結果,但是後者的效率顯然要高於前者。因為後者不會產生大量鎖定的表掃描或是索引掃描。如果你想校驗表裡是否存在某條紀錄,不要用count(*)那樣效率很低,而且浪費伺服器資源。可以用EXISTS代替。如:
IF (SELECT COUNT(1) FROM table_name WHEREcolumn_name = 'xxx')>0
可以寫成:
IF EXISTS (SELECT 1 FROM table_name WHEREcolumn_name = 'xxx')
3. 經常需要寫一個T_SQL語句比較一個父結果集和子結果集,從而找到是否存在在父結果集中有而在子結果集中沒有的記錄,如:
1) SELECTa.C1 FROM T1 a
WHERE NOT EXISTS (SELECT 1 FROM T2 b WHERE a.C1= b.C1)
2) SELECT a.C1 FROM T1 a
LEFT JOIN T2 b ON a.C1 = b.C1 WHERE b.C1IS NULL
3) SELECT a.C1 FROM T1 a
WHERE a.C1 NOT IN (SELECT C1 FROM T2)
三種寫法都可以得到同樣正確的結果,但是效率依次降低。
4. 能夠用BETWEEN的就不要用IN
SELECT * FROM T1 WHERE ID IN (10,11,12,13,14)
改成:
SELECT* FROM T1 WHERE ID BETWEEN 10 AND 14
因為IN會使系統無法使用索引,而只能直接搜索表中的數據。
❻ MSSQL資料庫sa許可權,如何創建一個資料庫。讓兩個庫的內容一模一樣.
簡單一點就是,先建一個資料庫,然後表什麼的先弄好,之後備份一份出來,之後再還原一下,資料庫名改一下,這樣兩個資料庫的內容就一模一樣,當然除了資料庫名之外。
另外一種就是,先建一個資料庫,然後表什麼的先弄好,將伺服器停掉,之後復制一份mdf和ldf文件,之後在另外的問題,附加上去,記得資料庫名也改一下,就行了。
❼ mssql資料庫的系統函數都有哪些
mssql資料庫的系統函數都有哪些
因資料庫不同有不同的函數,以oracle為例:常用的有單條語句作用的函數:destinct(去除重復行),
to_char
(轉換自符串),to_date(日期格式函數),sumstr(截取自符串),lower(將字母轉換為小寫),upper(將字母轉換為小寫),char(將
數字轉換
為字元),ascii(求字元的ascii碼)等函數;
組函數:min(求最小值),max(求最大值),avg(求平均數),sum(求總和),counnt(統計記錄數);
❽ MSSQL備份文件怎麼還原到新資料庫
還原資料庫:
1、打開SQL企業管理器,在控制台根目錄中依次點開Microsoft SQL Server;
2、SQL Server組-->雙擊打開您的伺服器-->點圖標欄的新建資料庫圖標,新建資料庫的名字自行取;
3、點擊新建好的資料庫名稱(如論壇資料庫Forum)-->然後點上面菜單中的工具-->選擇恢復資料庫;
4、在彈出來的窗口中的還原選項中選擇從設備-->點選擇設備-->點添加-->然後選擇您的備份文件名-->添加後點確定返回,這時候設備欄應該出現您剛才選擇的資料庫備份文件名,備份號默認為1(如果您對同一個文件做過多次備份,可以點擊備份號旁邊的查看內容,在復選框中選擇最新的一次備份後點確定)-->然後點擊上方常規旁邊的選項按鈕;
5、在出現的窗口中選擇在現有資料庫上強制還原,以及在恢復完成狀態中選擇使資料庫可以繼續運行但無法還原其它事務日誌的選項。在窗口的中間部位的將資料庫文件還原為這里要按照您SQL的安裝進行設置(也可以指定自己的目錄),邏輯文件名不需要改動,移至物理文件名要根據您所恢復的機器情況做改動,否則恢復將報錯;
6、修改完成後,點擊下面的確定進行恢復,這時會出現一個進度條,提示恢復的進度,恢復完成後系統會自動提示成功,如中間提示報錯,請記錄下相關的錯誤內容並詢問對SQL操作比較熟悉的人員,一般的錯誤無非是目錄錯誤或者文件名重復或者文件名錯誤或者空間不夠或者資料庫正在使用中的錯誤,資料庫正在使用的錯誤您可以嘗試關閉所有關於SQL窗口然後重新打開進行恢復操作,如果還提示正在使用的錯誤可以將SQL服務停止然後重起看看,至於上述其它的錯誤一般都能按照錯誤內容做相應改動後即可恢復。
❾ MSSQL如何去除重復行,
將商品表去重(按貼圖,使用最簡單的distinct ,也可以用group by)
並存入臨時表
select distinct * into #tmp from 商品表名
清除商品表數據
delete from 商品表名
將臨時表倒入商品表中
insert into 商品表名 select * from #tmp
刪掉臨時表
drop #tmp
最好將商品表的商品ID設為PK
❿ 怎麼把一個MSSQL資料庫的數據復制到另外一個MSSQL資料庫。
直接把資料庫A中的表鏈接到資料庫B中去吧:
打開資料庫B,把select * from 資料庫a.dbo.表A保存為表A。
依此類推,不管資料庫A怎麼變,資料庫B中的數據會同步的。
快去試試吧,是不是你想要的結果。