suchen
HeimDatenbankMySQL-Tutorial经典SQL语句大全之技巧

经典SQL语句大全之技巧

Jun 07, 2016 pm 03:47 PM
httpsql大全技巧经典语句

http://blog.csdn.net/stone548534/article/details/8081418 1 、1=1 ,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2” 全部不选, 如: if@strWhere !='' begin set @strSQL = 'select count(*) as Total from [' @tblNam

http://blog.csdn.net/stone548534/article/details/8081418

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 Totalfrom [' + @tblName + '] where 1=1 安定 '+ @strWhere 2、收缩数据库
--重建索引
DBCCREINDEX
DBCC INDEXDEFRAG
--收缩数据和日志
DBCCSHRINKDB
DBCC SHRINKFILE

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

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

5、检查备份集
RESTORE VERIFYONLY fromdisk='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


USEtablename -- 要操作的数据库名
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 notexpired
AND @OriginalSize = (SELECT size FROMsysfiles 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 pagesor ' +
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 PROCEDUREdbo.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 curObjectCURSOR 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 FROMcurObject INTO @Name, @Owner
END

close curObject
deallocate curObject
GO


10、SQL SERVER中直接循环写入数据
declare @i int
set @i=1
while @i begin
insert into test (userid) values(@i)
set @i=@i+1
end
案例:
有如下表,要求就裱中所有沒有及格的成績,在每次增長0.1的基礎上,使他們剛好及格:

Name score

Zhangshan 80

Lishi 59

Wangwu 50

Songquan 69

while((selectmin(score)from tb_table)60)

begin

updatetb_table set score =score*1.01

wherescore

if (select min(score) from tb_table)>60

break

else

continue

end


Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Was sind die Unterschiede in der Syntax zwischen MySQL und anderen SQL -Dialekten?Was sind die Unterschiede in der Syntax zwischen MySQL und anderen SQL -Dialekten?Apr 27, 2025 am 12:26 AM

MySQLDIFFERSFROMOTHERQLDIALCTSINSYNTAXFORLIMIT, Auto-Increment, StringComparison, Unterabfragen und Performanceanalyse.1) Mysqluse Slimit, whileqlServerusSestopandorakelSrownum.2) Mysql'Sauto_incrementContrastswithpostgresql'Sserialandoracle'ssequencandt

Was ist MySQL Partitioning?Was ist MySQL Partitioning?Apr 27, 2025 am 12:23 AM

Die MySQL -Partitionierung verbessert die Leistung und vereinfacht die Wartung. 1) Teilen Sie große Tabellen nach bestimmten Kriterien (z. B. Datumsbereichen) in kleine Stücke, 2) Daten in unabhängige Dateien physikalisch unterteilen, 3) MySQL kann sich auf verwandte Partitionen konzentrieren, wenn Sie abfragen, 4) Abfragoptimierer kann nicht verwandte Partitionen überspringen, 5) Die Auswahl der richtigen Partitionsstrategie und die regelmäßige Wartung des Schlüssels ist der Schlüssel.

Wie gewähren und widerrufen Sie Privilegien in MySQL?Wie gewähren und widerrufen Sie Privilegien in MySQL?Apr 27, 2025 am 12:21 AM

Wie kann man Berechtigungen in MySQL erteilen und widerrufen? 1. Verwenden Sie die Stipendienerklärung, um Berechtigungen wie GrantAllPrivileGesAndatabase_Name.to'username'@'host '; 2. Verwenden Sie die Revoke -Erklärung, um Berechtigungen wie RevokeAllPrivileGeDatabase_Name.From'username'@'host 'zu widerrufen, um eine rechtzeitige Kommunikation von Genehmigungsänderungen zu gewährleisten.

Erklären Sie die Unterschiede zwischen InnoDB und MyISAM -Speichermotoren.Erklären Sie die Unterschiede zwischen InnoDB und MyISAM -Speichermotoren.Apr 27, 2025 am 12:20 AM

InnoDB ist für Anwendungen geeignet, die Transaktionsunterstützung und hohe Parallelität erfordern, während MyISAM für Anwendungen geeignet ist, für die mehr Lesevorgänge und weniger Schreibvorgänge erforderlich sind. 1.Innodb unterstützt Transaktions- und Bankebene, die für E-Commerce- und Banking-Systeme geeignet sind. 2.MyISAM bietet eine schnelle Lektüre und Indexierung, geeignet für Blogging- und Content -Management -Systeme.

Was sind die verschiedenen Arten von Verbindungen in MySQL?Was sind die verschiedenen Arten von Verbindungen in MySQL?Apr 27, 2025 am 12:13 AM

Es gibt vier Haupt -Join -Typen in MySQL: Innerjoin, Leftjoin, Rightjoin und Fulouterjoin. 1.Nerjoin gibt alle Zeilen in den beiden Tischen zurück, die den Verbindungsbedingungen erfüllen. 2.Leftjoin gibt alle Zeilen in der linken Tabelle zurück, auch wenn in der rechten Tabelle keine übereinstimmenden Zeilen vorhanden sind. 3. Rightjoin ist gegen Leftjoin im Widerspruch und gibt alle Zeilen in der rechten Tabelle zurück. 4.Fulllouterjoin gibt alle Zeilen in den beiden Tischen zurück, die die Verbindungsbedingungen erfüllen oder nicht erfüllen.

Was sind die verschiedenen Speichermotoren in MySQL?Was sind die verschiedenen Speichermotoren in MySQL?Apr 26, 2025 am 12:27 AM

MysqloffersVariousStorageEngines, EverySuitedfordifferentusecases: 1) InnoDbisidealforApplicationsNeedingaCidComplianceandHighConcurrency, SupportingingTransactions und MisseractersactionSactions.2) MyisamisBestforread-Heavyworks, Fehlen von Abladungen, mangelndtransaktionen

Was sind einige gängige Sicherheitslücken in MySQL?Was sind einige gängige Sicherheitslücken in MySQL?Apr 26, 2025 am 12:27 AM

Zu den allgemeinen Sicherheitslücken in MySQL gehören die SQL -Injektion, schwache Passwörter, unsachgemäße Berechtigungskonfiguration und eine nicht updierte Software. 1. SQL -Injektion kann durch Verwendung von Vorverarbeitungsanweisungen verhindert werden. 2. Schwache Passwörter können vermieden werden, indem Sie starke Kennwortstrategien verwenden. 3. Eine unsachgemäße Berechtigungskonfiguration kann durch regelmäßige Überprüfung und Anpassung der Benutzerberechtigungen behoben werden. 4. Die nicht updierte Software kann durch regelmäßiges Überprüfen und Aktualisieren der MySQL -Version gepatcht werden.

Wie können Sie langsame Abfragen in MySQL identifizieren?Wie können Sie langsame Abfragen in MySQL identifizieren?Apr 26, 2025 am 12:15 AM

Das Identifizieren langsamer Abfragen in MySQL kann erreicht werden, indem langsame Abfrageprotokolle aktiviert und Schwellenwerte festgelegt werden. 1. Aktivieren Sie langsame Abfrageprotokolle und setzen Sie Schwellenwerte. 2. Sehen und analysieren Sie langsame Abfrageprotokolldateien und verwenden Sie Tools wie MySQLDUMPSLOW oder PT-Query-Digest für eingehende Analysen. 3. Die Optimierung langsamer Abfragen kann durch Indexoptimierung, Umschreiben von Abfragen und Vermeidung der Verwendung von Select*erreicht werden.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!