目录:

1. 分组排序更新

2. 将查询结果插入到新的表中

3. 创建/更新存储过程

4. 创建/更新视图

5. 插入数据

6. 增加表格的列

7. 创建表格

8. 创建索引

9. 递归查询


1. 分组排序更新

将分组记录中的第一条数据的某个字段更新到第二条数据上的字段;

--把序号为2的结束时间 更新为 序号为1的开始时间
WITH t2 as (
SELECT * FROM(
SELECT
ROW_NUMBER() OVER ( partition by C_BH_ZFXX ORDER BY DT_KSSJ DESC) as num ,
C_BH_ZFXX,
DT_KSSJ,
DT_JSSJ,
C_BH
FROM DB_JY..T_FJFY_FJJL
WHERE
--c_bh_zfxx in( '046B7C4311C0413FBD8A5B5EDC5C9460','087CE841726B43209439B09E87AE8C48') AND
DT_JSSJ is NULL
)b
WHERE b.num=2
)
UPDATE t2 SET t2.dt_jssj = t1.dt_kssj FROM(
SELECT * FROM(
SELECT
ROW_NUMBER() OVER ( partition by C_BH_ZFXX ORDER BY DT_KSSJ DESC) as num ,
C_BH_ZFXX,
DT_KSSJ,
DT_JSSJ,
C_BH
FROM DB_JY..T_FJFY_FJJL
WHERE
-- c_bh_zfxx in( '046B7C4311C0413FBD8A5B5EDC5C9460','087CE841726B43209439B09E87AE8C48') AND
DT_JSSJ is NULL
) a WHERE a.num = 1
) t1
WHERE
t1.C_BH_ZFXX = t2.C_BH_ZFXX

2. 将查询结果插入到新的表中

--将查询的结果插入到表中
INSERT INTO T_ZF_XMPY_STR(C_ID, C_BH_ZFXX, C_XMBH)
SELECT REPLACE(NEWID(), '-', ''), C_BH_ZFXX, C_XMBH FROM V_CQ_XMPY -- 将查询到的结果插入到表中(自动创建student3表)
select * into student3 from student1 where ID<8

3.创建/更新存储过程

USE DB_JJ;

-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description:
-- =============================================
if (exists (select * from sys.objects where name = 'PR_1'))
drop proc PR_1
GO create PROCEDURE [dbo].[PR_1]
@VAR_KSRQ VARCHAR(32), --开始日期
@VAR_JSRQ VARCHAR(32), --结束日期
as
begin
...
end

4.创建/更新视图

USE DB_JJ
GO
--判断视图是否存在
IF EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[V_GJ]'))
DROP VIEW [dbo].[V_GJ]
GO
CREATE VIEW [dbo].[V_GJ] AS
SELECT
t1.C_BH AS C_BH_t1.X,
CASE
--中国籍(含港澳台)
WHEN (t1.N_GJ IN ( 1,2,3,4 ) ) THEN 1
--国籍不明
WHEN ( t1.N_GJ IS NULL OR t1.N_GJ in (99)) THEN 2
--外国籍
ELSE 3
END AS V_GJ
FROM
DB_JJ.dbo.table1 t1

5.插入数据

DELETE FROM [DB_JJ].[dbo].[table1] WHERE C_PID='';
INSERT INTO [DB_JJ].[dbo].[table1] ( [C_PID], [C_Code], [C_Name]) VALUES (
'', '', '省外');

6.增加表格的列

USE DB_JJ;

-- 增加终止日期D_ZZRQ列
if not exists (select 1 from DB_JJ.information_schema.columns
where table_name='table1' and column_name='D_ZZRQ')
alter table table1 add D_ZZRQ date;
GO
IF NOT EXISTS (SELECT * FROM ::fn_listextendedproperty(N'MS_Description' ,
N'SCHEMA',N'dbo', N'TABLE',N'table1', N'COLUMN',N'D_ZZRQ'))
EXEC sp_addextendedproperty @name = N'MS_Description', @value = N'终止日期'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'table1'
, @level2type = 'COLUMN', @level2name = N'D_ZZRQ';

7.创建表格

USE DB_JJ
GO
IF NOT EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[table1]') AND type in (N'U'))
CREATE TABLE table1(
C_ID VARCHAR(32) NOT NULL,
C_BH_ZFXX VARCHAR(32),
D_BDRQ DATE, --变动日期
N_HYZK INT, --婚姻状况
C_BZ VARCHAR(900), --备注
C_DJR VARCHAR(32), --登记人
DT_CJSJ DATETIME, --创建时间
);

8. 创建索引【参考:https://www.cnblogs.com/soundcode/p/4458974.html

语法:
CREATE [索引类型] INDEX 索引名称
ON 表名(列名)
WITH FILLFACTOR = 填充因子值0~100
GO /*实例*/
USE DB_ZX; --使用哪个数据库 GO
IF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='I_JXJS_XFBDJL_BDLB')--检测该索引是否已经存在
DROP INDEX T_JXJS_XFBDJL.I_JXJS_XFBDJL_BDLB;--如果存在则删除 --创建索引
CREATE NONCLUSTERED INDEX I_JXJS_XFBDJL_BDLB --创建一个非聚集索引
ON T_JXJS_XFBDJL(N_BDLB) --为T_JXJS_XFBDJL表的N_BDLB字段创建索 GO --指定按‘I_JXJS_XFBDJL_BDLB’索引查询
--SELECT * FROM T_JXJS_XFBDJL WITH(INDEX=I_JXJS_XFBDJL_BDLB) WHERE N_BDLB = 9;
SELECT * FROM T_JXJS_XFBDJL WITH(INDEX(I_JXJS_XFBDJL_BDLB)) WHERE N_BDLB = 9;

