02數據表的操作
01顯示表
這個沒啥說的,就像顯示所有數據庫一樣,命令簡短。
語法:
show tables;
02創建表
就像創建數據庫一樣,有兩類語句,簡單的和復雜的。如果你曾經創建過名為A的數據庫,當你再次創建數據表A時,會報錯,但是如果加上 if not exists
就不會再報錯了,if not exists
的意思是:如果不存在。如果你要創建的數據表名恰好是關鍵字,創建時會報錯,加上一個反引號``將數據表名括起來就不會報錯了。
語法:
create table [if not exists] `數據表名`(
`字段名` 數據類型 [not null | null] [auto_increment] [primary key] [comment] ,
`字段名` 數據類型 [default]
) engine = innodb;
解釋一下:
- 第二行的字段名相當于表格中的表頭(比如姓名、班級、id之類的詞)。
- 第二行數據類型涉及內容比較多,下篇文章會講。
- 第二行
not null
或null
指的是是否可以為空,比如申請賬號,密碼不能為空,但是個性簽名可以為空,就是數據是否能空著。 - 第二行的[]符號表示可以省略不寫。
- 第二行
auto_increment
表示自增(自動增加),比如id,你創建下一條數據時,將id設為自增,則id會隨著你創建的數據自動增加。 - 第二行
primary key
表示主鍵,一個數據表往往會有一個字段名是主鍵。 -
comment
是備注的意思,表示字段名的備注。 - 第三行
default
表示默認值,可以設置默認值,比如如果設置成績的默認值為缺考,則填寫成績時,把某名同學的成績空著不填,系統會自動填寫缺考。 - 第四行
engine
表示引擎為innodb
(一般初學者選擇這個引擎就可以了)。除此之外,引擎還有myisam
,memory
引擎不同,存儲數據的方式不同。
說了這么多,不如舉個例子:創建一個名為student
的數據表,分別有id,name,phone,add,幾個字段名。
-- 簡單寫
create table student (
id int ,
name varchar(20),
phone varchar(20),
`add` varchar(100)
);
-- 完整寫
create table student (
id int auto_increment primary key comment '主鍵',
name varchar(20) not null comment '姓名',
phone varchar(20) comment '電話號碼',
`add` varchar(100) default '地址不詳' comment '地址'
) engine = innodb;
注意點:
如果表中內容有中文,且在語法內容無誤情況下在cmd中輸入總是報錯,此時或許你需要加一句set names gbk
多學一招:
如果你想在當前數據庫中為別的數據庫創建數據表,可以用點來實現,比如你當前使用的是AAschool
數據庫,你想為數據庫BBschool
創建一個數據表student
,實現語句是create table BBschool.student;
語法:
create table 數據庫名.數據表名;
03顯示創建表的語句
語法:
show create table `數據庫名` [\G];
寫\G
與不寫的區別是,后者顯示結果顯示的更清晰一些。
04查看表結構
-- 簡單寫
desc `數據表名`;
-- 復雜寫
describe `數據表名`;
desc
是describe
的縮寫,一般縮寫更常用。
05刪除表
語法:
drop table [if exists] `表1` , `表2`;
方括號表示可省略,內容簡單,不再解釋!
06修改表
要想修改表,首先要有表,詳見附錄一,修改表的例子基于附錄一。
(1)添加字段
語法:
alter table `表名` add [clumn] 字段名 數據類型 [完整性約束條件] [位置];
#位置用[first | after 字段名]插在首列或字段名的后面
關鍵詞: add
、first
、after
比如:我想在name
后插入性別sex
,使用關鍵詞after
。
alter table student add sex char(1) comment '性別' after name;
如果想在id
的前面插入iid
,使用first
關鍵詞插入首列。
alter table student add iid int first;
如果既不寫關鍵詞first
也不寫關鍵詞after
,默認插在最后。
alter table student add last int ;
(2)刪除字段
語法:
alter table `表名` drop [clumn] `字段名`;
比如:刪除字段add
。
alter table `student` drop `add`;
(3)修改字段之改名改類型
語法:
alter table `表名` change [clumn] 字段名(改前) 字段名(改后) 數據類型;
關鍵詞:change
例如:將phone
改為cellPhone
默認值666666.
alter table student change phone cellPhone varchar(20) default '666666' comment '座機';
注意:改過之后,你會發現Null屬性變了,之前為no,不能為空,現在變為了YES可以為空,是因為改的時候,它自動改為默認的了。如果改的時候你沒有寫字段的約束性條件,會自動改為默認值。
(4)修改字段之只改類型
語法:
alter table `表名` modify `字段名` [改后的數據類型] [改后的完整性約束性條件];
關鍵詞:modify
例如:改name
為int
型,默認值為123。
alter table student modify name int not null default 123;
(5)修改引擎
語法:
alter table `表名` engine = 新引擎;
(6)修改表名
語法:
alter table `表名` rename [to] `新表名`;
過于簡單,不再舉例。
附錄一:
create database if not exists `t_e_s_t` ; #創建數據庫t_e_s_t
use `t_e_s_t`; #選擇使用數據庫t_e_s_t
create table if not exists student ( #創建表student
id int auto_increment primary key comment '主鍵',
name varchar(20) not null comment '姓名',
phone varchar(20) not null comment '電話號碼',
`add` varchar(100) default '地址不詳' comment '地址'
) engine = innodb;
desc student;