導航:首頁 > 數據處理 > 資料庫總是忘記修改了哪些欄位

資料庫總是忘記修改了哪些欄位

發布時間:2023-04-08 09:39:13

『壹』 有個欄位被不小心改了類型,該欄位下原來的數據都沒有了,有沒方法恢復

沒有辦法恢復的。。。

『貳』 SQL資料庫已經建立一個表,忘記了定義主鍵

alter table b_news add CONSTRAINT PK primary key (b_id)

『叄』 查詢表修改記錄

修改項目時,涉及到了Oracle中許多旦罩態表的修改(包括:增加、刪除欄位,修改注釋等)。由於開始沒有進行記錄,造成在上測試機時,忘記了具體修改過哪些表了。後來在網上查找了一些資料,例如: www.2cto.com 1、select uat.table_name from user_all_tables uat 該SQL可以獲得所有用戶表的名稱 2、select object_name, created,last_ddl_time from user_objects 該SQL可以獲得所有用戶對象(包括表)的創建和最後修改時間 綜合以上SQL,總結了如下語句模源: select uat.table_name as 表名,(select last_ddl_time from user_objects where object_name = uat.table_name ) as 最後修改日期 from user_all_tables uat 通過該語句,可以得到所有表的最後修改時間。(大家可以根據悶禪實際情況在該SQL後面加上相應的條件表達式) 通過對查詢結果中最後修改時間的降序排列,就可以知道那些表的結構修改過了。

由於應用的bug導致部分數據欄位被更新為空,發現時已經有兩個月了,這些欄位內容挺重要的,如何才能找回這些數據呢? rman只能恢復某個點的數據,因為在此期間不斷有insert,這些新增數據也會被update,因此任何一點的數據都不全,備份也是每天晚上備份,當天插入當天update的數據同樣無法恢復。 方法:不完全的恢復的就一個rman,一個是logminer,感覺logminer不現實,時間太長了,使用rman進行基於時間點的不完全恢復後,使用read only打開資料庫,將需要的表,導出,然後在使用rman進行資料庫的完全恢復,思路是這樣的,務必進行測試

ORACLE 中查詢某個表中某條記錄的修改記錄方法如下: select * from v$sql where sql_text like 'update tableName%'

『肆』 資料庫欄位值修改問題

需要用到函數Mid(string, start[, length]) ,與函數len(string)函數,
其中的length長度使用 len(2008-09-29 08:36:20)取得即可,這樣就可以納稿了,
具體的SQL語租租句為:
update 表 set 欄位=mid(欄位,1,len(2008-09-29 08:36:20))
呵呵洞型孝,應該將問題解決了,^_^

『伍』 如何保證資料庫結構的合理性(一、調整欄位)

