數據類型 整型 int 小數 double 精確度要求高的 ———Decimal(18,4) 對應Java中的類型 BigDecimal 字元串:nvarchar(32) varchar char char:定長字元串(一旦設定了長度,無論真實內容有多少,都要占用指定長度的空間) varchar:可 ...
數據類型
整型 int
小數 double
精確度要求高的 ———Decimal(18,4)
對應Java中的類型 BigDecimal
字元串:nvarchar(32) varchar char
char:定長字元串(一旦設定了長度,無論真實內容有多少,都要占用指定長度的空間)
varchar:可變字元串
nvarchar()防止亂碼出現
varchar(n),nvarchar(n) 中的n怎麼解釋:
nvarchar(n)最多能存n個字元,不區分中英文。
varchar(n)最多能存n個位元組,一個中文是兩個位元組。
所占空間:
nvarchar(n)一個字元會占兩個位元組空間。
varchar(n)中文占兩位元組空間,英文占一個。
n的取值範圍:
nvarchar(n)?? n的範圍是:1與4000之間
varchar(n)?? n的範圍是:1與8000之間
n的大小是否會影響性能:
varchar及nvarchar里的長度 n 不會影響空間大小及性能。除非n是max並且內容大於4000或8000
設置n更多的是業務需要,如限制身份證只能輸入18位,再多就報錯,或者防止惡意攻擊撐爆硬碟。對空間及性能都沒有影響
n設置多大比較好:
既然對空間及性能都沒有影響,那我們只要考慮業務需要就可以了,我分析過微軟的資料庫,大都設置為:256,也會看到64,128,512,max等,可能是便於記憶吧。
varchar(n),nvarchar(n)存儲空間舉例解釋:
包含 n 個字元的可變長度 Unicode 字元數據。位元組的存儲大小是所輸入字元個數的兩倍。?
兩欄位分別有欄位值:我和coffee?
那麼varchar欄位占2×2+6=10個位元組的存儲空間,而nvarchar欄位占8×2=16個位元組的存儲空間。?
如欄位值只是英文可選擇varchar,而欄位值存在較多的雙位元組(中文、韓文等)字元時用nvarchar。
varchar和nvarchar如何選擇?
varchar在SQL Server中是採用單位元組來存儲數據的,nvarchar是使用Unicode來存儲數據的.中文字元存儲到SQL Server中會保存為兩個位元組(一般採用Unicode編碼),英文字元保存到資料庫中,如果欄位的類型為varchar,則只會占用一個位元組,而如果欄位的類型為nvarchar,則會占用兩個位元組.
3.日期類型
DateTime
函數一定要加小括弧!!!!
2. 創建資料庫
create database 資料庫名
創建表
create table 表名(
列名 類型(int) 主鍵(primary key) 自增(auto_increment) 屬性(not null),
);
添加記錄
insert into 表名(列名) values(值);
約束添加:
1.主鍵約束
alter table 表名1
add constraint pk_列名1 primary key 表名2(列名2);
刪除主鍵
alter table 表名 drop primary key
2.外鍵約束
alter table `表名1` add constraint fk_表名1_表名2
foreign key (`表1中的列名`) references `表2`(表2中的列名);
3.唯一約束
alter table 1表 add constraint uk_l.1列 unique key(1.1列);
4.添加預設約束
alter table 表名
alter column 列名 set default '預設值';
5.檢查約束(不起作用)
alter table 表名
add constraint ck_列名 check (條件);
3.不會設置外鍵
解析:1.找到外鍵表 1的一方是主表
2.外鍵表中有非法數據
3.主外鍵表中公共列的類型必須相同
4.什麼是引擎?
解析:能讓程式啟動並執行的一個程式,也稱之為驅動。
5.
1.修改表名
將student改成student2
alter table 舊表名 rename 新表名
2.添加列
alter table 1 add 1.1 varchar(32) not null;
3.修改列名
alter table 表名 change 列名 新列名 (類型)bit not null;
4.刪除欄位
alter table 表名 drop 欄位名