生成数据库项目时,预先部署脚本、数据库对象定义和后期部署脚本合并为一个生成脚本,只能指定一个预先部署脚本和一个后期部署脚本,但可在预先部署脚本和后期部署脚本中包含其他脚本。在MySQL数据库中,使用SQL脚本可以提高数据访问的效率,并进行相关的数据处理。本文为大家介绍8个实用SQL脚本,帮助我们便捷MySQL数据库的使用。
1、行转列的用法PIVOT
CREATE table test(id int,name nvarchar(20),quarter int,number int)insert into test values(1,N'苹果',1,1000)insert into test values(1,N'苹果',2,2000)insert into test values(1,N'苹果',3,4000)insert into test values(1,N'苹果',4,5000)insert into test values(2,N'梨子',1,3000)insert into test values(2,N'梨子',2,3500)insert into test values(2,N'梨子',3,4200)insert into test values(2,N'梨子',4,5500)select * from test
结果:
select ID,NAME,[1] as '一季度',[2] as '二季度',[3] as '三季度',[4] as '四季度'fromtestpivot(sum(number)for quarter in([1],[2],[3],[4]))as pvt
结果:
2、列转行的用法UNPIOVT
create table test2(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int)insert into test2 values(1,'苹果',1000,2000,4000,5000)insert into test2 values(2,'梨子',3000,3500,4200,5500)select * from test2
结果:
--列转行select id,name,quarter,numberfromtest2unpivot(numberfor quarter in([Q1],[Q2],[Q3],[Q4]))as unpvt
结果:
3、连接远程服务器
方法1:
select * from openrowset(
'SQLOLEDB',
'server=192.168.0.1;uid=sa;pwd=password',
'SELECT * FROM dbo.test')
--方法2:
select * from openrowset(
'SQLOLEDB',
'192.168.0.1';
'sa';
'password',
'SELECT * FROM dbo.test')当然也可以参考以前的示例,建立DBLINK进行远程连接
4、把多行SQL数据变成一条多列数据,即新增列
SELECT
id,
name,
SUM(CASE WHEN quarter=1 THEN number ELSE 0 END) '一季度',
SUM(CASE WHEN quarter=2 THEN number ELSE 0 END) '二季度',
SUM(CASE WHEN quarter=3 THEN number ELSE 0 END) '三季度',
SUM(CASE WHEN quarter=4 THEN number ELSE 0 END) '四季度'FROM testGROUP BY id,name
结果:
我们将原来的4列增加到了6列。细心的朋友可能发现了这个结果和上面的行转列怎么一模一样?其实上面的行转列是省略写法,这种是比较通用的写法。
5、表复制
语法1:Insert INTO table(field1,field2,...) values(value1,value2,...)
语法2:Insert into Table2(field1,field2,...) select value1,value2,... from Table1
(要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。)
语法3:SELECT vale1, value2 into Table2 from Table1
(要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。)
语法4:使用导入导出功能进行全表复制。如果是使用【编写查询以指定要传输的数据】,那么在大数据表的复制就会有问题?因为复制到一定程度就不再动了,内存爆了?它也没有写入到表中。而使用上面3种语法直接执行是会马上刷新到数据库表中的,你刷新一下mdf文件就知道了。
6、利用带关联子查询Update语句更新数据
--方法1:Update Table1set c = (select c from Table2 where a = Table1.a)where c is null
--方法2:update Aset newqiantity=B.qiantityfrom A,Bwhere A.bnum=B.bnum
--方法3:update(select A.bnum ,A.newqiantity,B.qiantity from Aleft join B on A.bnum=B.bnum) AS Cset C.newqiantity = C.qiantitywhere C.bnum ='001'
7、字符串替换SUBSTRING/REPLACE
SELECT REPLACE('abcdefg',SUBSTRING('abcdefg',2,4),'**')
结果:
SELECT REPLACE('13512345678',SUBSTRING('13512345678',4,11),'********')
结果:
SELECT REPLACE('12345678@qq.com','1234567','******')
结果:
8、查询一个表内相同纪录 HAVING
如果一个ID可以区分的话,可以这么写
SELECT * FROM HR.Employees
结果:
select * from HR.Employeeswhere title in (select title from HR.Employeesgroup by titlehaving count(1)>1)
结果:
对比一下发现,ID为1,2的被过滤掉了,因为他们只有一条记录
如果几个ID才能区分的话,可以这么写
select * from HR.Employeeswhere title+titleofcourtesy in(select title+titleofcourtesyfrom HR.Employeesgroup by title,titleofcourtesyhaving count(1)>1)
结果:
title在和titleofcourtesy进行拼接后符合条件的就只有ID为6,7,8,9的了
以上就是为大家推荐的8个实用SQL脚本,在MySQL数据库的使用过程中会经常用到,最好能够记住。实在记不住也没有关系,在需要的时候可以随时来本站的MySQL教程查询即可。
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL是我们在使用MySQL数据库时所必须要用到的,SQL语言特点决定了SQL对于关系型数据库的适用性。
在数据库操作中,为了有效保证并发读取数据的正确性,提出了事务隔离级别。SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。相对而言,低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。下面为大家一一介绍MySQL4种事务隔离级别。
数据排序是按一定顺序将数据排列,以便研究者通过浏览数据发现一些明显的特征或趋势, 找到解决问题的线索。但是在MySQL数据库中,默认情况下,SELECT语句不会对返回的结果进行排序,意味着查询结果的显示顺序是不确定的。如果想要将结果按照某种规则进行排序,例如按照入职先后顺序显示员工的信息,可以使用ORDER BY子句。MySQL数据排序分为以下5种:单列排序
远程数据复制技术利用通信技术、计算机技术实现远程的数据备份,减少数据丢失带来的损失。在远程数据备份的数据复制传输规则方面,目前传统的规则有同步、异步和半同步复制规则,可以基本保证不同应用对数据复制的需求。自MySQL5.5版本以来,MySQL以插件的形式支持半同步复制。MySQL半同步复制逐渐成为MySQL远程数据复制技术的主要规则之一。
Java SE(Java Platform, Standard Edition,Java标准版),零基础入门
Docker 是一个基于 Go 语言 并遵从 Apache2.0 协议开源的应用容器引擎,让开发者可以打包应用到一个可移植的镜像中
jQuery是一个快速、简洁的JavaScript框架
Java SE(Java Platform, Standard Edition,Java标准版),基础进阶
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目
IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境,它所提倡的是智能编码,是减少程序员的工作
动力节点在线报名表(此信息已加密,请放心填写)