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 <基本表名>(<列明序列>);
1、group 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