SQL 笔记
返回字符串中從左/右邊開始指定個數的字符
select left('wjshan0808',6)
select right('wjshan0808',4)
select left([Column_expression],1) 返回字符、二進制、文本或圖像表達式的一部分
select substring('wjshan0808',7,4) /*索引從0開始*/
select substring([Column_expression],0,6) 指定測試范圍
birthday not between '1970' and '1975-02-06 00:00:00.001' 確定給定的值是否與子查詢或列表中的值匹配,使用 NOT IN 可以對返回值取反
where classid not in (4,5,6) 刪除指定長度的字符,并在指定的起點處插入另一組字符
select stuff( 'wjshna0808',5,2,'an')/*索引從1開始*/
stuff([Column_Expression],1,2,'$') 返回從指定集中刪除了重復元組后得到的集
select distinct(Column_Expression) from Table_Name
select distinct Column_Expression from Table_Name 創建 uniqueidentifier 類型的唯一值
select newid() /*3E1E14FB-2558-41E7-B147-78A2A1FEAADE*/ 分頁方案
/*每頁5條 第二頁*/
declare @pageIndex int;
set @pageIndex=2;
select top 5 * from student where studentid not in(select top (5*(@pageIndex-1)) studentid from student)
order by studentid asc
//多一個ID列
declare @pageSize int, @pageIndex int;
set @pageSize=5;
set @pageIndex=4; select * from (select row_number() over(order by studentid asc) as ID ,* from student) as T
where T.ID between @pageSize*(@pageIndex-1)+1 and @pageSize*@pageIndex
//整個student表
declare @pageSize int, @pageIndex int;
set @pageSize=5;
set @pageIndex=1;
select * from student where studentid
in( select studentid from (select studentid,row_number() over(order by studentid) as ID from student) as T where T.ID between @pageSize*(@pageIndex-1)+1 and @pageSize*@pageIndex
) 帶固定精度和小數位數的數值數據類型。 decimal[ (p[ , s] )] 和 numeric[ (p[ , s] )] 固定精度和小數位數。使用最大精度時,有效值從 - 10^38 +1 到 10^38 - 1。decimal 的 SQL-92 同義詞為 dec 和 dec(p, s)。numeric 在功能上等價于 decimal。p(精度)
最多可以存儲的十進制數字的總位數,包括小數點左邊和右邊的位數。該精度必須是從 1 到最大精度 38 之間的值。默認精度為 18。s(小數位數)
小數點右邊可以存儲的十進制數字的最大位數。小數位數必須是從 0 到 p 之間的值。僅在指定精度后才可以指定小數位數。默認的小數位數為 0;因此,0 <= s <= p。最大存儲大小基于精度而變化。——————————————————————將一種數據類型的表達式顯式轉換為另一種數據類型的表達式。CAST 和 CONVERT 提供相似的功能。
cast(studentno as numeric(18,0))+10 as 學號
SELECT CAST(10.3496847 AS money) CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
/*當前日期轉換為樣式 3,dd/mm/yy*/
select CONVERT(VARCHAR(12),GETDATE(), 3)DECLARE @myid uniqueidentifier
SET @myid = NEWID()
SELECT CONVERT(char(255), @myid) AS 'char' ? 確定特定字符串是否與指定模式相匹配。模式可以包含常規字符和通配符。模式匹配過程中,常規字符必須與字符串中指定的字符完全匹配。但是,通配符可以與字符串的任意部分相匹配。與使用 = 和 != 字符串比較運算符相比,使用通配符可使 LIKE 運算符更加靈活。如果任何一個參數都不屬于字符串數據類型,則 SQL Server 2005 Database Engine 會將其轉換為字符串數據類型(如果可能)。使用 ESCAPE 子句的模式匹配
可搜索包含一個或多個特殊通配符的字符串。例如,customers 數據庫中的 discounts 表可能存儲含百分號 (%) 的折扣值。若要搜索作為字符而不是通配符的百分號,必須提供 ESCAPE 關鍵字和轉義符。例如,一個樣本數據庫包含名為 comment 的列,該列含文本 30%。若要搜索在 comment 列中的任何位置包含字符串 30% 的任何行,請指定 WHERE comment LIKE '%30!%%' ESCAPE '!' 之類的 WHERE 子句。如果未指定 ESCAPE 和轉義符,則數據庫引擎 將返回包含字符串 30 的所有行。如果 LIKE 模式中的轉義符后面沒有字符,則該模式無效并且 LIKE 返回 FALSE。如果轉義符后面的字符不是通配符,則將放棄轉義符并將該轉義符后面的字符作為該模式中的常規字符處理。這包括百分號 (%)、下劃線 (_) 和左括號 ([) 通配符(如果它們包含在雙括號 ([ ]) 中)。另外,在雙括號字符 ([]) 內,可以使用轉義符并將插入符號 (^)、連字符 () 和右括號 (]) 轉義通配符 說明 示例
%包含零個或多個字符的任意字符串。WHERE title LIKE '%computer%' 將查找在書名中任意位置包含單詞 "computer" 的所有書名。_(下劃線)任何單個字符。WHERE au_fname LIKE '_ean' 將查找以 ean 結尾的所有 4 個字母的名字(Dean、Sean 等)。[ ]指定范圍 ([a-f]) 或集合 ([abcdef]) 中的任何單個字符。WHERE au_lname LIKE '[C-P]arsen' 將查找以 arsen 結尾并且以介于 C 與 P 之間的任何單個字符開始的作者姓氏,例如 Carsen、Larsen、Karsen 等。[^]不屬于指定范圍 ([a-f]) 或集合 ([abcdef]) 的任何單個字符。WHERE au_lname LIKE 'de[^l]%' 將查找以 de 開始并且其后的字母不為 l 的所有作者的姓氏。where loginid like '[a-d]%'在 mytbl2 表的列 c1 中查找精確字符串 10-15%
LIKE '%10-15!% off%' ESCAPE '!';
where address like '[^北]%' 返回一個整數值,指示兩個字符表達式的 SOUNDEX 值之間的差異。 select difference('wjshan0808','wjshan')/*4*/ 返回刪除前/后導空格后的字符表達式 select Ltrim([Column_Expression]) select ltrim(' 1 wjshan0808') select rtrim('wjshan0808 1 ') 將第一個字符串表達式中第二個給定字符串表達式的所有實例都替換為第三個表達式。 select replace([Column_Expression],[old_Expression],[new_Expression]) select replace('wjshan0909','0909','0808') 將大/小寫字符數據轉換為小/大寫字符數據后返回字符表達式 select lower([Column_Expression]) select upper([Column_Expression]) select lower('WJSHAN0808')/*wjshan0808*/ select upper('wjshan0808')/*WJSHAN0808*/ 返回指定字符串表達式的字符(而不是字節)數,其中不包含尾隨空格 select len('wjshan0808 ')/*10*/ 返回表示指定日期的指定日期部分的字符串 DATENAME ( datepart ,date ) datepart 是指定要返回的日期部分的參數。下表列出了 Microsoft SQL Server 2005 可識別的日期部分及其縮寫。日期部分 縮寫 year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww weekday dw hour hh minute mi, n second ss, s millisecond ms weekday (dw) 日期部分返回星期幾(如星期日、星期一等)。 select getdate()/*2015-01-14 14:20:08.260*/ SELECT DATENAME(month, GETDATE()) AS 'Month Name' /*01*/ SELECT DATENAME(dw, GETDATE()) AS 'Month Name' /*星期三*/ 返回跨兩個指定日期的日期邊界數和時間邊界數 DATEDIFF ( datepart , startdate , enddate ) enddate 減去 startdate。如果 startdate 晚于 enddate,則返回負值datediff(mm,[Column_Expression],getdate()) /*month_Value*/ 可應用于數據庫定義的用來定義排序規則的子句 /*姓氏筆畫排列*/ order by author collate chinese_prc_stroke_cs_as_ks_ws
where address like '[^北]%' 返回一個整數值,指示兩個字符表達式的 SOUNDEX 值之間的差異。 select difference('wjshan0808','wjshan')/*4*/ 返回刪除前/后導空格后的字符表達式 select Ltrim([Column_Expression]) select ltrim(' 1 wjshan0808') select rtrim('wjshan0808 1 ') 將第一個字符串表達式中第二個給定字符串表達式的所有實例都替換為第三個表達式。 select replace([Column_Expression],[old_Expression],[new_Expression]) select replace('wjshan0909','0909','0808') 將大/小寫字符數據轉換為小/大寫字符數據后返回字符表達式 select lower([Column_Expression]) select upper([Column_Expression]) select lower('WJSHAN0808')/*wjshan0808*/ select upper('wjshan0808')/*WJSHAN0808*/ 返回指定字符串表達式的字符(而不是字節)數,其中不包含尾隨空格 select len('wjshan0808 ')/*10*/ 返回表示指定日期的指定日期部分的字符串 DATENAME ( datepart ,date ) datepart 是指定要返回的日期部分的參數。下表列出了 Microsoft SQL Server 2005 可識別的日期部分及其縮寫。日期部分 縮寫 year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww weekday dw hour hh minute mi, n second ss, s millisecond ms weekday (dw) 日期部分返回星期幾(如星期日、星期一等)。 select getdate()/*2015-01-14 14:20:08.260*/ SELECT DATENAME(month, GETDATE()) AS 'Month Name' /*01*/ SELECT DATENAME(dw, GETDATE()) AS 'Month Name' /*星期三*/ 返回跨兩個指定日期的日期邊界數和時間邊界數 DATEDIFF ( datepart , startdate , enddate ) enddate 減去 startdate。如果 startdate 晚于 enddate,則返回負值datediff(mm,[Column_Expression],getdate()) /*month_Value*/ 可應用于數據庫定義的用來定義排序規則的子句 /*姓氏筆畫排列*/ order by author collate chinese_prc_stroke_cs_as_ks_ws
/*拼音排列*/
order by author collate chinese_prc_cs_as
?
從服務器分離數據庫,并可以選擇在分離前對所有表運行 UPDATE STATISTICS。語法 sp_detach_db [ @dbname= ] 'dbname' [ , [ @skipchecks= ] 'skipchecks' ] [ , [ @KeepFulltextIndexFile= ] 'KeepFulltextIndexFile' ] 參數 [ @dbname = ] 'dbname' 要分離的數據庫的名稱。dbname 的數據類型為 sysname,默認值為 NULL。 [ @skipchecks = ] 'skipchecks' 指定跳過還是運行 UPDATE STATISTIC。skipchecks 的數據類型為 nvarchar(10),默認值為 NULL。要跳過 UPDATE STATISTICS,請指定 true。要顯式運行 UPDATE STATISTICS,請指定 false。默認情況下,執行 UPDATE STATISTICS 以更新有關 Microsoft SQL Server 2005 Database Engine 中的表數據和索引數據的信息。對于要移動到只讀媒體的數據庫,執行 UPDATE STATISTICS 非常有用。[ @KeepFulltextIndexFile = ] 'KeepFulltextIndexFile' 指定在數據庫分離操作過程中不會刪除與正在被分離的數據庫關聯的全文索引文件。KeepFulltextIndexFile 的數據類型為 nvarchar(10),默認值為 true。如果 KeepFulltextIndexFile 為 NULL 或 false,則會刪除與數據庫關聯的所有全文索引文件以及全文索引的元數據。返回代碼值 0(成功)或 1(失敗)?
將數據庫附加到服務器。語法 sp_attach_db [ @dbname= ] 'dbname', [ @filename1= ] 'filename_n' [ ,...16 ]參數 [ @dbname= ] ' dbname ' 要附加到該服務器的數據庫的名稱。該名稱必須是唯一的。dbname 的數據類型為 sysname,默認值為 NULL。 [ @filename1= ] ' filename_n ' 數據庫文件的物理名稱,包括路徑。filename_n 的數據類型為 nvarchar(260),默認值為 NULL。最多可以指定 16 個文件名。參數名稱從 @filename1 開始,一直增加到 @filename16。文件名列表至少必須包括主文件。主文件中包含指向數據庫中其他文件的系統表。該列表還必須包括在數據庫分離之后移動的所有文件。返回代碼值 0(成功)或 1(失敗)示例 以下示例將 AdventureWorks 中的文件附加到當前服務器。 EXEC sp_attach_db @dbname = N'AdventureWorks', @filename1 = N'c:\Data\AdventureWorks_Data.mdf', @filename2 = N'c:\Data\AdventureWorks_log.ldf' ;cmd.CommandText = "sp_attach_db @dbname='" + txt1.Text + "',@filename1='"+ txt2.Text +"',@filename2='"+ txt3.Text +"'"; 備份數據庫 BACKUP DATABASE AdventureWorks TO DISK='C:\AdventureWorks1a.bak', DISK='C:\AdventureWorks2a.bak', DISK='C:\AdventureWorks3a.bak' MIRROR TO DISK='C:\AdventureWorks1b.bak', DISK='C:\AdventureWorks2b.bak', DISK='C:\AdventureWorks3b.bak' WITH FORMAT 恢復數據庫 cmd.CommandText = @"RESTORE DATABASE " + txt1.Text + " FROM disk= '" + txt2.Text + "' WITH REPLACE";?
轉載于:https://www.cnblogs.com/wjshan0808/p/4223738.html
總結
- 上一篇: 15种区块链共识算法全面详解
- 下一篇: 数据结构C语言实现顺序表——增删查改操作