MS SQL Server 2010:
创新互联致力于互联网网站建设与网站营销,提供成都网站制作、网站建设、外贸网站建设、网站开发、seo优化、网站排名、互联网营销、微信平台小程序开发、公众号商城、等建站开发,创新互联网站建设策划专家,为不同类型的客户提供良好的互联网应用定制解决方案,帮助客户在新的全球化互联网环境中保持优势。
select PROC_NUM,case Id when 0 then PROC_NUM else PROC_NUM + CONVERT(nvarchar,Id) end from (
Select ROW_NUMBER() over(partition by proc_num order by proc_num) -1 as Id, proc_num
from dbo.Cooler
) as a
那是你设置了id自动增加 AUTO_INCREMENT
你在插入时连id也插入,就可以
(id,name,cont) values (1,'name','cont')
每次插入时,id你可以先取表里最大值 再加上1
主键和主键的自动递增字段
每个表都应有一个主键字段。主键用于对表中的行(注:列表中的每一行)进行唯一标识。每个主键值(注:行)每在表中必须是唯一的。此外,主键字段不能为空,这是由于数据库引擎需要一个值来对记录进行定位。主键字段永远要被编入索引。这条规则没有例外。你必须对主键字段进行索引,这样数据库引擎才能快速定位给予该键值的行。下面的例子把 personID 字段设置为主键字段。主键字段通常是 ID(注:IDnetity的缩写,身份标识号码的意思) 号,且通常使用 AUTO_INCREMENT(注:increment,中文意思是增加的意思) 设置。AUTO_INCREMENT 会在新记录(注:)被添加时逐一增加该字段的值。要确保主键字段不为空,我们必须向该字段添加 NOT NULL(注:不为空) 设置。
关系型数据库的特点在于多个表之间使用关系联系起来这样可以显著降低数据库的容量,并提高维护效率主键并不是必须的但是增加主键对单表查询的效率提升很高所以从原理上来说只要该字段绝对不会重复那么使用任何类型的字段,比如你上面所说的人名也是可以的但是如果考虑到与其它表的相互连接使用人名的可操作性就不是很好所以,第一点,建议你另外增加一个自动编号的字段作为id,用来做主键第二点,关系型数据库的特点就是多表之间有冗余,但是实际上是降低了整个数据库的维护难度,鉴于你看起来对关系型数据库原理不清楚更建议你先把关系型数据库原理再看看
创建个表不熟悉,不但慢,还容易出错。并且不直观。真不知道为什么那么多的人喜欢这个玩意。难道就是速度快?安全性好吗?
主键是数据表的唯一索引。
1、建表的时候是这样设置的:
CREATE TABLE mytable
(
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
title VARCHAR(20),KEY(id)
);
就这样,就可以建立主键了。
你使用:show columns in mytable进行查看创建的列表.
2、如果我们开始建表的时候没有设置任何字段为主键,那么,现在我们要添加一个主键或者说是要让一个字段变为自动编号,哪么该怎么办呢?
alter table myphp.users
modify column id int unsigned not null auto_increment,
add primary key(id);
就这样,不但设置了自动编号,同时设置了主键。
CREATE TABLE test_random_time ( id int, newstime datetime); INSERT INTO test_random_timeSELECT 1, '2012-11-13 01:00:00' UNION ALLSELECT 2, '2012-11-13 02:00:00' UNION ALLSELECT 3, '2012-11-13 03:00:00' UNION ALLSELECT 4, '2012-11-13 04:00:00' UNION ALLSELECT 5, '2012-11-13 05:00:00'; -- 20点至23点。-- 区间=3小时=180分钟=10800秒-- 下面更新时间 = '2012-11-13 20:00:00' 之后的 随机秒数。(区间在 1- 10800 之间)UPDATE test_random_timeSET newstime = DATE_ADD('2012-11-13 20:00:00', INTERVAL FLOOR(1 + (RAND() * 10800)) SECOND )WHERE DATE(newstime) = '2012-11-13'; -- 数据核对.mysql SELECT * FROM test_random_time;+------+---------------------+| id | newstime |+------+---------------------+| 1 | 2012-11-13 22:25:14 || 2 | 2012-11-13 22:41:16 || 3 | 2012-11-13 20:10:35 || 4 | 2012-11-13 21:49:08 || 5 | 2012-11-13 22:33:55 |+------+---------------------+5 rows in set (0.00 sec)