对于数据库的增删改查,我们都再熟悉不过了,今天,将和您一起探讨几种不一样的SQL用法,原来,SQL还可以这么玩儿。

以下是数据库的原表,如图-1。

1、快速复制表结构

这时,如果我们需要复制一份一模一样的表结构,您会怎么操作呢?当然,您可以通过导出表结构,再执行SQL脚本,这样肯定是可以达到目的的,再或者,您也可以再建一份一模一样的表,这样也可以达到目的。但是,如果有十几个字段呢,几十个字段呢,甚至上百个字段呢?这时我相信绝大部分人都不会这么干了,下面我们来看另外一种用法。咱们不妨执行一下以下的SQL语句来看看结果:

select * into T_Class_BF from T_Class where 1<>1;
select * from T_Class_BF;

再或者,执行一下以下SQL语句。

  select top 0 * into T_Class_B from T_Class;
select * from T_Class_B;

怎么样,当您再刷新数据库的时候,是不是发现多了两个跟T_Class结构一模一样的表T_Class_BF和表T_Class_B呢?通过这种方法,可以快速的复制表结构。到这里有人就会问了,有了表结构没有数据怎么办呢?莫非我还要一条一条的添加数据么,当然不是了!

2、复制表数据

最常规的方法,我们可以选中以有的表,然后导出数据脚本,这样的话可以将数据导出到一个SQL脚本,然后执行一下这个脚本,肯定是可以得到想要的结果的,但是,执行以下SQL语句,更能快速的实现将数据从一个表导入到另一个表,请看示例:

  select * from T_Class_BF;

  insert into T_Class_BF(ClassName,Count,AddDate,IsDel)
select ClassName,COUNT,AddDate,IsDEl from T_Class;
select * from T_Class_BF;

以下是执行结果:如图-2。

3、快速插入演示数据

在我们操作数据库的时候,很多时候,新建了一个表,但是表里刚开始却没有数据,如何快速的往表里添加大量的演示数据呢?除了一遍一遍执行SQL之外没有别的办法了吗?办法肯定是有的,这里就把平时自己经常用的一种拿来和大家分享以下。说到底也是执行SQL语句,只是执行的语句不一样。请看:

通过上文创建的T_Class_B表此时还是空的,我们拿它来演示一下。我们先通过一行SQL语句插入一条数据:

 insert into T_Class_B(ClassName,Count,AddDate,IsDel)
values ('我是测试班级',100,getDate(),1)

有了这一行语句,我们便可快速的复制出数据来啦。请先注意一下,目前表里是只有刚才插入的这一条数据的,我们把以下这条语句执行三遍,再看看表里的数据,如图-3所示,执行的语句:通过结果我们看到,现在表里的数据变成了8条!8条!

insert into T_Class_B(ClassName,Count,AddDate,IsDel)
select '我是测试班级',100,getDate(),1 from T_Class_B

执行了3次之后,居然有了8条数据。对数据敏感的同学可能立刻会想到了,2的3次方刚好是8,那么恭喜你,答对了。按照以上的方式插入数据,是按照2的N次方来增加的,如果再执行一次,查询结果将会变成16条数据,怎么样,这样用来做演示数据是不是很方便呢?

希望对您有所帮助,如有任何问题,愿意一起探讨。谢谢!

   

