SQL还可以这么玩儿
对于数据库的增删改查,我们都再熟悉不过了,今天,将和您一起探讨几种不一样的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还可以这么玩儿的更多相关文章
- netstat 竟然还能这么玩儿?
一次摸鱼的机会,看到群里小伙伴问了一嘴 netstat -tnpl 这个命令是干啥的,这个命令用过很多,但是我其实也没有认真研究过,但是这是一个问题,我不能放过它,而且 netstat 这个命令我日常 ...
- 蚂蚁金服开源机器学习工具SQLFlow,机器学习比SQL还简单
来自:开源最前线(ID:OpenSourceTop) 综合自:AI前线.https://github.com/sql-machine-learning/sqlflow 5月6日,蚂蚁金服副 CTO 胡 ...
- 你的 SQL 还在回表查询吗?快给它安排覆盖索引
什么是回表查询 小伙伴们可以先看这篇文章了解下什么是聚集索引和辅助索引:Are You OK?主键.聚集索引.辅助索引,简单回顾下,聚集索引的叶子节点包含完整的行数据,而非聚集索引的叶子节点存储的是每 ...
- 函数还能这样玩儿~实现类似add(1)(2)(3)的函数
人生的第一份前端工作找到了,感谢大神主子们给半路出家自学的我这么多的机会,很高兴正式踏上客观又乐趣满满的程序员之路,哇咔咔咔. 分享一个准备面试时遇到的一个有趣的问题: 要求实现类似add(1)( ...
- MySQL中特别实用的几种SQL语句送给大家
在写SQL时,经常灵活运用一些SQL语句编写的技巧,可以大大简化程序逻辑.减少程序与数据库的交互次数,有利于数据库高可用性,同时也能显得你的SQL很牛B,让同事们眼前一亮. 目录 实用的SQL 1.插 ...
- SQL Server-聚焦LEFT JOIN...IS NULL AND NOT EXISTS性能分析(十七)
前言 本节我们来分析LEFT JOIN和NOT EXISTS,简短的内容,深入的理解,Always to review the basics. LEFT JOIN...IS NULL和NOT EXIS ...
- 读书笔记--SQL必知必会11--使用子查询
11.1 子查询 查询(query),任何SQL语句都是查询.但此术语一般指SELECT语句. SQL还允许创建子查询(subquery),即嵌套在其他查询中的查询. 作为子查询的SELECT语句只能 ...
- Atitit 补充说明 sql知识图谱与线路图attilax总结补充说明
Atitit 补充说明 sql知识图谱与线路图attilax总结补充说明 1. 常见编程语言的分类 :命令式语言.函数式语言.逻辑语言1 1.1. 按照编程语言的代际划分,又2gl,3gl,4gl ...
- SQL SERVER中隐式转换的一些细节浅析
其实这是一篇没有技术含量的文章,精通SQL优化的请绕道.这个缘起于在优化一个SQL过程中,同事问了我一个问题,为什么SQL中存在隐式转换,但是执行计划没有变? 我思索了一下,觉得这个问题也有点意思,说 ...
随机推荐
- jQuery中.html(“xxx”)和.append("xxx")的区别和不同
append是追加,html是完全替换比如<p id="1"><p>123</p></p>$("#1").htm ...
- js 函数定义的2种方式
js 函数定义的2种方式 CreateTime--2018年3月29日18:36:14 Author:Marydon 方式一: /** * 函数式声明 */ function mode() { c ...
- 〖Android〗(how-to) fix k860/k860i buletooth.
bluedroid.so for k860/k860i 1./media/Enjoy/AndroidCode/cm10.1/device/lenovo/stuttgart/bluetooth/blue ...
- git——分布式版本控制系统
Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件 ...
- 在 VirtualBox 虚拟机中安装 Arch Linux 系统指南
How to install Arch Linux on VirtualBox 在 VirtualBox 虚拟机中安装 Arch Linux 系统指南 本文导航 1.Arch Linux 软件仓库2. ...
- 火狐浏览器(firefox)中js要注意的问题
1.出现错误调用error方法或者ajax请求了多次,那么极有可能是异步请求的原因. 添加 async : false , -> async. 默认是 true,即为异步方式,$.aja ...
- C#:xml操作(待补充)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.X ...
- state Threads 开源库介绍
译文在后面. State Threads for Internet Applications Introduction State Threads is an application library ...
- NPM 模块收集
cross-env https://www.npmjs.com/package/cross-env 在package.json设置环境变量的时候,会有兼容性问题,如: { "scripts& ...
- unity, 用脚本创建mesh
创建一个空gameObject,添加Mesh Filter和Mesh Renderer两个component,再添加一个脚本createMeshScript: using UnityEngine;us ...