mysql初始(6)
随着mysql的运用不断加深,一些更复杂点的用法又需要总结起来。
1.将一个表中的数据插入到另一个表中:
a.两张表字段相同,并且数据全部插入,命令如下: INSERT INTO 目标表 SELECT * FROM 来源表;
b.插入部分字段,命令: INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 来源表;(这里的话字段必须保持一致)
c.只导入目标表中不存在的记录,命令:INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 来源表 WHERE not exists (select * from 目标表 where 目标表.比较字段 = 来源表.比较字段);
d.通过更新的方式,将一个表中的部分数据更新到另一个表中:update
a
inner
join
b
on
a.bid=b.id
set
a.x=b.x,a.y=b.y;
2.insert的其它用法:
insert into set为mysql的扩展语法,适合插入单行
insert into value 为标准SQL语法,能一次插入多行数据
3.replace用法;
1.replace into
replace into table (id,name) values('1','aa'),('2','bb')
此语句的作用是向表table中插入两条记录。如果主键id为1或2不存在就相当于
insert into table (id,name) values('1','aa'),('2','bb')
如果存在相同的值则不会插入数据
2.replace(object,search,replace)
把object中出现search的全部替换为replace
select replace('www.163.com','w','Ww')--->WwWwWw.163.com
例:把表table中的name字段中的aa替换为bb
update table set name=replace(name,'aa','bb')
3.UPDATE更新一个字段中的的部分内容
现在有一条记录的字段是“abcdefg",现在我只想将该字段中的c改为C,update语句应该怎么写
update 表名 set 字段1 = replace(字段1,'c','C')