T-Sql常用語句


1.用bcp導出txt數據

DECLARE
@bcp VARCHAR(100),
@date VARCHAR(10)

BEGIN
SET @date = REPLACE(CONVERT(VARCHAR, GETDATE() - 2, 111), '/', '-');

SET @bcp = 'bcp WebStat.dbo.[PV_HIS_' + @date + '] out \pvtxt\PV_HIS_' + @date + '.txt -c -T';

--PRINT @bcp;
-- 執行bcp命令
EXEC xp_cmdshell @bcp;

END;

2.動態執行sql

declare @sql varchar(4000)

set @sql='select name' select @sql=@sql+',isnull(sum(case subject when '''+subject+''' then result end),0)['+subject+']'

from (select distinct subject from CJ) as a select @sql=@sql+' from CJ group by Name'

print @sql -- 打印

declare @test varchar(300)

set @test = 'select getdate()'

print @test

exec(@test) --執行sql語句

3. 系統sql語句

--0.查詢數據庫中所有對象

select * from yourdb.sys.all_objects

--查詢數據庫中所有的表

select * from yourdb.sys.tables

select * from yourdb.sys.databases

--1 查詢所有的數據庫名稱

select Name FROM Master.dbo.SysDatabases order BY Name

--2 獲取所有表名

--XType='U':表示所有用戶表;

--XType='S':表示所有系統表;

select name from sysobjects where xtype='U' order by name

--注意:一般情況只需要type = 'U',但有時候會有系統表混在其中

--不知道什么原因,加上后面一句后就能刪除這些系統表了

SELECT name FROM sysobjects WHERE type = 'U' AND sysstat = '83'

select * from sysobjects where [type]='u' and xtype='u';

select * from systypes where xusertype=56

--3 獲取所有字段名:

select name from syscolumns where id=OBJECT_ID('city') –或視圖名

SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length

FROM syscolumns, systypes

WHERE syscolumns.xusertype = systypes.xusertype

AND syscolumns.id = object_id('tableName')

 

4.常用DDL語句

--創建數據庫
Create database Users
 

--創建表,添加主、外鍵

Create table T_Students(

Id int  IDENTITY(1,1) NOT NUL,

StudentNo char(4),

CourseNo char(4),

Score int,

Primary key(Id),

Foreign key(CourseNo) References T_Course(CourseNo)

);
 

--修改表結構,添加字段
Alter table T_Person add NickName nvarchar(50) null;
   

--修改表結構,刪除字段
Alter table T_Person Drop column NickName;
 

--刪除數據表
Drop table T_Person;
 

--創建索引
Create [Unique] Index <索引名> on <基本表名>(<列明序列>);

 

1group by 功能:分組統計

 

2、having子句,功能:指定組合或者聚合的搜索條件,通常與group by子句一起使用,完成分組查詢后在進行篩選

 

3、聯合查詢 union: 功能:將兩個以上的查詢結果集組合成一個單個的結果集,該集中包括所有集中的全部行數據

 

4、連接查詢,功能:將多個表中的數據查詢出來放在一起

 

    1)內連接:使用 = < > 等進行表間某些數據庫的比較操作,並列出這些表中與連接條件相匹配的數據行

    如:select * from TableA inner join TableB where A.aid = B.aid

    2)自然連接:指明要查詢的列,並排序

    3)外連接:與內連接不同的是,內連接至少要有一個同屬於兩個表的行符合連接條件時才會返回行,

               外連接會返回符合任意條件的行,它的表有主從之分,用主表中的每行去匹配從表中的行,

               與內連接不同的是,外連接不會丟棄沒有匹配的行,而是填充null給結果集。

5、創建一個表的SQL語句

    create table tempTable(

        id int priamry key identity(1,1) not null,

        fieldA nvarchar(20),

        FK_ID int references OtherTable(id)

    )

6、子查詢:一個sql語句中嵌套另一個sql語句就叫嵌套查詢,而被嵌入的這個語句就叫做子查詢。

           子查詢也稱內部查詢,而包含子查詢的select語句被稱為外部查詢,子查詢自身可以包含一個或多個子查詢,也可以嵌套任意數量的子查詢。

7、創建視圖:視圖就是一個虛表

create View view.tempView

select app.AppManageID,app.CompanyName, app.Passport, app.WebURL, app.ShopType,app.CreateTime from           AppManage as app

inner join PackageInfo as p on app.AppManageID=p.AppManageID

4.表復制

方法1:語句形式為:SELECT vale1, value2 into Table2 from Table1

Table2可以不存在。

方法2:語句形式為:Insert into Table2(field1,field2,...) select value1,value2,... from Table1

Table2必須存在。

 

 

update 2014-10-10 21:13:25

 

 

1. substring(string,startIndex, length)
select  substring  ( '2013-08-26 14:30:01.543'  , 1  , 10  )
結果:2013-08-26
 
2.dateadd(yy/mm/dd年或月或日,日期加減,日期)
select  dateadd  ( dd  ,- 10  , getdate  ())
結果:2013-08-26 14:37:42.543
 
3.convert(varchar(50), string, 120)
select  convert  ( nvarchar  ( 30  ), '2013-08-26 14:39:53.857' , 120 )
結果:2013-08-26 14:39:53.857
轉換日期和字符串的函數
 
4. datename(day/month/weekday, 時間)
select  datename  ( weekday  ,  getdate ())
結果:Thursday
 
 
group by 有一個原則,
就是 select 后面的所有列中,沒有使用聚合函數的列,必須出現在 group by 后面
 
 
sql中char(9) char(10) char(13)分別代表哪個字符
可以直接用語句查 select char(9) ,char(10), char(13)
查出來全是空白~
那就查ASCII表吧~
char(9) 水平制表符
char(10)換行鍵
char(13)回車鍵

char(9) :tab
char(10) :換行
char(13):回車
一般char(10)char(13)連着用,表示0x0A0x0D,即一個完整的回車換行。
 
 
sql 執行順序:
from -> where -> group by -> having -> select -> order by -> top
 
 
如何收縮數據庫?
 
--1.
--前期准備
DUMP TRANSACTION webstat WITH NO_LOG
bACKUP LOG webstat WITH TRUNCATE_ONLY

--2.
webstat :文件名稱
——收縮數據庫
DBCC SHRINKFILE(N'webstat',916000)


--3.
——查看收縮進度
use master
go
select * from sysprocesses
--cmd='DbccFilesCompact' (查session_id )

SELECT session_id,percent_complete
FROM sys.dm_exec_requests t WHERE session_id=59
go

DUMP TRANSACTION webstat WITH NO_LOG
bACKUP LOG webstat WITH TRUNCATE_ONLY

DBCC SHRINKFILE(N'web',916000)

use master
go

SELECT session_id,percent_complete
FROM sys.dm_exec_requests t WHERE session_id=53

select * from sysprocesses

 

t-sql 動態執行sql語句
 
CREATE procedure [dbo].[pr_state]
as
begin
DECLARE @SQLString NVARCHAR(500)
DECLARE @datetime NVARCHAR(20)
set @datetime =CONVERT(varchar(10), getdate()-1   ,120);
SET @SQLString =N'
      insert into PV_HIS_JifenWall_Report(recorddate,type,count,usercount)
      select '''+@datetime+''' , PageQueryString,count(1) cnt,count(distinct UserAccount)  cntuseraccount
      from [dbo].[PV_HIS_'+ @datetime+ '] a with(nolock) where PageQueryString in
      (''CPAList'',''CPADownload'',''CPAInstall'',''CPAOpen'')
      group by PageQueryString'
--print @SQLString
EXEC sp_executesql @SQLString
end

 

 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM