資料庫小結1

来源:https://www.cnblogs.com/aijiao/archive/2018/08/31/9563767.html
-Advertisement-
Play Games

一、基礎 1、創建資料庫 CREATE DATABASE database-name 2、刪除資料庫 drop database dbname 3、備份sql server 創建 備份數據的 device USE master EXEC sp_addumpdevice 'disk',’testBac ...


 一、基礎

1、創建資料庫

CREATE DATABASE database-name

2、刪除資料庫

 drop database dbname

3、備份sql server

 --- 創建 備份數據的 device

USE master

EXEC sp_addumpdevice 'disk',’testBack', :\mssql7backup\MyNwind_1.dat' --- 開始 備份

BACKUP DATABASE pubs TO testBack

4、創建新表

 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

例子:

CREATE TABLE tableA(

    [id] [int] NOT NULL PRIMARY KEY,

    [Name][nvarchar](50) NOT NULL,

    [Age] [int] NOT NULL,)

根據已有的表創建新表:

A:create table tab_new like tab_old (使用舊表創建新表SQL server2008不可以)

B:create table tab_new as select col1,col2… from tab_old definition only

C: select *into  tableAnew from tableA(複製表結構和表數據。舊表創建新表無主鍵。SQL server2008R2可以用 親測)

D:select * into table3 from tableA where 1=2;(複製表數據,主鍵複製不過去)

E: insert into table3 select * from tableA where id=1;(如果表存在,導入數據)

F: select * into table5 from tableA where 1<>1;(舊表創建新表,只有表結構)

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

註:索引是不可更改的,想更改必須刪除重新建。

9、創建視圖:

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 ’%value1%’ ---like的語法很精妙,查資料

排序:select * from table1 order by field1,field2 [desc]

總數:select count as totalcount from table,

求和: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。

B: EXCEPT 運算符

EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行並消除所有重覆行而派生出一個結果表。當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重覆行。

C: INTERSECT 運算符

NTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行並消除所有重覆行而派生出一個結果表。當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重覆行。 註:使用運算詞的幾個查詢結果行必須是一致的

12、使用外連接

A、left (outer) join:

左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。 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

     在使用left join時,on和where條件的區別如下:1、 on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。可以理解為,左表記錄保留,右表不滿足條件的填寫為null 2、where條件是在臨時表生成好後,再對臨時表進行過

濾的條件。這時已經沒有left join的含義(必須返回左邊表的記錄)了,條件不為真的就全部過濾掉。

 

B:right (outer) join:

右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有

行。

C:full/cross (outer) join:

全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。

13、分組:Group by:

一張表,一旦分組 完成後,查詢後只能得到組相關的信息。

組相關的信息:(統計信息) count,sum,max,min,avg 分組的標準)

在SQLServer中分組時:不能以text,ntext,image類型的欄位作為分組依據

在selecte統計函數中的欄位,不能和普通欄位放在一起;

14、對資料庫進行操作:

  分離資料庫:EXEC sp_detach_db DatabaseName

附加資料庫:sp_attach_db後接表明,

需要完整的路徑名

15.如何修改資料庫的名稱:

sp_renamedb 'old_name', 'new_name’

16、左匹配、模糊、右匹配、全匹配

左匹配:左邊開始是欄位條件的比如1左匹配,就是1開頭的欄位

右匹配:右邊開始是條件的

17、SQL模糊查詢條件的四種匹配模式

①、%:表示任意0個或多個字元。可匹配任意類型和長度的字元,有些情況下若是中文,請使用兩個百分號(%%)表示:

例如 SELECT * FROM [user] WHERE u_name LIKE '%三%'
將會把u_name為“張三”,“張貓三”、“三腳貓”,“唐三藏”等等有“三”的記錄全找出來。

再例如需要找出u_name中既有“三”又有“貓”的記錄,請使用and條件
SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%貓%'

再例如 SELECT * FROM [user] WHERE u_name LIKE '%三%貓%'
雖然能搜索出“三腳貓”,但不能搜索出符合條件的“張貓三”。備註:%三:表示左匹配。三%:表示右匹配。%三%:表示模糊查詢

②、_ : 表示任意單個字元。匹配單個任意字元,它常用來限製表達式的字元長度語句:

例如 SELECT * FROM [user] WHERE u_name LIKE '_三_'
只找出“唐三藏”,這樣u_name為三個字且中間一個字是“三”的;

再例如 SELECT * FROM [user] WHERE u_name LIKE '三__'
只找出“三腳貓”這樣name為三個字且第一個字是“三”的;

③、[ ] :表示括弧內所列字元中的一個(類似正則表達式)。指定一個字元、字元串或範圍,要求所匹配對象為它們中的任一個。

