sql杂记
Create procedure 存储过程的声明
PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P 通俗简单的说:PIVOT就是行转列,UNPIVOT就是列传行
NEWID() 随机函数 SELECT TOP 2 * FROM ywle order by newid() --随机排序SELECT TOP 10 * FROM Northwind..Orders ORDER BY NEWID() //order by 是按字符串排序,order by newid() 随机排序 decimal(10,2),BAL:BAL值保留两位小数点,Convert(decimal(10,2),字段)强转类型
decimal(a,b):a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 a之间的值。默认小数位数是 0。
是CAST(xxx AS 类型), CONVERT(xxx,类型)
例如: select convert(decimal(18,3),Fs_JiFen)as jifei from Bill_YeJiCheck ROUND 函数用于把数值字段舍入为指定的小数位数。语法:ROUND(column_name(必需.要舍入的字段。),decimals(必需。规定要返回的小数位数。))
例如:SELECTProductName,ROUND(UnitPrice,0) as UnitPrice FROM Products DATEDIFF() 函数返回两个日期之间的天数。SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。以下例子用于将文本字符串''转换为整型: SELECT CAST('' AS int) Case When Then多条件判断
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
WHEN 条件3 THEN 结果3
WHEN 条件4 THEN 结果4
.........
WHEN 条件N THEN 结果N
ELSE 结果X
END
例如:
--简单Case函数
CASE sex
WHEN '' THEN '男'
WHEN '' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '' THEN '男'
WHEN sex = '' THEN '女'
ELSE '其他' END 其实就是:when if eles end 的意思
when Month(Goods_InsertDate) = 1 then 1 else 0 end)as 1s
而Access是:
语法
IIf(expr, truepart, falsepart)
IIf 函数的语法含有下面这些命名参数:
部分 描述
expr 必要参数。用来判断真伪的表达式。
truepart 必要参数。如果 expr 为 True,则返回这部分的值或表达式。
falsepart 必要参数。如果 expr 为 False,则返回这部分的值或表达式。
iif(a1,a2,a3)表示如果a1为真,结果就取a2,如果a1为假,结果就取a3
例子: Sum(IIF(Month(Goods_InsertDate) = 1, 1, 0)) As 一月,
row_number over();
语法:ROW_NUMBER() OVER(PARTITION BY 字段 ORDER BY 字段) 简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER : (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后 的每条xlh记录顺序编号.(先排序后排标号)
示例:
xlh row_num
1700 1
1500 2
1085 3
710 4 数据库删除重复数据:
没有ID的情况
select identity(int,1,1) as id , * into #temp from pviotandunpviot
delete #temp where id not in (select max(id) from #temp group by [姓名],[课程])
delete pviotandunpviot
insert into pviotandunpviot( [姓名],[课程],[分数]) select [姓名],[课程],[分数] from #temp
delete #temp
查询重复数据
select * from Base_Jobtitle where job_number in (select job_number from Base_Jobtitle group by job_number having count(job_number) > 1)
删除重复(重复数据没有保留一条)
Delete Base_Jobtitle where job_number in (select job_number from Base_Jobtitle group by job_number having count(job_number) > 1) 删除重复(重复数据保留一条)
delete from Table_1 where name in (select name from Table_1 group by name having count(name) > 1) and id not in (select max(id) from Table_1 group by name having count(name)>1) 去除重复
Select distinct name from table1 !数据库(a,b)不同
如果还没有创建表table2,可以直接将table1的表结构和记录都复制到数据库中? use b
select * into table2 from a.dbo.table1 表不存在的情况下
select 字段1,字段2.....字段n into 数据库名..新表名 from 旧数据库名..旧表 where 条件 表存在的情况下
insert into 数据库名..新表名 (字段1,字段2.....字段n) select 字段1,字段2.....字段n from 旧数据库名..旧表 where 条件 having是分组(group by)后的筛选条件,分组后的数据组内再筛选
where则是在分组前筛选 YEAR 或 month :
假如考勤时间为'2015-01-05':而单单取时间的年或者月
select 考勤号,Worker_name,考勤时间, YEAR(考勤时间)=2015 and month(考勤时间)=03 order by 考勤时间 desc 跨数据库之间的拷贝:
insert into 目的数据库..表(列) select 列 from 源数据库..表
DateTime.Now.ToString("yyyy-MM-dd 00:00:00") 取当天的时间(C#)
Getdate()取系统的(SQL)
SELECT CONVERT(varchar(8), getdate(), 120) ;其中varchar(变量自己变化) DATEDIFF() 函数返回两个日期之间的天数。 还可以做时间提醒,比如日常安排提前五分钟
语法
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 参数是合法的日期表达式。
datepart 参数可以是下列的值:年(YY),月(MM),日(dd),时(hh),分(mi),秒(ss)
例子 1
使用如下 SELECT 语句:
SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate 返回:1. DATEADD函数计算一个日期通过给时间间隔加减来获得一个新的日期。
语法
DATEADD(datepart,number,date)
datepart 参数可以取年月日时分秒 date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。
SELECT OrderId,DATEADD(day,2,OrderDate) AS OrderPayDate
FROM Orders 创建临时表加上id(在没有ID的时候)
select identity(int,1,1) as id ,需要的列 into 临时表明名from 指定表
Select * from 临时表明名
Drop table 临时表明名 把一个表的数据复制到另外一个表里面
存在的情况
insert into 目标表 select * from 原表;
SQL Server中,,
如果目标表不存在:
select * into 目标表 from 原表;
如果有条件
select * into 目标表 from (select * from biao wehre name=’123’)as a; Oracle中,如果目标表存在:
insert into 目标表 select * from 原表;
commit;
Oracle中,如果目标表不存在:
create table 目标表 as select * from 原表; 增加列
Alter table 表名 add column 列名 类型
删除列
Alter table 表名 drop column 列名
修改列名
Exec sp_rename ‘ 表名.列名’,’新的列名’
修改类型
Alter table 表名 Alter column 列名 类型 数据库查询的时候增加序号
Row_number() over(order by 列名)
select ROW_NUMBER() over (order by Gid)as Gid2, * from Base_FaceCentA001
怎么把NULL转化为0 ?isnull(字段名,0) replace 替换 select replace(字段名, '查找的内容','更改的内容') , * from DangAnCailiao
函数返回字符或者字符串在另一个字符串中的起始位置
CHARINDEX ( expression1 , expression2 [ , start_location ] )
expression1 是要到 expression2 中寻找的字符中,start_location是CHARINDEX函数在
expression2 中找 expression1 的开始位置。
CHARINDEX函数返回一个整数,为要找的字符串
expression1 在被找的字符串 expression2 中的位置。假如CHARINDEX没有找到要找的字符串,那么函数将返回整数“0”。 substring 函数是用来抓出一个栏位资料中的其中一部分
SUBSTRING ( expression, start, length )
expression 字符串、二进制字符串 请勿使用包含聚合函数的表达式。
start 整数或可以隐式转换为 int 的表达式,指定子字符串的开始位置。
length 整数或可以隐式转换为 int 的表达式,指定子字符串的长度。 判断表是否存在 IF EXISTS(SELECT * FROM sysobjects WHERE id=object_id('表名') AND OBJECTPROPERTY(id,'IsUserTable') = 1)
SELECT 'yes'
ELSE
SELECT 'no'
模糊查询表名
Select Name From SysObjects Where Name Like '%表名%' 判断列是否存在不存在则创建
if not exists( select name from syscolumns where id=object_id('detail_kqjl') and name='SCtype')
begin
alter table detail_kqjl add SCtype int
end
sql杂记的更多相关文章
- sql杂记:一些坑和数据库恢复
这是一篇纯粹的乱七八糟的笔记...(勿喷)主要记录一下初入SQL坑的杂七杂八的注意事项. 一.先补充下事务的写法: start transaction;#开始事务 --各种事务... commit;# ...
- 【杂记】SQL篇
21.事务 22.左联右联 23.大小写转换 24.MySql字符串拼接 25.查询数据库表总数 26.Oracle虚拟表 27.判断是否为空 28.SQL取diff 29.存储过程proc 30.创 ...
- SQL Script 杂记
1.提交sql server中未提交的事务 commit select @@TRANCOUNT 2.查询存储过程中包含某个字符串的所有存储过程 SELECT *FROM INFORMATION ...
- sql server使用杂记
SqlServer导出数据库 navcat for sql server中打开连接,打开数据库,右键--数据传输,常规选项卡--模式选择dbo,目标选择连接(选择你新建的库)或者文件(导出你要的sql ...
- sql server使用杂记(二)
存储过程CREATE PROCEDURE [dbo].[getprofitandloss]@agentNo varchar(10),@o0 varchar(30),@source varchar(30 ...
- 微软BI 系列随笔列表 (SSIS, SSRS, SSAS, MDX, SQL Server)
[公告]本博客于2015年10月起不再更新 新博客文章主要发表在商业智能BI社区: http://www.flybi.net/blog/biwork 博客地图自动分类 文章目录方便更好的导航,阅读文章 ...
- 分布式系统之CAP理论杂记[转]
分布式系统之CAP理论杂记 http://www.cnblogs.com/highriver/archive/2011/09/15/2176833.html 分布式系统的CAP理论: 理论首先把分布式 ...
- MySQL杂记
参考资料: w3school SQL 教程 : http://www.w3school.com.cn/sql/index.asp 21分钟 MySQL 入门教程 : http://www.cnblo ...
- asp.net、mvc、ajax、js、jquery、sql、EF、linq、netadvantage第三方控件知识点笔记
很简单,如下: 父页面:(弹出提示框) function newwindow(obj) { var rtn = window.showModalDialog('NewPage.htm','','sta ...
随机推荐
- 并发队列ConcurrentLinkedQueue与阻塞队列LinkedBlockingQueue的区别
1. 介绍背景 在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列. Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是Block ...
- java并发内存模型
java中线程之间的共享变量存储在主内存(java堆)中,每个线程都有一个私有的本地内存,本地内存存储了该线程以读.写共享变量的副本.本地内存是一个抽象概念,并不真实存储.它涵盖了cache,寄存器记 ...
- python os模块一些常用操作
os.getcwd() ## 获取当前路径 os.chdir("dirpath") ## 改变目录 os.makedirs("dirname") ## 递归创建 ...
- 在vue项目中使用codemirror插件实现代码编辑器功能(代码高亮显示及自动提示
在vue项目中使用codemirror插件实现代码编辑器功能(代码高亮显示及自动提示) 1.使用npm安装依赖 npm install --save codemirror; 2.在页面中放入如下代码 ...
- 某Facebook工程师写的攻略。
Chapter 1 Interesting read, but you can skip it. Chapter 2 2.1 Insertion Sort - To be honest you sho ...
- thinkerCMS是一款thinkphp写的微型cms框架可以参考下
http://www.thinkphp.cn/code/1764.html thinkphp官网thinkercms介绍 http://cms.thinke ...
- CSS Margin(外边距)
CSS Margin(外边距) 一.简介 CSS margin(外边距)属性定义元素周围的空间. margin 清除周围的(外边框)元素区域.margin 没有背景颜色,是完全透明的. margin ...
- 20144303 《Java程序设计》课程总结
20144303 <Java程序设计>课程总结 每周读书笔记链接汇总 第一周:http://www.cnblogs.com/20144303sys/p/5248979.html 第二周:h ...
- 超详细 Spring @RequestMapping 注解使用技巧 (转)
@RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一.这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上. 在这篇文章中,你将会看到 @R ...
- Docker storage drivers
因为Docker的镜像是分层的,包含只读层和可读写层,因此选择正确的Storage Driver对于容器的性能是非常重要的. 支持的Linux发行版本 目前推荐使用性能最好的Overlay2.RHEL ...