MySQL之表的操作(删除表、修改表、创建表操作)

表操作

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章