例如 SELECT * FROM [user] WHERE u_name LIKE '[張李王]三'
將找出“張三”、“李三”、“王三”(而不是“張李王三”);

再例如 [ ] 內有一系列字元(01234、abcde之類的)則可略寫為“0-4”、“a-e”
SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
將找出“老1”、“老2”、……、“老9”;

如果要找“-”字元請將其放在首位:'張三[-1-9]';

Oracle 10g以上的版本用法為:

select * from flow_user where regexp_like(username, '[張王李]飛')

④、[^ ] :表示不在括弧所列之內的單個字元。其取值和 [] 相同,但它要求所匹配對象為指定字元以外的任一個字元。

例如 SELECT * FROM [user] WHERE u_name LIKE '[^張李王]三'
將找出不姓“張”、“李”、“王”的“趙三”、“孫三”等;
再例如 SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]'
將排除“老1”到“老4”,尋找“老5”、“老6”、……、“老9”。

註:oracle like 不支持正則,你可以使用支持like的正則regexp_like

⑤、查詢內容包含通配符時

* 表示查找的是所有信息,例如select * from tbl_user 

由於通配符的緣故,導致我們查詢特殊字元“%”、“_”、“[”的語句無法正常實現,而把特殊字元用“[ ]”括起便可正常查詢。據此我們寫出以下函數:
function sqlencode(str)
str=replace(str,"[","[[]") '此句一定要在最前
str=replace(str,"_","[_]")
str=replace(str,"%","[%]")

sqlencode=str
end function

註:
在查詢前將待查字元串先經該函數處理即可,並且在網頁上連接資料庫用到這類的查詢語句時侯要註意:
例如 Select * FROM user Where name LIKE '老[^1-4]'

18、select isnull(max(欄位1+1),1) from table

 從table中查詢“欄位1+1”的最大值,如果“欄位1+1”的最大值為null,則值取1,否則取“欄位1+1”的最大值。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 使用ntsd程式 (如果安裝過VS,在VS的安裝目錄下,比如“C:\Program Files (x86)\Debugging Tools for Windows (x86)\ntsd.exe”,也可以在這裡下載) 兩種方法 一種是使用進程的ID號,將PID換成對應進程ID號即可 一種是使用進程的名 ...
  • Linux日誌查找方法 適用於測試,開發,運維人員,用來查找Linux伺服器問題的一般方法,比較實用,如果有更好的辦法可以一塊討論,歡迎大神們來指導哈!!! 進入正題 第一步、通過Xshell登錄伺服器 鏈接方法—找度娘、開發同事#最好是自己找度娘,自給自足豐衣足食嘛賬號、密碼—找技術老大 第二步、 ...
  • 通過 Certbot 為 nginx 開啟https支持。 環境 CentOS 7.1 python2.x(這玩意系統里本來就有) 安裝Nginx 順手啟動: 順手設置開機啟動: 嗯,就完成了。 至於配置文件,會在後面設置。 配置https 此處我們使用 Let's Encrypt 提供的證書。且為 ...
  • 研究nginx優化時反覆安裝清理nginx,為方便做了一個簡單部署腳本,用的最新穩定版1.14.0,預設路徑,加入systemd系統進程管理中,可以通過systemd管理nginx的啟動、終止、重載、狀態、開機自啟等. 需要再次覆蓋nginx時,用awk找到nginx的進程然後kill掉,再次執行安 ...
  • 阿裡雲yum源速度快而且穩定,下麵給出配置方法 打開centos的yum文件夾 cd /etc/yum.repos.d/ 用wget下載repo文件 wget http://mirrors.aliyun.com/repo/Centos-7.repo 備份系統原來的repo文件 mv CentOS-B ...
  • 使用場景 linux管理員忘記root密碼,需要進行找回操作。 註意事項:本文基於centos7環境進行操作,由於centos的版本是有差異的,繼續之前請確定好版本。 步驟 一、重啟系統,在開機過程中,快速按下鍵盤上的方向鍵↑和↓。目的是告知引導程式,我們需要在引導頁面選擇不同的操作,以便讓引導程式 ...
  • 本節重點: 如何找出兩張表之間的關係 表的三種關係 一、介紹 因為有foreign key的約束,使得兩張表形成了三種了關係: 多對一 多對多 一對一 二、重點理解如果找出兩張表之間的關係 三、表的三種關係 (1)書和出版社 一對多(或多對一):一個出版社可以出版多本書。看圖說話。 關聯方式:for ...
  • 一、錯誤日誌解析: (1) 【ERROR】1452:無法在外鍵的表插入參考主鍵沒有的數據 1452:無法在外鍵的表插入或更新參考主鍵沒有的數據。由於item_discovery.itemid欄位(外鍵)參考了items.itemid欄位(主鍵),當要在item_discovery表插數據時,如果it ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...