1.創(chuàng)建表
create table [if not exists] 表名(
字段名稱 數(shù)據(jù)類型 [null | not null],
字段名稱 數(shù)據(jù)類型 [auto_increment],
字段名稱 數(shù)據(jù)類型 [primary key],
字段名稱 數(shù)據(jù)類型 [default],
字段名稱 數(shù)據(jù)類型 [comment]
)engine=存儲(chǔ)引擎;
字段名稱: 相當(dāng)于Excel中每一列的名稱
數(shù)據(jù)類型: 相當(dāng)于Excel中每一列的數(shù)據(jù)類型
[null | not null] 該字段是否可以為空, 默認(rèn)都可以為空
[auto_increment] 該字段的值自動(dòng)增長(zhǎng)
[primary key] 主鍵, 一張表中只能有一個(gè)主鍵
[default] 默認(rèn)值, 如果沒(méi)有傳遞對(duì)應(yīng)的值, 就使用默認(rèn)值
[comment] 備注, 方便程序員之間溝通
存儲(chǔ)引擎 innodb/myisam/memory
注意點(diǎn):
由于一個(gè)MySQL中可以有很多數(shù)據(jù)庫(kù), 所以在創(chuàng)建表之前必須告訴MySQL要?jiǎng)?chuàng)建到哪一個(gè)數(shù)據(jù)庫(kù)中
示例一:
use person;
create table stu(
id int,
name varchar(20)
);
上面語(yǔ)句的含義: 在person數(shù)據(jù)庫(kù)中創(chuàng)建一張叫做stu的表, 表中有兩個(gè)字段, 分別是id和name, id將來(lái)可以存儲(chǔ)int類型的值, name將來(lái)可以存儲(chǔ)字符串類型的值
示例二: 企業(yè)開發(fā)推薦寫法
use person;
create table if not exists stu(
id int,
name varchar(20)
);
1.查看數(shù)據(jù)庫(kù)中的表
show tables;
2.查看表的結(jié)構(gòu)
desc[ribe] 表名;
1.刪除表
drop table [if exists] 表名1, 表名2, ....;
示例一:
drop table stu;
注意點(diǎn): 表不存在會(huì)報(bào)錯(cuò)
示例二:
drop table if exists stu;
示例三:
drop table if exists stu1,stu2;
1.修改表
6.1添加字段
alter table 表名 add 字段名 數(shù)據(jù)類型 [位置];
示例一:
會(huì)將新的字段添加到原有字段的最后
alter table stu3 add email varchar(30);
示例二:
會(huì)將新的字段添加到原有字段的最前面
alter table stu3 add phone int first;
示例三:
會(huì)將新的字段添加到指定字段的后面
alter table stu3 add addr varchar(100) after name;
6.2刪除字段
alter table 表名 drop 字段名;
示例一:
alter table stu3 drop name;
6.3修改字段
alter table 表名 change 原始字段名 新字段名 數(shù)據(jù)類型;
示例一:
改字段名稱, 并且改字段的類型
alter table stu3 change addr age int;
示例二:
改字段的類型, 不改字段的名稱
alter table stu3 modify phone varchar(20);
6.4修改存儲(chǔ)引擎
- 數(shù)據(jù)庫(kù)的本質(zhì)就是文件, 所以我們可以先觀察一下
- 通過(guò)我們的觀察, 發(fā)現(xiàn)只要新建一個(gè)數(shù)據(jù)庫(kù), 就會(huì)自動(dòng)創(chuàng)建一個(gè)文件夾
- 通過(guò)我們的觀察, 發(fā)現(xiàn)只要?jiǎng)h除一個(gè)數(shù)據(jù)庫(kù), 就會(huì)自動(dòng)刪除一個(gè)文件夾
innodb: 默認(rèn)
create table stu(
id int,
name varchar(20)
);
create table stu1(
id int,
name varchar(20)
)engine=innodb;
- 通過(guò)觀察發(fā)現(xiàn)指定存儲(chǔ)引擎為innodb和不指定引擎創(chuàng)建表生成的文件夾都一樣, 所以推斷出默認(rèn)使用的就是innodb存儲(chǔ)引擎
- innodb存儲(chǔ)引擎只要?jiǎng)?chuàng)建一張表就會(huì)自動(dòng)創(chuàng)建一個(gè)后綴為frm的文件
- 注意:
- .frm文件不是存儲(chǔ)表中的數(shù)據(jù)的, 數(shù)據(jù)會(huì)存儲(chǔ)到ibdata1中, 如果數(shù)據(jù)比較多系統(tǒng)會(huì)自動(dòng)創(chuàng)建ibdata2, ibdata3, ....
- .frm文件是MySQL表結(jié)構(gòu)定義文件
myisam:
create table stu2(
id int,
name varchar(20)
)engine=myisam;
- 通過(guò)觀察發(fā)現(xiàn)指定存儲(chǔ)引擎為myisam, 只要?jiǎng)?chuàng)建一張表就會(huì)自動(dòng)創(chuàng)建三個(gè)文件
- .frm文件是MySQL表結(jié)構(gòu)定義文件
- .MYD文件存儲(chǔ)表的數(shù)據(jù)
- .MYI文件存儲(chǔ)表的索引
memory:
create table stu3(
id int,
name varchar(20)
)engine=memory;
- 通過(guò)觀察發(fā)現(xiàn)指定存儲(chǔ)引擎為memory; 只要?jiǎng)?chuàng)建一張表就會(huì)自動(dòng)創(chuàng)建一個(gè)文件
- .frm文件是MySQL表結(jié)構(gòu)定義文件
- 注意點(diǎn):
- memory會(huì)將數(shù)據(jù)存儲(chǔ)到內(nèi)存中, 一旦電腦重啟數(shù)據(jù)就不見了
- 特點(diǎn)讀寫比較快, 但是不會(huì)永久存儲(chǔ)
alter table 表名 engine=引擎名稱;
修改表的存儲(chǔ)引擎
alter table stu2 engine=innodb;
6.5修改表名
alter table 原始名稱 rename to 新名稱;