目錄
一,創建表
二,查看表結構
三,修改表
四,刪除表
一,創建表
語法:
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校驗規則 engine 存儲引擎;
說明:
field 表示列名
datatype 表示列的類型
character set 字符集,如果沒有指定字符集,則以所在數據庫的字符集為準
collate 校驗規則,如果沒有指定校驗規則,則以所在數據庫的校驗規則為準
engine 存儲引擎,不同的存儲引擎,創建表的文件不一樣。
案例:
mysql> create table if not exists `users`(-> id int,-> name varchar(20) comment '名字',-> password varchar(20) comment '密碼',-> birthday date comment '生日'-> )character set utf8 collate utf8_general_ci engine MyISAM;
Query OK, 0 rows affected (0.00 sec)[root@iZwz9eoohx59fs5a6ampomZ mysql]# tree db1
db1
├── db.opt
├── person.frm
├── person.ibd
├── users.frm
├── users.MYD
└── users.MYI
說明:
users 表存儲引擎是 MyISAM ,在數據目中有三個不同的文件,分別是:
users.frm:表結構
users.MYD:表數據
users.MYI:表索引
二,查看表結構
代碼:desc 表名
mysql> desc users;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| password | varchar(20) | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
說明:
Field 字段名字
Type 字段類型
Null 是否允許為空
Key 索引類型
Default 默認值
Extra 擴充
三,修改表
我們要修改某個表的結構,比如字段名字,字段大小,字段類型,表的字符集類型, 表的存儲引,比如添加字段,刪除字段,修改字段名等等。這時要用修改表的語句。
// 添加字段
alter table users add 新列名;
// 修改字段長度
alter table users modify 新列名 新類型(長度);
// 刪除字段
alter table users drop 刪除列名;
// 修改字段名字
alter table users change 原列名 新列名 新類型(長度);
// 修改表名字
alter table 原表名 rename 新表名;
在users表,添加一個字段image
mysql> alter table users add image varchar(128) after birthday;
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0mysql> desc users;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| password | varchar(20) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| image | varchar(128) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
在users表,修改password字段長度為32
mysql> alter table users modify password varchar(32);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0mysql> desc users;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| password | varchar(32) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| image | varchar(128) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
在users表,刪除id列
mysql> alter table users drop id;
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0mysql> desc users;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| password | varchar(32) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| image | varchar(128) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
把image列名,修改為path
mysql> alter table users change image path varchar(64);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0mysql> select * from users;
+--------+----------+------------+------+
| name | password | birthday | path |
+--------+----------+------------+------+
| 張三 | 4321 | 2000-11-23 | NULL |
| 張三 | 4321 | 2000-11-23 | NULL |
| 李四 | 5678 | 1987-06-05 | NULL |
+--------+----------+------------+------+
把users表名,修改為user_set
mysql> alter table users rename user_set;
Query OK, 0 rows affected (0.00 sec)mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| person |
| user_set |
+---------------+
四,刪除表
代碼:drop table 表名;
mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| person |
| user_set |
+---------------+
2 rows in set (0.00 sec)mysql> drop table user_set;
Query OK, 0 rows affected (0.00 sec)mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| person |
+---------------+
1 row in set (0.00 sec)