2018-11-12 數(shù)據(jù)庫(kù)基礎(chǔ)

SQL Server數(shù)據(jù)類型

  • int ---整數(shù)

  • numeric---數(shù)字

  • decimal --- 數(shù)字

  • char ---字符

  • varchar---字符

  • datetime --- 日期時(shí)間

  • int

例如在表emp中的Empon列的定義如下:
Empon int

  • numeric

numeric表示數(shù)字類型,經(jīng)常被定義成numeric(p,s)形式,其中:
P表示數(shù)字的總位數(shù)
S表示小數(shù)點(diǎn)后面的位數(shù)
例如在表Emp中的Sal列中的定義如下:
Sal numeric(5,1)

  • char

char表示固定長(zhǎng)度的字符類型,經(jīng)常被定義成char(n)形式, n表示占用的字節(jié)數(shù),N的最大取值是2000。例如在表Emp中的Ename列的定義如下:
Ename char(20);
表示Ename列中最多可存儲(chǔ)20個(gè)字節(jié)的字符串,并且占用的空間是固定的20個(gè)字節(jié)。

  • varchar

varchar表示變長(zhǎng)的字符類型,定義格式是varchar(n), n表示最多可占用的字節(jié)數(shù),最大長(zhǎng)度是4000字節(jié)。
例如在表Emp中的Job列的定義如下:
Job varchar(100);
表示Job列中最多可存儲(chǔ)長(zhǎng)度為100個(gè)字節(jié)的字符串。根據(jù)其中保存的數(shù)據(jù)長(zhǎng)度,占用的空間是變化的,最大占用空間為100個(gè)字節(jié)。

  • datetime

datetime用于定義日期時(shí)間的數(shù)據(jù)。
例如在表Emp中的Hiredate列的定義如下:
Hiredate datetime;
表示Hiredate列中存放的是日期時(shí)間。

創(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子句給列指定默認(rèn)值,例如,在emp表中給gender列賦默認(rèn)值‘M’,如果插入數(shù)據(jù)時(shí)沒有指定性別的員工,則默認(rèn)是男性。
--創(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

默認(rèn)情況下,任何列都允許有空值。非空(Not Null)是一種約束條件,用于確保字段值不為空,當(dāng)某個(gè)字段被設(shè)置了非空約束條件,這個(gè)字段中必須存在有效值,也就是說,當(dāng)執(zhí)行插入數(shù)據(jù)的操作時(shí),必須提供這個(gè)列的數(shù)據(jù),當(dāng)執(zhí)行更新操作時(shí),不能給這個(gè)列的值設(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語句實(shí)現(xiàn),語法如下,將改變表名
old_name為new_name:
sp_rename old_name, new_name;

舉例說明,如果要將表名emp修改為employee,使用如下語法:

sp_rename emp,employee;
  • 增加列
    在建表之后,要給表增加列可以使用ALTER TABLE的ADD子句實(shí)現(xiàn)。語法如下:
ALTER TABLE table_name ADD
column datatype [DEFAULT expr]

注意一點(diǎn),列只能增加在最后,不能插入到現(xiàn)有的列中。下例給表employee增加一列hiredate,并設(shè)置默認(rèn)值為當(dāng)前日期。

ALTER TABLE employee ADD 
    hiredate DATE DEFAULT getdate();
  • 刪除列

在建表之后,使用ALTER TABLE的DROP子句刪除不需要的列。語法如下:

     ALTER TABLE table_name DROP column column_name; 

刪除字段需要從每行中刪掉該字段占據(jù)的長(zhǎng)度和數(shù)據(jù),并釋放在數(shù)據(jù)塊中占據(jù)的空間,如果表記錄比較大,刪除字段可能需要比較長(zhǎng)的時(shí)間。
下例刪除表employee的列hiredate:

    ALTER TABLE employee DROP column hiredate;
  • 修改列

建表之后,可以改變表中列的數(shù)據(jù)類型、長(zhǎng)度和默認(rèn)值,注意這種修改僅對(duì)以后插入的數(shù)據(jù)有效,另外如果表中已經(jīng)有數(shù)據(jù)的情況下,把長(zhǎng)度由大改小,有可能不成功,比如原來的類型是VARCHAR(100),其中已經(jīng)存放了100個(gè)字節(jié)長(zhǎng)度的數(shù)據(jù),如果要改為VARCHAR(80),則不會(huì)修改成功。
語法如下:

    ALTER TABLE table_name 
    ALTER column column_name datatype

下例修改表emp loyee的列job,并增加默認(rèn)值的設(shè)置;

ALTER TABLE employee ALTER column job VARCHAR(40);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容