表操作
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