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自增列的时候要 ...
随机推荐
- sqoop/1.4.6/下载
http://archive.apache.org/dist/sqoop/1.4.6/
- Android开发入门经典【申明:来源于网络】
Android开发入门经典[申明:来源于网络] 地址:http://wenku.baidu.com/view/6e7634050740be1e650e9a7b.html?re=view
- PAT1111 Online Map【最短路】【dfs】
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805358663417856 题意: 给定一个图,每天边上有时间和路 ...
- 20175320 2018-2019-2 《Java程序设计》第3周学习总结
20175320 2018-2019-2 <Java程序设计>第3周学习总结 教材学习内容总结 本周学习了教材的第四章的内容.在这章中介绍了面向对象编程的概念以及Java编程中的类与对象, ...
- 并行开发-Paraller
并行开发的概念 并行开发要做的事情就是将任务分摊给硬件线程去并行执行来达到负载和加速,传统的代码都是串行的,就一个主线程,当我们为了实现加速而开了很多工作线程,这些工作线程就是软件线程 Paralle ...
- windows 创建共享文件夹
1.右键要共享的文件夹----“共享”------“指定特定用户”,出现如下对话框: 2.选择“Everyone”,点击“共享”按钮,如下: 3.打开“运行“(win+r),输入上图 双反斜杠后面的内 ...
- 如何在一个电脑上使用两个github账号
问题描述:公司电脑上默认使用的是公司的github账号,如果希望写一些代码放到个人的github账号上,就需要配置让一个电脑上可以使用两个github账号 原理:管理两个SSH key 1.生成两个S ...
- keepalived实现高可用
准备: 1.A-centos(192.168.6.177) 端口为9898的服务 2.B-ubuntu(192.168.6.182) 端口为9898的服务 3.keepalived安装包https ...
- Python加密保护解决方案
防止代码反编译,高强度加密保护exe或pyc文件 产品简介 Python语言写的程序无需编译成二进制文件代码,可以直接从源代码运行程序.在计算机内部,Python解释器把源代码转换成字节码的中间形式, ...
- JMeter已传值但是提示为空
登录时已经传值了,可是一直提示为空 解决:在在请求的url中拼接上参数