数据库操作更改主键、循环插入

--alter table HistoryData drop constraint PK_HistoryData  -- 删除主键

alter table HistoryData add constraint PK_HistoryData primary key (CollectionTime,Code)--更改主键

delete from HistoryData where CollectionTime between‘2014-09-01 00:00:00‘ and ‘2014-11-01 00:00:00‘and ID not in (

select id from (

select Code,CollectionTime,max(ID) id from HistoryData

where CollectionTime between‘2014-09-01 00:00:00‘ and ‘2014-11-01 00:00:00‘group by Code,CollectionTime) a)

--删除重复的列。

循环插入

declare @sDate varchar(20)

declare @eDate varchar(20)

declare @mindate datetime

declare @maxdate datetime

declare @mindateStr varchar(20)

declare @maxdateStr varchar(20)

set @sDate = ‘2015-1-16 06:30:00‘

set @eDate = ‘2015-1-16 08:35:00‘

set @mindate = cast(@sDate as datetime)

set @maxdate = dateadd(mi,5,@mindate) --mi表示分钟,hh小时,day 天

while  @maxdate <= cast(@eDate as datetime)

begin

set @mindateStr = convert(varchar(19),@mindate,120)

set @maxdateStr = convert(varchar(19),@maxdate,120)

--print(@mindateStr)

print(@maxdateStr)

--插数

--insert into

insert into HistoryData values(0.1337,‘9001‘,@maxdate,‘铁离子‘,1,0.1337,0.1337,‘2051‘,‘N‘,‘‘,‘6001‘,‘N‘,‘N‘,‘N‘,‘N‘,0,‘N‘,‘N‘)

set @mindate = @maxdate

set @maxdate = dateadd(mi,5,@maxdate)

end

时间: 2024-10-10 11:58:48

数据库操作更改主键、循环插入的相关文章

mybatis中useGeneratedKeys用法--插入数据库后获取主键值

前言:今天无意在mapper文件中看到useGeneratedKeys这个词,好奇就查了下,发现能解决我之前插入有外键表数据时,这个外键获取繁琐的问题,于是学习敲DEMO记录    在项目中经常需要获取到插入数据的主键来保障后续操作,数据库中主键一般我们使用自增或者uuid()的方式自动生成 问题:对于uuid使用Java代码生成的方式还比较容易控制,然而使用数据库生成的主键,这样我们就需要将插入的数据再查询出来得到主键,某些情况下还可能查询到多条情况,这样就比较尴尬了. 那有什么办法来插入数据

数据库设计中主键问题

转自: http://www.jb51.net/article/40933.htm 数据库主键在数据库中占有重要地位.主键的选取策略决定了系统是否可靠.易用.高效.本文探讨了数据库设计过程当中常见的主键选取策略,并剖析了其做主键的优缺点,提出了相应的解决问题的方法 在基于关系型数据库设计时候,通常要为每张表指定一个主键,所谓主键就是能够唯一标识表中某一行记录的属性或属性组,一个表只能有一个主键,但可以有多个候选索引.因为主键可以唯一标识某一行记录,所以可以确保执行数据更新.删除.修改时不出现错误

SQL数据库中的主键与外键的介绍

一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如 : 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 用户表(用户名.密码.登录级别) 其中用户名是唯一的, 用户名就是一个主键 上机记录表(卡号,学号,姓名.序列号) 上机记录表中单一一个属性无法唯一标识一条记录,学号和姓名的组合才可以唯一标识一条记录,所以 学号和姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的

数据库设计中主键字段类型的选择

很久都没有写过博客了,从最后一次发表的文章到现在已经是两个多月的时间了,一直都想写点什么,可一直没有时间(其实都是借口),随笔内容无疑就是工作学习中的总结,经验的分享,也是自己成长的一面镜子,好了,言规正传,这次谈谈在数据库设计中主键字段类型的选择. 做web 开发时,经常要与数据库交互,数据库主键的选择也犹为重要,怎么么选择数据库主键字段的类型,主要从以下几个方面考虑: 1. 首先要符合业务需求,这是设计中重要的出发点 2. 数据库的迁移问题,考虑在后期是否要经常迁移,数据库高度唯一性 3.程

MySQL数据库自增主键归零的几种方法

MySQL自增主键归零的方法: 如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数: truncate table table_name; 2.  当用户没有truncate的权限时且曾经的数据不需要时: 1)删除原有主键: ALTER TABLE 'table_name' DROP 'id'; 2)添加新主键: ALTER TABLE 'table_name' ADD 'id' int(11) NOT NULL FIRST; 3)设置新主键: ALTER TABLE

sql 语句删除主键、更改主键、删除重复列(多列组合)

--alter table HistoryData drop constraint PK_HistoryData alter table HistoryData add constraint PK_HistoryData primary key (CollectionTime,Code) 更改主键 delete from HistoryData where CollectionTime between'2014-09-01 00:00:00' and '2014-11-01 00:00:00'a

JDBC Insert语句插入Oracle数据库返回数据主键

表结构: create table test( id varchar2(32) primary key, name varchar2(32) ); import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Test { /** * 使用S

xorm插入数据库后返回主键自增id

golang使用xorm连接数据库后,插入结构体,无法返回自增主键id,饭后的主键id都是0.经过研究发现,如果给结构体id设置xorm tag,则会默认id为0,不会返回插入成功后的主键id. xorm文档中如下描述 1 package main 2 3 import ( 4 "fmt" 5 "time" 6 7 _ "github.com/go-sql-driver/mysql" 8 "github.com/go-xorm/xorm

数据库表中主键的设置

主键的设置方法有3种: 一种是设置自增长主键,第二种是采用业务主键,第三种是生成唯一序列(使用uuid/guid);如何选择主键设置方式: 1.主键的使用目的: a.为了保证数据查找唯一; b.提高存储效率和索引效率. 2.使用自增主键的场景:      a:表中找不出3个以内字段可以表示的业务主键      b:没有集中大量的插入操作      c:不使用自增id作为外键(即id变化不影响系统逻辑和功能)      此外自增主键的规律很明显,为了不让别人轻易的采集数据,同时符合以上条件,则优先