当前位置: 首页 > 编程日记 > 正文

sql语句收集

1:随机抽取前30条
select top 30 * from test order by newid()

order by newid():随机产生id号,然后根据id号排序;
top 30:前30道题目。

2:
在排名次时,经常遇到取前10名,但刚好第11名(12、13...)的成绩和第10名的一样,我们必须也把后面成绩相同的也提取出来,用下面的sql语句搞定:
select top 10 with ties grade,name from result order by grade
实现读出第11、12...的核心语句是with ties

//

一、基础

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:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。


二、提升

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、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

11、说明:四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

12、说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5

13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段

14、说明:前10条记录
select top 10 * form table1 where 范围

15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)

17、说明:随机取出10条数据
select top 10 * from tablename order by newid()

18、说明:随机选择记录
select newid()

19、说明:删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

20、说明:列出数据库里所有的表名
select name from sysobjects where type='U'

21、说明:列出表里的所有的
select name from syscolumns where id=object_id('TableName')

22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
显示结果:
type vender pcs
电脑 A 1
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3

23、说明:初始化表table1

TRUNCATE TABLE table1

24、说明:选择从10到15的记录
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc

三、技巧

1、1=1,1=2的使用,在SQL语句组合时用的较多

“where 1=1” 是表示选择全部   “where 1=2”全部不选,
如:
if @strWhere !=''
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere
end
else
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'
end

我们可以直接写成
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 安定 '+ @strWhere

2、收缩数据库
--重建索引
DBCC REINDEX
DBCC INDEXDEFRAG
--收缩数据和日志
DBCC SHRINKDB
DBCC SHRINKFILE

3、压缩数据库
dbcc shrinkdatabase(dbname)

4、转移数据库给新用户以已存在用户权限
exec sp_change_users_login 'update_one','newname','oldname'
go

5、检查备份集
RESTORE VERIFYONLY from disk='E:\dvbbs.bak'

6、修复数据库
ALTER DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
GO
ALTER DATABASE [dvbbs] SET MULTI_USER
GO

7、日志清除
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
        @MaxMinutes INT,
        @NewSize INT


USE     tablename             -- 要操作的数据库名
SELECT  @LogicalFileName = 'tablename_log',  -- 日志文件名
@MaxMinutes = 10,               -- Limit on time allowed to wrap log.
        @NewSize = 1                  -- 你想设定的日志文件的大小(M)

-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size
  FROM sysfiles
  WHERE name = @LogicalFileName
SELECT 'Original Size of ' + db_name() + ' LOG is ' +
        CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
        CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
  FROM sysfiles
  WHERE name = @LogicalFileName
CREATE TABLE DummyTrans
  (DummyColumn char (8000) not null)


DECLARE @Counter   INT,
        @StartTime DATETIME,
        @TruncLog  VARCHAR(255)
SELECT  @StartTime = GETDATE(),
        @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'

DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE     @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
      AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName) 
      AND (@OriginalSize * 8 /1024) > @NewSize 
  BEGIN -- Outer loop.
    SELECT @Counter = 0
    WHILE  ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
      BEGIN -- update
        INSERT DummyTrans VALUES ('Fill Log') 
        DELETE DummyTrans
        SELECT @Counter = @Counter + 1
      END  
    EXEC (@TruncLog) 
  END  
SELECT 'Final Size of ' + db_name() + ' LOG is ' +
        CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
        CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
  FROM sysfiles
  WHERE name = @LogicalFileName
DROP TABLE DummyTrans
SET NOCOUNT OFF

8、说明:更改某个表
exec sp_changeobjectowner 'tablename','dbo'

9、存储更改全部表

CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
 @OldOwner as NVARCHAR(128),
 @NewOwner as NVARCHAR(128)
AS

DECLARE @Name   as NVARCHAR(128)
DECLARE @Owner  as NVARCHAR(128)
DECLARE @OwnerName  as NVARCHAR(128)

DECLARE curObject CURSOR FOR
 select 'Name'   = name,
  'Owner'   = user_name(uid)
 from sysobjects
 where user_name(uid)=@OldOwner
 order by name

