Ms SQL是指微軟的SQLServer數據庫服務器,它是一個數據庫平臺,提供數據庫的從服務器到終端的完整的解決方案,其中數據庫服務器部分,是一個數據庫管理系統,用于建立、使用和維護數據庫。
基本介紹
SQL?Server一開始并不是微軟自己研發的產品,而是當時為了要和IBM競爭時,與Sybase合作所產生的,其最早的發展者是Sybase,同時微軟也和Sybase合作過?SQL?Server?4.2版本的研發,微軟亦將SQL?Server?4.2移植到Windows?NT(當時為3.1版),在與Sybase終止合作關系后,自力開發出SQL?Server?6.0版,往后的SQL?Server即均由微軟自行研發。
產品背景
在與微軟終止合作關系后,sybase在Windows?NT上的數據庫產品原本稱為Sybase?SQL?Server,后來改為現在的Sybase?Adaptive?Server。
1、創建數據庫 CREATE?DATABASE?database-name2、刪除數據庫 drop?database?dbname3、備份sql?server ---?創建?備份數據的?device USE?master EXEC?sp_addumpdevice?'disk','testBack','c:\mssql7backup\backSQLdat' ---?開始?備份 BACKUP?DATABASE?pubs?TO?testBack 4、創建新表create?table?tabname(col1?type1?[not?null]?[primary?key],col2?type2?[not?null],..) 根據已有的表創建新表: A:create?table?tab_new?like?tab_old?(使用舊表創建新表) B:create?table?tab_new?as?select?col1,col2…?from?tab_old?definition?only 5、刪除新表: drop?table?tabname 6、增加一個列: Alter?table?tabname?add?column?col?type 注:列增加后將不能刪除。DB2數據庫中列加上后數據類型也不能改變,唯一能改變的是增加varchar類型的長度。 7、添加主鍵: Alter?table?tabname?add?primary?key(col) 說明:刪除主鍵:Alter?table?tabname?drop?primary?key(col) 8、創建索引:create?[unique]?index?idxname?on?tabname(col….) 刪除索引:drop?index?idxname 注:索引是不可更改的,想更改必須刪除重新建。有些語法會讓Microsoft SQL Server失效如:select?*from?aa?where?aa?like?'%gg%'等,索引的合理利用將大大提高mssql對大數據量的處理效率?! ?、創建視圖:create?view?viewname?as?select?statement 刪除視圖:drop?view?viewname 10、幾個簡單的基本的SQL 選擇:select?*?from?table1?where?范圍 插入:insert?into?table1(field1,field2)?values(value1,value2)刪除:delete?from?table1?where?范圍 更新:update?table1?set?field1=value1?where?范圍 查找:select?*?from?table1?where?field1?like?’%雷鋒%’?---like的語法很精妙,查資料!不過會讓索引失效,而select?*?from?table1?where?field1?like?’雷鋒%’?這句的的話索引是有效的!排序:select?*?from?table1?order?by?field1,field2?[desc] 總數:select?計數?*?as?totalcount?from?table1 求和:select?sum(field1)?as?sumvalue?from?table1 平均:select?avg(field1)?as?avgvalue?from?table1 最大:select?max(field1)?as?maxvalue?from?table1 最小:select?min(field1)?as?minvalue?from?table1 11、幾個高級查詢運算詞 A:UNION?運算符 UNION?運算符通過組合其他兩個結果表(例如?TABLE1?和?TABLE2)并消去表中任何重復行而派生出一個結果表。當?ALL?隨?UNION?一起使用時(即?UNION?ALL),不消除重復行。兩種情況下,派生表的每一行不是來自?TABLE1?就是來自?TABLE2?! :EXCEPT?運算符 EXCEPT?運算符通過包括所有在?TABLE1?中但不在?TABLE2?中的行并消除所有重復行而派生出一個結果表。當?ALL?隨?EXCEPT?一起使用時?(EXCEPT?ALL),不消除重復行?! :intersect?運算符 INTERSECT?運算符通過只包括?TABLE1?和?TABLE2?中都有的行并消除所有重復行而派生出一個結果表。當?ALL?隨?INTERSECT?一起使用時?(INTERSECT?ALL),不消除重復行。注:使用運算詞的幾個查詢結果行必須是一致的?! ?2、使用外連接 A、left?outer?join:左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行?! ?a href="/hebeideji/6991721846561056604.html">SQL:?select?a.a,a.b,a.c,b.c,b.d,b.f?from?a?LEFT?OUT?JOIN?b?ON?a.a?=?b.c B:right?outer?join: 右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。 C:full?outer?join:全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
1.說明:復制表(只復制結構,源表名:a?新表名:b)?(Access可用)法一:select?*?into?b?from?a?where?1<>1 法二:select?top?0?*?into?b?from?a 2.說明:拷貝表(拷貝數據,源表名:a?目標表名:b)?(Access可用) insert?into?b(a,b,c)?select?d,e,f?from?a; 3.說明:跨數據庫之間表的拷貝(具體數據使用絕對路徑)?(Access可用) insert?into?b(a,b,c)?select?d,e,f?from?b?in?‘具體數據庫’?where?條件 例子:..from?b?in?'"&Server.MapPath(".")&"\數據mdb"?&"'?where.. 4.說明:子查詢(表名1:a?表名2:b) select?a,b,c?from?a?where?a?IN?(select?d?from?b)?或者:?select?a,b,c?from?a?where?a?IN?(1,2,3) 5.說明:顯示文章、提交人和最后回復時間 select?a.title,a.username,b.adddate?from?table?a,(select?max(adddate)?adddate?from?table?where?table.title=a.title)?b 6.說明:外連接查詢(表名1:a?表名2:b) select?a.a,a.b,a.c,b.c,b.d,b.f?from?a?LEFT?OUT?JOIN?b?ON?a.a?=?b.c 7.說明:在線視圖查詢(表名1:a) select?*?from?(SELECT?a,b,c?FROM?a)?T?where?t.a?>?1; 8.說明:between的用法,between限制查詢數據范圍時包括了邊界值,not?between不包括 select?*?from?table1?where?時間?between?time1?and?time2 select?a,b,c,from?table1?where?a?not?between?數值1?and?數值2 9.說明:in?的使用方法 select?*?from?table1?where?a?[not]?in?(‘值1’,’值2’,’值4’,’值6’) 10.說明:兩張關聯表,刪除主表中已經在副表中沒有的信息 delete?from?table1?where?not?exists?(select?*?from?table2?where?table1.field1=table2.field1) 11.說明:四表聯查問題: select?*?from?a?left?inner?join?b?on?a.a=b.b?right?inner?join?c?on?a.a=c.c?inner?join?d?on?a.a=d.d?where?..... 12.說明:日程安排提前五分鐘提醒 SQL:?select?*?from?日程安排?where?DateDiff('minute',f開始時間,getdate())>5 13.說明:一條sql?語句搞定數據庫分頁 select?top?10?b.*?from?(select?top?20?主鍵字段,排序字段?from?表名?order?by?排序字段?desc)?a,表名?b?where?b.主鍵字段?=?a.主鍵字段?order?by?a.排序字段 14.說明:前10條記錄 select?top?10?*?form?table1?where?范圍 15.說明:選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用于論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.) select?a,b,c?from?tablename?ta?where?a=(select?max(a)?from?tablename?tb?where?tb.b=ta.b) 16.說明:包括所有在?TableA?中但不在?TableB和TableC?中的行并消除所有重復行而派生出一個結果表(select?a?from?tableA)?except?(select?a?from?tableB)?except?(select?a?from?tableC) 17.說明:隨機取出10條數據 select?top?10?*?from?tablename?order?by?newid() 18.說明:隨機選擇記錄 select?newid() 19.說明:刪除重復記錄 Delete?from?tablename?where?id?not?in?(select?max(id)?from?tablename?group?by?col1,col2,...) 20.說明:列出數據庫里所有的表名 select?name?from?sysobjects?where?type='U' 21.說明:列出表里的所有的 select?name?from?syscolumns?where?id=object_id('TableName') 22.說明:列示type、vender、pcs字段,以type字段排列,case可以方便地實現多重選擇,類似select?中的case?! elect?type,sum(case?vender?when?'A'?then?pcs?else?0?end),sum(case?vender?when?'C'?then?pcs?else?0?end),sum(case?vender?when?'B'?then?pcs?else?0?end)?FROM?tablename?group?by?type
Microsoft SQL Server轉換MySQL的方法
1.導表結構 使用MySQL生成create腳本的方法。找到生成要導出的腳本,按MySQL的語法修改一下到MySQL數據庫中創建該表的列結構什么的?! ?.導表數據 在MSSQL端使用bcp導出文本文件: bcp?“Select?*?FROM?dbname.dbo.tablename;”?queryout?tablename.txt?-c?-Slocalhost\db2005?-Usa 其中”"中是要導出的SQL,-c指定使用\t進行字段分隔,使用\n進行記錄分隔,-S指定數據庫服務器及實例,-U指定用戶名,-P指定密碼. 在MySQL端使用mysqlimport?導入文本文件到相應表中 mysqlimport?-uroot?-p?databasename?/home/test/tablename.txt 其中-u指定用戶名,-p指定密碼,databasename指定數據庫名稱,表名與文件名相同。
使用MSSQL2005無法正常備份 當我們在裝好MSsql數據庫庫后,想通過自動備份作業方式來保護好自己的數據庫時,常常遇到無法正常開啟作業。下面是解決方案: 1、打開SQL?Server?Management?Studio 2、啟動SQL?Server代理 3、點擊作業->新建作業. 4、"常規"中輸入作業的名稱 5、新建步驟,類型選Transact-SQL,在下面的命令中輸入下面語句 DECLARE?@strPath?nvarchar(200) set?@strPath?=?convert(NVARCHAR(19),getdate(),120) set?@strPath?=?REPLACE(@strPath,?':'?,?'.') set?@strPath?=?'E:\數據_db\MSSQL.1\MSSQL\Backup'?+?@strPath?+?'.bak'?(備份好的存入數據庫路徑【可自行更改】) BACKUP?DATABASE?[MY_Data]?(數據庫名,你務必與你數據庫的數據名稱一致)TO?DISK?=?@strPath?WITH?NOINIT?,?NOUNLOAD?,?NOSKIP?,?STATS?=?10,?NOFORMAT 6、添加計劃,設置頻率,時間等?;景岩陨系牧鞒袒镜奶顚懲辏涂梢哉W鳂I了。
參考資料 >