第一篇:數據庫小結
數據庫總結
1、數據庫開課6天,到今天已全部結束
2、學習內容
一、數據庫的安裝與刪除:已獨立上機操作實現。
二、數據利器sql 1)用sql進行單表查詢:
查詢語句: select 所查內容 from 表 where 條件
排序: select 所查內容 from 表 where 條件order by排序的依據
分組:select 所查內容 from 表 where 條件 group by 分組依據 其他要顯示的內容(having 條件)
字段運算查詢:select 運算 from表
變換查詢:select 原名 新名 from 表
2)多表查詢:
無條件多表查詢 select 所差內容 from 多個表
等值多表查詢
select 所差內容 from 多個表 where 一個
表內容=另一個表內容
非等值多表查詢select 所差內容 from 多個表 where 一個
條件 and(or)其他條件
3)嵌套查詢
帶in、any(some)、all、exist的嵌套查詢:
select 所查內容 from 表 where 內容 in(select 所查
內容 from 表 where 條件)
注意:any(some)包括等于條件、all不包括
并(union)、交(intersect)、差操作(minus): 4)常用的函數查詢
Ceil(n)取大于等于n的最小整數
Floor(n)取小于等于n的最大整數
Mod(m,n)取m整除n后的余數
Pow(m,n)取m的n次方
Round(m,n)取四舍五入,保留小數點后n位
Sign(n)n》0取1;n=0取0;n《0取-1
Avg(字段名)求平均值
Count(字段名)或者count(*)統計總數
Min(字段名)計算數值型字段最小數
Max(字段名)計算數值型字段最大數
Sum(字段名)計算總數 5)錄入數據
單行錄入:Insert into 數據表(字段1,2。。)values
(字段1的值,2的值。。)
多行錄入:insert into 數據表(字段1,2。)(select
(字段1或運算,2或運算。。)from
數據表 where 條件)表間數據復制:create table 表名 as(select 字段from原
有的表where 條件)
6)刪除記錄
刪除記錄:Delete from 數據表 where 條件
整表數據刪除:truncate table 數據表 7)更新數據
直接賦值更新:update 數據表 set 字段名1=新的賦值,字段名2=新的賦值。where條件
嵌套更新:update 數據表 set 字段名1=(select 字段列
表 from 數據表 where 條件),字段名(select字段列表 from 數據表 where條件)。。
三、編程進階Pl/sql 1)程序結構
Delacre
定義語句段
Begin
執行語句段
Exception
異常處理語句段 End 2)基本語法
定義變量%type:獲得字段的數據類型
定義變量%rowtype:獲得整個記錄的數據類型f 定義記錄類型變量 :type 記錄類型 is record()
定義一維表類型變量:type 表類型 is table of 類型 index by
binary_integer, 表變量名 表類型
定義多維表類型變量
3)表達式
數值表達式:加+,減-,乘*,除/,乘方**
字符表達式:連接符號||
關系表達式(9種): 4)事務處理
提交:Committee
回滾:rollback
保存點:savepoint 5)游標
定義、打開、提取、關閉 6)過程
創建、查詢、修改、執行
·
第二篇:操作數據庫小結
一.查詢操作
對數據進行查詢操作時,有兩種情況:一是查詢單個值,二是 查詢若干條記錄。
1、查詢單個值
需要使用Command對象的ExecuteScalar()方法:步驟如下:(1)、創建Connection對象(數據庫連接對象)。(2)、創建查詢用的SQL語句。(3)、利用SQL語句和Connection對象創建Command對象。(4)、打開數據庫連接,調用Connection對象的Open()方法。(5)、調用Command對象的ExecuteScalar()方法,返回一個標量值。(6)、操作完成后關閉數據庫連接,調用Connection對象的Close()方法。
2、查詢若干條記錄
需要使用Command對象的ExecuteReader()方法:步驟如下:(1)、創建Connection對象(數據庫連接對象)。(2)、創建查詢用的SQL語句。(3)、利用SQL語句和Connection對象創建Command對象。(4)、打開數據庫連接,調用Connection對象的Open()方法。(5)、調用Command對象的ExecuteReader()方法,返回一個DataReader對象。(6)、調用DataReader對象的Read()方法逐行讀取記錄,如果讀到記錄返回Ture,否則返回False.(7)、使用(type)dataReader[列名或索引]的方式讀取這一行中某一列的值。(8)、關閉DataReader對象(9)、操作完成后關閉數據路連接,調用Connection對象的Close()方法。
二、非查詢操作
對數據庫執行非查詢操作時,包括增加,修改,刪除數據,都使用Command對象的ExecuteNonQuery()方法,步驟如下:
(1)、創建Connection對象(數據庫連接對象)(2)、創建增刪改用的SQL語句。(3)、利用SQL語句和Connection對象創建Command對象。(4)、打開數據庫連接,調用Connection對象的Open()方法。(5)、調用Command對象的ExecuteNonQuery()方法執行命令,返回受影響的行數。(6)、操作完成后關閉數據庫連接,調用Connection對象的Close()方法。
本章總結
1、使用DataReader查詢數據記錄,通過Command對象的ExecuteReader()方法返回一個DataReader對象。
2、使用DataReader讀取數據室每次調用Read()方法讀取一行數據。
3、DataReader使用完后要調用它的Close()方法關閉。
4、使用Command對象的ExecuteNonQuery()方法對數據進行增刪改的操作。
5、ExecuteNonQuery()方法返回受影響的行數。
6、ListView(列表視圖)控件有5種視圖模式,重點是Details 列表視圖的Items屬性表示包含在空間中的所有項的結合,每一個項都是一個ListViewItem,使用Items.Add()方法向列表視圖中添加一項 調用列表視圖項的SubItems.AddRange()方法添加它的子項
ListViewItem lviStudent = new ListViewItem(loginID);創建一個ListView項 lviStudent.Tag=(int)dataReader[“StudentId”];lvStudent.Items.Add(lviStudent);//向ListView中添加一個新項 lviStudent.SubItems.AddRange(new string[] {studentName,studentNo,userState});//向當前項中添加子項
7、ContextMenuStrip(快捷菜單)控件可以與其他控件結合使用,通過設置控件的ContextMenuStrip屬性來指定它的快捷菜單。
想鼠標右鍵單擊文本框時出現快捷菜單,就選中文本框?在屬性窗口中找到它的ContextMenuStrip屬性,選擇已有的右鍵菜單控件 txtLoginId.Focus():?
下拉列表:
創建Command對象?調用Command對象的ExecuteReader()方法創建DataReader對象(sqlDataReader dataReader=command.ExecuteReader())?使用DataReader的Reader()方法逐行讀取數據(放回bool類型)?讀取當前行的某列的數據(cboGrade.Items.Add(dataReader[“列名”]))?關閉DataReader對象,Close()方法
向數據庫中添加數據:
創建Connection對象?定義要執行的SQL語句?創建Command對象?執行ExecuteNonQuery()方法?根據返回的結果進行后續的處理
雙擊顯示出ID:
MessageBox.show(dataGridView1.SelectedRows[0].cells[“ColID”].value.ToString());
刷新:
1,BindStudentByLoginID(txtBox.Text)2,listView.Items.RemoveAt(Listview1.SelectedIndices[0])//只能刪除選中的行(選中第幾個)
第三篇:數據庫問題小結
學習小結 1.前言:
前段時間的學習一直都沒有融入實際的操作,因此這個階段的學習我想結合著數據庫來對配置數據進行一個定位。為了達到這個目的我就決定再我自己機子上安裝oracle數據庫,并安裝omm網管服務器軟件,雖然這個過程自己自認為已經相當嫻熟了,(呵呵)可是實際的操作中由于數據庫,網管軟件安裝的先后順序不同出現了很多的問題。在這里我就想把我所遇到的問題以及解決辦法告訴大家。
2.安裝數據庫
首先聲明下我是在window下安裝我的數據庫軟件的,因此配置過程不像linux上面安裝時需要做諸多修改。雖然自己以前也裝過,但是為了提高準確性還是從網管部人那里要了一個安裝文檔,一切按部就班按著文檔走也沒出現什么問題。直到配置監聽程序時候出現了點問題:這里需要解釋下我的數據庫實例名為:tomc,IP為:10.62.88.71。
2.1 監聽問題
在配置完監聽程序之后我按照文檔在listener.ora文件中加入了
(SID_DESC =(SID_NAME = tomc(ORACLE_HOME = D:oracleproduct10.2.0db_1)(global_dbname = tomc)也就是加了一個tomc的數據庫監聽實例,本來這個文件里面是有一個默認的監聽實例,想想也是有道理的我就沒多想,繼續進行本地net服務名配置,在即將結束的時候輸入網絡服務名,一般默認輸入數據庫實例名(記住這點和listener.ora文件里的監聽實例是必須對應的)。可是文檔中輸入的是:
開始我也沒細想,就按照文檔完成了輸入,結果進行連接測試的時候老測試不成功。出現這樣的提示:
我就對前面的配置進行了檢查最后發現應該是剛才那個網絡服務名出現了錯誤。如果設置成tomc_10.61.88.71的話在tnsnames.ora文件中會相應的生成
TOMC_10.61.88.71 =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = 10.61.88.718)(PORT = 1521))(CONNECT_DATA =(SID = TOMC)))而我們前面的監聽程序里面卻是tomc,因此導致連接不成功。意識到這一點之后我決定不按照文檔了(反正這一段自己以明白),在配置監聽程序的時候listener.ora文件我不做修改采用默認,本地Net服務名配置時網絡名我設置成tomc_10.62.88.71,其余按照規定的填寫。可是奇怪的事情又發生了,當我測試連接的時候:
然后貌似卡住了,什么都不顯示了。。
2.2 注冊表問題
我百思不得其解,頗為郁悶,自信心受到嚴重的打擊,哈。不過既然問題出來了,就要想辦法解決,首先我對前面的配置數據默默的回想了一遍確定沒什么問題,然后考慮到是否是上一次配置失敗對這次的連接有了影響從而導致局部死機的情況出現。
1.我想到了關閉進程,在任務管理器中我講自己懷疑有可能的進程都一一關掉,結果絲毫沒有發生任何變化。。。。。。失敗。2.最后打開注冊表編輯器(運行regedit),我搜索 oracle 字段,鼠標直到:
具體的東西也看不明白,不過看到OracleOraDb10g_home1TNSListener這個子樹。我就意識到或許是由于它在作祟,第一次錯誤配置時已經在注冊表中生成了相應的信息,后面的配置可能無法對他進行覆蓋。雖然原因不是很明白但是大概可以定位到這里了,我就將這個表項刪除,然后重啟機器。(不知道linux服務器遇到是否會遇到這個問題)機器起來后按照剛才的監聽配置完成之后測試:
成功!
3.導入數據庫備份數據
這里先做個說明:早先我從網管服務器上導出了一份數據,此時我想講這份數據導入到我自己數據庫中,這樣我自己也可以隨時查看并做修改。文件存放的目錄為:D:網管版本包
3.1缺少指定導入用戶參數
懶得用工具了,我就隨手打開命令端口輸入:
結果導入失敗 生成相應的日志文件,內容如下:
連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0Production With the Partitioning, OLAP and Data Mining options
經由常規路徑由 EXPORT:V10.02.01 創建的導出文件
已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的導入.正在將 SYSTEM 的對象導入到 SYSTEM.正在將 UEP 的對象導入到 UEP IMP-00003: 遇到 ORACLE 錯誤 1435 ORA-01435: 用戶不存在
成功終止導入, 但出現警告。
這個時候我真郁悶,開始我懷疑命令錯誤了,可是這個命令自己早已經亂熟于心了。不過我還是進入D:NetNumenums-svrtoolsoraEIPT打開了網管軟件里面提供的工具,我用UltraEdit-32 軟件打開run.bat,先講這個工具里代碼的調用關系理清然后找到導入文件那一段代碼:
通過代碼也堅定了我的命令內容,格式的正確性。(如果有興趣的兄弟可以把那些工具都打開然后仔細地看看里面的內容,其實還蠻有意思)
3.3 真相大白
排除了命令的原因之后,實在想不到還有什么問題。無奈之下給黃建軍總共發了一封郵件,說了一下情況,還是人家黃總猛啊,我問題一說黃總馬上就答復我了:
黃總一說我也頓時明白了,我剛裝的數據庫里面還沒有和網管匹配的表結構,這樣導入數據時數據就不知道在數據口中如何的分布。在這里黃總還提到了一點數據庫版本有對上號,oracle 10g的數據和oracle 9i的數據就不能兼容。此外還要考慮到網關版本的問題,不同的網管版本其表結構也不一樣,因此在數據導入的時候一定要注意到這點。
余下的安裝omm服務器就沒什么好說的了,然后再次導入之后果然成功了。
4.查看數據庫
安裝完數據庫之后,我自然沒有忘記我的初衷(根據網管配置數據再查看相應的數據庫表)。在這里向大家介紹一款工具,PLSQL Developer,這款工具是數據庫開發者的最愛,里面有圖形化的操作界面,可以圖形化進行創建,插入,刪除等操作,十分方便。由于大學中我經常用這個工具因此一切輕車熟路。
進去之后,直接點開索引尋找庫里的表:
然而貌似沒有我在參數字典上看到的那些熟悉的表名,問了研發部的一個哥們,才知道自己犯了多么愚蠢的一個錯誤。在網管軟件中我們所有的配置數據都在數據庫中的uep用戶下保存(此時我才真正明白了uep的含義,同時也明白了為什么導出數據的時候都是導出uep用戶的),而所有告警信息都存放在trns_pm 用戶下。明白了這點,我馬上在網管的相關屬性文件里找到了這兩個用戶的密碼:
trns_pmtrnspm uepu_tywg_2008
后面的事情就沒什么好說的了。呵呵
4.經驗總結
上面遇到的這些問題如果大家都用腳本運行的話,估計都不會出什么錯誤,但是我認為作為一個高級技術支持人員還是要對一些東西理解的清晰一點,通過發現問題----思索問題---定位問題----解決問題 這個過程我增強了自己對系統的理解,并提高了自己的動手以及解決問題的能力。
第四篇:Visual Basic數據庫操作方法小結
Visual Basic數據庫操作方法小結
筆者和同事們在使用VB對數據庫操作應用時,總結了如下的幾種方法,供初學者參考,希望能對大家有所啟發。
1、數據庫打開/關閉方法的選擇
在通常情況下,數據庫的打開操作是在程序代碼中使用OpenDatabase方法實現,其格式如下:Set database=workspace.OpenDatabase(dbname,options,readonly,connect)
可以通過指定數據庫名字、打開方式、連接信息等參數打開一個現已存在的數據庫,使用Close方法即可關閉該數據庫。由于涉及VB代碼的編寫,其軟件編制工作比較復雜。另一方面,VB的數據控件(Data Control)也可以執行數據庫的打用關閉操作。我們可以在數據控件的屬性窗口中預先填好數據庫打開的相關參數,一旦該數據控件啟動,數據庫便會自動以指定的方式打開,而當該數據控件終止時,對應的數據庫也將自動關閉。對于按這二種方式打開的數據庫,其后的數據庫訪問操作沒有什么本質的區別。
以上兩種數據庫打用關閉的方法各有千秋:使用OpenDatabase方法可以在程序運行中動態地設置數據庫打開參數,并且可以多次以不同的方式打開和關閉同一個數據庫,具有相當大的靈活性。而如果使用數據控件,則不需要另外編寫VB代碼,只要在程序編制時預先設置數據庫的相關參數,程序開始運行后便會自動地以我們指定的方式打開數據庫,并在程序終止時自動關閉該數據庫,因此顯得相當方便。在實際應用中,可以視情況的不同而采用不同的處理方法:如果要求數據庫在程序運行中始終處于打開狀態并且其打開方式保持不變(如一直處于只讀狀態),那么,可以采用數據控件方法打開數據庫;如果要求數據庫在程序運行中時而打開時而關閉,或者經常在只讀和讀寫方式間來回切換,則只能采用OpenDatabase方法編寫程序代碼。
2、通過相對路徑指定數據庫文件
在很多情況下,不管采用上述哪一種方法打開數據庫,都必須在程序設計時就指定需要打開的數據庫文件。但是,我們通常不能保證該軟件完成后一定會被安裝在每臺機器的同一目錄下。因此該數據庫文件的絕對路徑一般在設計時還難以完全確定,只能采用相對路徑的辦法來解決這個問題。
在VB中,App對象是一個全局對象,用來提供當前應用程序的相關信息,其Path屬性反映的是當前應用程序的可執行文件(。exe)所在的絕對路徑,并且只在程序運行時才有效。通過使用App對象的Path屬性,可以方便地獲得當前程序所在的目錄路徑。因此,如果把數據庫文件存放在與程序路徑相關的目錄下,便可以在程序設計時就指定數據庫文件的相對路徑,當程序運行時,通過App對象的Path屬性動態地獲取其絕對路徑。
下面的一段代碼,用來在程序開始運行時獲取程序的路徑,并賦值給變量AppPath,然后在數據控件Data1的Database Name屬性中與數據庫文件的相對路徑“DatabaseSample.Mdb”結合,組成數據庫文件的絕對路徑。這段代碼通常出現在Form-Load中: Dim AppPath As String ' 設置路徑變量 AppPath=App.Path ' 獲取程序路徑 If Right(AppPath,1)<>“"Then AppPath=AppPath+”“ ' 若路徑尾部沒有”“,則添加之
Data1.Database Name=AppPath+”DatabaseSample.mdb“ ' 與相對路徑結合,組成絕對路徑
3、用SQL語句完成數據庫操作
SQL也就是結構化查詢語言,是用于數據庫查詢的一種通用標準語言,在現今的大多數數據庫軟件系統中均得到支持。1句SQL語句通常可以完成以前由許多條語句才能完成的復雜的數據庫查詢操作,具有較高的工作效率。
在VB中,SQL語句往往作為某些特定方法的參數而得以執行(沒有FoxPro等數據庫軟件那樣直截了當),比如可以把SQL語句作為Execute方法的1個字符串參數而執行,其格式如下: object.Execute SQL-statement,options 在其中的SQL-statement字符串中,可以使用標準的SQL語句,如:SELECT、INSERT、DELETE及UPDATE等。下面的例子是在數據庫對象DB中執行SQL語句,從當前數據庫的EMployees數據表中,選擇字段LastName='King'的所有記錄,并將這些記錄的LastName和FirstName這2個字段的內容,保存到同一數據庫的Backup數據表中:
DB.Execute(”SELECT LastName,FirstName INTO Backup FORM Employees WHERE LastName='King';“)
4、For語句在數據庫中的應用
For語句是幾乎所有高級語言都有的語句,通常用來完成指定次數的循環,在循環中可以完成一些指定的工作。而在VB中,For語句還可以用來對某個集合中的每1個元素循環執行若干操作,而不必預先設定循環次數,其格式如下: For Each element In group [statements] Next[element] For語句的這一特點可用于按照指定條件搜索整個數據庫。以下的代碼便可以對數據庫對象DB所指的數據庫中的所有數據表進行搜索,并完成指定的操作:
For Each Td In DB.Table Defs ' 循環搜索數據庫中的所有數據表…… …… ' 對數據表執行指定的操作Next
5、復制數據庫的結構定義
在數據庫應用中,經常需要在程序運行時動態地把一個數據庫的結構定義完整地復制到另一個數據庫中。由于新型的數據庫可以同時包含若干個數據表,而每個數據表的結構定義又不近相同,因此,如果通過逐個定義數據表中所有字段的類型、長度的方法復制數據庫結構,則該程序將變得相當冗長和復雜,日后的維護也比較困難。但是,通過綜合運用上述的幾種應用方法,用相當短的VB語句完成同樣的工作,實且程序也易于理解和維護。程序清單如下:
Sub CopyDBStrnc(src As String,dst As String)' 定義子程序Copy DBStrnc,用于復制數據庫結構
' 調用參數: ' src--源數據庫的文件名
' dst--目的數據庫的文件名
Dim DB As Database,Td As TableDef,SQLstr As String ' 定義變量:
' DB--數據庫對象
' Td--數據表定義對象
' SQLstr--SQL語句變量
Set DB=Create Database(dst,dbLangGeneral)' 創建目的數據庫dst ' 關閉目的數據庫dst DB.Close Set db=OpenDatabase(src,False,True)' 以共享、只讀方式打開源數據庫src For Each Td In DB.TableDefs
' 循環搜索源數據庫DB中的所有數據表定義
If(Td.Attributes And dbSyste mObect)=0 Then
' 忽略系統數據表,只針對用戶定義的數據表進行搜寫
SQLstr=”SELECT * INTO“+Td.Name+”IN“+dst+”'FROM“+
Td.Name+”'IN“+src+”'WHERE False'
' 對SQL語句變量賦值,完成以下功能:
' 從源數據庫src的數據表中選擇所有字段
' 存入目的數據庫dst的同名數據表中
' 選擇數據表的字段定義,不包括任何記錄
DB.Execute(SQLstr)' 執行SQL語句
End If Next ' 結束循環搜索
DB.Close ' 關閉源數據庫 Exit Sub ' 結束子程序定義
第五篇:數據庫查詢基本操作題總結(查詢小結)
2010.3等級考試-基本卡、操作題
一、查詢小結:
? 查詢分類:
1.選擇查詢:
? 使用向導創建查詢(無條件);
? 在設計視圖中創建查詢(無條件、有條件); 2.交叉表查詢:
? 使用交叉表查詢向導; ? 在設計視圖中創建查詢; 3.參數查詢:
? 在設計視圖中創建查詢(在條件欄內輸入提示信息,注意使用[ ]); 4.操作查詢: ①生成表查詢
? 在設計視圖中創建查詢(查詢→生成表查詢→表名(注意:執行一次查詢)); ②更新查詢
? 在設計視圖中創建查詢(查詢→更新查詢→更新到(注意:執行一次查詢)); ③追加查詢
? 在設計視圖中創建查詢(查詢→追加查詢→表名(注意:執行一次查詢)); ④刪除查詢
? 在設計視圖中創建查詢(查詢→刪除查詢→條件(注意:執行一次查詢));
5.SQL查詢
? 條件欄的表示: 1)函數:
系統日期:=Date()或=Now()系統時間:=Time()年、月、日:年:Year(date())
月:month(date())日:data(date())