在sqlserver中建立表

來源:互聯網
上載者:User

標籤:

1:在sql語句中,暫存資料表有兩類,分別是局部(local)和全域(global)暫存資料表,局部暫存資料表只在其會話(事務)中可見,全域暫存資料表可以被會話(事務)中的任何程式或者

  模組訪問

 

2:建立局部暫存資料表

     

[sql] view plaincopyprint?
  1. use db_sqlserver  
  2. go  
  3. create table #db_local_table  
  4. (  
  5.   id  int,  
  6.   name varchar(50),  
  7.   age int,  
  8.   area int  
  9. )  
use db_sqlservergocreate table #db_local_table(  id  int,  name varchar(50),  age int,  area int)

建立的暫存資料表不能與其他會話共用,當會話結束時,行和表的定義都將被刪除

 

3:建立全域暫存資料表

[sql] view plaincopyprint?
  1. use db_sqlserver  
  2. go  
  3. create table ##db_local_table  
  4. (  
  5.   id  int,  
  6.   name varchar(50),  
  7.   age int,  
  8.   area int  
  9. )  
use db_sqlservergocreate table ##db_local_table(  id  int,  name varchar(50),  age int,  area int)

全域暫存資料表對所有使用者都是可見的,在每個訪問該表的使用者都斷開伺服器串連時,全域暫存資料表才會被刪除

4:建立主鍵、外部索引鍵關聯的資料庫表

[sql] view plaincopyprint?
  1. use db_sqlserver;  
  2. go  
  3. create table db_table5  
  4. (  
  5.   職工編號 int primary key,  
  6.   職工號  varchar(50) unique,  
  7.   倉庫號  varchar(50),  
  8.   工資   int  
  9. )  
  10.   
  11. go  
  12. create table db_table6  
  13. (  
  14.   訂單編號 int primary key,  
  15.   訂單號  varchar(50) unique,  
  16.   職工號 varchar(50) references db_table5(職工號),  
  17.   訂購日期 datetime,  
  18.   銷售金額 int  
  19. )  
use db_sqlserver;gocreate table db_table5(  職工編號 int primary key,  職工號  varchar(50) unique,  倉庫號  varchar(50),  工資   int)gocreate table db_table6(  訂單編號 int primary key,  訂單號  varchar(50) unique,  職工號 varchar(50) references db_table5(職工號),  訂購日期 datetime,  銷售金額 int)

 

5:建立具有check限制欄位的資料庫表

[sql] view plaincopyprint?
  1. use db_sqlserver;  
  2. go  
  3. create table db_table7  
  4. (  
  5.   倉庫編號 int primary key,  
  6.   職工號  varchar(50) unique,  
  7.   倉庫號  varchar(50),  
  8.   工資   int,  
  9.   面積  int check(面積>=600 and 面積<=1800)  
  10. )  
use db_sqlserver;gocreate table db_table7(  倉庫編號 int primary key,  職工號  varchar(50) unique,  倉庫號  varchar(50),  工資   int,  面積  int check(面積>=600 and 面積<=1800))

6:建立含有計算欄位的資料庫表

  

[sql] view plaincopyprint?
  1. use db_sqlserver;  
  2. go  
  3. create table db_table8  
  4. (  
  5.   職工編號 int primary key,  
  6.   職工號 varchar(50) unique,  
  7.   倉庫號 varchar(50),  
  8.   基本工資 int check(基本工資>=800 and 基本工資<=2100),  
  9.   加班工資 int,  
  10.   獎金 int,  
  11.   扣率 int,  
  12.   應發工資 as (基本工資 + 加班工資 + 獎金 - 扣率)  
  13. )  
use db_sqlserver;gocreate table db_table8(  職工編號 int primary key,  職工號 varchar(50) unique,  倉庫號 varchar(50),  基本工資 int check(基本工資>=800 and 基本工資<=2100),  加班工資 int,  獎金 int,  扣率 int,  應發工資 as (基本工資 + 加班工資 + 獎金 - 扣率))

7:建立含有自動編號欄位的資料庫表

    

[sql] view plaincopyprint?
  1. use db_sqlserver;  
  2. go  
  3. create table db_table9  
  4. (  
  5.    倉庫編號 int identity(1,1) primary key,  
  6.    倉庫號 varchar(50) unique,  
  7.    城市 varchar(50) default(‘青島‘),  
  8.    面積 int check(面積>=300 and 面積<=1800)  
  9. )  
use db_sqlserver;gocreate table db_table9(   倉庫編號 int identity(1,1) primary key,   倉庫號 varchar(50) unique,   城市 varchar(50) default(‘青島‘),   面積 int check(面積>=300 and 面積<=1800))

向表中添加記錄:

[sql] view plaincopyprint?
  1. insert into [db_sqlserver].[dbo].[db_table9](倉庫號, 面積) values(‘400‘, 1600);  
 insert into [db_sqlserver].[dbo].[db_table9](倉庫號, 面積) values(‘400‘, 1600);

