R
primary key主鍵identity(1,1)自動增長,初始值1,增量1references外來鍵、引用外鍵default(getdate())defaut預設值為當前時間 getdate()check檢查限制sys.objects查詢tableunique不重複,唯一的約束、獨一無二decimal(12,2)12:總長度12(整數+小數),2:小數2位char固定長度。char(10)存’AB’,占10字元。一旦建立,就占10字元varchar變動長度。varchar(10)存’AB’,占2字元。只要在範圍內,存多少占多少。char、varchar前面加上n,儲存unicode字串,對中文友好。varchar(100)儲存100個字母,50個中文字nvarchar(100)儲存100個字母,100個中文字if exists判斷xxx是否存在drop刪除。drop database dbname刪db、drop table tablename刪表
[SQL筆記] char, varchar, nchar, nvarchar
切換資料庫
1
use DBTEST
建立資料表基本語法
1
2
3
4
5
create table 表名
(
欄位名1 數據類型
欄位名2 數據類型
)
建表(部門、職級、員工)
部門
1
2
3
4
5
6
7
8
9
10
11
12
13
14
--判斷資料表是否存在
if exists(select * from sys.objects where name='Department' and type='U')
drop table Department --刪除資料表
--建表(部門、職位、員工)
create table Department
(
--部門編號,primary key主鍵, identity(1,1)自動增長,初始值1,增量1
DepartmentId int primary key identity(1,1), --主鍵
-- 部門名稱
DepartmentName nvarchar(50) not null, --不能為空
-- 路門描述
DepartmentRemark nvarchar(max)
)
primary key主鍵identity(1,1)自動增長,初始值1,增量1not null不能為空sys.objects查詢資料表
select * from sys.objects
數據類型
char定長,固定大小,字元資料類型。固定大小字串資料。char(10)不管裡面儲存多少數據,都占10個字元。
(中文字兩個字元)varchar變長,可變大小字串資料。varchar(10)只要在範圍內,儲存就個就占用幾個,最多占用10個字元。
char一創建就占據了固定的字元長度,varchar只要在範圍內,儲存幾個就占用幾個。
char,varchar,text前面加n:儲存unicode字串,對中文友好varchar(100):儲存100個字母,或是50個中文字nvarchar(100):儲存100個字母,或是100個中文字
1
2
3
4
5
char(10) --儲存'ab',仍然占用10個字元
varchar(10) --儲存'ab',占用2個字元
-- char,varchar,text 前面加n:儲存unicode字串,對中文友好
-- varchar(100):儲存100個字母,或是50個中文字
-- nvarchar(100):儲存100個字母,或是100個中文字
職級
Table名為關鍵字要加上[]
如果資料表名稱剛好是關鍵字,就要加上[],比如:資料表名為Rank,那就要加上[]變成[Rank]。
1
2
3
4
5
6
7
8
9
create table [Rank]
(
--職等編號, primary key主鍵,identity(1,1)自動增長,初始值1,增量1
RankId int primary key identity(1,1),
--職等名稱
RankName nvarchar(50) not null,
--職等描述
RankRemark nvarchar(max)
)
員工
1
2
3
4
5
6
7
8
9
10
11
12
13
create table Employee
(
EmployeeID int primary key identity(1,1), --員工編號
DepartmentId int references Department(DepartmentId)not null, --部門(引用外鍵)
RankId int references [Rank](RankId) not null,--職等
EmployeeName nvarchar(50) not null, --姓名
EmployeeSex nvarchar(1) default('男') check(EmployeeSex='男' or EmployeeSex-'女') not null, --性別
EmployeeBirth smalldatetime not null, --生日
EmployyeeSalary decimal(12,2) check(EmployteeSalary>=1000 and EmployteeSalary <=1000000) not null, --月薪
EmployeePhone varchar(20) unique not null, --電話
EmployeeAddress varchar(300), --地址
EmployeeAddTime smalldatetime default(getdate())--加入時間
)
default('男')默認值:男decimal(12,2)總長度12(整數+小數=12),小數點2位unique唯一的約束,獨一無二,不重複default(getdate())默認取得當前時間references外來鍵
若使用 char 或 varchar,建議您:
- 當資料行資料項目的大小一致時,請使用
char。 - 當資料行資料項目的大小變化相當大時,請使用
varchar。 - 當資料行資料項目的大小變化相當大,且字串長度可能超出 8,000 位元組時,請使用
varchar(max)
完整sql script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
--切換資料庫
use DBTEST
--判斷資料表是否存在
if exists(select * from sys.objects where name='Department' and type='U')
drop table Department --刪除資料表
--建表(部門、職位、員工)
create table Department
(
--部門編號,primary key主鍵, identity(1,1)自動增長,初始值1,增量1
DepartmentId int primary key identity(1,1), --主鍵
-- 部門名稱
DepartmentName nvarchar(50) not null, --不能為空
-- 路門描述
DepartmentRemark nvarchar(max)
)
--職等
create table [Rank]
(
--職等編號, primary key主鍵,identity(1,1)自動增長,初始值1,增量1
RankId int primary key identity(1,1),
--職等名稱
RankName nvarchar(50) not null,
--職等描述
RankRemark nvarchar(max)
)
--員工
create table Employee
(
EmployeeID int primary key identity(1,1), --員工編號
DepartmentId int references Department(DepartmentId)not null, --部門(引用外鍵)
RankId int references [Rank](RankId) not null,--職等
EmployeeName nvarchar(50) not null, --姓名
EmployeeSex nvarchar(1) default('男') check(EmployeeSex='男' or EmployeeSex='女') not null, --性別
EmployeeBirth smalldatetime not null, --生日
EmployeeSalary decimal(12,2) check(EmployeeSalary>=1000 and EmployeeSalary <=1000000) not null, --月薪
EmployeePhone varchar(20) unique not null, --電話
EmployeeAddress varchar(300), --地址
EmployeeAddTime smalldatetime default(getdate())--加入時間
)