(一)調整欄位 資料庫中欄位是表的基本結構部分,所以在調整整個表悶沒之前必須使得欄位都是處於最好狀態。很多情況下,欄位的選擇確定會減少很多給定表的已有問題,也能避免一些潛在的問題的產生。 1)欄位名稱的調整 欄位描述的是表所描述的物體的特徵。如果給欄位一個合適的名稱,就可以標識這個打算要描述的特徵。一個有歧義的含糊不清的名稱是一個麻煩的徵兆,暗含這個欄位的代表含義還沒有真正明確下來。可以利用下面清單中的內容檢查每一個欄位名稱。1.對整個組織來說,這個名稱是否具有一定的說明意義? 要確保對於訪問這個欄位的每個人來說這個名稱都是有描述意義的。語義有時候是非規則的,如果欄位所用的詞對於不同的人群來說語義不同,那就麻煩了。就好象在大部分地區,搖頭表示的是「No」,而在印度,搖頭則表示「Yes」。2.這個欄位是否清楚沒有歧義? 比如PhoneNumber就很容易讓人誤會。描述的是哪種電話號碼?為了明確起見,如果需要記錄每一種電話號碼,那麼應創建HomePhone、WorkPhone、CellPhone這樣的欄位。 另外還需要確保不會在不同的表中使用相同的欄位名。如有必要,建議在相同的欄位名稱前面加上一個短短的前綴。比如,Vendors表中用VendCity,Customers表中用CustCity,Employees表中用EmpCity這樣的名稱。 總之,確保資料庫中的每一個欄位都有唯一的名稱,在整個資料庫結構中僅出現一次。除非這一欄位被用來建立兩個表之間的關聯關系。3.是否使用首字母的縮寫或者其他縮寫形式作為欄位名稱? 如果有,請修改它!首字母的縮寫很難解釋,易被誤解。使用縮寫要非常謹慎,處理的時候也小心。如果對欄位名稱有一個信息的正向補充增強作用的情況下才使用縮寫,縮寫不能損害欄位本身所表示的意義。4.是否使用了暗含或者明確標識多個特性的欄位名稱? 這種欄位一般很容易發現,因為有類似於「and」或「or」這樣的代表性字詞。包含反斜線符號(\)、連字元(-)、與的記號(&)的欄位同樣也屬於這一類型。如果發現這樣的欄位,檢查所存儲的數據,看是否需要將它們拆開成為更小的單獨欄位。5.確保欄位名稱的單數形式 欄位所描述的是表所代表的物體的單一的特徵,所以欄位名應該是單數。而另一方面,表的名稱之所以是復數,是因為它所描述的是同類對象或事件的集合。使用這一命名規則後,區分表的名稱和欄位名稱就是一件很容易的事了。 2)消除粗糙的邊 修正了欄位名,現在就應該轉而注意欄位本身的結構了。雖然對欄位的合理性已經有了相當的把握,但還是有幾點需要繼續努力來使欄位結構盡可能更加合理高效。1.確保欄位描述的是表所表示的物體某一特性。 這一步可確定欄位是否真的屬於這個表。如果它和這個表的關系並不密切,那就刪除它。這個規則也有一個例外情況:這個欄位是用來建立這個表和資料庫中另一個表之間的關聯關系,或為了完成資料庫應用的某些任務而專門添加到表中。2.確保欄位中僅包含一個單一的值。 一個欄位可能會潛在地保存相同值的幾個具體實例,這稱為多值欄位。同樣地,一個欄位也可能潛在地保存兩個或多個各自不同的值,這稱為多型欄位。多值欄位和多型欄位會給資料庫管理帶來混亂,尤其是在對這些數據進行編輯、刪除和排序時。當每一個欄位存儲的是單一值時,會對保證數據完整性和信息正確性有很大的幫助。3.確保欄位所存儲的內容不是計算結果或者一連串事件的結果。 一個設計良好的表中不允許出現計算列。主要原因是因為計算列的值本身。這里的欄位,不像電子數據表格中的一個單元,不能保存一個具體的計算值。當計算表達式中的任何一部分改變,存儲在欄位中的計算值不會隨之更新。唯一方式是手工修改或者編寫代碼年進行自動修改。然而,使用計算列的首選是在SELECT語句中結合使用。4.確保在整個資料庫中一個欄位僅出現一次。 一個普遍錯誤是向資料庫中的好幾個表插入了相同的欄位,那就會面臨數據不一致的問題。此時,改變了一個表中的這個欄位而忘記了對其他表中的相同欄位進行相同的修改,就會出現數據的不一致。避免這個問題的方法微十時毫 確保整個資料庫結構中一個欄位僅出現一次。(此規則的例散祥外情況是用某一個欄位來建立兩個表之間的關聯關系。) 3)多型欄位的處理 識別多型欄位可以先回答一個簡單問沖罩搏題:是否能將當前欄位的值分解成更小的獨立的幾部分?如果回答「是」,那麼這就是一個多型欄位。 比如Customers表中有這個一個欄位StreetAddress,裡面的記錄為「15127 NE 24th ,#383 ,Redmond ,WA 98052」。這個欄位就可以拆分為CustAddress、CustCity、CustState和CustZipcode,分別存儲15127 NE 24th 、Redmond、WA和98052。下面是書中調整前和調整後的表:調整後: 有時候可能識別一個多型欄位是比較困難的,比如Instruments表中有這么一個欄位IstrumentID,裡面存儲了GUIT2201、MFX3349、AMP1001、AMP5590、SFX2227和AMP2766。乍看好象不是多型欄位,仔細查看就會發現,此欄位的值中包含了兩個不同的信息:設備所屬的類別——如AMP(amplifier,擴音器)、GUIT(guitar,吉他)和MFX(multieffects unit,音效組合)——以及這些設備的標識號碼。這兩個值應該分開保存在各自的欄位中,以保證數據完整性。下圖是Instruments表: 4)多值欄位的處理 多值欄位的處理比多型欄位相對困難一些,但是值得慶幸的是,多值欄位一眼就能識別出來。幾乎毫無例外的,這一類型欄位存儲的值包含許多逗號,逗號用來分隔欄位中值的不同部分。 在對多值欄位進行處理之前,要先明白最初想要賦予的多值欄位和表之間的關系。多值欄位的值和其父表中的記錄是M:M的關系:一個多值欄位中的某一個確定的值和父表中的多個記錄相關,父表中的一個記錄和多值欄位中的多個值相關聯。處理這種多對多關系和其他多對多關系的方法一樣——用一個關聯表。 要創建關聯表,使用多值欄位並復制原來表中的主關鍵字作為建立新表的基礎部分。給這個新的關聯表一個合適的名字,並指定這兩個欄位為其組合主關鍵字。(這種情況下,組合兩個欄位中的值就能惟一標識新表中的每一個記錄。)然後就可以在一對一的基礎上對新表中的兩個欄位關聯了。 比如現在有Pilots表,表中有三個欄位PilotID、PilotName、Certifications,有兩個記錄分別為:25100、John、727,737,757,MD80;25101、David、737,747,757。很注意到Certifications是一個多值欄位(存儲的值包含了逗號),先將Certifications從Pilots表中刪除,然後將根據Certifications的內容新建Certifications表,Certifications表中有如下欄位CertificationID和TypeofAircraft,包含記錄如下:8102、Boeing 727;8103、Boeing 737;8104、Boeing 747;8105、 Boeing 757;8106、 McDonnell Douglas MD80。接著,在創建一關聯表,比如Pliot Certifications表,表中的欄位分別為Pilots表的主鍵PilotID和Certifications表的主鍵CertificationID。 為了方便,上面的例子是我簡化過的,下面是書中的例子: 調整前的表:調整後的表:

