sql 使用整理
今天使用视图查询东西,为了方便直接select * 查出来的都行全部都错乱了,看来sql 超过20个以上的字段为了效率和安全,禁止用select *
-------------查一个表的所有字段的----------------------
select 'b.' + name + ',' from syscolumns where id = object_id('T_Retire_Bill')
-------------查两个表有没有重复的----------------------
select name from syscolumns a
where id = object_id('V_Retire_All')
and not exists(
select * from syscolumns
where id = object_id('T_Retire_Bill')
and name = a.name
)
--------------------------------
case when 动态增加where 条件
仅支持08及以上版本 where 1= 1
and (
case
when ( @state is null or @state = '') then 1
when StPending.StatusFlag = @state then 1 else 0
end
)=1 create proc usp_search
@city int
as
begin
declare @sql varchar(8000)
set @sql = N'select * from TestTable where 1=1 '
if(@city <> -1)
set @sql = @sql + ' and cityId = @city '
exec sp_execute_sql @sql, N'@city int', @city
end
go create proc usp_search
@city int
as
begin
select * from TestTable where 1=1 and (@city = -1 or cityId = @city)
end
go
ALTER PROC [dbo].[ehai_SalesClueBlackList]
@CellPhone VARCHAR(11),
@CompanyName VARCHAR(50),
@IsUsed CHAR(1),
@Page INT ,
@Rows INT ,
@Sort VARCHAR(50) ,
@Order VARCHAR(20) ,
@RowCount INT OUT
AS
BEGIN
SELECT @RowCount=COUNT(*) FROM SalesClueBlackList
SELECT * FROM
(
SELECT ROW_NUMBER() OVER ( ORDER BY CellPhone DESC ) rowNum,
s.ID,s.CellPhone,s.CompanyName,s.IsUsed
FROM SalesClueBlackList S
WHERE 1 = 1
AND (CellPhone=@CellPhone OR @CellPhone='')
AND (CompanyName LIKE '%'+@CompanyName+ '%' OR @CompanyName='')
AND (IsUsed=@IsUsed OR @IsUsed='')
) as Salse
WHERE Salse.rowNum BETWEEN ( @Page - 1 ) * @Rows + 1 AND @Rows * @Page
END
-------------------------------------
SQL中取
当月天数
select day(dateadd(ms,-3,DATEADD(m, DATEDIFF(m,0,getdate())+1,0)))
当月第一天
select dateadd(d,-day(getdate())+1,getdate())
当月最后一天
select dateadd(d,-day(getdate()),dateadd(m,1,getdate()))
本年最后一天
select dateadd(d,-day(getdate()),dateadd(m,12,getdate()))
当月第一个星期一
SELECT DATEADD(wk, DATEDIFF(wk, '', DATEADD(dd, 6 - DAY(getdate()), getdate())), '')
----------------------------------------------------
SQL跨库查询。
select * from OPENDATASOURCE(
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名 insert 本地库名..表名 select * from OPENDATASOURCE(
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名 或使用联结服务器:
--创建linkServer
exec sp_addlinkedserver '别名','','SQLOLEDB','192.168.2.5' --登陆linkServer
exec sp_addlinkedsrvlogin '别名','false',null,'sa','' --查询
select * from 别名.库名.dbo.表名 --以后不再使用时删除链接服务器
exec sp_dropserver '别名','droplogins'
----------------------------------------------------------------
索引操作
创建非聚集索引:
CREATE INDEX 索引名 ON 表名(字段名); 创建聚集索引: CREATE UNIQUE CLUSTERED INDEX 索引名 ON 表名(字段名); 查询索引 查询 select index_col('表名',1,索引次序) -- 查看某個表的索引
SELECT * FROM sys.sysindexes
WHERE id=object_id('RelactionGraph') -- 查看整個庫的索引
SELECT * FROM sys.sysindexes -- 查看所有庫的索引
IF object_id('tempdb..#')IS NOT NULL
DROP TABLE #
SELECT * INTO # FROM sys.sysindexes WHERE 1=2 INSERT INTO #
EXEC sys.sp_MSforeachdb @command1='Select * from ?.sys.sysindexes'
SELECT * FROM # 还有一个更好的方法:EXEC sp_helpindex '表名'
var query = from p in data.SelfAcctStatementDetails where p.AcctID == "Lingzhi" select p;
query = query.Where(o => o.AcctName == "ssss").Where(o=>o.Amount > );
System.Data.Objects.ObjectQuery<SelfAcctStatementDetail> parents = query as System.Data.Objects.ObjectQuery<SelfAcctStatementDetail>;
if (parents != null) { string sql = parents.ToTraceString(); }
---------------------------------------------------------
字符分隔
create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
--实现split功能 的函数
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>'\'
insert @temp values(@SourceSql)
return
end
-----------------------------------------------------------------------
查询结果集,拼接字符串
declare @sql as varchar(8000)
select @sql=''
Select @sql=@sql+【字段名】
from 【表名】
select @sql 例1:
declare @a varchar(8000)
select @a=isnull(@a+',','')+ltrim(id) from SelfAcctOrder order by id
select @a 例2:
select stuff((select ','+[name] from tb for xml path('')),1,1,'')
sql 使用整理的更多相关文章
- 一个项目涉及到的50个Sql语句(整理版)
/* 标题:一个项目涉及到的50个Sql语句(整理版) 说明:以下五十个语句都按照测试数据进行过测试,最好每次只单独运行一个语句. */ --1.学生表Student(S,Sname,Sage,Sse ...
- 常用sql语句整理:mysql
## 常用sql语句整理:mysql1. 增- 增加一张表```CREATE TABLE `table_name`( ... )ENGINE=InnoDB DEFAULT CHARSET=utf8 ...
- [转]SQL SERVER整理索引碎片测试
SQL SERVER整理索引碎片测试 SQL SERVER整理索引的方法也就这么几种,而且老是自作聪明的加入智能判断很不爽,还是比DBMS_ADVISOR差远了: 1SQL SERVER 2000/2 ...
- SQL代码整理
--SQL代码整理: create database mingzi--创建数据库go--连接符(可省略)create table biao--创建表( lieming1 int not null,-- ...
- Oracle数据库常用的Sql语句整理
Oracle数据库常用的Sql语句整理 查看当前用户的缺省表空间 : select username,default_tablespace from user_users; 2.查看用户下所有的表 : ...
- SQL学习整理_1
数据库是保存表和其他相关SQL结构的容器. 列是存储在表中的一块同类型数据. 行是一组能够描述某个事物的列的集合. SQL不区分大小写,但建议命令采用大写,表名采用小写,便于读写. 建立数据库 CRE ...
- 常用的一些SQL语句整理,也许有你想要的。
本篇文章是对一些常用的sql语句进行了总结与分析,需要的朋友参考下,也许会有你需要的. 1.SQL行列转换 问题:假设有张学生成绩表(tb)如下:姓名 课程 分数张三 语文 74张三 数学 83张三 ...
- [SQL] 待整理3
Create proc procedureName @orderId int ,@name varchar() ,@count int as begin Declare @id int declare ...
- sql索引碎片产生的原理 解决碎片的办法(sql碎片整理)(转)
本文讲述了SQL SERVER中碎片产生的原理,内部碎片和外部碎片的概念.以及解决碎片的办法和填充因子.在数据库中,往往每一个对于某一方面性能增加的功能也会伴随着另一方面性能的减弱.系统的学习数据库知 ...
- [SQL] 函数整理(T-SQL 版)
函数整理(T-SQL 版) 一.数学函数 1.求绝对值 ABS() 函数用来返回一个数值的绝对值. SELECT ABS(-5.38) AS absValue; 2.求指数 POWER() 函数是用 ...
随机推荐
- java对象的强引用,软引用,弱引用和虚引用
1.强引用 以前我们使用的大部分引用实际上都是强引用,这是使用最普遍的引用.如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它.当内存空 间不足,Java虚拟机宁愿抛出Out ...
- 静态库与动态库的制作以及程序的动态函数库解析ldd;ldconfig与/etc/ld.so.conf
静态库的制作步骤: (1)gcc -c mylib.c -o mylib.o (2)ar rc libmylib.a mylib.o 动态库的制作步骤: gcc -shared mylib.c -o ...
- Python 遍历dict
遍历dict 由于dict也是一个集合,所以,遍历dict和遍历list类似,都可以通过 for 循环实现. 直接使用for循环可以遍历 dict 的 key: >>> d = { ...
- Eclipse/Myeclipse中查看和调试JDK源代码的方法
看过这篇文章后,实践写的 http://blog.csdn.net/qq_27857857/article/details/71250401 一共做了以下几部: 第一步: 第二步: 一直next,到第 ...
- jsp标签(jsp动作元素)
<jsp:forward page=”/index.jsp”></jsp:forward>也是跳转. 可以用来配置为首页,来启动某个servlet. <jsp:inclu ...
- Android自动化框架
Android自动化框架 已有 2085 次阅读2014-8-26 12:19 | Android 几种常见的Android自动化测试框架及其应用 随着Android应用得越来越广,越来越多的公司推出 ...
- spring boot 在什么时候启动的tomcat
我一直很好奇 spring boot 以哪种方式 启动的 tomcat 今天 特地跟踪了一下 大家都知道 spring 容器很核心的 方式 是org.springframework.context. ...
- ZOJ 3427 Array Slicing (scanf使用)
题意 Watashi发明了一种蛋疼(eggache) 语言 你要为这个语言实现一个 array slicing 函数 这个函数的功能是 有一个数组初始为空 每次给你一个区间[ l, r) 和 ...
- Python 列表 min() 方法
描述 Python 列表 min() 方法返回列表元素中的最小值. 语法 min() 方法语法: min(L) 参数 L -- 要返回最小值的列表. 返回值 返回列表元素中的最小值. 实例 以下实例展 ...
- HDU - 3836 Equivalent Sets (强连通分量+DAG)
题目大意:给出N个点,M条边.要求你加入最少的边,使得这个图变成强连通分量 解题思路:先找出全部的强连通分量和桥,将强连通分量缩点.桥作为连线,就形成了DAG了 这题被坑了.用了G++交的,结果一直R ...