一些简单的SQL语句或者脚本汇总

--***********一些简单的SQL语句或者脚本汇总***********--


--1.截取字符串
	/****** SUBSTRING函数:返回字符、binary、text 或 image 表达式的一部分
	语法
	SUBSTRING ( expression , start , length )

	参数
	expression

	是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。

	start

	是一个整数,指定子串的开始位置。

	length

	是一个整数,指定子串的长度(要返回的字符数或字节数)。
	******/

	/****** CHARINDEX 函数:从字符串中指定的位置处开始查找是否包含字符串,查找到则返回字符串出现的位置;反之,返回0
	语法
	CHARINDEX ( expression1 , expression2 [ , start_location ] )

	参数
		expression1 必需 ---要查找的子字符串
		expression2 必需 ---父字符串
		start_location 可选 ---指定从父字符串开始查找的位置,默认位置从1开始
	******/

SUBSTRING([ga_tracking], 
CHARINDEX('&utm_medium=',[ga_tracking])+12,
CHARINDEX('&utm_campaign=',[ga_tracking])-CHARINDEX('&utm_medium=',[ga_tracking])-12)

--2.删除,创建视图
drop view test
create view test as 



--3.防止除数为0的情况的发生

	/******NULLIF函数
	语法
  NULLIF(Expression1,Expression2):给定两个参数Expression1和Expression2,如果两个参数相等,则返回NULL;否则就返回第一个参数。

  等价于:Case WHEN Expression1=Expression2 Then NULL ELSE Expression1。

  例如Select NULLIF(1,1)返回NULL,Select NULLIF(1,2)返回1。
	******/
[total_net_costrmb]/nullif(count_num,0) as est_spending


--4.使用top函数时有相同分数但因为排序问题导致取出后数据不全

	/******WITH TIES

  与top()和order by 一起用,可以返回多于top的行。防止丢失想要的信息

	第一个语句只会取出三条数据,如果有其他数值相同的数据也不会取出
	下面的第二个语句会取出所有namez在前三的数据,
	******/

select top(3) * from table1 order by name desc
select top(3) with ties * from table1 order by name desc


--5.删除表中的行
	/******
	语法
	DELETE FROM table_name WHERE condition;
	******/
delete from art_test where [date]>'2020/5/20'


--6.增加列
	/******
	语法
	alter table table_name add column_name column_tpye 
	******/
alter table Students add Email varchar(16)

--7.修改列字段属性
	/******
	语法
	alter table table_name alter column column_name column_type 
	******/
alter table Students alter column Email varchar(255)

--8.更改字段名称
	/******
	SQL Server:
	sp_rename '表名.旧字段名','新字段名'

	其他:
	alter table table_name rename column oldname to newname
	******/

--9.删除列
	/******
	语法
	alter table table_name drop column column_name 
	******/
alter table Students drop column Email

--10.遇到字符串中有单引号
	/******
1、使用参数,比如SELECT * FROM yourTable WHERE name = @name;然后外部传入参数@name

2、如果不用参数,而用字符串拼接的话,单引号必须经过判断并替换,
	在数据库中,用2个单引号代表1个实际的单引号,如下例
	******/
select *  From Students Where name='children''s day'

--11.添加/删除约束
	--添加主键约束
	alter table 表名
	add constraint 约束名 primary key (列名)

	--添加唯一约束
	alter table 表名
	add constraint 约束名 unique (列名)

    --添加多列联合唯一约束
	alter table 表名 add constraint 约束名 unique (列名1,列名2) 

	--添加默认约束:没有显式给指定的列赋值,那么把默认约束值插入到该列中
	alter table 表名
	add constraint 约束名 default(内容) for 列名

	--添加check约束
	alter table 表名
	add constraint 约束名 check(内容)

	--添加外键约束
	alter table 表名
	add constraint 约束名 foreign key(列名) references 另一表名(列名)

	--删除约束
	alter table 表名
	drop constraint 约束名


--12.清空数据表里的数据而保留数据表结构
	TRUNCATE TABLE dbo.cpc_daily_tracking


--13.当字符串为中文字符是可能会出现乱码导致结果和判断错误,解决方法为在字符串前加n
select * from test where sp_position like N'%视频%'


--14.创建存储过程,同时会先判断存储过程是否已存在于当前的数据库中
if (exists (select * from sys.objects where name = 'proc_get_student'))
    drop proc adi_buying_KPI
go
create proc adi_buying_KPI
as
exec sp_refreshview adi_digital_dim_pp


--15.查看是否有符合条件的记录
if EXISTS (select left([ga_ad_content],charindex('?',[ga_ad_content])-1) as ga_adcontent_stan from [dbo].[adi_digital_fact_ga])
THEN  Print 'Record exits - Update'
ELSE  Print 'Record doesn''t exist - Insert'


/******16.对于现有的表,需要注意现有表结构对SQL语句的影响。
例如:当新建一个表的时候,所有的字段都是可以为空的,所以如果需要在现有的表中添加主键,需要先将列改为非空列
之后再添加主键
******/
ALTER TABLE dbo.databasetable alter column c_type nvarchar(250) not null
---创建联合主键
ALTER TABLE dbo.databasetable ADD CONSTRAINT db_key PRIMARY KEY ([type], spot, [date])


/******同理,如果一个表中已有主键,在对主键进行删除或者修改属性时,需要先删除主键
否则会报错:failed because one or more objects access this column.******/
ALTER TABLE dbo.databasetable  drop constraint db_key
ALTER TABLE dbo.databasetable alter column [type] nvarchar(250)

--17.STUFF函数替换
/******
STUFF(<character_expression>,<开始>,<长度>,<character_expression>)
<character_expression>参数是给定的字符串数据,可以是字符或二进制数据的常量,变量或列。<start>参数是一个整数值,指定开始删除和插入的位置,可以是BIGINT类型。如果<开始>或<长度>参数为负数,则返回NULL字符串。如果<start>参数比第一个<character_expression>长,则返回一个NULL字符串。 <length>参数可以是BIGINT类型,它是一个整数,指定要删除的字符数。如果<length>比第一个<character_expression>长,则删除发生到最后一个<character_expression>中的最后一个字符。
******/

#给定的字符串为@Time即1030,我们从第3个位置开始,删除长度为0,此时则在3前面插入冒号,结果输出10:30。
SET @Time = '1030'
SELECT STUFF(@Time, 3, 0, ':') AS [HH:MM]

-- 18.查看表的索引与类型
EXEC sp_helpindex ‘TableName’
EXEC sp_help 'tableName'

--输出数据库中所有表的行数,其中db为要查绚的数据库名
Use db
go
select A.name, row_count=max(B.rows)
from sys.tables A 
Inner join sys.partitions B 
on A.object_id=B.object_id 
group by A.name 