『陸』 用戶提交修改後表單,我想知道哪些信息被修改了,以方便我在資料庫中更新特定欄位

老實說,意義不大
要知道哪些信息被陸凱修改,那就得先把欄位信息從資料庫中讀出來,然後再與表單數據想匹配比對,然後再對有修改的數據更新到資料庫,這個過程所寫的代碼,所花的時間更多殲嫌。早改喚
還不如提交表單後,直接對提交的數據更新到資料庫,達成數據更新的目的。

『柒』 資料庫如何避免錯誤的欄位值

在資料庫中避免錯誤的欄位值是一個很重要的問題,這涉及到資料庫設計的規范性和數據的准確性問題。以下是一些常見的方法可以幫助避免錯誤的欄位值。

1. 資料庫約束:資料庫約束是一種強制性規則,它可以在資料庫層面上強制保證數據的完整性和正確性。通過定義不同類型的約束,例如主鍵、漏攔唯一性約束、非空約束、默認值約束等可以限制欄位取值范圍,從而避免錯誤的欄位值。

2. 枚舉類型:如果一個欄位只能取一定范圍內的值,可以考慮使用枚舉類型,將所有合法的值列出來。這樣就可以避免非法的值插入到該欄位中。

3. 觸發器:觸發器是一種特殊的存儲過程,它可以在數據被插入、修改或刪除時自動執行一些代碼。可以使用觸發器檢查新插入或修改的數據是否符合要求,如果不符合,則拒絕該數據的修改或插入。

4. 應用程序層面的控制:在應用程序中可以加入相應的業務邏輯控制,進行數據校驗,薯渣從而避免錯誤的欄位值。例如在後台應用程序中對用戶提交的數據進行校驗,如果發現數據不符合要求,則提示用戶修改,並禁止提交數據。

5. 資料庫設計規范:在資料庫設計階段,應該建立規范返手胡的設計標准和流程,從而確保資料庫的穩定性和可靠性。通過建立資料庫設計文檔,明確欄位定義和規范,對於數據字典進行維護和更新,可以有效地減少錯誤的欄位值的問題。

需要注意的是,以上方法可以在一定程度上減少錯誤的欄位值,但無法完全避免。因此,在資料庫的日常維護和管理中,還需要定期進行數據的備份、恢復和驗證,以確保數據安全和可靠性。

『捌』 SQL問題:本想執行update修改一條數據的,結果忘記寫where條件了。結果那個表的那一列都改了。能改回來么

