這一節記錄如何建立和修改表。怎麼增加刪除列,修改屬性,設定主鍵,外來鍵等
create
table 表名
(列 資料型別 約束或預設值,
列 資料型別 約束或預設值,,..
.)
例如我們要建立乙個學生表,那麼我們要先建立乙個資料庫
create
database student_manager
gouse student_manager
gocreate
table students(
s_id int
notnull
,s_name nvarchar(30)
notnull
,s_*** bit
notnull
,s_age tinyint
notnull
)go
[注]盡量設定not null,因為如果是null的話,系統會為null的列的每一行分配額外的乙個位元組。在查詢時會帶來額外的開銷。
上面的s_age還可以做如下改寫s_age as datediff(year,s_birthday,getdate())
這樣在輸入生日後,會自動計算年齡。
如果要把計算列物理化 要加末尾加persisted
,這樣計算後的數值會被持久化,不用每次查詢的時候就計算,但是請注意,內部不能有非確定函式。
那麼如何批量的從a資料庫的a表匯入到b資料庫的b表呢。
select
[purchaseorderid]
,[employeeid]
,[orderdate]
into 資料庫名.擁有者名.表名
from
臨時表分為本地臨時表和全域性臨時表。本地臨時表在建立時候加乙個「#」,全域性臨時表加「##」。所以建立普通表和臨時表的方法是通用的,唯一不同的是,需要加符號。
[注]盡量不要使用臨時表,一般可以使用子查詢代替臨時表。臨時表會帶來系統開銷。並且在有些情況下,臨時表會一直存在到斷開連線。。sql server提供了一些代替的方法,如使用table資料型別。
首先我們要知道什麼是分割槽
分割槽就是為了改善大型表以及具有各種訪問模式的表的可伸縮性和可管理性。
分割槽表是按照資料水平方式分割槽,將資料分布於資料庫的多個不同檔案組中,在查詢或更新則對單獨的邏輯單元進行操作。
第二個問題就是,為什麼要使用分割槽。通常建立表為了儲存某種實體,並且每個表有描述該實體的屬性資訊。,乙個表對應乙個實體是最容易設計和理解的。
死三個問題,分割槽能帶來什麼好處?
當表和索引變得非常大時,分割槽可以將資料分為更小更容易管理的部分。
並且對於多個cpu的系統,分割槽可以對錶的操作通過並行和方式進行。
操作步驟
--建立檔案組
use student_manager
goalter
database student_manager
add filegroup q1
goalter
database student_manager
add filegroup q2
--為檔案組新增資料檔案,分割槽檔案最好放在不同磁碟上,提高磁碟的讀寫速度。
alter
database student_manager
addfile
(name=n'file200912'
,filename=n'd:\file200912.ndf'
,size=
5mb,maxsize=unlimited,
filegrowth=
5mb)
to filegroup[q1]
goalter
database student_manager
addfile
(name=n'file201012'
,filename=n'd:\file201012.ndf'
,size=
5mb,maxsize=unlimited,
filegrowth=
5mb)
to filegroup[q2]
go
然後做以日期,數字和字元作為分割槽條件的三個例項,後續中我們使用日期作為分割槽條件的分割槽函式。
--建立乙個分割槽條件為日期的分割槽函式
create
partition
function monthdaterange(
date
)as range left
forvalues
('20091231'
)go
如果分割槽條件是int型別的數字列
create
partition
function intrange(
int)
as range left
forvalues
(1000
,2000
,3000
)go
如果分割槽條件是字串分割槽
create
partition
function intrange(
nchar(20
))as range right
forvalues
('a'
,'h'
,'w'
)go
建立分割槽方案,由於建立分割槽方案需要根據分割槽函式的引數定義對映表分割槽的檔案組,所以必須偶足夠的檔案組去容納分割槽數。
乙個分割槽方案只能使用乙個分割槽函式,但是乙個分割槽看書可以被多個分割槽方案共用。
create
partition scheme monthdaterangescheme
aspartition monthdaterange
to(q1,q2)
go
然後建立分割槽表
create
table orderlt
(id int
notnull
,name nvarchar(30)
notnull
,cdate date
default
(getdate())
)on mouthdaterangescheme(cdate)
go
如何檢視分割槽表資訊呢?
select
*from sys.partitions where object_id=objcte_id(
'orderlt'
)
如何插入資料?
insert
into orderlt(id,name,cdate)
values(1
,'tv'
,'2008-11-3'
)
如何知道資料存放在哪個分割槽?
select
*,$partition
.monthdaterange(cdate)
as'所在分割槽號'
from orderlt
where cdate>=
'2008-10-05'
抽象化表達就是
select
* ,$partition
.分割槽函式名(分割槽列)
from 分割槽表名 where分割槽列》=『查詢條件』
表建立完成以後,可以對錶進行一系列操作
增加和刪除列
建立和修改識別符號
查詢刪除
注意 :
刪除表和刪除表中資料是不一樣的
刪除表 這個實體消失,資料也不存在了
刪除表中資料 表的結構還在
且存在外來鍵約束無法刪除
--刪除表
drop
table 表名
SQL之建立和修改表
注意 create table語句用於新增表 alter table語句用於修改表定義 drop table語句用於刪除資料庫中的表及其資料 如果執行刪除表中的資料,而不刪除表定義本身,應當怎麼辦?這時就是drop和delete的區別 刪除資料 delete from 表名 全刪 delete fr...
sql建立和維護表
建立和維護表 這一章的操作是對 本身的操作,這些操作都是立即生效的,同時會將所有沒有提交的修改一次性提次 建立 sql語句 語法 create table 表名 列名1 資料型別 default 值,列名2 資料型別 default 值,說明 資料型別是指該列能夠儲存的資料型別 default指出如...
oracle學習筆記(表的建立和修改)
建立表 create table tablename 列名 型別 default value create table tablename 列名 as 子查詢 修改表 1.增加一列 alter table 表名add 列名型別 2.改變列的屬性 型別,約束等,列名不能改 alter table 表名...