標籤:
1:在sql語句中,暫存資料表有兩類,分別是局部(local)和全域(global)暫存資料表,局部暫存資料表只在其會話(事務)中可見,全域暫存資料表可以被會話(事務)中的任何程式或者
模組訪問
2:建立局部暫存資料表
[sql] view plaincopyprint?
- use db_sqlserver
- go
- create table #db_local_table
- (
- id int,
- name varchar(50),
- age int,
- area int
- )
use db_sqlservergocreate table #db_local_table( id int, name varchar(50), age int, area int)
建立的暫存資料表不能與其他會話共用,當會話結束時,行和表的定義都將被刪除
3:建立全域暫存資料表
[sql] view plaincopyprint?
- use db_sqlserver
- go
- create table ##db_local_table
- (
- id int,
- name varchar(50),
- age int,
- area int
- )
use db_sqlservergocreate table ##db_local_table( id int, name varchar(50), age int, area int)
全域暫存資料表對所有使用者都是可見的,在每個訪問該表的使用者都斷開伺服器串連時,全域暫存資料表才會被刪除
4:建立主鍵、外部索引鍵關聯的資料庫表
[sql] view plaincopyprint?
- use db_sqlserver;
- go
- create table db_table5
- (
- 職工編號 int primary key,
- 職工號 varchar(50) unique,
- 倉庫號 varchar(50),
- 工資 int
- )
-
- go
- create table db_table6
- (
- 訂單編號 int primary key,
- 訂單號 varchar(50) unique,
- 職工號 varchar(50) references db_table5(職工號),
- 訂購日期 datetime,
- 銷售金額 int
- )
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?
- use db_sqlserver;
- go
- create table db_table7
- (
- 倉庫編號 int primary key,
- 職工號 varchar(50) unique,
- 倉庫號 varchar(50),
- 工資 int,
- 面積 int check(面積>=600 and 面積<=1800)
- )
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?
- use db_sqlserver;
- go
- create table db_table8
- (
- 職工編號 int primary key,
- 職工號 varchar(50) unique,
- 倉庫號 varchar(50),
- 基本工資 int check(基本工資>=800 and 基本工資<=2100),
- 加班工資 int,
- 獎金 int,
- 扣率 int,
- 應發工資 as (基本工資 + 加班工資 + 獎金 - 扣率)
- )
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?
- use db_sqlserver;
- go
- create table db_table9
- (
- 倉庫編號 int identity(1,1) primary key,
- 倉庫號 varchar(50) unique,
- 城市 varchar(50) default(‘青島‘),
- 面積 int check(面積>=300 and 面積<=1800)
- )
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?
- insert into [db_sqlserver].[dbo].[db_table9](倉庫號, 面積) values(‘400‘, 1600);
insert into [db_sqlserver].[dbo].[db_table9](倉庫號, 面積) values(‘400‘, 1600);
倉庫編號會自動增加
8:建立含有排序欄位的資料表
[sql] view plaincopyprint?
- 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)
- )
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?
- use db_sqlserver;
- go
- if(Exists(select * from sys.sysobjects where id=OBJECT_ID(‘db_table9‘)))
- print ‘資料庫表名已經存在‘
-
- else
- print ‘該資料庫表名不存在,可以利用該名建立表‘
use db_sqlserver;goif(Exists(select * from sys.sysobjects where id=OBJECT_ID(‘db_table9‘))) print ‘資料庫表名已經存在‘ else print ‘該資料庫表名不存在,可以利用該名建立表‘
10:查看錶的各種資訊,可以查看指定資料庫表的屬性、表中欄位屬性、各種約束等資訊
[sql] view plaincopyprint?
- use db_sqlserver;
- go
- execute sp_help db_table9;
use db_sqlserver;goexecute sp_help db_table9;
11:用select語句查看資料庫表的屬性資訊
[sql] view plaincopyprint?
- use db_sqlserver;
- go
- select * from sysobjects where type=‘U‘
use db_sqlserver;goselect * from sysobjects where type=‘U‘
12:重新命名資料庫表
[sql] view plaincopyprint?
- use db_sqlserver;
- go
- execute sp_rename "db_table9", "db_renametable"
use db_sqlserver;goexecute sp_rename "db_table9", "db_renametable"
13:增加資料庫表的新欄位
[sql] view plaincopyprint?
- use db_sqlserver;
- go
- alter 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‘)
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?
- use db_sqlserver;
- go
- alter table db_table1 alter column 電子郵件 varchar(200)
-
-
- 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?
- use db_sqlserver;
- go
- alter table db_table1 drop column 電子郵件
-
-
- 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?
- use db_sqlserver;
- go
- drop table db_table1
- drop table db_table1, db_table2
use db_sqlserver;godrop table db_table1drop table db_table1, db_table2
如果刪除有依賴關聯的資料庫表,即主鍵、外鍵關鍵表、則要刪除兩個表之間的關聯約束,然後才能刪除表。注意,也可以先刪除引用該表的資料庫表,然後 即可刪除該表,
在sqlserver中建立表