SQL还可以这么玩儿的更多相关文章

  1. netstat 竟然还能这么玩儿?

    一次摸鱼的机会,看到群里小伙伴问了一嘴 netstat -tnpl 这个命令是干啥的,这个命令用过很多,但是我其实也没有认真研究过,但是这是一个问题,我不能放过它,而且 netstat 这个命令我日常 ...

  2. 蚂蚁金服开源机器学习工具SQLFlow,机器学习比SQL还简单

    来自:开源最前线(ID:OpenSourceTop) 综合自:AI前线.https://github.com/sql-machine-learning/sqlflow 5月6日,蚂蚁金服副 CTO 胡 ...

  3. 你的 SQL 还在回表查询吗?快给它安排覆盖索引

    什么是回表查询 小伙伴们可以先看这篇文章了解下什么是聚集索引和辅助索引:Are You OK?主键.聚集索引.辅助索引,简单回顾下,聚集索引的叶子节点包含完整的行数据,而非聚集索引的叶子节点存储的是每 ...

  4. 函数还能这样玩儿~实现类似add(1)(2)(3)的函数

    人生的第一份前端工作找到了,感谢大神主子们给半路出家自学的我这么多的机会,很高兴正式踏上客观又乐趣满满的程序员之路,哇咔咔咔. ​ 分享一个准备面试时遇到的一个有趣的问题: 要求实现类似add(1)( ...

  5. MySQL中特别实用的几种SQL语句送给大家

    在写SQL时,经常灵活运用一些SQL语句编写的技巧,可以大大简化程序逻辑.减少程序与数据库的交互次数,有利于数据库高可用性,同时也能显得你的SQL很牛B,让同事们眼前一亮. 目录 实用的SQL 1.插 ...

  6. SQL Server-聚焦LEFT JOIN...IS NULL AND NOT EXISTS性能分析(十七)

    前言 本节我们来分析LEFT JOIN和NOT EXISTS,简短的内容,深入的理解,Always to review the basics. LEFT JOIN...IS NULL和NOT EXIS ...

  7. 读书笔记--SQL必知必会11--使用子查询

    11.1 子查询 查询(query),任何SQL语句都是查询.但此术语一般指SELECT语句. SQL还允许创建子查询(subquery),即嵌套在其他查询中的查询. 作为子查询的SELECT语句只能 ...

  8. Atitit  补充说明 sql知识图谱与线路图attilax总结补充说明

    Atitit  补充说明 sql知识图谱与线路图attilax总结补充说明 1. 常见编程语言的分类  :命令式语言.函数式语言.逻辑语言1 1.1. 按照编程语言的代际划分,又2gl,3gl,4gl ...

  9. SQL SERVER中隐式转换的一些细节浅析

    其实这是一篇没有技术含量的文章,精通SQL优化的请绕道.这个缘起于在优化一个SQL过程中,同事问了我一个问题,为什么SQL中存在隐式转换,但是执行计划没有变? 我思索了一下,觉得这个问题也有点意思,说 ...

随机推荐

  1. Drawing text

    We begin with drawing some Unicode text on the client area of a window. #!/usr/bin/python # -*- codi ...

  2. Android File类 根据官方文档理解(转)

    File有四个构造函数        public File(File dir,String name)             参数为File和String,File制定构造的新的File对象的路径 ...

  3. gdb调试运行程序带参数(调用动态链接库),debug过程记录

    library多线程file1.gdb (运行程序名称) 例如 gdb cbenchmark 2.设置运行参数 set args -c 1 -n 1 -F ./libaliww.so -l 1 3.如 ...

  4. (五)hibernate关联映射之——多对一映射

    单向多对一关联: 1.多对一的关系和关系数据库中的外键参照关系最匹配,即在己方(多方)的表中的一个外键参照另一个表的主键: 2.通过在多方持有一方的引用实现,需要在“多”的一端使用<many-t ...

  5. nginx根据token做频率限制

    在 nginx.conf 文件添加配置 limit_conn_log_level error; limit_conn_status ; limit_conn_zone $cookie_gray_DF_ ...

  6. 数据库-IO系统性能之衡量性能的几个指标

    转自http://storage.it168.com/a2011/0323/1169/000001169755_all.shtml 作为一个数据库管理员,关注系统的性能是日常最重要的工作之一,而在所关 ...

  7. linux配置java环境变量(详细) [转]

    一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586.bin 这时会出现一段协议,连继敲回车, ...

  8. No persister for nhibernate 解决下面的问题

    在你的实体类对应的配置文件点右键选择属性,修改类型为:一直复制和嵌入的资源.就可以了.

  9. C#基础—不安全代码(unsafe code)

    1.为何要有unsafe 也许是为了实现CLR类型安全的目标吧,默认情况下,C#没有提供指针的使用算法,但是有些情况下也可能需要指针这样直接访问内存的东西(虽然目前我还没有用过),但是有时候程序员非常 ...

  10. php 实现打印预览的功能

    <inputid="btnPrint" type="button" value="打印"onclick="javascrip ...