sqlserver数据库中sql的使用
目录:
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的使用的更多相关文章
- 批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor
批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor2.1.11 之前写过一篇文章,使用redgate公司的SQL PROMPT工具,但是不太方便 SQLPRO ...
- PowerDesigner从SqlServer数据库中导入实体模型
PowerDesigner从SqlServer数据库中导入实体模型 时间 2013-06-28 10:26:34 CSDN博客 原文 http://blog.csdn.net/sxycxwb/art ...
- Sqlserver数据库中的临时表详解
临时表在Sqlserver数据库中,是非常重要的,下面就详细介绍SQL数据库中临时表的特点及其使用,仅供参考. 临时表与永久表相似,但临时表存储在tempdb中,当不再使用时会自动删除.临时表有两种类 ...
- SQLServer数据库中开启CDC导致事务日志空间被占满的原因
SQLServer数据库中开启CDC导致事务日志空间被占满的原因 转载 2017-04-01 投稿:mrr 我要评论 这篇文章主要介绍了SQLServer数据库中开启CDC导致事务日志空间 ...
- SQLServer数据库之SQL Server 获取本周,本月,本年等时间内记录
本文主要向大家介绍了SQLServer数据库之SQL Server 获取本周,本月,本年等时间内记录,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. datediff(we ...
- jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上 1.JavaBean的使用 package com.zheng; public class BookBean { ...
- 获取sqlserver数据库中所有库、表、字段名的方法
获取sqlserver数据库中所有库.表.字段名的方法 2009年03月12日 星期四 下午 12:51 1.获取所有数据库名: SELECT Name FROM Master..SysDatabas ...
- 设置SQLServer数据库中某些表为只读的多种方法
原文:设置SQLServer数据库中某些表为只读的多种方法 翻译自:http://www.mssqltips.com/sqlservertip/2711/different-ways-to-make- ...
- 【转载】Sqlserver数据库中无自增Id的情况下使用ROW_NUMBER()函数进行数据分页
在Sqlserver数据库中,如果查询表中含有自增长Id列,一般会采用select Top的方式来数据的分页操作.而实际上很多数据表设计的时候,不一定含有自增长Id列,那么数据库没有Id自增列的时候要 ...
随机推荐
- php(数组方法
什么是数组? 数组就是一组数据的集合 其表现形式就是内存中的一段连续的内存地址 数组名称其实就是连续内存地址的首地址 关于js中的数组特点 数组定义时无需指定数据类型 数组定义时可以无需指定数组长度 ...
- TX2-入门坑点-Ubuntu16.04任务栏消失
问题:安装cuda过程中出现任务栏消失,快捷键失效的现象. 解决方法:重装桌面无法解决,使用cssm无法解决,最后删除home目录下的 .cache文件夹重启后解决
- 学习 ASP.NET Core 2.1:集成测试中使用 WebApplicationFactory
WebApplicationFactory 是 ASP.NET Core 2.1 新特性 MVC functional test infrastructure 中带来的新东东,它封装了 TestSer ...
- 我对于B-树索引的内部结构与索引类型所做的笔记
图 3-1 B-树索引的内部结构 分支块和页块 B-树索引有两种类型的块: 用于查找的分支块和用于存储值的叶块.B-树索引的上层分支块包含指向下层索引块的索引数据.在图 3-1 中,根分支块包含条目 ...
- Docker入门6------生产力工具rancher
rancher的安装: https://blog.csdn.net/wh211212/article/details/80932264 安装 一行命令就可以安装 sudo docker run -d ...
- python 转换容量单位 实现ls -h功能
功能1 把字节转换自适应转为其他单位(ls -h),超过1024投入高一级的区间,不足1024投入本级区间,如1000K是一个合理值,1030K就应该转换为1M,2050K应该转换为2M 功能2 把其 ...
- 自增ID算法snowflake - C#版
急景流年,铜壶滴漏,时光缱绻如画,岁月如诗如歌.转载一篇博客来慰藉,易逝的韶华. 使用UUID或者GUID产生的ID没有规则 Snowflake算法是Twitter的工程师为实现递增而不重复的ID实现 ...
- C#设计模式(7)——适配器模式(Adapter Pattern)(转)
一.引言 在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象.那么如果将“将现存的对象”在新的环境中进行调用 ...
- 关于mongodb基础的命令
banji----数据库 class---集合 1.查看所在的数据库 db 2.查看所有的数据库 show dbs 3.创建数据库 use banji #查看所有的数据库show dbs,创建的数据库 ...
- SpringMVC 图片上传,检查图片大小
使用SpringMVC+Spring 前端提交图片文件到Controller,检查上传图片大小是否符合要求 直接上代码了 1.校验图片大小 这里提供出验证的方法,用于在需要校验的地方调用 /** * ...