xml地图|网站地图|网站标签 [设为首页] [加入收藏]
记开发个人图书收藏清单小程序开发,mysql如何把
分类:数据库

一:在新表已经建立好的情况下

本文导读:删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作。TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似;但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少。下面介绍SQL中Truncate的用法

昨晚完成了Web端新增图书信息的功能,现在就差DB的具体实现了。

1,拷贝所有的字段

 

因为我把Book相关的信息拆分的比较多,所以更新有点小麻烦。

insert into new_table select * from old_table

当你不再需要该表时, 用 drop;当你仍要保留该表,但要删除所有记录时, 用 truncate;当你要删除部分记录时(always with a WHERE clause), 用 delete.

首先,我需要创建一个Book Type的Matter;

2,拷贝部分字段表

 

然后,将图片路径保存到FileBank中,并返回FileBankID;

insert into new_table(id,name,sex) select id,name,sex from old_table

Truncate是一个能够快速清空资料表内所有资料的SQL语法。并且能针对具有自动递增值的字段,做计数重置归零重新计算的作用。

继续,插入Publisher信息(需要判断name不存在才会insert),然后返回PublisherID;

3,拷贝部分的行

 

 1 CREATE PROCEDURE [base].[Publisher#Insert](@json nvarchar(max), @id int out)
 2 WITH ENCRYPTION
 3 AS
 4 BEGIN
 5 ...
 6 
 7         declare    @name nvarchar(100);
 8         select    @name=Publisher from openjson(@json, '$') with (Publisher nvarchar(100))
 9 
10         -- insert Publisher
11         insert    base._Publisher(Name)select @name
12         where    not exists(select 1 from base._Publisher p where p.Name=@name);
13 
14         select    @id=ID from base.Publisher#Raw() where Name=@name;
15 ...
16 END

insert into new_table select  *  from old_table where id="1"

一、Truncate语法

 

4,拷贝部分的行和字段

[ { database_name.[ schema_name ]. | schema_name . } ]
    table_name
[ ; ]  

继续,插入Binding信息(也需要判断name不存在才insert),返回BindingID;

insert into new_table(id,name,sex) select id,name,sex form old_table where id='1'

参数

 1 CREATE PROCEDURE [base].[Binding#Insert](@json nvarchar(max), @id int out)
 2 WITH ENCRYPTION
 3 AS
 4 BEGIN
 5 ...
 6 
 7         declare    @name nvarchar(100);
 8         select    @name=Binding from openjson(@json, '$') with (Binding nvarchar(100))
 9 
10         -- insert Binding
11         insert    base._Binding(Name)select @name
12         where    not exists(select 1 from base._Binding p where p.Name=@name);
13 
14         select    @id=ID from base.Binding#Raw() where Name=@name;
15 
16 ...
17 END

二:在新表还没有建的情况下

database_name
数据库的名称。

 

方案一:

schema_name
表所属架构的名称。

继续,插入Book信息;

create table new_table (select * from old_table)

table_name
要截断的表的名称,或要删除其全部行的表的名称。

继续,插入BookInfo的信息;

这种方案建的话,只是拷贝的查询的结果,新表不会有主键和索引

 

继续,插入BookNbr信息;

方案二:

二、Truncate使用注意事项

继续,插入BookSupplement信息;

create table new_table LIKE old_table

 

继续,插入BookTag信息;

该方案只能拷贝表结构到新表中,不会拷贝数据

1、TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。

 1 CREATE PROCEDURE [base].[BookTag#Insert](@json nvarchar(max), @bookID bigint)
 2 WITH ENCRYPTION
 3 AS
 4 BEGIN
 5 ...
 6 
 7         -- insert Tag
 8         insert    base._Tag(Name)select value
 9         from    openjson(@json, '$.Tags') x
10         where    not exists(select 1 from base._Tag p where p.Name=x.value);
11 
12         insert    base._BookTag(BookID, TagID) select @bookID, x.ID
13         from    openjson(@json, '$.Tags') j join base.Tag#Raw() x on x.Name=j.value
14 
15 ...
16 END

方案三:

 

 

如果要真正的复制一个数据到新表,我们可以直接执行下面的语句

2、DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

继续,插入BookAuthor信息;

本文由澳门新葡亰手机版发布于数据库,转载请注明出处:记开发个人图书收藏清单小程序开发,mysql如何把

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文