1. 創建表
語法:?
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校驗規則 engine 存儲引擎;
- field 表示列名, datatype 表示列的類型
- character set 字符集, 如果沒有指定字符集, 則以所在數據庫的字符集為準
- collate 校驗規則, 如果沒有指定校驗規則, 則以所在數據庫的校驗規則為準
舉個例子, 現在創建 users 表(使用InnoDB), users2 表(使用MyISAM).
create table users(-> id int,-> name varchar(20) comment '用戶名',-> password char(32) comment '密碼是32位md值',-> birthday date comment '生日'-> ) character set utf8mb4 engine InnoDB;create table users2 (-> id int,-> name varchar(20) comment '用戶名',-> birthday date comment '生日',-> password char(32) comment '密碼是32位的md值'-> ) character set utf8mb4 engine MyISAM;
在對應的數據庫目錄下, 可以看到:
users 表存儲引擎是 MyISAM, 在數據目中有三個不同的文件, 分別是:
- 表結構, MySQL5.5 是users.frm; 8.0是 users.sdi
- 表數據: users.MYD
-
表索引: users.MYI
users2 表存儲引擎是 InnoDB, MYSQL 8.0 下, 目錄里是一個 ibd 文件.
2. 查看表結構
如果查看數據庫有哪些表?
show tables;?
如何查看特定表的信息?
desc 表名;
如何查看當時創建表時的選項等具體的信息??
show create table users \G;
3. 修改表
?在項目實際開發中, 有時候需要修改某個表的結構, 比如字段名字, 字段大小, 字段類型, 表的字符集類型, 表的存儲引擎等等. 我們還有需求,添加字段,刪除字段等等. 這時我們就需要修改表:
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column
datatype]...);
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column
datatype]...);
ALTER TABLE tablename DROP (column);
添加列
當前表只有四列屬性:
現在我想添加一列address屬性:?
alter table users add address varchar(60) comment '地址' after birthday;
插入新字段后, 對原來表中的數據沒有影響:
修改列
修改列的字段類型
?現在把一個列 name 的類型修改為varchar 60:
alter table users modify name varchar(60);
?需要加上列修改后的屬性
修改表的名稱?
ALTER TABLE 原表名 RENAME TO 新表名;
alter table users rename to user?
指令中to可以省略?
修改列的名稱
ALTER TABLE 表名 CHANGE 原字段名 新字段名 新數據類型;
?alter table user change name xingming varchar(60);
注意: 新的目標字段需要完整地定義, 即使其類型和之前一模一樣, 否則報錯:??
?刪除列
?注意: 刪除字段一定要小心, 刪除字段及其對應的列數據都沒了
alter table users drop address;
?4. 刪除表
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
比如: drop table t1; 表t1就被刪除了.
?