自增字段的SQL語句解決方案 收藏

create table [表名]
(
[自動編號字段] int IDENTITY (1,1) PRIMARY KEY ,
[字段1] nVarChar(50) default '默認值' null ,
[字段2] ntext null ,
[字段3] datetime,
[字段4] money null ,
[字段5] int default 0,
[字段6] Decimal (12,4) default 0,
[字段7] p_w_picpath null ,
)
刪除表:
Drop table [表名]
插入數據:
INSERT INTO [表名] (字段1,字段2) VALUES (100,'51WINDOWS.NET')
刪除數據:
DELETE FROM [表名] WHERE [字段名]>100
更新數據:
UPDATE [表名] SET [字段1] = 200,[字段2] = '51WINDOWS.NET' WHERE [字段三] = 'HAIWA'
新增字段:
ALTER TABLE [表名] ADD [字段名] NVARCHAR (50) NULL
刪除字段:
ALTER TABLE [表名] DROP COLUMN [字段名]
修改字段:
ALTER TABLE [表名] ALTER COLUMN [字段名] NVARCHAR (50) NULL
重命名錶:(Access 重命名錶,請參考文章:在Access數據庫中重命名錶)
sp_rename '表名', '新表名', 'OBJECT'
新建約束:
ALTER TABLE [表名] ADD CONSTRAINT 約束名 CHECK ([約束字段] <= '2000-1-1')
刪除約束:
ALTER TABLE [表名] DROP CONSTRAINT 約束名
新建默認值
ALTER TABLE [表名] ADD CONSTRAINT 默認值名 DEFAULT '51WINDOWS.NET' FOR [字段名]
刪除默認值
ALTER TABLE [表名] DROP CONSTRAINT 默認值名
刪除Sql Server 中的日誌,減少數據庫文件大小
dump transaction 數據庫名 with no_log
backup log 數據庫名 with no_log
dbcc shrinkdatabase(數據庫名)
exec sp_dboption '數據庫名', 'autoshrink', 'true'

