資料定義(DDL)
-
-
- 第1關:檢視表結構與修改表名
-
- 任務描述
- 相關知識
-
- 檢視資料表基本結構
- 檢視資料表詳細結構
- 修改表名
- 程式設計要求
- 測試說明
- 第2關:修改字段名與字段資料類型
-
- 任務描述
- 相關知識
-
- 修改字段名
- 修改字段資料類型
- 程式設計要求
- 測試說明
- 第3關:添加與删除字段
-
- 任務描述
- 相關知識
-
- 添加字段
-
- 在表的最後一列添加字段
- 在表的第一列添加字段
- 在表的指定列後添加字段
- 删除字段
- 程式設計要求
- 測試說明
- 第4關:修改字段的排列
-
- 任務描述
- 相關知識
-
- 修改字段的排列位置
- 修改字段為表的第一個字段
- 修改字段到表的指定列之後
- 程式設計要求
- 測試說明
- 第5關:删除表的外鍵限制
-
- 任務描述
- 相關知識
-
- 删除表的外鍵限制
- 程式設計要求
- 測試說明
-
第1關:檢視表結構與修改表名
任務描述
本關任務:修改表名,并能順利查詢到修改後表的結構。
相關知識
為了完成本關任務,你需要掌握: 1.如何檢視表的結構; 2.如何修改表的名稱。
檢視資料表基本結構
有強迫症或健忘症的小夥伴們在建好資料庫和表以後,通常會懷疑自己剛才是不是敲錯了,怎麼辦?如果不是使用圖形界面是不是就沒法檢視啦?
不存在的,這就告訴你檢視密碼:
DESCRIBE
文法規則為:
DESCRIBE 表名;
大小寫不敏感喲!
DESCRIBE
可以檢視表的字段資訊,包括:字段名、字段資料類型、是否為主鍵、是否有預設值等。
比如本島主建立了一個名叫
Products
的表,結構如下:

