SQL Server數(shù)據(jù)類型
int ---整數(shù)
numeric---數(shù)字
decimal --- 數(shù)字
char ---字符
varchar---字符
datetime --- 日期時間
-
int
例如在表emp中的Empon列的定義如下:
Empon int
-
numeric
numeric表示數(shù)字類型道宅,經(jīng)常被定義成numeric(p骑祟,s)形式粗仓,其中:
P表示數(shù)字的總位數(shù)
S表示小數(shù)點后面的位數(shù)
例如在表Emp中的Sal列中的定義如下:
Sal numeric(5,1)
-
char
char表示固定長度的字符類型决采,經(jīng)常被定義成char(n)形式, n表示占用的字節(jié)數(shù)佛嬉,N的最大取值是2000泛豪。例如在表Emp中的Ename列的定義如下:
Ename char(20)艺栈;
表示Ename列中最多可存儲20個字節(jié)的字符串廊敌,并且占用的空間是固定的20個字節(jié)。
-
varchar
varchar表示變長的字符類型因妙,定義格式是varchar(n), n表示最多可占用的字節(jié)數(shù)痰憎,最大長度是4000字節(jié)。
例如在表Emp中的Job列的定義如下:
Job varchar(100);
表示Job列中最多可存儲長度為100個字節(jié)的字符串攀涵。根據(jù)其中保存的數(shù)據(jù)長度铣耘,占用的空間是變化的,最大占用空間為100個字節(jié)以故。
-
datetime
datetime用于定義日期時間的數(shù)據(jù)蜗细。
例如在表Emp中的Hiredate列的定義如下:
Hiredate datetime;
表示Hiredate列中存放的是日期時間。
創(chuàng)建表
- Create語句
CREATE TABLE [schema.]table_name(
column_name datatype[DEFAULT expr][,…]
);
創(chuàng)建職員表的例子:
--創(chuàng)建表EMP
CREATE TABLE emp(
id NUMERIC(10),
name VARCHAR(20),
gender CHAR(1),
birth DATETIME,
salary NUMERIC(6,2),
job VARCHAR(30),
deptid NUMERIC(2)
);
-
Default
可以通過DEFAULT子句給列指定默認值怒详,例如炉媒,在emp表中給gender列賦默認值‘M’,如果插入數(shù)據(jù)時沒有指定性別的員工踪区,則默認是男性。
--創(chuàng)建表emp1
CREATE TABLE emp1(
id NUMERIC(10),
name VARCHAR(20),
gender CHAR(1) DEFAULT 'M',
birth DATETIME,
salary NUMERIC(6,2),
job VARCHAR(30),
deptid NUMERIC(2)
);
-
NOT NULL
默認情況下橱野,任何列都允許有空值朽缴。非空(Not Null)是一種約束條件,用于確保字段值不為空水援,當某個字段被設(shè)置了非空約束條件密强,這個字段中必須存在有效值,也就是說蜗元,當執(zhí)行插入數(shù)據(jù)的操作時或渤,必須提供這個列的數(shù)據(jù),當執(zhí)行更新操作時奕扣,不能給這個列的值設(shè)置為NULL薪鹦。
創(chuàng)建表emp2,設(shè)置name字段為非空惯豆,也即是表emp2中的每條記錄池磁,name列都必須有值。
CREATE TABLE emp2(
id NUMERIC(10),
name VARCHAR(20) NOT NULL,
gender CHAR(1),
birth DATETIME,
salary NUMERIC(6,2),
job VARCHAR(30),
deptid NUMERIC(2)
);
-
修改表
-
修改表名
在建表后如果希望修改表名楷兽,可以使用RENAME語句實現(xiàn)地熄,語法如下,將改變表名
old_name為new_name:
sp_rename old_name, new_name;
舉例說明芯杀,如果要將表名emp修改為employee端考,使用如下語法:
sp_rename emp,employee;
-
增加列
在建表之后,要給表增加列可以使用ALTER TABLE的ADD子句實現(xiàn)揭厚。語法如下:
ALTER TABLE table_name ADD
column datatype [DEFAULT expr]
注意一點却特,列只能增加在最后,不能插入到現(xiàn)有的列中筛圆。下例給表employee增加一列hiredate裂明,并設(shè)置默認值為當前日期。
ALTER TABLE employee ADD
hiredate DATE DEFAULT getdate();
-
刪除列
在建表之后太援,使用ALTER TABLE的DROP子句刪除不需要的列漾岳。語法如下:
ALTER TABLE table_name DROP column column_name;
刪除字段需要從每行中刪掉該字段占據(jù)的長度和數(shù)據(jù),并釋放在數(shù)據(jù)塊中占據(jù)的空間粉寞,如果表記錄比較大,刪除字段可能需要比較長的時間左腔。
下例刪除表employee的列hiredate:
ALTER TABLE employee DROP column hiredate;
-
修改列
建表之后唧垦,可以改變表中列的數(shù)據(jù)類型、長度和默認值液样,注意這種修改僅對以后插入的數(shù)據(jù)有效振亮,另外如果表中已經(jīng)有數(shù)據(jù)的情況下巧还,把長度由大改小,有可能不成功坊秸,比如原來的類型是VARCHAR(100),其中已經(jīng)存放了100個字節(jié)長度的數(shù)據(jù)麸祷,如果要改為VARCHAR(80),則不會修改成功褒搔。
語法如下:
ALTER TABLE table_name
ALTER column column_name datatype
下例修改表emp loyee的列job阶牍,并增加默認值的設(shè)置;
ALTER TABLE employee ALTER column job VARCHAR(40);