資料庫表關鍵
『壹』 表在資料庫中是一個非常重要的數據對象,它是用來()各種數據內容的。
表在資料庫中是一個非常重要的數據對象,它是用來存放各種數據內容的。
資料庫中以表為組織單位存儲數據,根據表欄位所規定的數據類型,可以向其中填入一條條的數據,而表中的每條數據類似類的實例對象,表中的一行一行的信息稱之為記錄。
(1)資料庫表關鍵擴展閱讀
資料庫表的設計,一般會有一對一,一對多,多對多,自關聯四種情況。
1、一對一對象的表設計:假設做一個身份證管理系統,裡面的人和身份證就是一對一的關系,主從關系,人擁有身份證,身份證屬於人。只需要給人和身份證分別設計一張表,後再加關系,idcard身份證的id列設為外鍵約束。
2、一對多或者多對一對象的表設計:假設做一個部門管理系統,從面向對象的角度考慮,要設計2個對象,department代表部門,員工對象employee。不管對象引用關系,只管基本屬性,根據基本屬性建表,在多的一方加外鍵列描述數據之間的關系。
3、多對多對象的表設計:假設一個老師可以有多個學生,一個學生可以有多個老師,同樣地,只需要把老師teacher和學生student的相關屬性用表描述出來,這個時候數據間的關系就要設計中間表teacher_student,兩列作為聯合主鍵,加上外鍵約束。
4、自關聯對象的表設計:假設一個家庭里有多個人,家族成員之間的關系是自關聯的。
『貳』 資料庫表數據量大怎麼優化查詢速度
下面以關系資料庫系統Informix為例,介紹改善用戶查詢計劃的方法。
1.合理使用索引
索引是資料庫中重要的數據結構,它的根本目的就是為了提高查詢效率。現在大多數的資料庫產品都採用IBM最先提出的ISAM索引結構。索引的使用要恰到好處,其使用原則如下:
●在經常進行連接,但是沒有指定為外鍵的列上建立索引,而不經常連接的欄位則由優化器自動生成索引。
●在頻繁進行排序或分組(即進行group by或order by操作)的列上建立索引。
●在條件表達式中經常用到的不同值較多的列上建立檢索,在不同值少的列上不要建立索引。比如在雇員表的「性別」列上只有「男」與「女」兩個不同值,因此就無必要建立索引。如果建立索引不但不會提高查詢效率,反而會嚴重降低更新速度。
●如果待排序的列有多個,可以在這些列上建立復合索引(compound index)。
●使用系統工具。如Informix資料庫有一個tbcheck工具,可以在可疑的索引上進行檢查。在一些資料庫伺服器上,索引可能失效或者因為頻繁操作而使得讀取效率降低,如果一個使用索引的查詢不明不白地慢下來,可以試著用tbcheck工具檢查索引的完整性,必要時進行修復。另外,當資料庫表更新大量數據後,刪除並重建索引可以提高查詢速度。
2.避免或簡化排序
應當簡化或避免對大型表進行重復的排序。當能夠利用索引自動以適當的次序產生輸出時,優化器就避免了排序的步驟。以下是一些影響因素:
●索引中不包括一個或幾個待排序的列;
●group by或order by子句中列的次序與索引的次序不一樣;
●排序的列來自不同的表。
為了避免不必要的排序,就要正確地增建索引,合理地合並資料庫表(盡管有時可能影響表的規范化,但相對於效率的提高是值得的)。如果排序不可避免,那麼應當試圖簡化它,如縮小排序的列的范圍等。
3.消除對大型錶行數據的順序存取
在嵌套查詢中,對表的順序存取對查詢效率可能產生致命的影響。比如採用順序存取策略,一個嵌套3層的查詢,如果每層都查詢1000行,那麼這個查詢就要查詢10億行數據。避免這種情況的主要方法就是對連接的列進行索引。例如,兩個表:學生表(學號、姓名、年齡……)和選課表(學號、課程號、成績)。如果兩個表要做連接,就要在「學號」這個連接欄位上建立索引。
還可以使用並集來避免順序存取。盡管在所有的檢查列上都有索引,但某些形式的where子句強迫優化器使用順序存取。下面的查詢將強迫對orders表執行順序操作:
SELECT * FROM orders WHERE (customer_num=104 AND order_num>1001) OR order_num=1008
雖然在customer_num和order_num上建有索引,但是在上面的語句中優化器還是使用順序存取路徑掃描整個表。因為這個語句要檢索的是分離的行的集合,所以應該改為如下語句:
SELECT * FROM orders WHERE customer_num=104 AND order_num>1001
UNION
SELECT * FROM orders WHERE order_num=1008
這樣就能利用索引路徑處理查詢。
4.避免相關子查詢
一個列的標簽同時在主查詢和where子句中的查詢中出現,那麼很可能當主查詢中的列值改變之後,子查詢必須重新查詢一次。查詢嵌套層次越多,效率越低,因此應當盡量避免子查詢。如果子查詢不可避免,那麼要在子查詢中過濾掉盡可能多的行。
5.避免困難的正規表達式
MATCHES和LIKE關鍵字支持通配符匹配,技術上叫正規表達式。但這種匹配特別耗費時間。例如:SELECT * FROM customer WHERE zipcode LIKE 「98_ _ _」
即使在zipcode欄位上建立了索引,在這種情況下也還是採用順序掃描的方式。如果把語句改為SELECT * FROM customer WHERE zipcode >「98000」,在執行查詢時就會利用索引來查詢,顯然會大大提高速度。
另外,還要避免非開始的子串。例如語句:SELECT * FROM customer WHERE zipcode[2,3]>「80」,在where子句中採用了非開始子串,因而這個語句也不會使用索引。
6.使用臨時表加速查詢
把表的一個子集進行排序並創建臨時表,有時能加速查詢。它有助於避免多重排序操作,而且在其他方面還能簡化優化器的工作。例如:
SELECT cust.name,rcvbles.balance,……other columns
FROM cust,rcvbles
WHERE cust.customer_id = rcvlbes.customer_id
AND rcvblls.balance>0
AND cust.postcode>「98000」
ORDER BY cust.name
如果這個查詢要被執行多次而不止一次,可以把所有未付款的客戶找出來放在一個臨時文件中,並按客戶的名字進行排序:
SELECT cust.name,rcvbles.balance,……other columns
FROM cust,rcvbles
WHERE cust.customer_id = rcvlbes.customer_id
AND rcvblls.balance>0
ORDER BY cust.name
INTO TEMP cust_with_balance
然後以下面的方式在臨時表中查詢:
SELECT * FROM cust_with_balance
WHERE postcode>「98000」
臨時表中的行要比主表中的行少,而且物理順序就是所要求的順序,減少了磁碟I/O,所以查詢工作量可以得到大幅減少。
注意:臨時表創建後不會反映主表的修改。在主表中數據頻繁修改的情況下,注意不要丟失數據。
7.用排序來取代非順序存取
非順序磁碟存取是最慢的操作,表現在磁碟存取臂的來回移動。sql語句隱藏了這一情況,使得我們在寫應用程序時很容易寫出要求存取大量非順序頁的查詢。
有些時候,用資料庫的排序能力來替代非順序的存取能改進查詢。
『叄』 急求SQL資料庫中能用到的關鍵字及其用處最好能舉例說明一下!
我在別人的blog上摘錄的,你可以上去看看,能學到很多知識了
http://www.badguy.name/article.asp?id=702
上一篇 下一篇連接,能看到很多sql文章。
希望對你有幫助。
1.數據定義語言(DDL)
數據定義語言是指用來定義和管理資料庫以及資料庫中的各種對象的語句,這些語句包括Create、Alter和Drop等語句。物拍鎮在SQL Server 2000中,資料庫對象包括表、視圖、觸發器、存儲過程、規則、預設、用戶自定義的數據類型等。這些對象的創建、修改和刪除等都可以通過使用Create、Alter、Drop等語句來完成。
2.數據操縱語言(DML)
數據操縱語言是指用來查詢、添加、修改和刪除資料庫中數據的語句,這些語句包括Select、Insert、Update、Delete等。在默認情況下,只有sysadmin、dbcreator、db_owner或db_datawriter等角色的成員才有權利執行數據操縱語言。
3.數據控制語言(DCL)
數據控制語言(DCL)是用來設置或者更改資料庫用戶或角色許可權的語句,這些語句包括GRANT、DENY、REVOKE等語句,在默認狀態下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成員才有權利執行數據控制語言。
GRANT語句是授權語句,它可以把語句許可權或者對象許可權授罩粗予給其他用戶和角色。
DENY語句用於拒絕給當前資料庫內的用戶或者角色授予許可權,並防止用戶或角色通過其組或角色成員繼承許可權。
REVOKE語句是與GRANT語句相反的語句,它能夠將以前在當前資料庫內的用戶或者角色上授予或拒絕的許可權刪除,但是該語句並不影響用戶或者角色從其他角色中作為成員繼承過來的許可權。
----------------------------------------------
4. 系統存儲過程
系統存儲過程是SQL Server系統創建的存儲過程,它的目的在於能夠方便地從系統表中查詢信息,或者完成與更新資料庫表相關的管理任務或其它的系統管理任務。系統存儲過程可以在任意一個資料庫中執行。系統存儲過程創建並存放於系統資料庫master中,並且名稱以sp_或者xp_開頭。
sp_addtype:用於定義一個用戶定義數據類型。
sp_configure:用於管理伺服器配置選項設置。
xp_sendmail:用於發送電子郵件或尋呼信息。
sp_stored_proceres:用於返回當前資料庫中的存儲過程的清單。
sp_help:用於顯示參數清單和其數據類型。
sp_depends:用於顯示存儲過程依據的對象或者依據存儲過程的對象。
sp_helptext:用於顯示存儲過程的定義文本賀茄。
sp_rename:用於修改當前資料庫中用戶對象的名稱
3.數據控制語言(DCL)
數據控制語言(DCL)是用來設置或者更改資料庫用戶或角色許可權的語句,這些語句包括GRANT、DENY、REVOKE等語句,在默認狀態下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成員才有權利執行數據控制語言。
GRANT語句是授權語句,它可以把語句許可權或者對象許可權授予給其他用戶和角色。
DENY語句用於拒絕給當前資料庫內的用戶或者角色授予許可權,並防止用戶或角色通過其組或角色成員繼承許可權。
REVOKE語句是與GRANT語句相反的語句,它能夠將以前在當前資料庫內的用戶或者角色上授予或拒絕的許可權刪除,但是該語句並不影響用戶或者角色從其他角色中作為成員繼承過來的許可權。
----------------------------------------------
4. 系統存儲過程
系統存儲過程是SQL Server系統創建的存儲過程,它的目的在於能夠方便地從系統表中查詢信息,或者完成與更新資料庫表相關的管理任務或其它的系統管理任務。系統存儲過程可以在任意一個資料庫中執行。系統存儲過程創建並存放於系統資料庫master中,並且名稱以sp_或者xp_開頭。
sp_addtype:用於定義一個用戶定義數據類型。
sp_configure:用於管理伺服器配置選項設置。
xp_sendmail:用於發送電子郵件或尋呼信息。
sp_stored_proceres:用於返回當前資料庫中的存儲過程的清單。
sp_help:用於顯示參數清單和其數據類型。
sp_depends:用於顯示存儲過程依據的對象或者依據存儲過程的對象。
sp_helptext:用於顯示存儲過程的定義文本。
sp_rename:用於修改當前資料庫中用戶對象的名稱。
程序代碼
1. EXEC sp_renamedb 'userdb1', 'userdb2'
更改資料庫的名稱,由userdb1更改為userdb2
2.EXEC sp_rename 'user_log','用戶登錄表'
更改當前資料庫表的名稱,由user_log,改為'用戶登錄表'
EXEC sp_rename 'user_info.user_name', '用戶名','column'
將user_info表的'user_name'列重命名為'用戶名'
3.EXEC sp_detach_db 'pubs', 'true'
sp_detach_db
從伺服器分離資料庫,並可以選擇在分離前在所有的表上運行 Update STATISTICS。
4. 將資料庫附加到伺服器
EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'
5. 將只有一個數據文件的資料庫附加到當前伺服器
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
----------------------------------------------
SQL中的注釋
在SQL Server中,可以使用兩種類型的注釋字元:一種是ANSI標準的注釋符「--」,它用於單行注釋;另一種是與C語言相同的程序注釋符號,即「/* */」。
SQL中的變數
Transact-SQL語言中有兩種形式的變數,一種是用戶自己定義的局部變數,另外一種是系統提供的全局變數。
3.數據控制語言(DCL)
數據控制語言(DCL)是用來設置或者更改資料庫用戶或角色許可權的語句,這些語句包括GRANT、DENY、REVOKE等語句,在默認狀態下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成員才有權利執行數據控制語言。
GRANT語句是授權語句,它可以把語句許可權或者對象許可權授予給其他用戶和角色。
DENY語句用於拒絕給當前資料庫內的用戶或者角色授予許可權,並防止用戶或角色通過其組或角色成員繼承許可權。
REVOKE語句是與GRANT語句相反的語句,它能夠將以前在當前資料庫內的用戶或者角色上授予或拒絕的許可權刪除,但是該語句並不影響用戶或者角色從其他角色中作為成員繼承過來的許可權。
----------------------------------------------
4. 系統存儲過程
系統存儲過程是SQL Server系統創建的存儲過程,它的目的在於能夠方便地從系統表中查詢信息,或者完成與更新資料庫表相關的管理任務或其它的系統管理任務。系統存儲過程可以在任意一個資料庫中執行。系統存儲過程創建並存放於系統資料庫master中,並且名稱以sp_或者xp_開頭。
sp_addtype:用於定義一個用戶定義數據類型。
sp_configure:用於管理伺服器配置選項設置。
xp_sendmail:用於發送電子郵件或尋呼信息。
sp_stored_proceres:用於返回當前資料庫中的存儲過程的清單。
sp_help:用於顯示參數清單和其數據類型。
sp_depends:用於顯示存儲過程依據的對象或者依據存儲過程的對象。
sp_helptext:用於顯示存儲過程的定義文本。
sp_rename:用於修改當前資料庫中用戶對象的名稱。
程序代碼
1. EXEC sp_renamedb 'userdb1', 'userdb2'
更改資料庫的名稱,由userdb1更改為userdb2
2.EXEC sp_rename 'user_log','用戶登錄表'
更改當前資料庫表的名稱,由user_log,改為'用戶登錄表'
EXEC sp_rename 'user_info.user_name', '用戶名','column'
將user_info表的'user_name'列重命名為'用戶名'
3.EXEC sp_detach_db 'pubs', 'true'
sp_detach_db
從伺服器分離資料庫,並可以選擇在分離前在所有的表上運行 Update STATISTICS。
4. 將資料庫附加到伺服器
EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'
5. 將只有一個數據文件的資料庫附加到當前伺服器
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
----------------------------------------------
SQL中的注釋
在SQL Server中,可以使用兩種類型的注釋字元:一種是ANSI標準的注釋符「--」,它用於單行注釋;另一種是與C語言相同的程序注釋符號,即「/* */」。
SQL中的變數
Transact-SQL語言中有兩種形式的變數,一種是用戶自己定義的局部變數,另外一種是系統提供的全局變數。
局部變數:局部變數是一個能夠擁有特定數據類型的對象,它的作用范圍僅限制在程序內部。局部變數可以作為計數器來計算循環執行的次數,或是控制循環執行的次數。另外,利用局部變數還可以保存數據值,以供控制流語句測試以及保存由存儲過程返回的數據值等。局部變數被引用時要在其名稱前加上標志「@」,而且必須先用DECLARE命令定義後才可以使用。
全局變數:全局變數是SQL Server系統內部使用的變數,其作用范圍並不僅僅局限於某一程序,而是任何程序均可以隨時調用。全局變數通常存儲一些SQL Server的配置設定值和統計數據。用戶可以在程序中用全局變數來測試系統的設定值或者是Transact-SQL命令執行後的狀態值。
使用全局變數時應該注意以下幾點:
①全局變數不是由用戶的程序定義的,它們是在伺服器級定義的。
②用戶只能使用預先定義的全局變數。
③引用全局變數時,必須以標記符「@@」開頭。
④局部變數的名稱不能與全局變數的名稱相同,否則會在應用程序中出現不可預測的結果。
----------------------------------------------
SQL中的函數
在Transact-SQL語言中,函數被用來執行一些特殊的運算以支持SQL Server的標准命令。Transact-SQL 編程語言提供了三種函數:
一行集函數:行集函數可以在Transact-SQL語句中當作表引用。
二聚合函數:聚合函數用於對一組值執行計算並返回一個單一的值。
三標量函數:標量函數用於對傳遞給它的一個或者多個參數值進行處理和計算,並返回一個單一的值。
1.字元串函數
字元串函數包括:
基本字元串函數:UPPER、LOWER、SPACE、REPLICATE、STUFF、REVERSE、LTRIM、RTRIM。
字元串查找函數:CHARINDEX、PATINDEX。
長度和分析函數:DATALENGTH、SUBSTRING、RIGHT。
轉換函數:ASCH、CHAR、STR、SOUNDEX、DIFFERENCE。
基本字元串函數
UPPER:將小寫字元數據轉換為大寫的字元
LOWER:將大寫字元數據轉換為小寫的字元
SPACE:返回由重復的空格組成的字元串。如:space(2)則返回兩個空格
REPLICATE:以指定的次數重復字元表達式。
語法:REPLICATE ( character_expression , integer_expression )
如:Select REPLICATE(au_fname, 2) FROM authors,則重復兩遍每個作者的名字
STUFF:刪除指定長度的字元並在指定的起始點插入另一組字元。
語法:STUFF ( character_expression , start , length , character_expression )
(start是一個整形值,指定刪除和插入的開始位置。如果 start 或 length 是負數,則返回空字元串。如果 start 比第一個 character_expression 長,則返回空字元串。
length是一個整數,指定要刪除的字元數。如果 length 比第一個 character_expression 長,則最多刪除到最後一個 character_expression 中的最後一個字元。)
3.數據控制語言(DCL)
數據控制語言(DCL)是用來設置或者更改資料庫用戶或角色許可權的語句,這些語句包括GRANT、DENY、REVOKE等語句,在默認狀態下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成員才有權利執行數據控制語言。
GRANT語句是授權語句,它可以把語句許可權或者對象許可權授予給其他用戶和角色。
DENY語句用於拒絕給當前資料庫內的用戶或者角色授予許可權,並防止用戶或角色通過其組或角色成員繼承許可權。
REVOKE語句是與GRANT語句相反的語句,它能夠將以前在當前資料庫內的用戶或者角色上授予或拒絕的許可權刪除,但是該語句並不影響用戶或者角色從其他角色中作為成員繼承過來的許可權。
----------------------------------------------
4. 系統存儲過程
系統存儲過程是SQL Server系統創建的存儲過程,它的目的在於能夠方便地從系統表中查詢信息,或者完成與更新資料庫表相關的管理任務或其它的系統管理任務。系統存儲過程可以在任意一個資料庫中執行。系統存儲過程創建並存放於系統資料庫master中,並且名稱以sp_或者xp_開頭。
sp_addtype:用於定義一個用戶定義數據類型。
sp_configure:用於管理伺服器配置選項設置。
xp_sendmail:用於發送電子郵件或尋呼信息。
sp_stored_proceres:用於返回當前資料庫中的存儲過程的清單。
sp_help:用於顯示參數清單和其數據類型。
sp_depends:用於顯示存儲過程依據的對象或者依據存儲過程的對象。
sp_helptext:用於顯示存儲過程的定義文本。
sp_rename:用於修改當前資料庫中用戶對象的名稱。
程序代碼
1. EXEC sp_renamedb 'userdb1', 'userdb2'
更改資料庫的名稱,由userdb1更改為userdb2
2.EXEC sp_rename 'user_log','用戶登錄表'
更改當前資料庫表的名稱,由user_log,改為'用戶登錄表'
EXEC sp_rename 'user_info.user_name', '用戶名','column'
將user_info表的'user_name'列重命名為'用戶名'
3.EXEC sp_detach_db 'pubs', 'true'
sp_detach_db
從伺服器分離資料庫,並可以選擇在分離前在所有的表上運行 Update STATISTICS。
4. 將資料庫附加到伺服器
EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'
5. 將只有一個數據文件的資料庫附加到當前伺服器
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
----------------------------------------------
SQL中的注釋
在SQL Server中,可以使用兩種類型的注釋字元:一種是ANSI標準的注釋符「--」,它用於單行注釋;另一種是與C語言相同的程序注釋符號,即「/* */」。
SQL中的變數
Transact-SQL語言中有兩種形式的變數,一種是用戶自己定義的局部變數,另外一種是系統提供的全局變數。
局部變數:局部變數是一個能夠擁有特定數據類型的對象,它的作用范圍僅限制在程序內部。局部變數可以作為計數器來計算循環執行的次數,或是控制循環執行的次數。另外,利用局部變數還可以保存數據值,以供控制流語句測試以及保存由存儲過程返回的數據值等。局部變數被引用時要在其名稱前加上標志「@」,而且必須先用DECLARE命令定義後才可以使用。
全局變數:全局變數是SQL Server系統內部使用的變數,其作用范圍並不僅僅局限於某一程序,而是任何程序均可以隨時調用。全局變數通常存儲一些SQL Server的配置設定值和統計數據。用戶可以在程序中用全局變數來測試系統的設定值或者是Transact-SQL命令執行後的狀態值。
使用全局變數時應該注意以下幾點:
①全局變數不是由用戶的程序定義的,它們是在伺服器級定義的。
②用戶只能使用預先定義的全局變數。
③引用全局變數時,必須以標記符「@@」開頭。
④局部變數的名稱不能與全局變數的名稱相同,否則會在應用程序中出現不可預測的結果。
----------------------------------------------
SQL中的函數
在Transact-SQL語言中,函數被用來執行一些特殊的運算以支持SQL Server的標准命令。Transact-SQL 編程語言提供了三種函數:
一行集函數:行集函數可以在Transact-SQL語句中當作表引用。
二聚合函數:聚合函數用於對一組值執行計算並返回一個單一的值。
三標量函數:標量函數用於對傳遞給它的一個或者多個參數值進行處理和計算,並返回一個單一的值。
1.字元串函數
字元串函數包括:
基本字元串函數:UPPER、LOWER、SPACE、REPLICATE、STUFF、REVERSE、LTRIM、RTRIM。
字元串查找函數:CHARINDEX、PATINDEX。
長度和分析函數:DATALENGTH、SUBSTRING、RIGHT。
轉換函數:ASCH、CHAR、STR、SOUNDEX、DIFFERENCE。
基本字元串函數
UPPER:將小寫字元數據轉換為大寫的字元
LOWER:將大寫字元數據轉換為小寫的字元
SPACE:返回由重復的空格組成的字元串。如:space(2)則返回兩個空格
REPLICATE:以指定的次數重復字元表達式。
語法:REPLICATE ( character_expression , integer_expression )
如:Select REPLICATE(au_fname, 2) FROM authors,則重復兩遍每個作者的名字
STUFF:刪除指定長度的字元並在指定的起始點插入另一組字元。
語法:STUFF ( character_expression , start , length , character_expression )
(start是一個整形值,指定刪除和插入的開始位置。如果 start 或 length 是負數,則返回空字元串。如果 start 比第一個 character_expression 長,則返回空字元串。
length是一個整數,指定要刪除的字元數。如果 length 比第一個 character_expression 長,則最多刪除到最後一個 character_expression 中的最後一個字元。)
REVERSE:反轉字元串Select REVERSE('abcd') 則返回『dcba』
字元串查找函數
參考:http://www.badguy.name/article.asp?id=93
長度和分析函數
DATALENGTH :返回任何錶達式所佔用的位元組數。
SUBSTRING:參考http://www.badguy.name/article.asp?id=105
LEFT:返回從字元串左邊開始指定個數的字元。
RIGHT:返回從字元串左邊開始指定個數的字元。Select RIGHT(au_fname, 5) FROM authors
2.日期和時間函數
datepart
示例:
3.數學函數
數學函數用於對數字表達式進行數學運算並返回運算結果。 常用的有:CEILING()、FLOOR()、ROUND()函數
4.轉換函數
一般情況下,SQL Server會自動處理某些數據類型的轉換。例如,如果比較 char 和 datetime 表達式、smallint 和 int 表達式、或不同長度的 char 表達式,SQL Server 可以將它們自動轉換,這種轉換被稱為隱性轉換。但是,無法由SQL Server自動轉換的或者是SQL Server自動轉換的結果不符合預期結果的,就需要使用轉換函數做顯示轉換。轉換函數有兩個:CONVERT和CAST。
CAST ( expression AS data_type )
CONVERT函數允許用戶把表達式從一種數據類型轉換成另一種數據類型,還允許把日期轉換成不同的樣式。其語法形式為:
CONVERT (data_type[(length)],expression [,style])
流程式控制制語句是指那些用來控製程序執行和流程分支的命令,在SQL Server 2000中,流程式控制制語句主要用來控制SQL語句、語句塊或者存儲過程的執行流程。
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
BEGIN
{ sql_statement
| statement_block }
END
http://www.badguy.name/article.asp?id=702
『肆』 SQL語言分類有哪幾種分別都對應著哪些關鍵字都整理在這里了
本文是mysql系列之第三篇文章 ,主要介紹常用的SQL語句 ,具體如下 ,若要查看mysql客戶端工具的使用,請見:mysql系列之一文詳解Navicat工具的使用(二)
1.表(Table )
資料庫中的表與我們日常生活中使用的表格類似,它也是由行(Row) 和列(Column)組成的。列由同類的信息組成,每列又稱為一個欄位,每列的標題稱為欄位名。行包括了若干列信息項。一行數據稱為一個或一條記錄,它表達有一定意義的信息組合。一個資料庫表由一條或多條記錄組成,沒有記錄的表稱為空表。每個表中通常都有一個主關鍵字,用於惟一地確定一條記錄。
2.索引(Index)
索引是根據指定的資料庫列表建立起來的順序。它提供了快速訪問數據的途徑,並且可監督表的數據,使其索引所指向的列中的數據不重復。
3.視圖(View)
視圖看上去同表似乎一模一樣,具有一組命名的欄位和數據項,但它其實是一個虛擬的表,在資料庫中並不實際存在。該視圖是由查詢資料庫表產生的,它限制了用戶能看到和修改的數據。由此可見,視圖可以用來控制用戶對數據的訪問,並能簡化數據的顯示,即通過視圖只顯示那些需要的數據信息。
4.圖表(Diagram)
圖表其實就是資料庫表之間的關系示意圖。利用它可以編輯表與表之間的關系。
5.預設值(Default)
預設值是當在表中創建列或插入數據時,對沒有指定其具體值的列或列數據項賦予事先設定好的值。
6.規則(Rule)
規則是對資料庫表中數據信息的限制。它限定的是表的列。
7.觸發器(Trigger)
觸發器是一個用戶定義的SQL事務命令的集合。當對一個表進行插入、更改、刪除時,這組命令就會自動執行。
8.存儲過程(Stored Procere)
存儲過程是為完成特定的功能而匯集在一起的一組SQL 程序語句,經編譯後存儲在資料庫中的SQL 程序。
9.用戶(User)
所謂用戶就是有許可權訪問資料庫的人。用戶分為:管理員用戶和普通用戶。管理用戶可對資料庫進行修改刪除,而普通用戶只能進行閱讀查看等操作。
10. 總結
針對以上的對象 ,我們主要抽取其每個對象的關鍵字 ,因為這些關鍵字都會在後面的sql語句用到 。
而以上的DDL語言多是對這些對象的操作,而對象本身又具有增、刪、改、查特性 。 所以 ,DDL語言多是對對象本身的增刪改查操作 ,下面就具體的介紹每個關鍵字的SQL實現 。
創建資料庫:
創建表:
創建視圖:
創建索引:
創建觸發器:
創建存儲過程
創建用戶:
修改表名:
以下主要是對表的列做出的修改:
增加一列:
刪除列
重命名列
修改列的類型名稱
添加主鍵:
修改主鍵:
刪除主鍵:
添加索引
刪除語句比較簡單,具體如下
AS作用和用法
DISTINCT關鍵字
說明 : where後面的條件語句 ,其實並非這么簡單 ,它是非常靈活且強大的 ,這里我們先拆解條件語句的一部分 。
條件語句 由三部分組成,分別是 : 欄位 操作符 值 ,這三部分其實都非常靈活 ,都可以有不同情況,下面主要解決操作符的情況,操作符主要包括如下幾種情況:
邏輯運算符主要包括邏輯與,邏輯或,非 三種情況 。
示例:
是指使用關鍵字like進行的查詢
當然 ,分組後也可以進行數據篩選 ,它使用到的關鍵字having ,和where有點相似,但又不完全一樣 。
where和having的區別:
grant主要是授權用戶許可權 ,主要控制以下訪問許可權 :
revoke正好與grant相反 ,是回收許可權(取消許可權) 。
commit和rollback主要用於事務處理 。使用事務有兩種方式,分別為隱式事務和顯式事務。隱式事務實際上就是自動提交,在MySQL中,自動提交(autocommit)在支持事務(transaction)的引擎中,若autocommit=true,則不需要commit的情況下直接提交語句形成永久性修改,Mysql默認打開autocommit,也可以通過配置設置。