1. Sortieren Sie nach Strichen des Nachnamens:
Wählen Sie * aus Tabellenname, Reihenfolge nach Kundenname, sortieren Sie Chinese_PRC_Stroke_ci_as // von den wenigsten bis zu den meisten
2. Datenbankverschlüsselung:
wählen Sie encrypt('ursprüngliches Passwort')
wähle pwdencrypt('ursprüngliches Passwort')
wähle pwdcompare('ursprüngliches Passwort', 'verschlüsseltes Passwort') = 1 – das Gleiche; sonst nicht dasselbe encrypt('ursprüngliches Passwort')
wähle pwdencrypt( 'Original-Passwort' ')
Wählen Sie pwdcompare('Original-Passwort', 'verschlüsseltes Passwort') = 1 – das Gleiche; sonst nicht das Gleiche
3. Rufen Sie die Felder in der Tabelle ab:
Deklarieren Sie @ list varchar(1000),
@sql nvarchar(1000)
select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name= 'Tabelle A'
Setze @sql='select '+right(@list,len(@list)-1)+' aus Tabelle A'
exec (@sql)
4 Partition:
EXEC Master ..xp_fixeddrives
5. Vergleichen Sie die Tabellen A und B auf Gleichheit:
if (select checksum_agg(binary_checksum(*)) from A)=(select checksum_agg(binary_checksum(*)) from B)
print ' Equal'
else
print 'Not equal'
6. Beenden Sie alle Profiler-Prozesse:
DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master .dbo. sysprocesses WHERE program_name IN('SQL Profiler',N'SQL Profiler')
EXEC sp_msforeach_worker '?'
7. Datensatzsuche:
Beginnend mit N Datensätzen
Top N * From auswählen Tabelle
--------------
N bis M Datensätze (muss eine primäre Index-ID haben)
Wählen Sie Top M-N * aus der Tabelle, in der die ID enthalten ist (wählen Sie die Top-M-ID aus der Tabelle aus) Sortieren nach ID Desc
--------------------------------------- -- ---------
N zum Ende des Datensatzes
Wählen Sie Top N * From table Order by ID Desc
Case
Zum Beispiel 1: Eine Tabelle hat mehr als 10.000 Datensätze, der erste Das Feld der Tabelle, RecID, ist ein sich selbst vergrößerndes Feld. Schreiben Sie eine SQL-Anweisung, um den 31. bis 40. Datensatz der Tabelle zu finden.
Wählen Sie die Top 10 Recid aus A aus, wo Recid nicht enthalten ist (wählen Sie die Top 30 Recid aus A aus)
Analyse: Wenn es so geschrieben wird, treten einige Probleme auf, wenn Recid einen logischen Index in der Tabelle hat.
Wählen Sie die Top-10-Recide aus A aus, wobei... aus dem Index gesucht wird, während die nachfolgenden ausgewählten Top-30-Recide aus A in der Datentabelle gesucht werden, sodass die Reihenfolge im Index möglicherweise nicht mit der in der Datentabelle übereinstimmt Daher handelt es sich bei den abgefragten Daten nicht um die ursprünglich gewünschten Daten.
Lösungen
1. Verwenden Sie „Order by Select Top 30 Recid“ aus „A Order by Ricid“. Wenn das Feld nicht automatisch vergrößert wird, treten Probleme auf.
2. Fügen Sie dieser Unterabfrage auch Bedingungen hinzu: „Select Top 30 Recid“. from A where recid>-1
Beispiel 2: Fragen Sie den letzten Datensatz in der Tabelle ab. Ich weiß nicht, wie viele Daten in der Tabelle und in der Tabellenstruktur vorhanden sind.
Setze @s = 'select top 1 * from T where pid not in (select top ' + str(@count-1) + ' pid from T)'
print @s exec sp_executesql @s
9: Alle Benutzertabellen in der aktuellen Datenbank abrufen
Namen aus sysobjects auswählen, wobei xtype='u' und status>=0
10: Alle Felder einer bestimmten Tabelle abrufen
Namen aus syscolumns auswählen, wobei id= object_id('table name')
select name from syscolumns where id in (select id from sysobjects where type = 'u' and name = 'table name')
Die beiden Methoden haben den gleichen Effekt
11 : Ansichten, gespeicherte Prozeduren und Funktionen im Zusammenhang mit einer Tabelle anzeigen
Wählen Sie a.* aus Systemobjekten a, Systemkommentaren b aus, wobei a.id = b.id und b.text wie „%Tabellenname%“ ist
12: Alle gespeicherten Prozeduren in der aktuellen Datenbank anzeigen
Namen als Namen der gespeicherten Prozedur aus sysobjects auswählen, wobei xtype='P'
13: Alle vom Benutzer erstellten Datenbanken abfragen
* aus master..sysdatabases D auswählen, wobei sid nicht in (wählen Sie sid aus master..syslogins, wobei name='sa') oder wählen Sie dbid, benennen Sie AS DB_NAME aus master..sysdatabases, wobei sid <> 0x01
14: Fragen Sie die Felder und Datentypen eines bestimmten ab Tabelle
Wählen Sie Spaltenname und Datentyp aus information_schema.columns aus, wobei Tabellenname = 'Tabellenname'
15: Datenoperationen zwischen verschiedenen Serverdatenbanken
– Erstellen Sie einen Verbindungsserver
exec sp_addlinkedserver 'ITSV ', ' ' , ' SQLOLEDB ', 'Remote-Servername oder IP-Adresse'
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, 'username', 'password'
--Abfragebeispiel
select * from ITSV. Datenbankname.dbo.table name
--Beispiel importieren
select * into table from ITSV.Database name.dbo.table name
--Löschen Sie den Verbindungsserver, wenn er in Zukunft nicht mehr verwendet wird
exec sp_dropserver 'ITSV ', 'droplogins '
--Remote-/LAN-Daten verbinden (openrowset/openquery/opendatasource)
--1. openrowset
--Abfragebeispiel
select * from openrowset( 'SQLOLEDB ', 'sql server name'; 'User name '; 'Passwort', Datenbankname)
-- Lokale Tabelle generieren
Wählen Sie * in der Tabelle aus openrowset( 'SQLOLEDB ', 'Benutzername'; 'Passwort' , Datenbankname.dbo. Tabellenname)
– Importieren Sie die lokale Tabelle in die Remote-Tabelle
fügen Sie openrowset( 'SQLOLEDB ', 'SQL-Servername'; 'Benutzername'; 'Passwort', Datenbankname ein. dbo. Tabellenname)
Select *from local table
update b set b Column A=a. Benutzername '; 'Passwort', Datenbankname.dbo.table-Name) als innerer Join der lokalen Tabelle b auf a.column1=b.column1
--Openquery-Nutzung muss eine Verbindung erstellen
--Zuerst erstellen eine Verbindung zum Erstellen eines Verbindungsservers
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', 'Name oder IP-Adresse des Remote-Servers'
--Query
select * FROM openquery(ITSV, 'SELECT * FROM „Datenbank.dbo. Tabellenname“)
--Importieren Sie die lokale Tabelle in die Remote-Tabelle
insert openquery(ITSV, 'SELECT * FROM Database.dbo.Table Name')
Wählen Sie * aus der lokalen Tabelle
--Lokale Tabelle aktualisieren
Spalte B=a aktualisieren. Spalte B
FROM openquery(ITSV, 'SELECT * FROM Database.dbo.tablename') als innerer Join der lokalen Tabelle b auf a .Column A=b .Column A
--3. opendatasource/openrowset
SELECT * FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=Login Name;Password=Password' ). test.dbo.roy_ta
--Importieren Sie die lokale Tabelle in die Remote-Tabelle
insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=Login name;Password=Password').Database. dbo.Table name
select * from local table