OPEN  curObject
FETCH NEXT FROM curObject INTO @Name, @Owner
WHILE(@@FETCH_STATUS=0)
BEGIN    
 if @Owner=@OldOwner
 begin
  set @OwnerName = @OldOwner + '.' + rtrim(@Name)
  exec sp_changeobjectowner @OwnerName, @NewOwner
 end
-- select @name,@NewOwner,@OldOwner

FETCH NEXT FROM curObject INTO @Name, @Owner
END

close curObject
deallocate curObject
GO


10、SQL SERVER中直接循环写入数据
declare @i int
set @i=1
while @i<30
begin
   insert into test (userid) values(@i)
   set @i=@i+1
end




转载于:https://www.cnblogs.com/smallfa/archive/2008/03/14/1105876.html

相关文章:

atitit.php中的dwr 设计模式

atitit.php中的dwr 设计模式 1. dwr的长处相对于ajax来说。。1 2. DWR工作原理 1 3. php的dwr实现 1 4. 參考 3 1. dwr的长处相对于ajax来说。。 dwr是构建在ajax上的。。更加的dsl化。。大大简化了编写ajax的工作量。 2. DWR工作原理 是通过动态把Java类生成为Javascript。…

UML2.0工具比較

來源 前言 「工欲善其事&#xff0c;必先利其器」&#xff0c;學習UML沒有好的工具幫忙&#xff0c;往往會讓開發人員半途而廢&#xff0c;尤有甚者&#xff0c;開發人員有時會因為使用了不容易使用的開發工具而 誤認為UML是一個非常困難學習的「技術」。殊不知UML只是一種「語…

Spark快速入门

文章目录1、Spark概述1.1、什么是Spark&#xff1f;1.2、为什么要学Spark&#xff1f;1.3、Spark的特点1.3.1、运行速度快1.3.2、易用性好1.3.3、通用性强1.3.4、兼容性强2、搭建Spark集群2.1、下载2.2、环境准备2.3、配置免密登录2.4、开始安装2.5、Spark HA 高可用部署2.5.1、…

[14] 薪酬迅速翻倍的13条跳槽原则

首先&#xff0c;真正的高级人才是不用找工作的&#xff0c;因为只有被工作找的份。 但是&#xff0c;难免有些高级人才厌倦了旧的工作环境&#xff0c;或者遇到天花板&#xff0c;没有了发展空间&#xff0c;或者遇到新老板上任后排除异己来提拔自己的亲信等等&#xff0c;如果…

html的body内标签之input系列1

1. Form的作用&#xff1a;提交当前的表单. 类似于去了银行提交的纸质单子&#xff0c;递到后台去办理相关业务。 text,password只有输入的功能&#xff1b;button,submit只有点击的功能。想要把这些信息提交&#xff0c;需要用Form button毛线用也没有&#xff08;以后学JS的…

华为交换机系列异常流量抑制

作者:邓聪聪 配置流量抑制示例 配置流量抑制后的广播、未知单播和组播报文的速率为接口速率的 % 进入接口视图 <Quidway> system-view [Quidway] interface gigabitethernet 2/0/12 配置广播流量抑制 [Quidway-GigabitEthernet2/0/12] broadcast-suppression 80 配置组播…

微软,您的.net为中国程序员带来了什么?

往事如烟&#xff1a;2003年&#xff0c;那时我还在念大三&#xff0c;像中国大多数学生一样&#xff0c;为到底是投诚Java还是效忠.net日夜争论&#xff0c;上下求索&#xff0c;迷茫中特别渴望有一盏明灯照亮我辈学子的前程&#xff0c;当时&#xff0c;各大媒体的报道是市场…

NHibernate初学体验记

NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库。NHibernate 来源于优秀的基于Java的关系型持久化工具Hibernate。NHibernate持久化你的.Net 对象到关系型数据库&#xff0c;远胜于写SQL去从数据库存取对象。你的代码仅仅和对象关联&#xff0c;NHibernat 自动…