9. 递归查询

ALTER PROCEDURE dept_level
@root_id VARCHAR(50)
AS
BEGIN
with temp(c_id, c_pid, c_name, c_corp, curLevel)
as
(
--1:初始查询(这里的PID=-1 在我的数据中是最底层的根节点)
select c_id, c_pid, c_name, c_corp, 1 as level from DB_JY..T_SYS_DEPT
where c_id = @root_id
union all
--2:递归条件
select a.c_id, a.c_pid, a.c_name, a.c_corp, b.curLevel+1 from DB_JY..T_SYS_DEPT a --3:这里的临时表和原始数据表都必须使用别名,不然递归的时候不知道查询的是那个表的列
inner join temp b
on a.c_pid = b.c_id --这个关联关系很重要,一定要理解一下谁是谁的父节点, a子表,b父表
)
select * from temp --4:递归完成后 一定不要少了这句查询语句 否则会报错 END

sqlserver数据库中sql的使用的更多相关文章

  1. 批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor

    批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor2.1.11 之前写过一篇文章,使用redgate公司的SQL PROMPT工具,但是不太方便 SQLPRO ...

  2. PowerDesigner从SqlServer数据库中导入实体模型

    PowerDesigner从SqlServer数据库中导入实体模型 时间 2013-06-28 10:26:34 CSDN博客 原文  http://blog.csdn.net/sxycxwb/art ...

  3. Sqlserver数据库中的临时表详解

    临时表在Sqlserver数据库中,是非常重要的,下面就详细介绍SQL数据库中临时表的特点及其使用,仅供参考. 临时表与永久表相似,但临时表存储在tempdb中,当不再使用时会自动删除.临时表有两种类 ...

  4. SQLServer数据库中开启CDC导致事务日志空间被占满的原因

    SQLServer数据库中开启CDC导致事务日志空间被占满的原因 转载  2017-04-01   投稿:mrr    我要评论 这篇文章主要介绍了SQLServer数据库中开启CDC导致事务日志空间 ...

  5. SQLServer数据库之SQL Server 获取本周,本月,本年等时间内记录

    本文主要向大家介绍了SQLServer数据库之SQL Server 获取本周,本月,本年等时间内记录,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. datediff(we ...

  6. jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上

    jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上 1.JavaBean的使用 package com.zheng; public class BookBean { ...

  7. 获取sqlserver数据库中所有库、表、字段名的方法

    获取sqlserver数据库中所有库.表.字段名的方法 2009年03月12日 星期四 下午 12:51 1.获取所有数据库名: SELECT Name FROM Master..SysDatabas ...

  8. 设置SQLServer数据库中某些表为只读的多种方法

    原文:设置SQLServer数据库中某些表为只读的多种方法 翻译自:http://www.mssqltips.com/sqlservertip/2711/different-ways-to-make- ...

  9. 【转载】Sqlserver数据库中无自增Id的情况下使用ROW_NUMBER()函数进行数据分页

    在Sqlserver数据库中,如果查询表中含有自增长Id列,一般会采用select Top的方式来数据的分页操作.而实际上很多数据表设计的时候,不一定含有自增长Id列,那么数据库没有Id自增列的时候要 ...

随机推荐

  1. PHP(基础语法:执行原理)

    控制语句for循环 for(var i=0:i<0;++i){ }(基础语法):执行原理for:用在已知数量的情况下(循环次数)while:循环次数不确定(满足某个条件退出循环) 死循环:没有结 ...

  2. python----运行机制

    Python 是一门解释型的编程语言,因此它具有解释型语言的运行机制. 计算机程序,其实就是一组计算机指令集,能真正驱动机器运行的是机器指令,但让普通开发者直接编写机器指令是不现实的,因此就出现了计算 ...

  3. 做一个vue的todolist列表

    <template> <div id="app"> <input type="text" v-model="todo&q ...

  4. 解决键盘输入被JDB占用的问题

    解决键盘输入被JDB占用的问题 本周的任务"迭代和JDB"在使用JDB调试时需要键盘输入数据,但我在正确的位置输入数据后发现JDB提示如图所示的错误. 上网查找后得知该错误的产生是 ...

  5. arcmap发布服务报错:“Faild to publish service”

    发布gp服务时,Analyze没有重大错误,但是发布结束时提示"Faild to publish service".让人很懵逼: 解决方法: 打开arcgis server man ...

  6. 最全的MonkeyRunner自动化测试从入门到精通(7)

    jython-installer-2.5.3.jar安装步骤步骤一:Jython的安装比较简单,Jython的安装程序本身就是一个Java应用程序,因此,在安装之前,你必须具备Java运行的环境. 步 ...

  7. 《Mysql 分区分表》

    一:分区/分表 为了什么? - 当MySQL单表的数据量过大时,数据库的访问速度会下降,需要处理大量数据,所以需要把数据分散存储. - 常用 "水平" 切分 二:MySQL常见的水 ...

  8. UML第一次作业

    一. 用例图:用例图(usecase diagram)是UML用于描述软件功能的图形.用例图包括用例.参与者及其关系,用例图也可以包括注释和约束.程序员要画时序图啥的用其他的比较麻烦,用plantum ...

  9. selenium.common.exceptions.WebDriverException: Message: unknown Error: cannot find Chrome binary

    使用Chrome浏览器时,经常会遇到以下报错:浏览器没有调用起来 selenium.common.exceptions.WebDriverException: Message: unknown Err ...

  10. Unity性能优化之特效合并

    特效合并,意思是说将粒子所用的零碎图片,以shader为单位合并成一张图集,好处就是可以降低draw call.试想,合并前每个粒子使用一个material,而每一个material就要占用一个dra ...