表操作
1.创建表
create table table_name(
field1 datatype,
field2 datatype,
field3 datatype
)character set 字符集 collate 校验规则 engine 存储引擎;
说明:
- field表示列名
- datatype表示列的类型
- character set字符集,如果没有指定字符集,则以所载数据库的字符集为准
- collect校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
创建一张users表
mysql> create table users(
-> id int,
-> name varchar(20) comment '用户名',
-> password char(32) comment '密码',
-> birthday date comment '生日'
-> )character set utf8 engine MyISAM;
创建好后,查看表结构使用
desc table_name;
mysql> desc users;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| password | char(32) | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
2.修改表
//增
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);
通过案例实现以上操作:
首先向刚才建好的users表中添加两条数据,并查看表中内容
mysql> insert into users values(1,'a','b','1982-01-04'),(2,'b','c','1984-01-04');
mysql> select * from users;//查看表中的记录
+------+------+----------+------------+
| id | name | password | birthday |
+------+------+----------+------------+
| 1 | a | b | 1982-01-04 |
| 2 | b | c | 1984-01-04 |
+------+------+----------+------------+
- 在users表中增加一个字段,用于保存头像图片路径
mysql> alter table users add assets varchar(100) comment '头像图片路径' after birthday;
mysql> desc users;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| password | char(32) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| assets | varchar(100) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
可以查看一下添加新字段后会不会对users表已有数据产生影响
mysql> select * from users;
+------+------+----------+------------+--------+
| id | name | password | birthday | assets |
+------+------+----------+------------+--------+
| 1 | a | b | 1982-01-04 | NULL |
| 2 | b | c | 1984-01-04 | NULL |
+------+------+----------+------------+--------+
根据结果可以看出,插入新字段后对原来的数据没有影响,数据仍然存在。
- 修改name,将其长度改为60
mysql> alter table users modify name varchar(60);
mysql> desc users;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(60) | YES | | NULL | |
| password | char(32) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| assets | varchar(100) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
- 删除password列
mysql> alter table users drop password;
mysql> desc users;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(60) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| assets | varchar(100) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
mysql> select * from users;
+------+------+------------+--------+
| id | name | birthday | assets |
+------+------+------------+--------+
| 1 | a | 1982-01-04 | NULL |
| 2 | b | 1984-01-04 | NULL |
+------+------+------------+--------+
2 rows in set (0.00 sec)
由运行出的结果可以看出,删除字段时一定要谨慎,这样会导致字段所对应的列数据也被删除。
- 修改表名为employee
mysql> alter table users rename to employee;
mysql> select * from users;
ERROR 1146 (42S02): Table 'test1.users' doesn't exist//表users已经不存在
mysql> select * from employee;//用新表名查询
+------+------+------------+--------+
| id | name | birthday | assets |
+------+------+------------+--------+
| 1 | a | 1982-01-04 | NULL |
| 2 | b | 1984-01-04 | NULL |
+------+------+------------+--------+
- 将name列修改为emp_name
mysql> alter table employee change name emp_name varchar(60);
mysql> desc employee;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| emp_name | varchar(60) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| assets | varchar(100) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
3.删除表
DROP TABLE table_name;
- 删除employee表
mysql> drop table employee;
mysql> desc employee;
ERROR 1146 (42S02): Table 'test1.employee' doesn't exist