中企动力 > 商学院 > sql语句批量添加数据
  • ?

    如何将SQL语句查询出的数据新建成一个表

    祁稀

    展开

    CREATE    /*[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]    [DEFINER = { user | CURRENT_USER }]    [SQL SECURITY { DEFINER | INVOKER }]*/    VIEW `test`.`view_ll`     AS(SELECT * FROM ...);

    `test`.`view_ll` 是数据库.表名。()里面是sql语句。

    (本文内容由百度知道网友du瓶邪贡献)

  • ?

    SQL语句之数据更新删除数据

    支灵竹

    展开

    1、不在需要的数据,就要执行删除操作,删除语法如下:

    DELETE FROM 表名称 [ WHERE 删除条件(s) ] ;

    其中,WHERE子句里面,依然可以使用子查询进行操作。

    范例:删除雇员编号是7566的雇员信息

    DELETE FROM myemp WHERE empno=7566 ;

    范例:删除雇员编号是7788、7902的雇员信息

    DELETE FROM myemp WHERE empno=7788 OR empno=7902 ;

    DELETE FROM myemp WHERE empno IN(7788, 7902) ;

    注意:用了rollback回退操作!所以7566的数据还存在

    范例:删除高于公司平均工资的雇员信息

    DELETE FROM myemp WHERE sal>(SELECT AVG(sal) FROM myemp)

    范例:删除全部记录

    DELETE FROM myemp ;

    一定要记住,在任何的系统之中,删除操作都属于极其危险的操作。实际上,一个稳定的系统,对于删除操作,都是具备一个逻辑删除和物理删除的两种方式:

    ◆ 物理删除:直接执行DELETE FROM,彻底从表中删除记录。

    ◆ 逻辑删除:增加一个逻辑的字段,例如:有一个flag字段,如果flag=1表示已经被删除,如果flag=0表示没有被删除。

    如果真执行的是删除操作,那么,就相当于修改了flag字段的内容,同时在每次查询的时候,只需要增加一个WHERE限定条件(SELECT * FROM ... WHERE flag=1)。

    【总结】

    1、 更新操作,要比查询操作,更加的简单(语法都固定)。

    2、 所有的更新操作,每次更新完成之后,都一定会返回更新的数据行数,如果没有更新,则返回0。

  • ?

    分享带游标的T-Sql批量修改数据库记录

    澄清

    展开

    首先我们创建一个数据库为article,里面存储文章的标题,作者,内容等信息,主键为articleid。创建完成后我们通过use article来对这个数据库进行操作。

    USE article

    GO

    声明变量和游标

    declare @aa int,@ff int

    declare @@rr int

    declare CURSORNAME cursor for select articleid from article ORDER BY articleid

    open CURSORNAME

    fetch next from CURSORNAME into @ff

    通过游标随机增加一定期限的时间,然后更新整个表。

    set @aa=1

    while @@fetch_status=0

    begin

    set @@rr=rand()*59

    update article set articleAddtime=DATEADD(day,@@rr, '2010-1-1') WHERE articleid=@ff

    set @aa=@aa+1

    fetch next from CURSORNAME into @ff

    end

    close CURSORNAME

    deallocate CURSORNAME

    GO

    好了,到这里就结束了。如果你是初学者,希望这段代码能够帮助到你。如果喜欢请点赞转发给有需要的朋友。

  • ?

    SQL数据库用存储过程批量更改某一个字段的值(单表也可以)

    如凡

    展开

    USE [aa] --其中aa是数据库库名

    GO

    SET ANSI_NULLS ON

    GO

    SET QUOTED_IDENTIFIER ON

    GO

    --批量替换数据库所有相同字段的值,

    --如果@Table值不为空,则只更新传入表该字段的值

    --用法1:在查询分析器写入如示语句执行批量更改:BatchModify '字段名', '旧值', '新值', ''

    --用法2:在查询分析器写入如示语句执行批量单表更改:BatchModify '字段名', '旧值', '新值', '表名'

    Create Procedure [dbo].[BatchModify](

    @Field nvarchar(40),--要替换值的字段

    @OldValue nvarchar(50),--旧值

    @NewValue nvarchar(50),--新值

    @Table nvarchar(40)--待替换的表名

    ) as

    begin

    --字段、旧值、新值不能为空

    if (@Field <> '') and (@OldValue <> '') and (@NewValue <> '')

    begin

    --传入表名不为空,则更新该表的该字段值

    if @Table <> ''

    begin

    Exec('Update ' + @Table + ' Set ' + @Field + ' = ''' + @NewValue +

    ''' Where ' + @Field + ' = ''' + @OldValue + '''')

    Print '更改单个表的字段值成功!'

    end

    else

    begin

    --使用游标进行批量更新

    Declare @TableTemp nvarchar(40)

    --Declare @ID Int

    Declare BatchMod Cursor For

    --找出字段所在表的ID

    Select T.[Name] From SysColumns C Inner Join SysObjects T

    On C.ID = T.ID Where (C.[Name] = @Field) and (T.XType = 'U')

    Open BatchMod

    Fetch Next From BatchMod Into @TableTemp

    While @@FETCH_STATUS = 0

    begin

    --根据表ID找出表名

    --Select @TableTemp = [Name] From SysObjects Where (ID = @ID)

    --执行批量修改

    Exec('Update ' + @TableTemp + ' Set ' + @Field + ' = ''' + @NewValue +

    ''' Where ' + @Field + ' = ''' + @OldValue + '''')

    --循环,抓出下一条

    Fetch Next From BatchMod Into @TableTemp

    end

    --关闭、释放游标

    Close BatchMod

    Deallocate BatchMod

    Print '批量更改数据库中所有表的字段值成功!'

    end

    end

    else

    begin

    Print '字段、旧值或者新值没有输入!请检查!'

    end

    end

  • ?

    那些经常需要用到的Sql语句语法汇总-大数据

    人杰

    展开

    489034603

    最近总是在QQ上遇到有朋友问一些SQL的语句语法,对于初学大数据的小伙伴来说,可能以前没有学过数据库,下面是整理的一些SQL的语句语法,可能在其它地方上也有,凑合看看

    下列语句部分是Mssql语句,不可以在access中使用。 SQL分类:

    DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)

    DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)

    DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)

    首先,简要介绍基础语句:

    1、说明:创建数据库

    CREATE DATABASE database-name

    2、说明:删除数据库 drop database dbname

    3、说明:备份sql server --- 创建 备份数据的 device USE master

    EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份

    BACKUP DATABASE pubs TO testBack

    4、说明:创建新表

    create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

    根据已有的表创建新表:

    A:create table tab_new like tab_old (使用旧表创建新表)

    B:create table tab_new as select col1,col2 from tab_old definition only

    5、说明:删除新表drop table tabname

    6、说明:增加一个列

    Alter table tabname add column col type

    注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

    7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col)

    8、说明:创建索引:create [unique] index idxname on tabname(col.) 删除索引:drop index idxname

    注:索引是不可更改的,想更改必须删除重新建。

    9、说明:

    创建视图:create view viewname as select statement

    删除视图:drop view viewname

    10、说明:几个简单的基本的sql语句

    选择:select * from table1 where 范围

    插入:insert into table1(field1,field2) values(value1,value2)

    删除:delete from table1 where 范围

    更新:update table1 set field1=value1 where 范围

    查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!

    排序:select * from table1 order by field1,field2 [desc]

    总数:select count as totalcount from table1

    求和:select sum(field1) as sumvalue from table1

    平均:select avg(field1) as avgvalue from table1

    最大:select max(field1) as maxvalue from table1

    最小:select min(field1) as minvalue from table1

    11、说明:几个高级查询运算词

    A: UNION 运算符

    UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

    B: EXCEPT 运算符

    EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

    C: INTERSECT 运算符

    INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

    注:使用运算词的几个查询结果行必须是一致的。

    12、说明:使用外连接

    A、left outer join: 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。 sql: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

    B:right outer join: 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

    C:full outer join:

    全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。 其次,大家来看一些不错的sql语句

    1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)

    法一:select * into b from a where 1<>1

    法二:select top 0 * into b from a

    2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)

    insert into b(a, b, c) select d,e,f from b;

    3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用) insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件

    例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..

    4、说明:子查询(表名1:a 表名2:b)

    select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)

    5、说明:显示文章、提交人和最后回复时间

    select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

    6、说明:外连接查询(表名1:a 表名2:b)

    select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

    7、说明:在线视图查询(表名1:a )

    select * from (SELECT a,b,c FROM a) T where t.a > 1;

    8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括

    select * from table1 where time between time1 and time2

    select a,b,c, from table1 where a not between 数值1 and 数值2

    9、说明:in 的使用方法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

    10、说明:两张关联表,删除主表中已经在副表中没有的信息

    上面这些语句语法是大数据访问数据库经常要用到的,需要熟透到心中,数据越大,进行查表的语句就应该越简单,才可以加快查询速度。。

    注意:想学习大数据技术的伙伴请加第一张图片下方的学习交流群,群里有大量视频可自行下载。大家关注小编可以获取更多新消息的哦!!

  • ?

    如何优化大数据高并发量的系统的SQL语句提高效率

    曼文

    展开

    性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化。为了获得稳定的执行性能,SQL语句越简单越好。对复杂的SQL语句,要设法对之进行简化提高它的解决效率。

    489034603

    当看到一个SQL语句带来了性能问题的时候,首先要看看它的执行计划。看看他是否走了你所期望的索引。物理读逻辑读是不是在合理的范围之内?对于这类的性能问题,可以追溯到表的设计阶段,例如,为 了保证数据库的一致性和完整性,在逻辑设计的时候往往会设计过多的表间关联,尽可能的降低数据的冗余,然而,为了提高系统的响应时间,合理的数据冗余也是必要的。设计人员在设计阶段应根据系统操作的类型、频度加以均衡考虑。下面我们来谈谈优化的技巧:

    【1】表设计的优化

    1、数据行的长度不要超过8020字节,如果超过这个长度的话在物理页中这条数据会占用两行从而造成存储碎片,降低查询效率。

    2、能够用数字类型的字段尽量选择数字类型而不用字符串类型的。

    3、对于不可变字符类型char和可变字符类型varchar 都是8000字节,char查询快,但是耗存储空间,varchar查询相对慢一些但是节省存储空间。

    4、字段的长度在最大限度的满足可能的需要的前提下,应该尽可能的设得短一些,这样可以提高查询的效率,而且在建立索引的时候也可以减少资源的消耗。

    5、字段顺序对存储效率也有不小的影响。在做表结构设计的时候,我们往往不会去考虑字段的摆放顺序。但是,实际上字段的摆放顺序对数据库操作的性能是有影响的。

    6、针对各种类型的表来存储各种类型的数据

    【2】 语句的查询优化

    1、保证在实现功能的基础上,尽量减少对数据库的访问次数;

    2、通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;能够分开的操作尽量分开处理,提高每次的响应速度;

    3、在数据窗口使用SQL时,尽量把使用的索引放在选择的首列;算法的结构尽量简单;

    4、在查询时,不要过多地使用通配符如SELECT * FROM T1语句,要用到几列就选择几列如:SELECT COL1,COL2 FROM T1;

    5、在可能的情况下尽量限制尽量结果集行数如:SELECT TOP 300 COL1,COL2,COL3 FROM T1,因为某些情况下用户是不需要那么多的数据的。

    6、在没有建索引的情况下,数据库查找某一条数据,就必须进行全表扫描了,对所有数据进行一次遍历,查找出符合条件的记录。

    7、在数据量比较小的情况下,也许看不出明显的差别,但是当数据量大的情况下,这种情况就是极为糟糕的了。

    8、合理的使用临时表。例如表A 的 ID 字段有索引,并且这个表的数据有很多。这时候要查询这个ID 的最大值与最小值,如果能合理使用临时表,速度将大幅度提高!

    9、多层的子查询需要进行简单化。

    【3】建立高效的索引

    创建索引一般有以下两个目的:维护被索引列的唯一性和提供快速访问表中数据的策略。大型数据库有两种索引即簇索引和非簇索引,一个没有簇索引的表是按堆结构存储数据,所有的数据均添加在表的尾部,而建立了簇索引的表,其数据在物理上会按照簇索引键的顺序存储,一个表只允许有一个簇索引,因此,根据B树结构,可以理解添加任何一种索引均能提高按索引列查询的速度,但会降低插入、更新、删除操作的性能,尤其是当填充因子(Fill Factor)较大时。所以对索引较多的表进行频繁的插入、更新、删除操作,建表和索引时因设置较小的填充因子,以便在各数据页中留下较多的自由空间,减少页分割及重新组织的工作。据说大部分的数据库性能问题都可以采用索引技术得到解决。

    【4】 强制查询转换

    有时候oracle 的优化器未必能走正确的查询路线,这个时候就需要添加一些hint 之类的来规定他的执行路线。当然了,这个未必是最好的处理方案。因为虽然现在走这个路线是对的,以为因为数据的变化到这这个HINT 变得不可取!

    【经验之谈】

    在日常我们开发的系统中有很多的SQL 语句被写成N层嵌套,我们应该在了解了业务之后,将复杂的SQL 改成多个简单的语句逐步处理,再或者用with as 语法,这个可以解决不少的性能的问题。再者,很多朋友不会使用分析函数,认为它会带来一定的性能问题,其实这是错的。使用分析函数的查询,不但语法简洁,查询效率来看比自己拼得多层查询的效率要好很多。

    以上为个人观点,供大家参考,因为每个公司的业务逻辑不同,所采用的方法也不尽相同,我们只能做的让它变的更好,在大数据领域没有最好。

    另外,如果小伙伴想学习大数据技术,可以加下图片下面的交流群,群里有很多学习视频都可以下载,而且每天大数据架构师马士兵老师都会在群里分享大数据的技术。。

  • ?

    WordPress如何使用SQL语句批量操作(1)

    邬达

    展开

    你是否遇到过如下几种状况:    博客更换域名,博客文章的内容也要跟着换    使用的图片地址更换了    写了很多文章,回过头来想切换作者    想删除某个可恶留言者的所有留言    想更改某个留言者所有留言的网站URL    想要禁用所有文章的pingback想要禁用所有文章的评论功能所有的这些,都涉及到一个关键词:批量修改。如果在WordPress后台,手动地去一个一个修改文章内容,相信会让你很抓狂,对一些拥有上千篇文章的博客来说,几乎是不可能完成任务。本文将教你如何使用SQL语句来操作你的数据库,实现数据的批量修改。

    进入你的PhpMyAdmin管理页面,然后进入你的博客对应的数据库菜单栏有个 SQL 选项,点击进去出现一个SQL语句的输入框,现在你就可以在里面输入SQL语句了

    1、批量修改文章内容:如果你想替换之前写过的所有文章中的某些内容,如更换博客的名称,更换博客的网址,更换文章配图的链接等等,你可以使用以下SQL语句:UPDATE wp_posts SET post_content = REPLACE( post_content, '博客', '中文博客' );输入完毕,点击 执行 ,将执行你刚才输入的SQL语句

    如果你只是想更改文章插图的链接,而不想影响其他的链接,可以使用以下SQL语句,所有src="oldurl被替换成了src="newurlUPDATE wp_posts SET post_content = REPLACE (post_content, 'src="oldurl', 'src="newurl');

    如果你是以图片附件形式上传的话,需要更改图片附件的GUID:UPDATE wp_posts SET  guid = REPLACE (guid, 'oldsiteurl', newsiteurl') WHERE post_type = 'attachment';

    2、批量修改文章摘要:文章摘要就是你在WordPress后台编辑文章时,"摘要"框中输入的内容,如果你想批量更改文章摘要,可以使用以下语句:UPDATE wp_posts SET post_excerpt = REPLACE( post_excerpt, '露兜博客', '露兜中文博客' );

    3、批量修改文章的作者:假设你的博客有两名注册用户,张三和李四,你想将张三的所有文章划归到李四名下,这时候该怎么办呢?你可以首先执行以下语句获取张三和李四的用户ID:SELECT ID, user_nicename, display_name FROM wp_users;

    这时将列出你博客上所有的注册用户的ID,昵称和公开显示的名称,你现在就可以找到对应用户的ID了,如下图,zhangsan的ID为2,lisi的ID为5:你的SQL就可以这样写了:UPDATE wp_posts SET post_author = 5 WHERE post_author = 2;

  • ?

    后端开发:「批量插入海量数据之Java插入MySql」解决方案

    Kemi

    展开

    Java向MySql数据库插入万级记录时,采用的方案不同时执行速度会有所不同,数据量越大则优劣越明显。所以选取最优方案尤其重要,本文目前提供如下两种解决方案(不借用第三方框架或工具)。

    1、方案一:循环逐条插入。

    关键代码:

    2、方案二:分批事务插入。

    1.两种方案的主要区别在于,sql语句的不同、batch批和事务的使用。

    单条插入sql语句:insert into Table (col1,col2...) values (val11,val12...);

    多条批插入sql语句:insert intoTable (col1,col2...) values (val11,val12...),(val11,val12...),...;

    2.本次测试的实例中,插入69万条数据左右,方案二要比方案一的速度快上10倍左右。具体测试得到的具体毫秒数可能不同。影响因素个人认为有如下几条:

    (1)数据模型,每条数据记录的字段越多,就需要调整itemNum(每批插入的数据量,可以采用二分法找到最合适的数值),或者调整MySql数据库对每次执行sql语句的字节长度限制(网上自行搜索)。itemNum值找到最合适的,速度才可能在其他条件同等的条件下是最快的;

    (2)主机配置。包括处理器性能、硬盘性能 ,mysql数据库可能也会影响到速度;

  • ?

    如何实现批量导入数据

    车雨筠

    展开

        SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具,用于将数据从一个表移动到另一个表(表既可以在同一个服务器上,也可以在不同服务器上)。SqlBulkCopy 类允许编写提供类似功能的托管代码解决方案。还有其他将数据加载到 SQL Server 表的方法(例如 INSERT 语句),但相比之下 SqlBulkCopy 提供明显的性能优势。    使用 SqlBulkCopy 类只能向 SQL Server 表写入数据。但是,数据源不限于 SQL Server;可以使用任何数据源,只要数据可加载到 DataTable 实例或可使用 IDataReader 实例读取数据。    下面分享如何使用实现批量导入信息资料功能。

    1. 信息资料数据表设计

    2. WinForm 程序设计Winform 程序 采用VS2008 C#语言开发。界面设计为工具栏、查询条件、数据列表及状态栏。

    3. 数据导入界面设计数据导入选择导入数据文件,经解释正确后,进行确定,导入数据。

    4. 选择CSV数据文件进行解释    本示例使用CSV文本文件导入。4.1. CSV 数据文件内容

    4.2. CSV数据导入解释方法

    5. 使用导入数据

        至此,导入数据分享完毕,几万行数据,可在几秒内瞬间导入。从中我们也发现,想要达到这种速度,是有很多条件的。比如程序不会针对每一行数据进行数据有效性验证;导入的数据列必须与数据库中的数据表设计完全一致。所以一般只在数据转移、信息系统升级中常用。

  • ?

    加速mysql批量数据插入

    Madeleine

    展开

    问题描述:

    由于测试需要,需要将生产库的一些数据导入到测试库进行开发测试。一些表的数据量有些多,达到6W+条,从生产库导出的文件达到10.6M,内容是每行一条插入语句(INSERT INTO TableName VALUES(…);)。

    将这个导出的.sql文件通过工具载入到测试库后,点击了“运行”,只见信息栏一条条SQL语句“疯狂”的执行着,心想,应该很快应该执行完了吧,但是等了好一会儿,见到信息栏还在一条条努力的输出着插入的消息。

    仔细看了下控制台,发现平均每条语句执行0.03s以上,多的甚至达到了0.09s,算了一下,如果按每条0.03s的速度执行,插入完这批数据一共需要花费0.03s/条*66176条=1985.28s,也就是大概33.088分钟!

    这个时候,SQL已经执行了993.598s,也就是16多分钟,还要再执行16多分钟,才能将66176条数据插入完毕,这显然是不能忍的!

    查询时间

    分析解决尝试中。。。

    为什么会这么慢呢?后来分析了一下,每个insert语句,大体都要经过发送数据到服务器端、解析SQL、预处理、优化SQL执行计划等步骤,有没有哪个步骤是可以优化或减少的呢?

    顺着这个思路,后来把SQL语句改造了一下:

    SQL改造

    只保留一个INSERT INTO tableName,剩下的改为逗号相隔。这样做的好处,一是减少文件大小(改造前.sql文件10.6M,改造后,文件大小为8.09M),减少发送到服务器的时间;二是减少SQL语句多余的解析操作,改造后,只需要解析一次就可以进行数据插入操作。

    后来通过工具的“状态”栏也可以证明这一点:

    改造前后对比

    状态

    在寻求解决方案过程中,曾想到多线程,想找到一种像oracle中的并行操作技术parallel

    insert /*+parallel(t 16)*/ into tableName(...)

    但是没有找到,但无意中发现了一种更快的方法:加上事务!

    START TRANSACTION;

    INSERT INTO TABLE_NAME VALUES(...), (...), (...), ...;

    COMMIT;

    原因是:在进行insert操作时,mysql内部会建立一个事务,在事务内进行真正的处理。主动加上事务语句,可以减少创建事务的操作,减少执行时间。

    通过这种方法,我做了下尝试,结果如下:

    执行结果

    相比于一条条插入语句,效率提高了100多倍!

    总结:

    通过改造SQL语句可以减少网络传输IO,减少解析时间,提高批量插入速度。通过主动创建事务,进一步减少执行时间。

    这里需要注意的是,发送到服务器端的数据大小是有默认限制的,有的是1M,有的是4M,可以通过改动max_allowed_packet配置跳过该限制:

    方法一(具有linux权限):改动服务器的mysql配置文件myf,增加: max_allowed_packet=20M, 然后重启mysql服务

    方法二(具有mysql修改配置权限):执行SQL语句,set global max_allowed_packet=20*1024*1024

sql语句批量添加数据

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP