
初学者学习SQL SERVER
文章平均质量分 70
初学者学习SQL SERVER
huang714
不断的学习,充实自己。
展开
-
SQL 语法速成手册
SQL 语法速成手册原创 2022-12-07 16:52:31 · 2719 阅读 · 3 评论 -
62.查询缺号分布情况的案例
--测试数据CREATE TABLE tb(col1 varchar(10),col2 int)INSERT tb SELECT 'a',2UNION ALL SELECT 'a',3UNION ALL SELECT 'a',6UNION ALL SELECT 'a',7UNION ALL SELECT 'a',8UNION ALL SELECT 'b',1UNION ALL S...原创 2019-03-05 08:52:12 · 143 阅读 · 0 评论 -
108.行值动态标号的交叉报表处理案例
CREATE TABLE tb(Year int,Quarter int,Quantity decimal(10,1),Price decimal(10,2))INSERT tb SELECT 1990, 1, 1.1, 2.5UNION ALL SELECT 1990, 1, 1.2, 3.0UNION ALL SELECT 1990, 2, 1.2, 3.0UNION ALL SEL...原创 2019-03-15 08:55:22 · 128 阅读 · 0 评论 -
124.树形数据层次显示处理-案例
--测试数据DECLARE @t TABLE(ID char(3),PID char(3),Name nvarchar(10))INSERT @t SELECT '001',NULL ,'山东省'UNION ALL SELECT '002','001','烟台市'UNION ALL SELECT '004','002','招远市'UNION ALL SELECT '003','001'...原创 2019-03-19 08:48:16 · 186 阅读 · 0 评论 -
17.各种字符串分拆处理函数
--各种字符串分函数if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN', N'IF', N'TF'))drop function [dbo].[f_splitSTR]GO--3.2.1 循环截取法CREATE FUNCTION ...原创 2019-02-26 08:50:47 · 214 阅读 · 0 评论 -
232.列的相关对象查询
CREATE PROC sp_HelpTable@TableName sysname=NULL, --要查询的表名,如果为NULL,则查询所有表,可以使用通配符@FieldName sysname=NULL --要查询的列名,如果为NULL,则查询所有表,可以使用通配符AS--主键/唯一键/索引SELECT TableName=o.name,FieldName=c.name,Ob...原创 2019-04-08 08:51:42 · 104 阅读 · 0 评论 -
75.新编号查询案例(分类查询)
/*--查询新编号的示例 要求: 按id前4位分组,查询出最小一组的缺号,如果没有,则用最大组的id+1*/--测试数据create table tb(id int)insert tb select 10010001union all select 10010002union all select 10010003union all select 10010004uni...原创 2019-03-07 08:57:45 · 208 阅读 · 0 评论 -
261.设置所有表的所有者
sp_MSForEachTable 'EXEC sp_changeobjectowner ''?'',''dbo'''原创 2019-04-11 13:20:58 · 128 阅读 · 0 评论 -
125.树形数据分级汇总
--测试数据DECLARE @a TABLE(No varchar(10),Name varchar(10))INSERT @a SELECT '101' ,'现金'UNION ALL SELECT '102' ,'银行存款'UNION ALL SELECT '10201','工行'UNION ALL SELECT '10202','建行'UNION ALL SELECT '10...原创 2019-03-19 08:48:20 · 750 阅读 · 0 评论 -
28.ntext字段的replace处理案例
--测试数据CREATE TABLE tb(col ntext)INSERT tb VALUES(REPLICATE( '0001,0002,0003,0004,0005,0006,0007,0008,0009,0100,' +'220000001,302000004,500200006,700002008,900002120,',800))DECLARE @p binary(16)S...原创 2019-02-27 09:05:48 · 236 阅读 · 0 评论 -
210.应用程序角色使用
--1. 创建示例环境。首先使用下面的代码创建一个登录l_test,并且为登录在数据库pubs中创建关联的用户账户u_test,并且授予用户账户u_test对表titles的SELECT权限,用以实现登录l_test连接到SQL Server实例后,可以访问表titles。然后创建了一个应用程序角色r_p_test,授予该角色对表jobs的SELECT权限,用以实现激活r_p_test时,允许...原创 2019-04-03 08:46:40 · 163 阅读 · 0 评论 -
260.删除数据库中的所有外键约束
--删除数据库中的所有外键约束declare @s varchar(8000)declare tb cursor local forselect s='alter table ['+object_name(parent_obj)+'] drop constraint ['+name+']' from sysobjects where xtype='F'open tb fetch ...原创 2019-04-11 13:20:53 · 295 阅读 · 0 评论 -
185.数据库复制-备份
use mastergoif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_CopyDb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_CopyDb]GO/*--将一个数据库完整复制成另一个数据库...原创 2019-03-27 08:57:35 · 201 阅读 · 0 评论 -
107.化解字符串不能超过8000的方法
/*--化解字符串不能超过8000的方法 经常有人提到,用动态生成SQL语句的方法处理数据时,处理语句超长,无法处理的问题 下面就讨论这个问题:*//*-- 测试环境--以系统表 syscolumns 为测试数据,要求按xtype为列字段,name为行字段,统计colid的和--要求结果xtype filedname_1 fieldname_2 ........原创 2019-03-15 08:55:14 · 206 阅读 · 0 评论 -
106.行列互换复杂交叉表
--创建测试数据create table 表(年 int,项目 varchar(10) ,平均值 decimal(20,1) ,最大值 decimal(20,1) ,最小值 decimal(20,1) ,超标率 decimal(20,1))insert into 表select 2001,'项目1',1.5,2.1,1.1,0.1union all select 2001,'项...原创 2019-03-15 08:55:07 · 206 阅读 · 0 评论 -
91.ROLLUP 实现的分级汇总案例
DECLARE @t TABLE(Item varchar(10),Color varchar(10),Quantity int)INSERT @t SELECT 'Table','Blue',124UNION ALL SELECT 'Table','Red', -23UNION ALL SELECT 'Chair','Blue',101UNION ALL SELECT 'Chair',...原创 2019-03-11 08:47:16 · 273 阅读 · 0 评论 -
45.生成字母随机编码的案例(大小混编)
--取得随机数的视图CREATE VIEW v_RANDASSELECT re=STUFF(RAND(),1,2,'')GO--生成随机编号的函数CREATE FUNCTION f_RANDBH(@BHLen int)RETURNS varchar(50)ASBEGIN DECLARE @r varchar(50) IF NOT(ISNULL(@BHLen,0) BETW...原创 2019-03-04 08:59:49 · 187 阅读 · 0 评论 -
184.数据库还原中的孤立用户处理案例
--创建一个测试的数据库CREATE DATABASE dbGO--创建两个登录EXEC sp_addlogin 'aa'EXEC sp_addlogin 'bb'--设置登录的默认数据库为测试数据库 dbEXEC sp_defaultdb 'aa','db'EXEC sp_defaultdb 'bb','db'GO--授予登录访问数据库的权限(将登录设置为数据库的用户...原创 2019-03-27 08:57:30 · 164 阅读 · 0 评论 -
SQL 分页存储过程
SQL 分页存储过程支持:多表连接查询、Group by分组查询等。(多表连接查询时请指定字段,不要用SELECT *)返回为一结果集,有一个输出参数为记录总数,配合AspNetPager控件使用绝配。CREATE PROCEDURE web_pager ( @rowsTotal INT OUTPUT, --输出记录总数 @tableName V...原创 2019-04-11 13:21:41 · 885 阅读 · 0 评论 -
231.非UNICODE字段修改未UNICODE字段的可行性分析
CREATE PROC p_CheckCntUNICODE@flag bit=0 --1=转换为UNICODE后,字段长度/2,<>1转换时使用旧长度,只查询定义长度超过4000,而且有记录超过此长度的表+列ASSET NOCOUNT ON--定义保存查询结果的表CREATE TABLE #(TableName sysname,FieldName sysname,Type...原创 2019-04-08 08:51:35 · 144 阅读 · 0 评论 -
函数-SQL-获取中文的缩写字母(案例)
CREATE function [dbo].[fun_getPY](@str nvarchar(4000)) returns nvarchar(4000) as begin /*处理空格*/ WHILE (CHARINDEX(' ', @str) > 0) BEGIN SET @str = REPLACE(@st...原创 2019-03-05 08:50:26 · 501 阅读 · 0 评论 -
51.使用子查询进行编号重排的处理案例
--测试资料CREATE TABLE tb(ID1 char(2) NOT NULL,ID2 char(4) NOT NULL,col int,PRIMARY KEY(ID1,ID2))INSERT tb SELECT 'aa','0001',1UNION ALL SELECT 'aa','0003',2UNION ALL SELECT 'aa','0004',3UNION A...原创 2019-03-04 09:00:27 · 152 阅读 · 0 评论 -
76.新编号查询案例
/*--查询新编号的示例 要求: 按id前4位分组,查询出最小一组的缺号,如果没有,则用最大组的id+1*/--测试数据create table tb(id int)insert tb select 10010001union all select 10010002union all select 10010003union all select 10010004uni...原创 2019-03-07 08:57:56 · 170 阅读 · 0 评论 -
63.返回应用编号、缺号分布字符串的处理案例
--生成已用编号分布字符串的函数CREATE FUNCTION f_GetStrSeries(@col1 varchar(10))RETURNS varchar(8000)ASBEGIN DECLARE @re varchar(8000),@pid int SELECT @re='',@pid=-1 SELECT @re=CASE WHEN col2=@pid+1 THEN...原创 2019-03-06 08:52:36 · 114 阅读 · 0 评论 -
183.完全备份、数据库恢复模型对日志备份和差异备份的影响
CREATE DATABASE dbGO--1. 无完全备份时,无法进行差异备份BACKUP DATABASE db TO DISK='c:\db.bak' WITH FORMAT,DIFFERENTIAL/*--收到错误服务器: 消息 3035,级别 16,状态 1,行 2无法执行数据库 'db' 的差异备份,因为不存在当前数据库备份。请去掉 WITH DIFFERENTIAL ...原创 2019-03-27 08:57:25 · 467 阅读 · 0 评论 -
105.限制列数-交叉表
/*--假设有数据科目 学生1_上学期 学生1_下学期 学生2_上学期 学生2_下学期 学生3_上学期 学生3_下学期 学生4_上学期 学生4_下学期 学生5_上学期 学生5_下学期 ------ ------------ ----------- ----------- ------------ ------------ ------------ ----------...原创 2019-03-15 08:55:01 · 148 阅读 · 0 评论 -
1.设置内存选项
--设置 min server memory 配置项EXEC sp_configure N'min server memory (MB)', 0--设置 max server memory 配置项EXEC sp_configure N'max server memory (MB)', 256--使更新生效RECONFIGURE WITH OVERRIDE...原创 2019-02-22 08:55:34 · 254 阅读 · 1 评论 -
104.日期-星期-时间
--测试--测试数据create table tb1(wDate datetime,wHour datetime,wMan int)insert tb1 select '2004-04-08','09:00:00',12union all select '2004-04-08','07:00:00',2union all select '2004-04-09','08:00:00',...原创 2019-03-15 08:54:54 · 155 阅读 · 0 评论 -
259.删除某字段的所有关系——存储过程
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_deletefield]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_deletefield]GO/*--删除某字段的所有关系及该字段 删除某字段时...原创 2019-04-10 08:52:46 · 135 阅读 · 0 评论 -
209.登录、用户及角色管理案例
/*--示例说明 示例在数据库pubs中创建一个拥有表jobs的所有权限、拥有表titles的SELECT权限的角色r_test 随后创建了一个登录l_test,然后在数据库pubs中为登录l_test创建了用户账户u_test 同时将用户账户u_test添加到角色r_test中,使其通过权限继承获取了与角色r_test一样的权限 最后使用DENY语句拒绝了用户账户u_test对表ti...原创 2019-04-02 08:58:32 · 256 阅读 · 0 评论 -
24.IP地址处理函数
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_IP2Int]') and xtype in (N'FN', N'IF', N'TF'))drop function [dbo].[f_IP2Int]GO--1. 字符串IP地址转换成IP数值函数。CREATE FUNCTION dbo.f_I...原创 2019-02-26 09:00:29 · 279 阅读 · 0 评论 -
235.删除指定类型的所有字段
--要删除的列的数据类型DECLARE @fieldtype sysnameSET @fieldtype='varchar'--删除处理DECLARE hCForEach CURSOR GLOBALFORSELECT N'ALTER TABLE '+QUOTENAME(o.name) +N' DROP COLUMN '+QUOTENAME(c.name)FROM sysobje...原创 2019-04-08 08:51:58 · 134 阅读 · 0 评论 -
263.生成存储过程脚本
select id=identity(int),text=cast( N'if exists(select * from sysobjects where id=object_id(N' +quotename(name)+N') drop proc '+quotename(name)+N' GO' as nvarchar(4000))into ## from sysobjectswh...原创 2019-04-11 13:21:10 · 264 阅读 · 0 评论 -
60.查询应用编号分布情况的案例(临时表法)
--测试数据CREATE TABLE tb(col1 varchar(10),col2 int)INSERT tb SELECT 'a',2UNION ALL SELECT 'a',3UNION ALL SELECT 'a',6UNION ALL SELECT 'a',7UNION ALL SELECT 'a',8UNION ALL SELECT 'b',3UNION ALL S...原创 2019-03-05 08:51:57 · 111 阅读 · 0 评论 -
12.计算工作时间的函数
if exists (select * from dbo.sysobjects where id = object_id(N'[tb_worktime]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [tb_worktime]GO--定义工作时间表CREATE TABLE tb_worktime( ID i...原创 2019-02-25 09:14:09 · 2323 阅读 · 0 评论 -
214.全局与本地游标
USE tempdbGO--测试的存储过程CREATE PROC p_testASDECLARE tb CURSORFORSELECT 1IF @@NESTLEVEL<2 EXEC p_testDEALLOCATE tbGO--设置 CURSOR_DEFAULT 为 GLOBALALTER DATABASE tempdb SET CURSOR_DEFAULT G...原创 2019-04-03 08:47:12 · 214 阅读 · 0 评论 -
129.宝塔形数据的处理-案例
/*--第一层 - 1 第二层 - 2 3第三层 - 4 5 6 7第四层 - 8 9 10 11 12 13 14 15 将顺序的数据(1~N)依如下规则排列1,排成塔形.2,下一层所排数字...原创 2019-03-19 08:49:14 · 291 阅读 · 0 评论 -
128.XMl菜单
--生成xml菜单--示例数据IF EXISTS(SELECT name FROM sysobjects WHERE name = 'Menu' AND type = 'U') DROP TABLE MenuCreate table Menu(MenuID tinyint primary key identity,MenuName varchar(20),CommandURL...原创 2019-03-19 08:49:05 · 180 阅读 · 0 评论 -
111.特殊的交叉报表处理-案例
CREATE TABLE tb(Item varchar(10),Color varchar(10),Quantity int)INSERT tb SELECT 'Table','Blue', 124UNION ALL SELECT 'Table','Red', 60UNION ALL SELECT 'Table','Red', 99UNION ALL SELECT 'Tabl...原创 2019-03-15 08:56:00 · 110 阅读 · 0 评论 -
264.生成记录插入SQL语句的触发器
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_createtrigger]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_createtrigger]GO/*--生成记录插入SQL语句的触发器 ...原创 2019-04-11 13:21:15 · 960 阅读 · 0 评论