一、建立資料庫
我們知道表是屬於架構的,而架構又是屬於資料庫的。要在sql server環境中建立乙個名為testdb的資料庫,可以執行以下**:
if db_id('testdb') is null
create database testdb;
如果不存在名為testdb的資料庫,這段**就會建立乙個新的。db_id函式接受乙個資料庫名稱作為輸入,返回它的內部資料庫id。如果輸入名稱指定的資料庫不存在,這個函式將返回null。這是一種檢查資料庫是否存在的簡單方法。注意:在這個簡單的create database語句中,採用了預設的檔案設定(例如,區域和初始大小)。在產品環境中,通常應該顯示指定所需要的資料庫和檔案的設定。
在例子中使用的架構是dbo,在每個資料庫中都會自動建立這個架構。當使用者沒有預設架構顯示關聯到其他架構時,就會將這個dbo作為預設架構。
二、建立表
以下**在testdb資料庫中建立乙個名為employees的表:
use testdb
if object_id('dbo.employees','u') is not null
drop table dbo.employees;
create table dbo.employees
( empid int not null,
firstname varchar(30) not null,
lastname varchar(30) not null,
hiredate datetime not null,
mgrid int null,
ssn varchar(20) not null,
salary money not null
);
use語句將當前的資料庫上下文切換為testdb。在建立物件的指令碼中加入use語句,它的重要作用是確保要在正確的資料庫中建立物件。
if語句呼叫呼叫object_id函式來檢查當前資料庫中是否已經存在employees表。object_id函式接受乙個物件名稱和型別作為它的輸入。這裡,型別'u'代表使用者表。如果匹配給定輸入名稱和型別的物件存在,這個函式就會返回內部的物件id,否則返回null。如果該函式返回null,就可以知道檢查的資料庫物件是不存在的。在這個例子中,如果employees表已經存在,**就先刪除(drop)這個表,接著再建立乙個新的。當然,也能夠選擇不同的處理辦法,例如,當employees表已經存在時,可以簡單地不建立這個物件。
create table語句負責定義前面提到的關係的主題。在這個語句中先指定表的名稱,接著在圓括號中定義它的各個屬性(列)。注意表名使用了兩部分組成的名稱dbo.employees。如果省略了架構名稱,sql server將使用與執行這段**的資料庫使用者相關聯的預設架構。
對於表的每個屬性,需要指定它的屬性名稱、資料型別和是否允許null資料值。在employees表中,empid(雇員id)和mgrid(經理id)定義為int(4位元組的整數型別);firstname、lastname和ssn(社會保險號,social security number)定義為varchar(可變長長度的字串型別,指定最多支援的字元個數);hiredate定義為datetime,在sql server 2008中可以定義為date,date資料型別是sql server 2008新增的,salary定義為money。
如果不顯示指定乙個列是否允許null值,sql server則採用預設值。ansi規定:如果不指定乙個列是否允許null值,則假設應該是null(允許null值)。但sql server提供了一些設定可以改變這一預設行為。我們強烈推薦在這種情況下要顯示指定設定,不要依賴其預設值。而且,也強烈推薦將列定義為not null,除非有明顯的原因而需要支援null。即使認為乙個列不允許null值,但沒有用not null約束加以限制時,null值仍然可以插入這個列中。在employees表中,除了mgrid列,其他所有列都定義為not null。mgrid屬性為null值表示雇員沒有經理,例如企業的ceo這種情況。
建立資料庫和表
sql server資料庫的型別 兩種資料庫 系統資料庫 使用者資料庫 sql server資料庫包含資料和日誌資訊 主資料檔案 構造資料庫的主檔案,該檔案的副檔名必須為.mdf,sql server資料庫只能有乙個主資料檔案。日誌資料檔案 儲存了萬一失敗時用於恢復資料庫的所有日誌資訊。該檔案的副檔...
建立資料庫和表
一 建立資料庫 我們知道表是屬於架構的,而架構又是屬於資料庫的。要在sql server環境中建立乙個名為testdb的資料庫,可以執行以下 if db id testdb is null create database testdb 如果不存在名為testdb的資料庫,這段 就會建立乙個新的。db...
2 建立資料庫和表
我們將用到三張表 user,blog和post。我們使用的資料庫為test.你可以下面的表結構,也可以讓acriverecord 生成結構 正如你所見到的,user表和其他標沒有任何關聯。它只是用來控制對應用程式的訪問。同時blog表和post表示關聯的。乙個blog可以後多個post,因此關聯就是...