MySQL的操作命令离不开四字真言:增删改查
简单的记录一下MySQL常用的增删改查命令
改
主要使用关键字 ALTER
,RETURN TO
,ADD
,CHANGE
,MODIFY
,DROP
-
使用
ALTER
和RETURN TO
更改表名称ALTER TABLE old_table_name RETURN TO new_table_name;
表示将旧表 old_table_name 修改成 new_table_name
其中:
old_table_name
和 new_table_name
分别表示 “原表名” 和 “新表名”
使用
ALTER
和ADD COLUMN
为表添加新列,并指定其位置
ALTER TABLE table_name
ADD COLUMN column_name data_type(limit) [NOT NULL] [DEFAULT VALUE] [position];
也可以或使用ALTER
和AFTER
或ALTER
和BEFORE
来指定位置
ALTER TABLE table_name
ADD COLUMN column_name data_type(limit) [NOT NULL] [DEFAULT VALUE]
AFTER/BEFORE other_column_name;
其中:
[ ]
为可选项
data_type(limit)
数据类型及限制,如VARCHAR(10)
,DEC(4,2)
等
DEFAULT
使用默认值,VALUE
是默认值
position
列表位置,可填FIRST
,SECOND
,LAST
等,不填则默认在最后一列
other_column_name
其他列名-
**使用
ALTER
和CHANGE
修改表列名称,并将其设置成KEY
**ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name data_type NOT NULL [AUTO_INCREMENT], ADD PRIMARY KEY (new_column_name);
其中:
[ ]
为可选
table_name
表示表的名称
old_column_name
表示修改前的列名称
new_column_name
表示修改后列的名称
data_type
数据类型,如INT
,VARCHAR
等
NOT NULL
不允许NULL值出现(可理解成必填,对于有主键的表,主键是必填的)
AUTO_INCREMENT
数值以公差为1自动递增,每个表只有一列加上,该列只能是整形类并且不能包含NULL
。 -
使用
ALTER
和CHANGE
修改一个或多个列的名称和数据类型
假设有如下类型的数据表 drinks
![MySQ数据表drinks][img]
[img]:http://ww2.sinaimg.cn/large/6da989degw1f13bxxzc09j20ft05udgx.jpg现想修改 main列 和 second列 的名称和数据类型,可使用下列命令达成:
ALTER TABLE drinks CHANGE COLUMN main new_main VARCHAR(10), CHANGE COLUMN second new_second VARCHAR(8);
修改后如下:
![CHANGE修改操作][img2]
[img2]:http://ww4.sinaimg.cn/large/6da989degw1f13caeskejj20fu0603zn.jpg
main列 和 second列 已经修改成 new_main列 和 new_second列 ,VARCHAR
的字符限制也做了修改,值得注意的是,修改数据类型可能会导致数据丢失,比如将 new_main列的数据类型 VARCHAR(50)
修改成 VARCHAR(10)
, new_main列 中大于 10 字符的数据将会发生截断,若将 VARCHAR(50)
修改成 INT
等数值型类型,原列的数据将完全丢失。
-
使用
ALTER
和MODIFY
修改数据类型
使用MODIFY
可以在不修改列名的情况下修改数据类型,以数据表drinks为例,将 main列 修改成INT(1)
, 命令如下:ALTER TABLE drinks MODIFY COLUMN main INT(1);
修改后如下:
![MODIFY修改操作][img3]
[img3]:http://ww3.sinaimg.cn/large/6da989degw1f13ivw81bpj20fs05edgm.jpg
-
使用
ALTER
和DROP
删除列和主键
以数据表drinks为例,删除 directions列 ,命令如下:ALTER TABLE drinks DROP COLUMN directions,DROP PRIMARY KEY;
修改后如下,directions列 和 主键 已经被删除。
![DROP删除列操作][img4]
[img4]:http://ww3.sinaimg.cn/large/6da989degw1f13kkye7blj20dr04zq3n.jpg
值得注意的是,在删除主键时,需要先用 ALTER
和 MODIFY
删除 AUTO_TNCREMENT
, 否则会出现错误。
![KEY删除错误][warn]
[warn]:http://ww3.sinaimg.cn/large/6da989degw1f13kobl2thj20hx01fwel.jpg
UPDATE table_name SET column_name = 'newvalue';
UPDATE my_contacts SET state = RIGHT(location,2);
#state列右边数起,前两个字符
SUBSTRING(your_string,start_position,length);
SUBSTRING(列名,分隔符,第几个分隔符);