倉庫編號會自動增加

 

8:建立含有排序欄位的資料表

[sql] view plaincopyprint?
  1. create table db_table10   
  2. (  
  3.    倉庫編號 int identity(1, 1) primary key,  
  4.    倉庫號 varchar(50) collate french_CI_AI not null,  
  5.    城市 varchar(50) default ‘青島‘,  
  6.    面積 int check(面積>=300 and 面積<=1800)  
  7. )  
create table db_table10 (   倉庫編號 int identity(1, 1) primary key,   倉庫號 varchar(50) collate french_CI_AI not null,   城市 varchar(50) default ‘青島‘,   面積 int check(面積>=300 and 面積<=1800))

倉庫號是一個排序欄位,其中CI(case insensitive)表示不區分大小寫,AI(accent insensitive)表示不區分重音,即建立的是一個不區分大小寫

 

和不區分重音的排序。如果要區分大小和和區分排序,修改代碼為:French_CS_AS

 

9:動態判斷資料庫表是否存在

[sql] view plaincopyprint?
  1. use db_sqlserver;  
  2. go  
  3. if(Exists(select * from sys.sysobjects where id=OBJECT_ID(‘db_table9‘)))  
  4.   print ‘資料庫表名已經存在‘  
  5.     
  6. else   
  7.   print ‘該資料庫表名不存在,可以利用該名建立表‘  
use db_sqlserver;goif(Exists(select * from sys.sysobjects where id=OBJECT_ID(‘db_table9‘)))  print ‘資料庫表名已經存在‘  else   print ‘該資料庫表名不存在,可以利用該名建立表‘

 

10:查看錶的各種資訊,可以查看指定資料庫表的屬性、表中欄位屬性、各種約束等資訊

 

[sql] view plaincopyprint?
  1. use db_sqlserver;  
  2. go  
  3. execute sp_help db_table9;  
use db_sqlserver;goexecute sp_help db_table9;

 

 

11:用select語句查看資料庫表的屬性資訊

[sql] view plaincopyprint?
  1. use db_sqlserver;  
  2. go  
  3. select * from sysobjects where type=‘U‘  
use db_sqlserver;goselect * from sysobjects where type=‘U‘

12:重新命名資料庫表

[sql] view plaincopyprint?
  1. use db_sqlserver;  
  2. go  
  3. execute sp_rename "db_table9", "db_renametable"  
use db_sqlserver;goexecute sp_rename "db_table9", "db_renametable"

13:增加資料庫表的新欄位   

[sql] view plaincopyprint?
  1. use db_sqlserver;  
  2. go  
  3. alter table db_table1 add 電子郵件 varchar(50)  
  4. alter table db_table1 add 連絡方式 varchar(50) default ‘0532-88886396‘  
  5.   
  6. select name 欄位名, xusertype 類型編號, length 長度 from syscolumns where id = object_id(‘db_table1‘)  
use db_sqlserver;goalter table db_table1 add 電子郵件 varchar(50)alter table db_table1 add 連絡方式 varchar(50) default ‘0532-88886396‘select name 欄位名, xusertype 類型編號, length 長度 from syscolumns where id = object_id(‘db_table1‘)


14:修改資料庫表的欄位

[sql] view plaincopyprint?
  1. use db_sqlserver;  
  2. go  
  3. alter table db_table1 alter column 電子郵件 varchar(200)  
  4.   
  5.   
  6. select name 欄位名, xusertype 類型編號, length 長度 from syscolumns where id = object_id(‘db_table1‘)  
use db_sqlserver;goalter table db_table1 alter column 電子郵件 varchar(200)select name 欄位名, xusertype 類型編號, length 長度 from syscolumns where id = object_id(‘db_table1‘)


15:刪除資料庫表欄位

[sql] view plaincopyprint?
  1. use db_sqlserver;  
  2. go  
  3. alter table db_table1 drop column 電子郵件   
  4.   
  5.   
  6. select name 欄位名, xusertype 類型編號, length 長度 from syscolumns where id = object_id(‘db_table1‘)  
use db_sqlserver;goalter table db_table1 drop column 電子郵件 select name 欄位名, xusertype 類型編號, length 長度 from syscolumns where id = object_id(‘db_table1‘)


16:刪除資料庫表  

[sql] view plaincopyprint?
  1. use db_sqlserver;  
  2. go  
  3. drop table db_table1  
  4. drop table db_table1, db_table2  
use db_sqlserver;godrop table db_table1drop table db_table1, db_table2

如果刪除有依賴關聯的資料庫表,即主鍵、外鍵關鍵表、則要刪除兩個表之間的關聯約束,然後才能刪除表。注意,也可以先刪除引用該表的資料庫表,然後 即可刪除該表,

在sqlserver中建立表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.