java运算符-逻辑、三元运算符

1.逻辑运算符 逻辑运算符&#xff0c;它是用于布尔值进行运算的&#xff0c;运算的最终结果为布尔值true或false。 运算符 运算规则 范例 结果 & 与 false&true False | 或 false|true True ^ 异或 true^flase True ! 非 !true Flase && …

windowsclient开发--为你的client进行国际化

之前博客讲过函数&#xff1a; GetUserDefaultUILanguage Returns the language identifier for the user UI language for the current user. 我们国际化主要是支持三种语言&#xff0c;中文简体、繁体中文、以及英文。 获得用户使用语言 所以我们能够通过GetUserDefaultUI…

大数据主要职位

大数据主要有以下职位&#xff1a; 1&#xff09;数据分析师Data analyst&#xff1a;指熟悉相关业务&#xff0c;熟练搭建数据分析框架&#xff0c;掌握和使用相关的分析常用工具和基本的分析方法&#xff0c;进行数据搜集、整理、分析&#xff0c;针对数据分析结论给管理销售…

【Vegas原创】DataSet相互添加DataTable

//为DataSet添加DataTableds.Tables.Add(dt);//为DataTable添加DataSetdatatable dt dataset.Table[0]

大数据岗位必知必会的53个Java基础

文章目录1. java中和equals和hashCode的区别2. int与integer的区别3. String、StringBuffer、StringBuilder区别4. 什么是内部类&#xff1f;内部类的作用5. 进程和线程的区别6. final&#xff0c;finally&#xff0c;finalize的区别7. Serializable 和Parcelable 的区别8. 静态…

4514: [Sdoi2016]数字配对

Description 有 n 种数字&#xff0c;第 i 种数字是 ai、有 bi 个&#xff0c;权值是 ci。 若两个数字 ai、aj 满足&#xff0c;ai 是 aj 的倍数&#xff0c;且 ai/aj 是一个质数&#xff0c; 那么这两个数字可以配对&#xff0c;并获得 cicj 的价值。 一个数字只能参与一次配对…

bzoj 3339 莫队

题意&#xff1a; 求任意一个区间的SG函数。 想到线段树&#xff0c;但是线段树合并很麻烦。 线段树——分块。 分块的一个应用就是莫队算法。 怎么暴力递推呢&#xff1f; 从一个区间到另一个区间&#xff0c;Ans 取决于 Ans 和 加入和删除的这个数的大小比较。加入一个新数&a…

Ajax检测注册用户是否存在

HTML代码如下:LoginValidate.aspx<% Page Language"C#" AutoEventWireup"true" CodeFile"LoginValidate.aspx.cs" Inherits"LoginValidate" %><html xmlns"http://www.w3.org/1999/xhtml" ><head runat"…

Java Robot对象实现服务器屏幕远程监视

Java Robot对象实现服务器屏幕远程监视2006-01-16 17:33 作者&#xff1a; xiepan110 出处&#xff1a; BLOG 责任编辑&#xff1a;方舟   摘要&#xff1a;  有时候&#xff0c;在Java应用程序开发中&#xff0c;如&#xff1a;远程监控或远程教学&#xff0c;常常需要对计…

Oracle常用傻瓜问题1000问

1. Oracle安装完成后的初始口令? internal/oracle sys/change_on_install system/manager scott/tiger sysman/oem_temp 2. ORACLE9IAS WEB CACHE的初始默认用户和密码&#xff1f; administrator/administrator 3. oracle 8.0.5怎么创建数据库? 用orainst。如果有motif界面&…

安装需要的第三方库时,命令行输入pip提示不是内部或外部命令

简介 在做Python开发时&#xff0c;安装需要的第三方库时&#xff0c;大多数人喜欢选择在命令行用pip进行安装。 然而有时敲入pip命令会提示‘pip’不是内部或外部命令。。如图&#xff1a; 解决办法 1、在python安装目录中找得到script文件夹&#xff0c;查看文件夹内部是否存…

ehcache导致Tomcat重启出错