修改之前沒進行備份數據? 可憐的娃。。。
方法一:
數據還原到指定時間點的處理示例:
--創建測試資料庫
CREATE DATABASE Db
GO
--對資料庫進行備份
BACKUP DATABASE Db TO DISK='c:\db.bak' WITH FORMAT
GO
--創建測試表
CREATE TABLE Db.dbo.TB_test(ID int)
--延時1秒鍾,再進行後面的操作(這是由於SQL Server的時間精度最大為百分之三秒,不延時的話,可能會導致還原到時間點的操作失敗)
WAITFOR DELAY '00:00:01'
GO
--假設我坦滲們現在誤操作刪除了 Db.dbo.TB_test 這個表
DROP TABLE Db.dbo.TB_test
--保存刪除表的時間
SELECT dt=GETDATE() INTO #
GO
--在刪除操作後,發現不應該刪除表 Db.dbo.TB_test
--下面演示了如何恢復這個誤刪除的表 Db.dbo.TB_test
--首先,備份事務日誌(使用事務岩棚日誌才能還原到指定的時間點)
BACKUP LOG Db TO DISK='c:\db_log.bak' WITH FORMAT
GO
--接下來,我們要先還原完全備份(還原日誌必須在還原完全備份的基礎上進行)
RESTORE DATABASE Db FROM DISK='c:\db.bak' WITH REPLACE,NORECOVERY
GO
--將事務日誌還原到刪除操作前(這里的時間對應上面的刪除時間,並比刪除時間略早
DECLARE @dt datetime
SELECT @dt=DATEADD(ms,-20,dt) FROM # --獲取比表被刪除的時間略早的時間
RESTORE LOG Db FROM DISK='c:\db_log.bak' WITH RECOVERY,STOPAT=@dt
GO
--查詢一下,看錶是否恢復
SELECT * FROM Db.dbo.TB_test
/*--結果:
ID
-----------
(所影響的行數為 0 行)
--*/
--測試成功
GO
--最後刪除我們做的測試環境
DROP DATABASE Db
DROP TABLE #

方法二:
用日誌工具Log Explorer
步驟:
1、查看日誌
a、打開log explorer,選擇菜單File--> attach log file
b、在Log File Selection窗口中,填寫連接到要恢復數據的資料庫伺服器機器名、資料庫登錄ID及密碼,然後點擊 "Connect "按鈕。
c、若連接成功,則窗口左邊樹將顯示命令菜單,這時我們點擊Browser下的View Log命令,此時窗粗信則口右邊則出現該資料庫的Log。
2、恢復資料庫
這時您只要選擇您要恢復對事件點,右鍵點擊選擇 "undo transation "命令,保存T-SQL代碼,然後在查詢分析器中執行該T-SQL代碼

『玖』 mysql update 更新數據時部分欄位修改了部分欄位沒有修改

UPDATE member_fields SET province = '$city', city = '$city' WHERE mid = 4007

這伍侍種修改的時候,province 能保證每次得到最新的$city值?而city不可以?嘗試查看提交頁面,看city相對應的代碼,是否襲橘纖和province 完全一致?還是有其他不同?

將提交頁面覆寫,將city改名,進行嘗試

代碼問題往往就是一個極小的疏忽導致拍仿的。仔細,再仔細。

『拾』 沒帶條件修改了某欄位值怎麼還原

沒帶條件修改了某欄位值利用資料庫還原功能恢復到你更新之帶孫前的資料庫時間。
新建一個資料庫,畢嘩把備份還原到新建庫上,然後關連兩個庫的這個表,把備份上的手行行這個欄位update回來。
備份之後加的數據就沒有辦法了。

閱讀全文

與資料庫總是忘記修改了哪些欄位相關的資料

熱點內容
微信程序天天軍棋怎麼打字 瀏覽:739
上海男裝店代理多少錢 瀏覽:578
如何練跳傘技術 瀏覽:970
安若希產品怎麼用 瀏覽:460
健翔橋市場有多少公里 瀏覽:820
如何把表格的內容變成資料庫 瀏覽:821
雙應用程序是什麼意思 瀏覽:396
從國外怎麼郵寄產品 瀏覽:584
招商如何解決信息不對稱 瀏覽:412
威海銀灘二手房交易在哪裡過戶 瀏覽:93
沒有啟用數據為什麼出現流量超了 瀏覽:788
代理游戲手機有什麼優勢 瀏覽:489
為什麼程序員大部分生女兒 瀏覽:411
什麼是會計程序 瀏覽:642
vivos9手機如何轉移數據 瀏覽:787
虛擬貨幣叫停交易是什麼意思 瀏覽:647
左下角的小程序怎麼加箭頭的 瀏覽:694
廣東高分子聚氧化乙烯產品有哪些 瀏覽:204
有尾數的股票怎麼交易 瀏覽:209
如何加強信息工作管理 瀏覽:501