MySQL學習筆記(3)——操作數據庫中的表
參考視頻:https://www.bilibili.com/video/BV1NJ411J79W?p=6
1.創建數據表
1.1 SQL語句建表格式
SQL語句建表/可視化建表
創建demo表,有id和name兩個字段.
id字段 爲int類型長度爲8 id` int(8),無符號數(unsigned),0填充(zerofill),非空(NOT NULL),
自增(AUTO_INCREMENT),備註(COMMENT)爲id編號
name字段爲varchar長度爲30 name` varchar(30),非空(NOT NULL),
默認值爲張三(DEFAULT ‘張三’),備註(COMMENT)爲姓名
主鍵設置爲id,存儲引擎爲InnoDB, 數據庫默認編碼爲utf-8
DROP TABLE IF EXISTS `demo`;
CREATE TABLE `demo` (
`id` int(8) unsigned zerofill NOT NULL AUTO_INCREMENT COMMENT 'id編號',
`name` varchar(30) NOT NULL DEFAULT '張三' COMMENT '姓名',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
建表格式:
CREATE TABLE [IF NOT EXISTS] `表名`(
`字段名稱` 字段類型 [字段屬性] [索引] [備註/註釋],
`字段名稱` 字段類型 [字段屬性] [索引] [備註/註釋],
...
`字段名稱` 字段類型 [字段屬性] [索引] [備註/註釋]
)[表類型:存儲引擎][字符集設置][備註/註釋]
注意:
[ ]中的內容代表可選, 字段用 ` 括住(tab鍵上面那個),不是單引號
最後一個字段定義完不用加逗號,
tips
:查看創建數據庫/數據表的語句
SHOW CREATE DATABASE blog; -- 查看創建數據庫語句
SHOW CREATE TABLE blog; -- 查看創建數據表的語句
DSC blog; -- 顯示錶結構
1.2.數據表的類型(存儲引擎)
就是以上的ENGINE=InnoDB
,建表中通過 ENGINE 設置。
一般就是InnoDB
和MYISAM
。早年使用MYISAM
MYISAM |
InnoDB |
|
---|---|---|
事務支持 | 不支持 | 支持 |
數據行鎖定 | 不支持 | 支持 |
外鍵約束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持,5.6.4版本後支持(全英文) |
表空間大小 | 較小 | 較大(約爲MYISAM兩倍) |
瞭解即可
- MYISAM` 節約空間,速度較快
InnoDB
安全性高,支持事務處理,多表多用戶操作
在物理空間存在的位置:
所有數據庫文件都存下data下,本質還是文件存儲!
MySQL存儲引擎在物理文件上的區別(5.7版本)
-
InnoDB
在數據庫表中只有一個*.frm文件,以及上級目錄下的ibddata1
文件 -
MYISAM
對應的文件:-
*.frm表結構的定義文件;
-
*.MYD 數據文件(data)
-
*.MYI 索引文件(index)
-
1.3 數據表的字符集編碼
DEFAULT CHARSET=utf8;
不設置的話,默認的字符集編碼(Lanti1
)不支持中文,會導致中文亂碼問題。
修改編碼格式的方法:
- 建表語句裏設置
CHARSET=utf8
(建議用這種,通用性更高) - 配置文件
my.ini
中配置默認的編碼格式character-set-server=utf-8
2. 修改與刪除表
2.1 修改表及表中字段
- **關鍵字:
ALTER
**
修改表名:RENAME AS
ALTER TABLE 舊錶名 RENAME AS 新表名;
--把demo數據表改名爲demo1
ALTER TABLE demo RENAME AS demo1;
增加字段:ADD
ALTER TABLE 表名 ADD 字段名 字段屬性;
-- 在demo1數據表中添加一個字段,名稱爲sge,類型INT,長度2
ALTER TABLE demo1 ADD age INT(2);
修改字段:MODIFY
修改字段類型和字段約束;CHANGE
重命名字段
ALTER TABLE 表名 MODIFY 字段名 字段屬性;
ALTER TABLE 表名 CHANGE 舊字段名 新字段名;
-- 修改字段名稱或者約束
--修改demo1表中age字段的約束,改爲VARCHAR類型長度2,默認值設爲18
ALTER TABLE demo1 MODIFY age VARCHAR(2) DEFAULT '18';
-- 字段重命名,將demo1表中的age重命名爲age1
ALTER TABLE demo1 CHANGE age age1;
2.2 刪除表及表中字段
刪除表:DROP
DROP TABLE IF EXISTS 表名;
DROP TABLE IF EXISTS demo1; -- 刪除數據表demo1
刪除表的字段:DROP
ALTER TABLE 表名 DROP 字段名;
-- 刪除demo1表中的age1字段
ALTER TABLE demo1 DROP age1;
所有的創建和刪除操作儘量加上存在判斷,防止報錯,即IF EXISTS