<3>-MySQL表的操作
目录
一,创建表
二,查看表结构
三,修改表
四,删除表
一,创建表
语法:
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)