1. 程式人生 > 實用技巧 >關於SqlServer表結構 2(迴歸基礎)

關於SqlServer表結構 2(迴歸基礎)

關於SqlServer表結構的問題。先來了解一下SqlServer中的資料型別以及它們的用法

整型: 短整型 smallint 整型 int 長整型 bitint

標識列:identity(它是隻讀的)只能用整型 smallint、int、bigint

浮點數:float--->C#、java的double

money--->decimal

bit 0,1--->boolean false、true

字串型別:

char(10) 單位元組固定長度的字元型別、不足不空格,最大8000

varchar(10) 單位元組可變長度的字元型別,可回收沒有用到的空間,最大8000

關於兩者的選擇,關鍵在於在處理資料時是否保證填滿,如果保證填滿可以選擇char,相反如果不確定錄入的資料是否能夠填滿多少個位元組,那麼就選擇varchar,因為他可以回收未填滿的資料,減少記憶體的消耗!

標準字元:可以在鍵盤上看得到的字元都屬於標準字元(單位元組)

非標準字元:中文、日文、法文、俄文等(雙位元組)

nchar:雙位元組 第一個字母 n 就是Unicode的縮寫(所有鍵盤上看不到的都屬於Unicode編碼範圍) 有多少存多少,最大4000,因為是雙位元組 8000/2

nvarchar:可回收雙位元組 Unicode 最大4000

與char和varchar原理是一樣的,帶n一個數字代表雙位元組。不帶n一個數字代表單位元組

text 最大2GB文字上限

ntext:沒記錯的話應該是可變的

時間型別:

date:日期 年月日

time:時間 時分秒

datetime:日期時間 年月日時分秒

--primary key 1.不允許為空 2.不允許重複 3.可以被子表的外來鍵列引用
--identity(1,1) 標識列只能在整型列上使用 只讀的不允許修改 --not null 不允許為空 --unique不允許重複,唯一 --foreign key 外來鍵 --references 引用 --check 檢查約束用來判斷資料型別是否合法 --getdate獲取當前系統時間 --datediff 時間差 datediff(year,BornDate,getdate())引數一:按年來算時間差(也可以是month,day),引數二:錄入時間 ,引數三系統時間 後面時間-前面時間 --len()獲取字元數量 create table Grade ( Id int primary
key identity(1,1), GradeName varchar(10) not null ) go create table Class ( Id int primary key identity(1,1), ClassName varchar(10) not null unique, GradeId int foreign key references Grade(Id) ) go create table Student ( Id int primary key identity(1,1), StuCode int not null, ClassId int references Class(Id) not null, StuName nvarchar(10) not null check(len(StuName)>=2) default('佚名'), --姓名必須大於等於2 BornDate date not null check(datediff(year,BornDate,getdate())>=18), Phone varchar(25) not null, [Address] nvarchar(200) null default('宿舍'), Email varchar(20) null ) go