-- DDL(*)(Data Definition Language):數據定義語言,用來定義數據庫對象:庫、表、列等;
-- 操作數據表,數據表的創建
-- 切換數據庫
use mydatabase;
-- 刪除數據表
drop table test;
-- CREATE TABLE 表名 ( 屬性名 數據類型 [完整性約束條件],
-- 屬性名 數據類型 [完整性約束條件],
-- ) [字符集];
-- 創建數據表
create table test (
-- 主鍵(主鍵約束) primary key 唯一的約束該字段裏面的數據,不能重複,不可爲空
-- 自增 AUTO_INCREMENT 自增長字段必須是數字,且爲鍵。一張表最多只能有一個自增長 使用:不寫,null,default
id int primary key auto_increment ,
-- 自動生成唯一值
id serial,
-- 唯一性(唯一約束)unique/unique key 字段具有唯一性,數據不能重複
tname VARCHAR(20) unique, -- varchar:可變長度字符串類型
-- 非空約束 not null
tbirth date not null,-- date:日期類型,格式爲:yyyy-MM-dd;
-- 浮點型:超出指定範圍,會丟失精度,自動四捨五入
-- 當插入數據時,整數部分是不能超過長度的,但小數部分可以,四捨五入。因爲四捨五入二導致整數部分超出指定的長度,系統也運行成立
tsal double(5,2), -- double:雙精度浮點數,例如double(5,2)表示最多5位,其中必須有2位小數 8字節
tcomm float(5,2), -- float:單精度浮點數,用法同double,不加括號表示沒有小數部分 4個字節
-- 定點型:絕對的保證整數部分不會被四捨五入,不會丟失精度,理論上小數部分也不會丟失精度。
-- 整數部分不能超出長度,小數部分長度可以隨意超出,四捨五入。定點數長度溢出,是不會進位的,會報錯
tmoney DECIMAL(5,2), -- DECIMAL/DEC(M,D):定點數類型,用法同浮點型,M+2個字節
-- 日期與時間類型
ttime time, -- time:時間類型,格式爲:hh:mm:ss
tdate date, -- date:日期類型,格式爲:yyyy-MM-dd
tdatetime datetime, -- datetime:日期時間類型 yyyy-MM-dd hh:mm:ss
tyesr year(2), -- year: 年份類型, 格式爲:YY year(2)或YYYY year(4)
tstamp timestamp, -- timestamp:時間戳類型 yyyy-MM-dd hh:mm:ss 會自動賦值
-- 字符串類型
tchar char(20), -- char:定長字符串,磁盤在定義結構的時候,就已經確定了最終數據的存儲長度
-- char(L)在UTF8環境下,需要L*3=12個字節 L最大爲255
-- 定長的磁盤空間比較浪費,但效率高。如果數據基本上確定長度一樣,就使用定長
tvarchar varchar(20), -- varchar:變長字符串,在分配空間的時候,按照最大的空間分配,但實際最終用了多少,是根據具體的數據來確定的
-- varchar(L) utf8環境下,大小爲L*3+1(byte).理論長度是65536個字符,但會多出1~2個字節來確定存儲的實際長度
-- 變長的磁盤空間比較節省,但效率低,如果數據不確定長度(不同數據有變化),就使用變長
ttext text, -- text:文本字符串(儲存文字),如果數據量非常大,通常說超過了255個字符,就用文本字符串
tblob blob, -- blob:文本字符串(存儲二進制數據)
-- 枚舉:在進行數據規範的時候,系統會自動建立一個數字和枚舉元素的對應關係,放到日誌中
-- 再進行數據插入的時候,系統自動將字符轉換成對象的數字,提取數據的時候,自動將數值轉換爲字符串 編號從1開始
gender enum('男','女') DEFAULT '男',
-- 集合字符串:和枚舉類似,實際存儲的是數字,不是字符串。
tset set('男','女') default'男' -- 集合中的每一個元素都對應一個二進制位,將他們反過來,就是對應的十進制的數字。
-- default:默認值,在數據進行插入的時候,不給該字段賦值,直接使用DEFAULT代替值
-- comment:專門用來描述字段,會根據表創建語句保存。用來給程序猿進行了解的。
-- foreign key:外面的鍵,鍵不在自己表中。如果一張表中有一個字段指向另外一張表的主鍵,那麼該字段稱之爲外鍵
-- foreign key(外鍵字段) references 外部表(主鍵字段)
-- foreign key (ttext) references tuser(id)
-- primary key(主鍵字段列表)來創建聯合主鍵。
)charset utf8;
-- 追加主鍵
-- alter table 表名 add primary key(字段列表)
alter table t2 add primary key (id);
-- 修改表字段屬性
-- alter table 表名 modify 字段名 數據類型 primary key
alter table t2 modify id int primary key;
-- 刪除主鍵 (主鍵不可更新)
-- alter table 表名 drop primary key
alter table t2 drop primary key ;
-- 追加外鍵
-- alter table 表名 add [constraint 外鍵名字] foreign key (外鍵字段) references 父表(主鍵字段);
ALTER TABLE t1 ADD CONSTRAINT k_1 FOREIGN KEY (uid)REFERENCES test(id);
ALTER TABLE t1 ADD FOREIGN KEY (uid)REFERENCES test(id);
-- 刪除外鍵
-- alter table 表名 drop foreign key 外鍵名字
ALTER TABLE t2 DROP foreign KEY t_k;
-- 新建一張表t2,同時將另一張表的數據t1複製進去
CREATE TABLE t2 AS SELECT * FROM t1
DDL-數據表的創建
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.