現在來看看“現場”,用
DESCRIBE
查表的結構是這樣的。
其中,該結構中各個字段的含義分别為:
-
:表示該列是否能存儲NULL
值;NULL
-
:表示該列是否已編制索引;Key
-
:表示該列是此表主鍵的一部分;PRI
-
:表示該列是UNI
索引的一部分;UNIQUE
-
:表示在列中某個給定值允許出現多次;MUL
-
:表示該列是否有預設值,如果有的話值是多少;Default
-
:表示可以擷取的與給定列有關的附加資訊。Extra
MySQL資料庫 - 資料庫和表的基本操作(一)
檢視資料表詳細結構
什麼?你發現表建錯了,你想知道錯在哪裡了? 那就用
SHOW CREATE TABLE
語句吧。
文法規則為:SHOW CREATE TABLE 表名; 。
還是剛才那個例子,讓我們看看
SHOW CREATE TABLE
有什麼能耐。
可以看到,使用 SHOW CREATE TABLE 語句,不僅僅可以傳回給我們建表時所寫的詳細語句,而且還可以檢視存儲引擎和字元編碼。
再告訴大家一個小訣竅,是不是覺得傳回的結果排版有點亂。我們加上
\G
後效果就會有所改善喲,來看看!
修改表名
随着表越來越多,有時候你會後悔之前的資料表的名字根本沒有認真斟酌過,想要重新命名一下,可以做到嗎?
答案是:可以!
MySQL
是通過
ALTER TABLE
語句來修改表名的。
文法規則為:ALTER TABLE 舊表名 RENAME 新表名; 。
舉個例子,我們先用
SHOW TABLES
看看我們的資料庫中有什麼表吧。
可以看到,我們目前已經有了兩張表,分别叫
Products
和
tb_emp
。
接下來,我們使用
ALTER TABLE
為
Products
改名。
改名成功!
Products
成功變成了
Mall_products
。
接下來你們可以自行體驗一下了!
程式設計要求
根據提示,在右側編輯器補充代碼:
- 把資料表
改名為tb_emp
;jd_emp
- 檢視該資料庫下資料表的清單;
- 檢視資料表
的基本結構。jd_emp
測試說明
我會對你編寫的代碼進行測試,最終結果會如下圖所示:
開始你的任務吧,祝你成功!
USE Company;
#請在此處添加實作代碼
########## Begin ##########
########## modify the table name ##########
ALTER TABLE tb_emp RENAME jd_emp;
########## show tables in this database ##########
show tables;
########## describe the table ##########
DESCRIBE jd_emp;
########## End ##########
第2關:修改字段名與字段資料類型
任務描述
本關任務:修改表中的字段名,并修改字段的資料類型。
相關知識
為了完成本關任務,你需要掌握:1.如何修改字段名;2.如何修改字段的資料類型。
修改字段名
有時,在我們建好一張表後會突然發現,哎呀!字段名貌似寫錯了!怎麼辦?要删了表再重建立一個新表嗎?還是要删了這個字段再建立一個新的字段? 都不用,
MySQL
中修改字段名稱也有專門的語句,接近于自然語言,很好記憶。
文法規則為: ALTER TABLE 表名 CHANGE 舊字段名 新字段名 新資料類型; 。
舉個例子: 現在我們要把表
Mall_products
中的字段
prod_id
改名為
ID
。表結構如下:
輸入指令:
ALTER TABLE Mall_products CHANGE prod_id ID varchar(20);
。執行過程如下所示。簡單吧!
小提示: 如果不需要修改字段的資料類型,可以把新字段的資料類型設定為和原來一樣,但是!千萬不要空着它!
修改字段資料類型
随着存儲的資料越來越多,資料庫新人可能會發現,哎呀,當初預留的資料類型已經不能滿足要求了,或者當初預留的字元太少了,怎麼辦?怎麼修改?規則來了。
文法規則為: ALTER TABLE 表名 MODIFY 字段名 資料類型; 。
舉個例子: 現在我們要把表
Mall_products
中的字段
ID
的資料類型改為
varchar(30)
。表結構如下:
輸入指令:
ALTER TABLE Mall_products MODIFY ID varchar(30);
。執行過程如下所示。
ID
的資料類型
varchar(20)
成功變成了
varchar(30)
。
接下來你們可以自行體驗一下了!
程式設計要求
根據提示,在右側編輯器補充代碼:
- 把資料表
的字段tb_emp
改名為Id
,資料類型不變;prod_id
- 把資料表
字段tb_emp
的資料類型改為Name
。varchar(30)
資料表結構如下:
測試說明
我會對你編寫的代碼進行測試,最終結果會如下圖所示:
開始你的任務吧,祝你成功!
USE Company;
#請在此處添加實作代碼
########## Begin ##########
########## change the column name ##########
alter table tb_emp change Id prod_id int(11);
########## change the data type of column ##########
alter table tb_emp modify Name varchar(30);
########## End ##########
DESCRIBE tb_emp;
第3關:添加與删除字段
任務描述
本關任務:分别在表的最後一列、第一列和指定列後添加新的字段,并删除表中的指定字段。
相關知識
為了完成本關任務,你需要掌握: 1.如何在指定位置添加新的字段, 2.如何删除指定的字段。
添加字段
因為甲方的業務需求是不停變化的,是以在資料庫操作中,添加字段可是常有的事。一個完整的字段包括:
字段名
、
資料類型
和
完整性限制
。
文法規則為: ALTER TABLE 表名 ADD 新字段名 資料類型 [限制條件] [FIRST|AFTER] 已存在字段名; 。
以下是在
MySQL
中常用的限制。
NOT NULL
限制:確定某列不能有
NULL
值。
DEFAULT
限制:當某列沒有指定值時,為該列提供預設值。
UNIQUE
限制:確定某列中的所有值是不同的。
PRIMARY Key
限制:唯一辨別資料庫表中的各行/記錄。
CHECK
限制:
CHECK
限制確定某列中的所有值滿足一定條件。
在表的最後一列添加字段
隻要不做
[FIRST|AFTER]
的位置說明,在添加字段時
MySQL
會預設把新字段加入到表的最後一列。
舉個例子: 現在我們要把字段
prod_country
添加到表
Mall_products
的最後一列。表結構如下:
輸入指令:
ALTER TABLE Mall_products ADD prod_country varchar(30);
執行結果如下所示:
在表的第一列添加字段
如果我們想在第一列添加新的字段,隻需做
FIRST
的位置說明。
舉個例子: 現在我們要把字段
prod_country
添加到表
Mall_products
的第一列。
輸入指令:
ALTER TABLE Mall_products ADD prod_country varchar(30) FIRST;
執行結果如下所示:
在表的指定列後添加字段
如果我們想在某一列後面添加新的字段,隻需做
AFTER
的位置說明,然後注明你想讓它添加在哪個字段的後面即可。
舉個例子: 現在我們要把字段
prod_country
添加到表
Mall_products
的
prod_name
字段的後面。
輸入指令:
ALTER TABLE Mall_products ADD prod_country varchar(30) AFTER prod_name;
執行結果如下所示:
總之,想要添加新的字段,記住綠色框裡的文法規則就能記住三種位置的添加方式。
删除字段
有添加的需求就會有删除的需求。删除一個字段就是将資料表中的某個字段從表中移除。
文法規則為: ALTER TABLE 表名 DROP 字段名; 。
舉個例子: 現在我們要把字段
prod_price
從表
Mall_products
中删除。表結構如上圖結果所示。
輸入指令:
ALTER TABLE Mall_products DROP prod_price;
執行結果如下所示:
字段
prod_price
成功删除!
接下來你們可以自行體驗一下了!
程式設計要求
根據提示,在右側編輯器補充代碼:
- 在資料表
的tb_emp
字段後添加字段Name
,資料格式為Country
;varchar(20)
- 删除資料表
中的字段tb_emp
。Salary
資料表結構如下:
測試說明
我會對你編寫的代碼進行測試,最終結果會如下圖所示:
開始你的任務吧,祝你成功!
USE Company;
#請在此處添加實作代碼
########## Begin ##########
########## add the column ##########
ALTER TABLE tb_emp ADD Country varchar(20) AFTER Name;
########## delete the column ##########
ALTER TABLE tb_emp DROP Salary;
########## End ##########
DESCRIBE tb_emp;
第4關:修改字段的排列
任務描述
本關任務:修改表中某字段的順序,分别将其排至表中的第一列與指定列之後。
相關知識
為了完成本關任務,你需要掌握:如何将某字段排至表中的指定位置。
修改字段的排列位置
在一個資料表被建立的時候,其字段的排列順序就已被确定了。不能變了嗎?怎麼可能,一錘子買賣沒人敢做。
我們可以通過
ALTER TABLE
來改變表中字段的相對位置。
文法規則為: ALTER TABLE 表名 MODIFY 字段1 資料類型 FIRST|AFTER 字段2; 。
其中,
字段1
指要修改位置的字段,
FIRST
與
AFTER 字段2
為可選參數。
修改字段為表的第一個字段
如果我們想把字段的位置調整到第一列,隻需做
FIRST
的位置說明。
舉個例子 現在我們要把字段
prod_price
調整到表
Mall_products
的第一列。
Mall_products
表結構如下所示:
輸入指令:
ALTER TABLE Mall_products MODIFY prod_price FLOAT FIRST;
執行過程如下所示:
修改字段到表的指定列之後
還有一種位置調整的方法可以讓你把想調整的字段放在除了第一列的任何位置。調整的時候需要做
AFTER 字段2
的位置說明。
舉個例子 現在我們要把字段
prod_price
調整到字段
prod_country
的後面。
Mall_products
表結構如下所示:
輸入指令:
ALTER TABLE Mall_products MODIFY prod_price FLOAT AFTER prod_country;
執行過程如下所示:
調整成功!
接下來你們可以自行體驗一下了!
程式設計要求
根據提示,在右側編輯器補充代碼:
- 将資料表
的tb_emp
字段移至第一列,資料格式不變;Name
- 将
字段移至DeptId
字段的後邊,資料格式不變。Salary
資料表結構如下:
測試說明
我會對你編寫的代碼進行測試,最終結果會如下圖所示:
開始你的任務吧,祝你成功!
USE Company;
#請在此處添加實作代碼
########## Begin ##########
########## modify the column to top ##########
ALTER TABLE tb_emp MODIFY Name varchar(25) FIRST;
########## modify the column to the rear of another column ##########
ALTER TABLE tb_emp MODIFY DeptId int(11) AFTER Salary;
########## End ##########
DESCRIBE tb_emp;
第5關:删除表的外鍵限制
任務描述
本關任務:删除表中的外鍵限制。
相關知識
為了完成本關任務,你需要掌握:如何删除表的外鍵限制
删除表的外鍵限制
我們曾在第一章中講過外鍵的作用,以及如何建立一個表的外鍵。建立了外鍵我們就建立起了兩張表的關聯關系,那如果我想删除主表呢?為了確定資料庫的正确性,我們必須先解除兩個表之間的關聯關系,那就是删除外鍵限制啦!讓我們先來看看删除外鍵限制的文法規則。
文法規則為: ALTER TABLE 表名 DROP FOREIGN KEY 外鍵限制名; 。
舉個例子: 我們先建立了一個主表
country
,表結構如下圖所示:
然後建立一個有外鍵限制的子表
Mall_products2
,讓它的鍵
country_id
作為外鍵關聯到
country
的主鍵
id
。
SQL
語句如下:
CREATE TABLE Mall_products2(id INT(11) PRIMARY KEY,country_name VARCHAR(20) NOT NULL,country_id INT(11) NOT NULL,CONSTRAINT prod_country FOREIGN KEY(country_id) REFERENCES country(id))
上述語句成功執行後,在表
Mall_products2
上添加了名稱為
prod_country
的外鍵限制,外鍵名稱為
prod_country
,依賴于表
country
的主鍵
id
,從下圖中可以看到,已經成功添加了表的外鍵:
Mall_products2
表結構如下圖所示:
下面開始删除外鍵限制,語句如下:
ALTER TABLE Mall_products2 DROP FOREIGN KEY prod_country;
使用
SHOW CREATE TABLE
檢視表 Mall_products2 的結構,結果如下:
我們可以看到,
FOREIGN KEY
不見了,外鍵限制删除成功!
接下來你們可以自行體驗一下了!
程式設計要求
我們已經為你建立了主表
tb_dept
和子表
tb_emp
,在表
tb_emp
上添加了名稱為
emp_dept
的外鍵限制,外鍵名稱為
DeptId
,依賴于表
tb_dept
的主鍵
Id
,下面那是兩張表的結構展示:
請你根據提示,在右側編輯器
Begin-End
中補充代碼:
- 删除資料表
的外鍵限制tb_emp
。emp_dept
測試說明
我會對你編寫的代碼進行測試,最終結果會如下圖所示:
開始你的任務吧,祝你成功!
USE Company;
#請在此處添加實作代碼
########## Begin ##########
########## delete the foreign key ##########
ALTER TABLE tb_emp DROP FOREIGN KEY emp_dept;
########## End ##########
SHOW CREATE TABLE tb_emp \G;
頭歌 MySQL實訓作業練習,本文僅供學習參考。