`
services
  • 浏览: 80605 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

sql操作技巧

阅读更多
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 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 @ibegin
insert into test (userid) values(@i)
set @i=@i+1
end

小记存储过程中经常用到的本周,本月,本年函数
Dateadd(wk,datediff(wk,0,getdate()),-1)
Dateadd(wk,datediff(wk,0,getdate()),6)
Dateadd(mm,datediff(mm,0,getdate()),0)
Dateadd(ms,-3,dateadd(mm,datediff(m,0,getdate())+1,0))
Dateadd(yy,datediff(yy,0,getdate()),0)
Dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))

上面的SQL代码只是一个时间段
Dateadd(wk,datediff(wk,0,getdate()),-1)
Dateadd(wk,datediff(wk,0,getdate()),6)
就是表示本周时间段.
下面的SQL的条件部分,就是查询时间段在本周范围内的:
Where Time BETWEEN Dateadd(wk,datediff(wk,0,getdate()),-1) AND Dateadd(wk,datediff(wk,0,getdate()),6)
而在存储过程中
select @begintime = Dateadd(wk,datediff(wk,0,getdate()),-1)
select @endtime = Dateadd(wk,datediff(wk,0,getdate()),6)

分组group
常用于统计时,如分组查总数:
select gender,count(sno)
from students
group by gender
(查看男女学生各有多少)
注意:从哪种角度分组就从哪列"group by"
对于多重分组,只需将分组规则罗列。比如查询各届各专业的男女同学人数 ,那么分组规则有:届别(grade)、专业(mno)和性别(gender),所以有"group by grade, mno, gender"
select grade, mno, gender, count(*)
from students
group by grade, mno, gender
通常group还和having联用,比如查询1门课以上不及格的学生,则按学号(sno)分类有:
select sno,count(*) from grades
where markgroup by sno
having count(*)>1
6.UNION联合
合并查询结果,如:
SELECT * FROM students
WHERE name like ‘张%’
UNION [ALL]
SELECT * FROM students
WHERE name like ‘李%’
7.多表查询
a.内连接
select g.sno,s.name,c.coursename
from grades g JOIN students s ON g.sno=s.sno
JOIN courses c ON g.cno=c.cno
(注意可以引用别名)
b.外连接
b1.左连接
select courses.cno,max(coursename),count(sno)
from courses LEFT JOIN grades ON courses.cno=grades.cno
group by courses.cno
左连接特点:显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全。
左外连接返回那些存在于左表而右表中却没有的行,再加上内连接的行。
b2.右连接
与左连接类似
b3.全连接
select sno,name,major
from students FULL JOIN majors ON students.mno=majors.mno
两边表中的内容全部显示
c.自身连接
select c1.cno,c1.coursename,c1.pno,c2.coursename
from courses c1,courses c2 where c1.pno=c2.cno
采用别名解决问题。
d.交叉连接
select lastname+firstname from lastname CROSS JOIN firstanme
Oracle维护常用SQL语句发布时间:2006-06-28 09:47     点击:9
分页:上一页  1 [2] 3 4  下一页
  FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C 
  WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME; 
7、查看数据库库对象 
  select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status; 
8、查看数据库的版本
  Select version FROM Product_component_version
  Where SUBSTR(PRODUCT,1,6)=’Oracle’;
9、查看数据库的创建日期和归档方式
  Select Created, Log_Mode, Log_Mode From V$Database; 
10、捕捉运行很久的SQL 
  column username format a12 
  column opname format a16
  column progress format a8
  select username,sid,opname, 
  round(sofar*100 / totalwork,0)    ’%’ as progress, 
  time_remaining,sql_text 
  from v$session_longops , v$sql
  where time_remaining <> 0 
  and sql_address = address
  and sql_hash_value = hash_value
11、查看数据表的参数信息   
    SELECT partition_name, high_value, high_value_length, tablespace_name,
  pct_free, pct_used, ini_trans, max_trans, initial_extent,
  next_extent, min_extent, max_extent, pct_increase, FREELISTS,
  freelist_groups, LOGGING, BUFFER_POOL, num_rows, blocks,
  empty_blocks, avg_space, chain_cnt, avg_row_len, sample_size,
    last_analyzed
  FROM dba_tab_partitions
  --WHERE table_name = :tname AND table_owner = :towner
  ORDER BY partition_position
12、查看还没提交的事务
  select * from v$locked_object;
  select * from v$transaction;
13、查找object为哪些进程所用
  select
  p.spid,
  s.sid,
  s.serial# serial_num,
  s.username user_name,
  a.type object_type,
  s.osuser os_user_name,
  a.owner,
  a.object object_name,
  decode(sign(48 - command),
  1, to_char(command), 'Action Code #'    to_char(command) ) action,
  p.program oracle_process,
  s.terminal terminal,
  s.program program,
  s.status session_status
  from v$session s, v$access a, v$process p
  where s.paddr = p.addr and
  s.type = 'USER' and
  a.sid = s.sid and
  a.object='SUBSCRIBER_ATTR'
  order by s.username, s.osuser
14、回滚段查看   
    select rownum, sys.dba_rollback_segs.segment_name Name, v$rollstat.extents
  Extents, v$rollstat.rssize Size_in_Bytes, v$rollstat.xacts XActs,
  v$rollstat.gets Gets, v$rollstat.waits Waits, v$rollstat.writes Writes,
  sys.dba_rollback_segs.status status from v$rollstat, sys.dba_rollback_segs,
  v$rollname where v$rollname.name(+) = sys.dba_rollback_segs.segment_name and
  v$rollstat.usn (+) = v$rollname.usn order by rownum

15、耗资源的进程(top session)
  select s.schemaname schema_name, decode(sign(48 - command), 1,
    to_char(command), 'Action Code #'    to_char(command) ) action, status
  session_status, s.osuser os_user_name, s.sid, p.spid , s.serial# serial_num,
  nvl(s.username, '[Oracle process]') user_name, s.terminal terminal,
  s.program program, st.value criteria_value from v$sesstat st, v$session s , v$processp
  where st.sid = s.sid and st.statistic# = to_number('38') and ('ALL' = 'ALL'
  or s.status = 'ALL') and p.addr = s.paddr order by st.value desc, p.spid asc, s.username asc, s.osuser asc
分享到:
评论

相关推荐

    常用SQL操作技巧常用SQL操作技巧

    SQL操作技巧大全 在本篇文章中,我们将探讨常用SQL操作技巧,涵盖复制表、拷贝表、显示文章、外连接查询、日程安排提前五分钟提醒、两张关联表删除、统计分析等多种SQL操作技巧。 一、复制表 复制表是一种常见的...

    数据库SQL操作技巧

    数据库SQL操作技巧是IT行业中必不可少的一项技能,尤其在ORACLE和SQL SERVER这两种广泛使用的数据库管理系统中,掌握高效、精准的SQL语法和优化方法至关重要。本文将深入探讨SQL的基础概念、常用查询语句、数据操作...

    SQL操作技巧,个人心得

    以上就是对SQL操作技巧的一些详细解读,包括全局变量的使用、数据交换的方法、存储过程实现翻页、行列转换的技巧、视图的创建以及分页和删除重复数据的策略。熟练掌握这些知识点,对于日常的SQL编程和数据库管理都将...

    SQL技巧 常用SQL操作语句

    ### SQL技巧:常用SQL操作语句详解 #### 1. 复制表(仅复制结构) **场景描述:** 在数据库管理过程中,有时我们需要创建一个与现有表具有相同结构但不包含任何数据的新表。例如,当我们需要为测试或备份目的创建...

    SQL技巧全集-整理

    1. **SQL操作大全**:SQL操作包括了数据的增(INSERT)、删(DELETE)、改(UPDATE)和查(SELECT)。SELECT语句是最常用的操作,用于检索数据库中的信息。INSERT用于向表中添加新记录,DELETE用于删除特定记录,而...

    数据库操作与查询实例教程 - SQL语言应用

    内容概要:本文档通过多个SQL示例,全面介绍了从简单的数据查询到复杂的多表连接和高级查询(如子查询、集合查询),再到数据库的基本维护操作(如数据的插入、更新、删除)等一系列常用SQL操作技巧。每一条示例后面...

    SQL 注入技巧合集

    在本合集中,我们将深入探讨SQL注入的原理、常见技巧以及如何预防这种攻击。 一、SQL注入原理 SQL注入的基础是利用程序对用户输入的不充分验证。当用户输入的数据被直接拼接到SQL查询语句中,攻击者可以构造特定的...

    经典SQL语句大全,SQL语句实例

    本资源“经典SQL语句大全”提供了丰富的SQL语句实例,旨在帮助初学者和进阶者巩固SQL基础知识,掌握各种SQL操作技巧。 一、SQL基础 SQL的基本组成部分包括数据定义语言(DDL)、数据操纵语言(DML)、数据查询语言...

    Sql Server实用操作小技巧集合

    Sql Server实用操作小技巧集合

    Sql Server实用操作小技巧

    ### SQL Server实用操作小技巧详解 #### 挂起操作的解决方案 在SQL Server的维护过程中,有时在尝试安装SQL Server或其服务包(SP)补丁时,系统可能会提示存在挂起的安装操作,要求重启系统。然而,通常情况下,...

    常用的SQL开发技巧

    SQL开发技巧是数据库管理与应用中的重要组成部分,尤其在企业内部培训中,掌握这些技巧能够显著提高数据库操作的效率和性能。以下是一些常见的SQL开发规范和优化技巧: 1. **利用WHERE子句限制查询结果集**:通过...

    SQLSERVER技巧集锦

    根据提供的文件信息,我们可以整理出一系列关于SQL Server的实用技巧,涵盖了数据操作、查询优化、安全设置等多个方面。下面将详细解析这些技巧及其应用场景。 ### 1. 转换日期格式 - **技巧**: 使用`CONVERT`函数...

    SQL Server精华技巧集

    本资料集“SQL Server精华技巧集”聚焦于该系统的高效使用和优化,旨在帮助读者提升在SQL Server上的操作技能和解决问题的能力。下面,我们将详细探讨SQL Server的一些核心知识点。 1. **查询优化**:SQL Server的...

    SQL语句-常用的sql语句生成器.zip

    2. **SQL操作技巧**: - **JOIN操作**:将两个或更多表的数据结合在一起,常用有INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN。 - **子查询**:在主查询中嵌套一个查询,用于获取满足特定条件的子集数据。 - **...

    SQL语句运用技巧

    以上内容涵盖了SQL语言的基础知识及其应用技巧,包括SQL语言的各个组成部分、基本查询操作、表连接以及关键字的概念。对于初学者来说,理解这些基本概念和操作是非常重要的。随着实践经验的积累,可以进一步探索更...

    Linux和SQL测试与调优技能详解

    内容概要:本文详述了测试工程师所需的Linux基础指令、SQL操作技巧及其相关应用场景。内容涵盖Linux命令(如目录、文件操作,性能测试等)、HTTP与HTTPS的区别、ADB Monkey测试流程、MySQL SQL语句及查询优化、性能...

    sql server精华技巧集

    在SQL Server数据库管理系统中,掌握一些精华技巧可以显著提高数据管理效率和问题解决能力。以下是一些关于SQL Server的关键知识点: 1. **T-SQL语言基础**:SQL Server使用Transact-SQL(T-SQL)作为其标准查询...

    如何写出高效率的SQL语句--SQL优化技巧

    如何写出高效率的SQL语句--SQL优化技巧 SQL 优化技巧是提高数据库性能的关键所在。编写高效率的 SQL 语句需要对索引的机制有一定了解,以下是关于索引的知识点: 索引的优点和局限 索引可以提高查询的效率,但会...

Global site tag (gtag.js) - Google Analytics