自增列不能直接修改,必須將原有ID列刪除,而後從新添加一列具備identity屬性的ID字段,語句以下
alter table 表名
drop column ID
alter table 表名
add ID int identity(1,1)
修改日期字段爲Datatime類型,首先要保證表中無數據,或現有數據能夠直接轉換爲datetime類型,不然修改字段類型就會失敗。
alter table 表名
alter column 日期字段名 datetime
1, 使用一個數據庫以前要引用他:use 數據庫名
2, exists()判斷子查詢的結果是否存在,返回true or false
3, object_id('對象名') 返回該對象名對應的Id,該id存儲在sysobjects表中。
4, 建表時自動創建主鍵約束:create table a(b char(4),c int,constraint 主鍵名 primary key(c))
或者:create table a(a char(4) cint primary key) 或者:create table a(a char(4) cint constraint 主鍵名 primary key)
5, 建立索引:create index 索引名 on 表名(字段名)
6, 爲一個表添加外鍵:alter table 表名 add constraint 外鍵名 foreign key(字段)references 表名(字段)
7, identity(seed,range) 建立一個標識列,與null,not null並列。seed表示種子,即初始值;range表示增加幅度。
8, 局部臨時表 #xxx ,只能被當前會話訪問,在該會話結束後自動消失。
9, 全局臨時表 ##xx , 能夠供多個用戶使用,在該會話結束後自動消失。
10,爲表 添加/修改/刪除列 :alter table 表名 add 列名 type/alter column 列名 newtype/drop 列名
11,能夠經過屢次安裝sqlserver爲其建立多個實例
12,用系統過程 sp_reZGXX_XM 從新命名錶和列:
sp_reZGXX_XM 原表名,新表名
sp_reZGXX_XM "表名.原列名",新列名
13,若是想顯示的在identity列中插入值,則須要先設置:set identity_insert 表名 on
插入完畢後最好設置:set identity_insert 表名 off
14, 利用writetext往text 或 p_w_picpath列中寫入值:
declare @var varbinary(16)
select @var=textptr(c) from test where a=10
writetext test.c @var 'zhongguo '
注意:使用Writetext,通常須要首先這樣設置:sp_dboption 數據庫名,'SELECT into/bulkcopy',true
15, truncate table 表名 刪除表格的全部數據,速度很快。
16,統計函數中除了count(*) 以外,都忽略空值(null).
17, 因爲text和p_w_picpath類型數據很長,在查詢以前能夠經過設置全局變量textsize來指定返回數據的長度,set textsize 50
若是想查閱全局變量textsize的值:select @@textsize
18, 經過reaDtext 讀取text的數據:
declare @var varbinary(16)
select @var=textptr(c) from test where a=10
readtext test.c @var 4 3
此例返回第5,6,7個字符。應爲長度要求是3,起始是0,因此4表示從第五個字符讀起。
其中textptr是返回指定的text,ntext,p_w_picpath列的指針,通常保存到varbinary類型的變量中
19, like 語句中,能夠指定簡單的正則表達式,[a-z]表示一個任意字母,[^a-z]表示一個非字母字符
20,like 也是惟一能夠在text列上使用的操做符
21,邏輯操做符優先級:NOT > AND > OR
22, 在group by 一個記錄集時,全部的null組成一組。
23,帶有group by 子句的 select中能夠有where子句,可是where 子句必須放在group by 前面。
24,若是group by 子句中用了all,即 group by all xxx ,則不符合檢索條件的記錄也顯示,但不參與統計。
25,having 中,只能包含 group by子句中 指定的列,也能夠包含統計函數。where中可指定任何列,可是不能用統計函數
26, having 子句從最終結果中將不知足該條件的分組去掉
27,不帶group by子句時也可使用having子句,並將整個查詢結果做爲一個組,可是,因爲出如今選擇列表中的列
和出如今having子句中的列必須是group by 子句中的列,因此,當不帶group by子句時,不能在having子句和
選擇列表中直接使用列名,只能使用統計函數。
28,當在group by子句後指定order by子句時,只能在order by子句中指定group by子句中的列或者統計函數
29,在進行union運算時,自動刪除結果中的重複行,若是使用all選項 ,則能夠將全部行顯示在結果中:union all
30, 在union時,合併結果集中的列名有第一個查詢給出,因此後面進行排旬時必定要注意order by 子句中的字段名
31,能夠經過 select fieldslist into 新表名 from 表名,來建立一個新表,並將當前表中的數據所有插入到新
表中,可是作這個操做以前須要保證數據庫選項 select into/bulkcopy 設置爲true。方法以下:
use master /*設置命令必須在master數據庫中進行*/
sp_dboption 數據庫a名,"select into/bulkcopy",true /*設置數據庫選項*/
use 數據庫a名
checkpoint /*使設置結果生效*/
若是要將統計結果或者計算結果插入到新表中,必須以標題的形式給出列名,如:
select a,b=avg(c) into mm from nn group by a
32, 隨即取出N條記錄的方法:select top N * from 表名 order by newid()
33,建立惟一約束:create table a(b int not nul constraint 約束名 unique,c char(10) null)
或者:create table a(b int,c char(10),constraint 約束名 unique(b))
34,在sql server表格選定一個單元格,ctrl+0便可將單元格的值置爲null
35,爲變量賦值方法:set @xxx=??? ,若是變量的值取自一個查詢的話,須要用select, 如:select @xxx=??? from ??? where ????
若是要返回一個記錄集,可是不是從一個表格,而是所有是系統變量或自定義變量組成。則沒必要寫from子句:select ??,??,??
36,建立一個返回一張表的函數:
create function fn_Tree(@Id int)
returns table @tb (id int ,fid int)
as
begin
insert @tb select id,fid from tablename where fid=@id
while exists (select 1 from tablename where fid in (select id from @tb)
and id not in (select id from @tb) )
insert @tb select id,fid from tablename where fid in (select id from @tb)
and id not in (select id from @tb)
return
end
表的字段爲id,fid
insert @tb select 語句,將查詢結果插入到當前的表格(@tb)中
調用:
select * from dbo.fn_Tree(0)
go
select * from dbo.fn_Tree(1
go
37,一個日期格式轉換的例子,通常能夠用convert,cast等函數轉換,可是這個例子沒有:
declare @a varchar(50)
declare @b varchar(50)
declare @c int
declare @d varchar(50)
declare @e varchar(50)
set @a='1/20/03 10:06:41:59' set @b=reverse(@a) set @c=charindex('/',@b) set @d=stuff(@b,@c,0,'02') set @e=reverse(@d) select @a,@b,@c select @d,@e 
相關文章
相關標籤/搜索