1. 創建數據表 create
創建數據表的完整語法格式為:
CREATE TABLE 表名
(列名 數據類型[缺省值][NOT NULL]
[,列名 數據類型[缺省值][NOT NULL]]....
[,UNIQUE(列名[,列名]...)]
[,PRIMARY KEY(列名[,列名]...)]
[,FOREIGN KEY(列名[,列名]...) REFERENCES(列名[,列名]...)]
[,CKECK(條件)]
)
參數說明:
- DEFAULT(缺省值):指定列的缺省值;
- NOT NULL:列值不能為空值;
- UNNIQUE:取值唯一的列名;
- PRIMARY KEY:主關鍵字(主碼)列名;
- FOREIGN KEY:外部碼列名;
- REFERENCES:引用的外部碼的表名和列名
- CKECK:指定表級約束條件。
注意事項:
例1:在數據庫student中創建student表,表中包括:學號、姓名、出生年月、性別、地址、電話號碼、郵編、所在系代號、等
USE students --選擇數據庫
CREATE TABLE student --創建表
(學號 char(10) NOT NULL PRIMARY KEY,
姓名 char(8) NOT NULL,
出生年月 datetime NULL,
性別 char(2) NOT NULL DEFAULT('女'),
地址 char(20),
)
例2:如下表
列名 | 數據類型 | 允許空 | 默認值 | 主鍵 |
---|---|---|---|---|
學號 | Varchar(20) | 主鍵 | ||
姓名 | Varchar(20) | |||
性別 | Varchar(2) | '男' | ||
出生年月 | Smalldatetime | √ | ||
身份證號 | Varchar(20) | √ |
USE students
CREATE TABLE student
(學號 Varchar(10) NOT NULL PRIMARY KEY,
姓名 Varchar(8) NOT NULL,
性別 Varchar(2) NOT NULL DEFAULT('男'),
出生年月 Smalldatetime,
身份證號 Varchar(20) UNIQUE --身份證號不可以重復
)
例3:建立一個“選課”表,它是由學號、課程號、成績、3個屬性組成,其“學號”和“課程號”是聯合主鍵,表結構如下表所示。
列名 | 數據類型 | 允許空 | 約束 | 主鍵 |
---|---|---|---|---|
學號 | Varchar(20) | PRIMARY KEY | ||
課程號 | Varchar(20) | PRIMARY KEY | ||
成績 | int | √ | 0≤成績≤100 |
CREATE TABLE class
(學號 Varchar(20),
課程號 Varchar(20),
成績 INT CHECK(成績>=0AND成績<=100),
PRIMARY KEY(學號,課程號)
)
2. 修改數據表 alter
在student中增加新字段“院系”,“班級名稱”;
alter table student
add 院系 char(10),班級名稱char(10)
修改表student中字段“院系”長度為char(5);
alter table student
alter column 院系 char(20)
3. 刪除數據表 drop
刪除class數據表
drop table class
小知識:
-
smalldatetime和datetime的區別:
smalldatetime的有效時間范圍1900/1/1~2079/6/6,smalldatetime只精准到分
datetime的有效時間范圍1753/1/1~9999/12/31,datetime則可精准到3.33毫秒
-
char(10)和VARCHAR(10)的區別
- 首先明確的是,char的長度是不可變的,而varchar的長度是可變的,
- 定義一個char[10]和varchar[10],如果存進去的是‘abcd’,那么char所占的長度依然為10,除了字符‘abcd’外,后面跟六個空格,而varchar就立馬把長度變為4了,取數據的時候,char類型的要用trim()去掉多余的空格,而varchar是不需要的,
- char的存取數度還是要比varchar要快得多,因為其長度固定,方便程序的存儲與查找;但是char也為此付出的是空間的代價,因為其長度固定,所以難免會有多余的空格占位符占據空間,可謂是以空間換取時間效率,而varchar是以空間效率為首位的。
- char的存儲方式是,對英文字符(ASCII)占用1個字節,對一個漢字占用兩個字節;而varchar的存儲方式是,對每個英文字符占用2個字節,漢字也占用2個字節,兩者的存儲數據都非unicode的字符數據。