最近使用ehcache出现了问题&#xff0c;只要在配置文件中打开缓存&#xff0c;Tomcat在重启时就会报内存溢出异常。按说ehcache自己开启的资源&#xff0c;应该自己关闭才是。经查阅资料发现&#xff0c;需要在web.xml中配置一个监听器&#xff0c;该监听器会在应用程序关闭的时…

[置顶]完美简版学生信息管理系统(附有源码)管理系统

简版学生信息管理系统 目前为止找到的简版系统中最新、最全的java类管理系统 点击进入简版系统 如果无法直接连接&#xff0c;请进入: https://blog.csdn.net/weixin_43419816/article/details/104234590 做CSDN最完美的搬运工&#xff01;

怎样成为一名优秀的系统工程师

一个优秀的系统集成工程师(包括售前和实施)的技术线路笔者注:并不是每个都要求掌握,只是寻找自己的一条技术线路1&#xff1a;网络基础知识&#xff1a;深刻理解网络基本概念&#xff0c;例如>ISO/OSI、TCP/IP、VLAN、各种LAN、WAN协议、各种路由协议、NAT等等Cisco&#xf…

星期六第一次加班

虽然说老板叫我们加班&#xff0c;但是貌似没有我什么事情的饿&#xff0c;和张明在一起&#xff0c;真的很不自在&#xff0c;我知道我很自大&#xff0c;我在漫漫的改变自己&#xff0c;他听不惯我说话&#xff0c;但是有什么的呢&#xff01;我相信他是一个好的程序员&#…

WPF入门(三)-几何图形之不规则图形(PathGeometry) (2)

WPF入门(三)->几何图形之不规则图形(PathGeometry) (2) 原文:WPF入门(三)->几何图形之不规则图形(PathGeometry) (2)上一节我们介绍了PathGeometry中LineSegment是点与点之间绘制的一条直线&#xff0c;那么我们这一节来看一下点与点之间绘制曲线ArcSegment 先来看一段代…

zookeeper图形工具——zkui

虽然zookeeper安装包提供了客户端工具zkcli&#xff0c;但是命令特别少 &#xff0c;每次想看看里面的节点信息特别费劲。 幸好有图形工具——zkui&#xff0c;https://github.com/echoma/zkui&#xff0c;下载地址 https://github.com/echoma/zkui/wiki/Download。 上个图&…

第一篇博客,java学生管理系统(挑战全网最全)

java学生信息管理系统&#xff0c;&#xff08;课设必备&#xff09;&#xff0c;附有源码和简版链接 博主虽然技术不高&#xff0c;但是系统写的真的是没话说&#xff0c;留着开学java课设用了。 直接转载链接了&#xff0c;查看系统入口 https://blog.csdn.net/weixin_4341…

ccna实验大全

ccna实验大全启动接口&#xff0c;分配IP地址&#xff1a; router> router> enable router# router# configure terminal router(config)# router(config)# interface Type Port router(config-if)# no shutdown router(config-if)# ip address IP-Address Subnet-Mask r…

实现分布式服务注册及简易的netty聊天

现在很多地方都会用到zookeeper, 用到它的地方就是为了实现分布式。用到的场景就是服务注册&#xff0c;比如一个集群服务器&#xff0c;需要知道哪些服务器在线&#xff0c;哪些服务器不在线。 ZK有一个功能&#xff0c;就是创建临时节点&#xff0c;当机器启动应用的时候就会…

《深入理解计算机系统》学习心得二:关于show-bytes的 学习

此段代码&#xff0c;使用强制类型转换来访问和打印不同程序对象的字节表示。show-bytes打印出每个以十六进制表示的字节。 /* show-bytes - prints byte representation of data */ /* $begin show-bytes */ #include <stdio.h> /* $end show-bytes */ #include <st…

Jquery基础:append、prepend、after、before、appendTo的区别

append() 是在被选元素的结束标签前面(即改被选元素的内部)插入指定内容。 <html><head><script type"text/javascript" src"/jquery/jquery.js"></script><script type"text/javascript">      $().ready(…