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(数据类型、水仙花数(重点)运算符)
<!--三个弹窗 alert():打开页面只是提示一下,告警框 仅仅提示,关了就关了 confirm():选择框 有返回值 prompt():输入框 控制台输出console.log() 字符串 ...
- 转 基于Excel参数化你的Selenium2测试
转载:https://blog.csdn.net/zhusongziye/article/details/80100375 前言 今天我们就如何使用xlrd模块来进行python selenium2 ...
- Mastering MariaDB 神秘的MariaDB 中文翻译版
是某群的哥们义务翻译的,宣传一下,还没时间时间读,粗滤看了全部翻译完了300多页佩服 https://github.com/CMant/Mastering-MariaDB- 原地址:如果你需要读,请s ...
- Codeforces 1089E - Easy Chess - [DFS+特判][2018-2019 ICPC, NEERC, Northern Eurasia Finals Problem E]
题目链接:https://codeforces.com/contest/1089/problem/E Elma is learning chess figures. She learned that ...
- Consul的应用
Consul在集群上的每一个节点(包括Server和Client)都运行一个Agent,通过这个Agent可以进行对Consul所提供的功能的操作,通过调用一系列HTTP API与Agent的交互即可 ...
- [转]在centos 6.4下安装opencv 2.3.1
系统环境介绍: centos 6.4 1.安装依赖包 yum install cmake gcc gcc-c++ gtk+-devel gimp-devel gimp-devel-tools gimp ...
- opencv 进行图像的花屏检测(模糊检测)
参考: https://www.pyimagesearch.com/2015/09/07/blur-detection-with-opencv/ https://www.cnblogs.com/ark ...
- NuGet Install-Package报错解决Package Manager Console error - PowerShell version 2.0 is not supported. Please upgrade PowerShell to 3.0 or greater and restart Visual Studio.
问题: Package Manager Console error - PowerShell version 2.0 is not supported. Please upgrade PowerShe ...
- Numpy float64和Python float是一样的
>>> numpy.float64(5.9975).hex() # 函数用于将10进制整数转换成16进制,以字符串形式表示. '0x1.7fd70a3d70a3dp+2' >& ...
- 2018-2019-1 20189203《Linux内核原理与分析》第三周作业
一.课程学习 计算机的三个法宝:存储程序计算机.函数调用堆栈.中断. 堆栈相关的寄存器:ESP(堆栈指针).EBP(基址指针). 堆栈操作:push:栈顶地址减少4个字节,并将操作数放入栈顶存储单元. ...