重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
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)