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