![用MSSQLMySQL的学习比较(八)--插入更新删除 用MSSQLMySQL的学习比较(八)--插入更新删除](/rjstyle/noimg/71.webp)
插入
将多行查询结果插入表中
语法
插入table_name1(column_list1)选择(column_list2)从哪里table_name2(条件)
插入选择也支持SQLServer
table_name1指定表中插入数据;column_list1指定哪些列插入表格插入;table_name2指定插入的数据是从
这表的查询;column_list2指定数据源表的查询的列,必须是在column_list1列表字段数相同,该数据类型是一样的。
条件指定SELECT语句的查询条件。
查询所有记录从person_old表并将其插入到表的人
创建表(人)
我没有空auto_increment int unsigned,
名称char(40)不是NULL默认值,
默认值为0,
信息char(50)null,
主键(id)
)
创建表(person_old
我没有空auto_increment int unsigned,
名称char(40)不是NULL默认值,
默认值为0,
信息char(50)null,
主键(id)
)
插入person_old
值(11,哈利',20,'student),(12,31,'beckham,警方)
SELECT * FROM person_old
你可以看到,插入记录是成功的,并person_old是两个记录中显示。下一步,在person_oldperson_old表中的所有记录被插入到表的人
插入人(ID,姓名,年龄,信息)
选择ID,姓名,年龄,从person_old信息;
从人中选择*
您可以看到数据传输是成功的。这里的id字段是自增主键,插入时保证字段值的唯一性。如果不确定,插入时可以忽略该字段。
只插入其他字段的值
如果你再做一次,你会犯错误的。
MySQL和SQL Server之间的差异:
不同的一个
当要导入的数据中有重复值时,MySQL有三种选择
场景1:使用忽略关键字
方案二:替换成
方案三:关于重复密钥更新
第二个和第三个方案没有在这里介绍,因为它们很复杂,不符合要求。这是第一个在这里。
截断表的人
TRUNCATE TABLE persona_old
插入person_old
值(11,哈利',20,'student),(12,31,'beckham,警方)
注意下面这# # INSERT语句不忽略关键词
插入人(ID,姓名,年龄,信息)
选择ID,姓名,年龄,从person_old信息;
插入person_old
值(13,好的,26,'student)
注意下面这# # INSERT语句是忽略关键词
插入忽略到人(ID,姓名,年龄,信息)
选择ID,姓名,年龄,从person_old信息;
您可以看到插入成功。
SQLServer
在SQLServer的一面,如果你想忽略重复键,你需要指定(ignore_dup_key = { }在上)对原建筑的表的时间。
这样,当重复值插入,SQLServer将保持价值的第一次,当第二次发现,SQLServer将忽略它。
不同的两
插入自添加列之间的差异
SQLServer需要使用设置identity_insert表名,将自我增值领域到表中,如果不添加组identity_insert表名
当数据插入表的自增字段的值不能被指定,和ID字段不指定值,和SQLServer自动添加一个给你。
插入人(姓名、年龄、信息)值('feicy ',33,'student)
MySQL不需要它,而且自由度非常大。
可以将id字段的值指定为null,MySQL将自动添加一个id字段给您。
插入人(身份证,姓名、年龄、信息)值(null,'feicy ',33,'student)
还可以指定值。
将忽略为人(ID、姓名、年龄、信息)的值(16,88,'student',')
你也可以不写ID值,mysql会自动帮你添加一个。
将忽略为人(姓名、年龄、信息)值('amy ',12,'BB')
您可以指定id字段的值,或者不能指定它。当id字段列没有插入的值时,这意味着没有重复的值。
自由度是非常大的,而且不需要指定选项的设置identity_insert表名称
三者之间的区别
唯一索引的空值重复问题
MySQL
在MySQL中,惟一的索引将在空字段中失败。
插入测试(a)值(null)
插入测试(a)值(null)
可以重复插入上面的INSERT语句(相同的联合唯一索引是相同的)
SQLServer
SQLServer不工作
创建表(人)
id不是null标识(1,1),
名称char(40)NULL默认值,
默认值为0,
char信息(50)null,
主键(id)
)
创建唯一索引ix_person_unique { - }。{人}(名称)
插入{ } {人} dbo。
({ },{ },{ })
值(NULL,name - char(40))
1岁-国际
AA——信息字符(50)
),
(NULL)——名称char(40)
2岁-国际
BB——信息char(50)
)
消息2601,第14级,状态1,第一行
一排重复键不能插入一个独特的指标ix_person_unique.the重复键值对象dbo.person是()。
语句已终止。
更新
更新很简单,没什么要说的。
更新个人信息= 'police'where ID 14和17之间
从人中选择*
删除
删除个人表中某一范围的数据
从ID在14到17之间的人删除
从人中选择*
如果要删除表的所有记录,可以使用以下两种方法
# #方法
删除的人
方法2 # #
截断表的人
与SQLServer,截断表将以更快的速度比删除表
MyISAM引擎下的试验结果,30线
如SQLServer,在截断表执行,自增字段从一开始。
################################
插入忽略到人(ID,姓名,年龄,信息)
选择ID,姓名,年龄,从person_old信息;
从人中选择*
截断表的人
将忽略为人(姓名、年龄、信息)值('amy ',12,'BB')
从人中选择*
当您按照以下语句截断表时,您将从一开始就看到它。
显示表的状态like'person
总结
本节介绍的插入、更新和删除,MySQL,并比较两者之间的区别从SQLServer,尤其是在mysql insert语句的灵活性
刚开始从SQLServer可能有点不合适
如果有不对的地方,欢迎派专噢(一_ u)O