第一天的缺少了关于alter的操作,以下是补充:
ALTER操作:
a.语法
1.修改表名
语法规则:
ALTER TABLE old_table_name RENAME [TO] new_table_name
2.修改字段的数据类型
语法规则:
ALTER TABLE table_name MODIFY 字段名 数据类型
3.修改字段名
语法规则:
ALTER TABLE table_name CHANGE 旧字段名 新字段名 数据类型
4.添加字段
语法规则:
ALTER TABLE table_name ADD 新字段名 数据类型 [约束条件] [FIRST|AFTER 已经存在的字段名]
5.删除字段
语法规则
ALTER TABLE table_name DROP 字段名
6.修改字段的排列位置
语法规则:
ALTER TABLE table_name MODIFY 字段1 数据类型 FIRST|AFTER 字段2
first: 设置成第一个
after 字段2: 在指定字段2的后面
7.删除表的外键约束
语法规则:
ALTER TABLE table_name DROP FOREIGN KEY 外键约束名
8.删除数据表
1)删除没有被关联的表
语法规则:
DROP TABLE [IF EXISTS] 表1,表2...
2)删除被其它关联的表
直接删除会出现错误,操作:先解除关联,再进行删除
演示:
1.切换数据
mysql> use mydb1
Database changed
2.查看当前的数据库
mysql> select database();
+------------+
| database() |
+------------+
| mydb1 |
+------------+
1 row in set (0.00 sec)
3.在当前数据库创建新的表
mysql> create table worker(
-> id int(11) primary key,
-> name varchar(20),
-> gender varchar(10),
-> brithday date,
-> entry_date date,
-> job varchar(20),
-> salary double,
-> resume blob
-> );
Query OK, 0 rows affected (0.02 sec)
4.显示指定表中的字段
mysql> desc worker;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| gender | varchar(10) | YES | | NULL | |
| brithday | date | YES | | NULL | |
| entry_date | date | YES | | NULL | |
| job | varchar(20) | YES | | NULL | |
| salary | double | YES | | NULL | |
| resume | blob | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
8 rows in set (0.01 sec)
5.增加字段image
mysql> alter table worker add image blob;
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
6.修改job的长度为60
mysql> alter table worker modify job varchar(60);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
7.删除image字段
mysql> alter table worker drop image;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
8.对表名重新命名
#方式一
mysql> rename table worker to user;
Query OK, 0 rows affected (0.00 sec)
#方式二
mysql> alter table worker rename to user;
Query OK, 0 rows affected (0.00 sec)
9.修改表的字符集为gbk
mysql> alter table user character set gbk;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show create table user; #查看信息,已经改为gbk
| Table | Create Table
| user | CREATE TABLE `user` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) CHARACTER SET latin1 DEFAULT NULL,
`gender` varchar(10) CHARACTER SET latin1 DEFAULT NULL,
`brithday` date DEFAULT NULL,
`entry_date` date DEFAULT NULL,
`job` varchar(60) CHARACTER SET latin1 DEFAULT NULL,
`salary` double DEFAULT NULL,
`resume` blob
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
1 row in set (0.00 sec)
10.将列名name修改为username
mysql> alter table user change name username varchar(100);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc user;
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| username | varchar(100) | YES | | NULL | |
| gender | varchar(10) | YES | | NULL | |
| brithday | date | YES | | NULL | |
| entry_date | date | YES | | NULL | |
| job | varchar(60) | YES | | NULL | |
| salary | double | YES | | NULL | |
| resume | blob | YES | | NULL | |
+------------+--------------+------+-----+---------+-------+
8 rows in set (0.00 sec)