卷序列号码为 00000030 4489:1826 C:. │ sqlserver2000.txt │ ├─第01章 │ 1.9.1 设置内存选项.sql │ 1.9.2(2) 使用文件及文件组.sql │ 1.9.2(3) 调整tempdb数据库的文件属性.sql │ ├─第02章 │ │ 2.1 日期概念理解中的一些测试.sql │ │ 2.2.4 CONVERT在日期转换中的使用示例.sql │ │ 2.3.3 SET DATEFORMAT对日期处理的影响.sql │ │ 2.3.4 SET LANGUAGE对日期处理的影响示例.sql │ │ 2.4.1 日期格式化处理.sql │ │ 2.4.2 日期推算处理.sql │ │ 2.4.3 特殊日期加减函数.sql │ │ 2.5.1 查询指定日期段内过生日的人员.sql │ │ 2.5.2 生成日期列表的函数.sql │ │ 2.5.3 工作日处理函数(标准节假日).sql │ │ 2.5.3 工作日处理函数(自定义节假日).sql │ │ 2.5.4 计算工作时间的函数.sql │ │ │ └─其他 │ 交叉表.sql │ 任意两个时间之间的星期几的次数-横.sql │ 任意两个时间之间的星期几的次数-纵.sql │ 复杂年月处理.sql │ 统计--交叉表+日期+优先.sql │ ├─第03章 │ │ 3.2 各种字符串分拆处理函数.sql │ │ 3.3 各种字符串合并处理示例.sql │ │ 3.4.1 分段截取函数.sql │ │ 3.4.2 分段更新函数.sql │ │ 3.4.3 IP地址处理函数.sql │ │ 3.5.1 字符串比较函数.sql │ │ 3.5.2 字符串并集&交集处理示例.sql │ │ 3.5.3 字符串分拆并统计的处理示例.sql │ │ 3.5.5 字符串处理示例--列车车次查询.sql │ │ 3.6.2 字符串在编号查询中的应用示例及常见问题.sql │ │ 3.6.3 动态参数的存储过程示例.sql │ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql │ │ 3.7.3 text与ntext字段的复制和合并处理示例.sql │ │ 3.7.4 text与image字段转换处理示例.sql │ │ 3.7.5 ntext字段的REPLACE处理示例.sql │ │ │ └─其他 │ varbinary转换成字符串.sql │ 关键字搜索.sql │ 分解公式.sql │ 字符串分拆--格式化.sql │ 得到一个字符串在另一个字符串中出现的次数.sql │ 数字转换成十六进制.sql │ 比较第一与第二个字符串,是否有连续的5个字符相同.sql │ 生成查询的模糊匹配字符串.sql │ 简繁转换.sql │ 统计一个表中某个字符出现最多的字母.sql │ 非法字符串处理.sql │ ├─第04章 │ │ 4.1.5 在各种处理中应用排序规则的示例.sql │ │ 4.2.1 排序规则在拼音处理中的应用.sql │ │ 4.2.2 排序规则在全角与半角处理中的应用.sql │ │ │ └─其他 │ 生成GB2312汉字表.sql │ 生成GBK汉字表.sql │ 自动获取汉字笔画.sql │ ├─第05章 │ │ 5.1.1 SET IDENTITY_INSERT 中的几个问题.sql │ │ 5.1.1 修改标识值的示例.sql │ │ 5.1.1 标识列与普通列互相转换的示例.sql │ │ 5.2.1 查表法按日期生成流水号的示例.sql │ │ 5.2.1 查表法生成流水号的示例.sql │ │ 5.2.2 使用编号表按日期生成流水号的示例.sql │ │ 5.2.2 使用编号表生成流水号的示例.sql │ │ 5.2.3 生成纯字母随机编号的示例(仅大小或者小写).sql │ │ 5.2.3 生成纯字母随机编号的示例(大小写混合).sql │ │ 5.2.3 生成纯数字随机编号的示例.sql │ │ 5.3.2 融合了补号处理的编号生成处理示例.sql │ │ 5.3.3 使用UPDATE进行编号重排的处理示例.sql │ │ 5.3.3 使用临时表进行编号重排的处理示例.sql │ │ 5.3.3 使用子查询进行编号重排的处理示例.sql │ │ 5.3.3 名次查询的处理示例.sql │ │ 5.4.1 查询已用编号分布情况的示例(临时表法).sql │ │ 5.4.1 查询已用编号分布情况的示例(子查询法).sql │ │ 5.4.2 查询缺号分布情况的示例.sql │ │ 5.4.3 返回已用编号、缺号分布字符串的处理示例.sql │ │ 5.4.4 缺勤天数统计的处理示例.sql │ │ │ └─其他 │ -补位法.sql │ 以另一个表的字段做默认值.sql │ 以另一表的字段生成编号.sql │ 关联部门流水号.sql │ 十六进制.sql │ 学号.sql │ 开票统计--涉及到连号处理.sql │ 新编号查询示例(分类查询).sql │ 新编号查询示例.sql │ 日期流水号.sql │ 材料流水号.sql │ 流水号.sql │ 箱编号连号处理.sql │ 类别自动生成编号示例.sql │ 自已做标识列的例子.sql │ 触发器自动维护已用&未用编号.sql │ 连续编号.sql │ 防止重复的示例.sql │ 项目编号=各项目独立流水号&各年不同.sql │ ├─第06章 │ │ 6.1.1 NULL对IN的查询的影响及解决示例.sql │ │ 6.1.2 各种联接的使用示例.sql │ │ 6.1.2 多表联结导致记录重复的示例.sql │ │ 6.1.3 使用UNION实现库存报表的示例.sql │ │ 6.1.5 按指定上下限区间进行数据统计的示例.sql │ │ 6.1.6 随机出题的示例.sql │ │ 6.2.1 ROLLUP实现的分级汇总示例(定义各汇总列标题).sql │ │ 6.2.1 ROLLUP实现的分级汇总示例(带排序及汇总列标题处理).sql │ │ 6.2.1 ROLLUP实现的分级汇总示例(带排序处理).sql │ │ 6.2.1 ROLLUP实现的分级汇总示例.sql │ │ 6.2.1 UNION ALL实现的分级汇总示例.sql │ │ 6.3.1 简单的交叉报表处理示例.sql │ │ 6.3.2 多列转换为行的交叉报表处理示例.sql │ │ 6.3.3 行值动态变化的交叉报表处理示例(转换多列).sql │ │ 6.3.3 行值动态变化的交叉报表处理示例.sql │ │ 6.3.4 化解字符串不能超过8000的方法.sql │ │ 6.3.5 特殊的交叉报表处理示例.sql │ │ 6.4.1 库存明细帐处理示例(包含结存数).sql │ │ 6.4.1 库存明细帐处理示例.sql │ │ 6.4.2 同期及上期数据对比处理示例.sql │ │ 6.4.3 动态分组处理示例.sql │ │ 6.4.4 排行榜处理示例.sql │ │ │ └─其他 │ 交叉表--复杂名次.sql │ 交叉表-优先级处理.sql │ 交叉表分析.sql │ 分级汇总.sql │ 分组交叉表.sql │ 列转行.sql │ 固定行列报表.sql │ 复杂交叉表.sql │ 复杂交叉表1.sql │ 多栏显示.sql │ 日期+星期+时间.sql │ 格式化报表.sql │ 横转竖-1.sql │ 横转竖-字段名.sql │ 横转竖-生成字段名.sql │ 横转竖.sql │ 行列互换的复杂交叉表.sql │ 限制列数的交叉表.sql │ ├─第07章 │ │ 7.1 splitpage.asp │ │ 7.2.1 TOP n 实现的通用分页存储过程.sql │ │ 7.2.2 字符串缓存实现的通用分页存储过程.sql │ │ 7.2.3 临时表缓存实现的通用分页存储过程.sql │ │ 7.2.4 使用系统存储过程实现的通用分页存储过程.sql │ │ 7.3.1 实现随机分页的通用分页存储过程.sql │ │ 7.3.2 根据分类表实现的分页存储过程.sql │ │ │ └─其他 │ sp_cursor.sql │ 基本方法.sql │ ├─第08章 │ │ 8.1.2 树形数据分级汇总示例.sql │ │ 8.1.3 树形数据编号重排的通用存储过程.sql │ │ 8.1.3 树形数据编号重排示例.sql │ │ 8.1.4 实现编码规则调整处理的通用存储过程.sql │ │ 8.1.4 生成编码规则调整处理T-SQL语句的函数.sql │ │ 8.1.5 删除节点处理的通用存储过程.sql │ │ 8.1.5 移动节点处理的通用存储过程.sql │ │ 8.2.2 树形数据层次显示处理示例.sql │ │ 8.2.2 树形数据广度排序处理示例.sql │ │ 8.2.2 树形数据深度排序处理示例(模拟单编号法).sql │ │ 8.2.2 树形数据深度排序处理示例(递归法).sql │ │ 8.2.3 查找指定节点的所有子节点的示例函数.sql │ │ 8.2.4 查找指定节点的所有父节点的示例函数.sql │ │ 8.2.5 校验插入指定结点是否导致编码循环的示例函数.sql │ │ 8.2.5 校验表中数据是否有循环编码的通用存储过程.sql │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例(借鉴方式排序法).sql │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例.sql │ │ 8.2.7 实现删除指定结点及所有子节点的处理触发器.sql │ │ 8.2.8 逐级汇总示例(循环逐级累计法).sql │ │ 8.2.8 逐级汇总示例(用户定义函数法).sql │ │ 8.3.1 产品配件清单查询示例.sql │ │ 8.3.2 最短乘车路线查询示例.sql │ │ │ └─其他 │ xml菜单.sql │ 宝塔形数据的处理-1.sql │ 宝塔形数据的处理.sql │ 树形数据生成xml.sql │ ├─第09章 │ │ 9.1.3 访问外部数据源方法总结.sql │ │ 9.5.1 二进制文件存取示例(T-SQL).sql │ │ 9.5.1 二进制文件存取示例(VB&VBA).vbs │ │ a.txt │ │ Schema.ini │ │ │ └─其他 │ bcp-数据导入导出(全).sql │ bcp-数据导入导出-二进制文件.sql │ bcp-数据导出为文件.sql │ bcp表数据存为XML.sqlSQL Server到Oracle连接服务器的实现.sqlSQL Server到SQLBASE连接服务器的实现.sqlSQL Server到SYBASE连接服务器的实现.sqlsql导出mysql.sql │ textcopy实现文件存取.sql │ Vb程序实现文件存取.sql │ 导入文本文件时如何指定字段类型.sql │ 导出northwind中Employees的图像.sql │ 将某个目录上的Excel表,导入到数据库中.sql │ 数据导入导出基本方法.sql │ 用ASP上传&下载文件.sql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值