Heim  >  Artikel  >  Datenbank  >  Die grundlegendste SQL-Syntax/Anweisungen von MySQL

Die grundlegendste SQL-Syntax/Anweisungen von MySQL

高洛峰
高洛峰Original
2016-12-20 11:36:30891Durchsuche

DDL – Datendefinitionssprache (Erstellen, Ändern, Löschen, DECLARE)
DML – Datenbearbeitungssprache (Auswählen, Löschen, Aktualisieren, Einfügen)
DCL – Datensteuerungssprache (GRANT, REVOKE, COMMIT, ROLLBACK )

Stellen Sie zunächst kurz die grundlegenden Anweisungen vor:

1. Beschreibung: Datenbank erstellen
Datenbankname erstellen

2. Beschreibung: Datenbank löschen
Datenbank-Datenbankname löschen

3. Beschreibung: SQL-Server sichern
--- Sicherungsdatengerät erstellen
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat '
--- Sicherung starten
BACKUP DATABASE pubs TO testBack

4. Anleitung: Erstellen Sie eine neue Tabelle
create table tabname(col1 type1 [not null] [primary key],col2 Typ2 [nicht null],..)
Erstellen Sie eine neue Tabelle basierend auf einer vorhandenen Tabelle:
A: Erstellen Sie eine Tabelle tab_new wie tab_old (verwenden Sie die alte Tabelle, um eine neue Tabelle zu erstellen)
B: Erstellen Sie eine Tabelle tab_new as select col1, col2… from tab_old definition only

5. Beschreibung: Neue Tabelle löschen
Tab-Name der Tabelle löschen

6. Beschreibung: Spalte hinzufügen
Tab-Name der Tabelle ändern Spaltenspaltentyp
Hinweis: Spalten können nach dem Hinzufügen nicht gelöscht werden. In DB2 kann der Datentyp nicht geändert werden, nachdem die Spalte hinzugefügt wurde. Das einzige, was geändert werden kann, ist die Länge des Varchar-Typs
.

7. Anleitung: Primärschlüssel hinzufügen: Tabnamen der Tabelle ändern, Primärschlüssel hinzufügen (Spalte)
Anweisungen: Primärschlüssel löschen: Tabnamen der Tabelle löschen, Primärschlüssel löschen (Spalte)

8 : Index erstellen: [eindeutigen] Index-IDX-Namen auf Tabname erstellen (Spalte…)
Index löschen: Index-IDX-Name löschen
Hinweis: Der Index kann nicht geändert werden, Sie müssen ihn löschen und neu erstellen Es.

9. Anleitung: Eine Ansicht erstellen: Ansichtsansichtsname als Select-Anweisung erstellen
Eine Ansicht löschen: Ansichtsansichtsname löschen

10. Anleitung: Ein paar einfache grundlegende SQL-Anweisungen
Auswählen : * aus Tabelle1 auswählen, wobei Bereich
Einfügen: in Tabelle1(Feld1,Feld2) Werte(Wert1,Wert2) einfügen
Löschen: Aus Tabelle1 löschen, wobei Bereich
Aktualisieren: Tabelle1 aktualisieren, Feld1=Wert1 festlegen, wobei Bereich
Suchen: Wählen Sie * aus Tabelle1 aus, wobei Feld1 wie „%Wert1%“ aussieht. Die Syntax von „like“ ist sehr ausgefeilt. Überprüfen Sie die Informationen.
Sortieren: Wählen Sie * aus Tabelle1 aus, sortieren Sie nach Feld1, Feld2 [desc].
Gesamt : Anzahl als Gesamtzahl aus Tabelle1 auswählen
Summe: Summe(Feld1) als Summenwert aus Tabelle1 auswählen
Durchschnitt: Durchschnitt(Feld1) als Durchschnittswert aus Tabelle1 auswählen
Maximum: Max(Feld1) als Maximalwert aus Tabelle1 auswählen
Minimum: Wählen Sie min(Feld1) als Mindestwert aus Tabelle1

11. Beschreibung: Mehrere erweiterte Abfrageoperatoren
A: UNION-Operator
UNION-Operator kombiniert die anderen beiden Ergebnistabellen (z. B. TABLE1 und TABELLE2) und leiten Sie eine Ergebnistabelle ab, indem Sie alle doppelten Zeilen in der Tabelle entfernen. Wenn ALL mit UNION (d. h. UNION ALL) verwendet wird, werden doppelte Zeilen nicht entfernt. In beiden Fällen stammt jede Zeile der abgeleiteten Tabelle entweder aus TABELLE1 oder TABELLE2.
B: EXCEPT-Operator Der
EXCEPT-Operator leitet eine
-Ergebnistabelle ab, indem er alle Zeilen einbezieht, die sich in TABELLE1, aber nicht in TABELLE2 befinden, und alle doppelten Zeilen eliminiert. Wenn ALL mit EXCEPT (EXCEPT ALL) verwendet wird, werden doppelte Zeilen nicht entfernt.
C: INTERSECT-Operator Der
INTERSECT-Operator leitet eine resultierende
-Tabelle ab, indem er nur Zeilen einbezieht, die sich sowohl in TABLE1 als auch in TABLE2 befinden, und alle doppelten Zeilen eliminiert. Wenn ALL mit INTERSECT (INTERSECT ALL) verwendet wird, werden doppelte Zeilen nicht entfernt.
Hinweis: Mehrere Abfrageergebniszeilen, die Operatorwörter verwenden, müssen konsistent sein.

12. Beschreibung: Äußeren Join verwenden
A. Linker äußerer Join (linker Join): Die Ergebnismenge umfasst die übereinstimmenden Zeilen der Join-Tabelle und auch alle Left-Join-Tabellen OK.
SQL: Wählen Sie a.a, a.b, a.c, b.c, b.d, b.f aus a LEFT OUT JOIN b ON a.a = b.c
B: Right Outer Join:
Right Outer Join (Right Join): die Ergebnismenge ist beides. Schließt übereinstimmende Join-Zeilen aus der Join-Tabelle sowie alle Zeilen aus der rechten Join-Tabelle ein.
C: vollständiger äußerer Join:
Vollständiger äußerer Join: schließt nicht nur übereinstimmende Zeilen der symbolischen Verbindungstabelle ein, sondern auch alle Datensätze in den beiden verbundenen Tabellen.

13. Beschreibung: Kopieren Sie die Tabelle (kopieren Sie nur die Struktur, Quelltabellenname: a, neuer Tabellenname: b) (Zugriff verfügbar)
Methode 1: Wählen Sie * in b aus a aus, wobei 1< >1
Methode 2: Top 0 * in b aus a auswählen

14. Beschreibung: Tabelle kopieren (Daten kopieren, Quelltabellenname: a Zieltabellenname: b) (Zugriff verfügbar)
in b(a, b, c) einfügen, d,e,f aus b auswählen

15. Beschreibung: Tabellen zwischen Datenbanken kopieren (absolute Pfade für bestimmte Daten verwenden) (Zugriff verfügbar)
einfügen in b(a, b, c) wähle d,e,f aus b in „Spezifische Datenbank“ aus, wobei Bedingung
Beispiel: ..from b in '"&Server.MapPath(".")&"data.mdb" & "' wo..

16. Beschreibung: Unterabfrage (Tabellenname 1: a Tabellenname 2: b)
Wählen Sie a,b,c aus a, wobei a IN ist (wählen Sie d aus b aus) oder: Wählen Sie a,b,c aus a, wobei a IN ist
(1,2,3)

17. Beschreibung: Artikel, Einsender und letzte Antwortzeit anzeigen
select a.title,a.username,b.adddate from table a,( select max(adddate) adddate from
table where table.title=a.title) b

18. Beschreibung: Outer-Join-Abfrage (Tabellenname 1: a Tabellenname 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

19. Beschreibung: Online-Ansichtsabfrage (Tabellenname 1: a)
select * from (Select a , b,c FROM a) T, wobei t.a > 20 ist. Beschreibung: Die Verwendung von „Zwischen“ begrenzt den Abfragedatenbereich und schließt keine Grenzwerte ein wobei die Zeit zwischen Zeit1 und Zeit2
wähle a,b,c, aus Tabelle1, wobei a nicht zwischen Wert 1 und Wert 2 liegt

21 Beschreibung: Verwendung in
wähle * aus Tabelle1, wobei a [nicht] in ('Wert 1', 'Wert 2', 'Wert 4', 'Wert 6')

22. Beschreibung: Zwei verwandte Tabellen, löschen Sie die Haupttabelle, die nicht in der sekundären Tabelle ist Informationen
aus Tabelle1 löschen, wo nicht vorhanden (wählen Sie * aus Tabelle2 aus, wobei
table1.field1=table2.field1 )

23. Beschreibung: Problem mit der gemeinsamen Abfrage von vier Tabellen:
wählen Sie * aus a linker innerer Join b auf a.a=b.b rechter innerer Join c auf a.a=c.c innerer Join
d auf a.a=d.d wobei .....

24. Hinweis: Erinnerung fünf Minuten im Voraus planen
SQL: Wählen Sie * aus dem Zeitplan aus, wobei datediff('minute', f start time, getdate())>5

25 Beschreibung: Eine SQL-Anweisung vervollständigt das Datenbank-Paging
select top 10 b . * aus (wählen Sie die 20 wichtigsten Primärschlüsselfelder aus und sortieren Sie die Felder nach dem Sortierfeld
desc) a, dem Primärschlüsselfeld = a
26. Beschreibung: Wählen Sie die Top-10-Datensätze aus (eine ähnliche Verwendung kann in monatlichen Forenrankings, monatlichen Top-Selling-Produktanalysen, Rankings nach Themenbewertungen usw. verwendet werden).
Wählen Sie a, b, c aus dem Tabellennamen aus ta where a=(select max(a) from tablename tb where
tb.b=ta.b)

28. Beschreibung: Abgeleitet durch Einschließen aller Zeilen in TabelleA, aber nicht in TabelleB und TabelleC und Eliminieren alle doppelten Zeilen A
Ergebnistabelle
(wählen Sie a aus TabelleA) außer (wählen Sie a aus TabelleB) außer (wählen Sie a aus TabelleC)

29. Beschreibung: Entnehmen Sie zufällig 10 Datenstücke
Top 10 * aus der Reihenfolge der Tabellennamen nach newid() auswählen

30. Beschreibung: Datensätze zufällig auswählen
newid() auswählen

31. Doppelte Datensätze löschen
Löschen from tablename where id not in (select max(id) from tablename group by
col1,col2,...)

32 Beschreibung: Alle Tabellennamen in der Datenbank auflisten
Name auswählen aus sysobjects where type= 'U'

33. Beschreibung: Alle in der Tabelle auflisten
Name aus syscolumns auswählen, wobei id=object_id('TableName')

34 , Die Felder „vender“ und „pcs“ sind nach dem Typfeld angeordnet. Case kann problemlos eine Mehrfachauswahl implementieren, ähnlich dem Fall in
select.
Typ auswählen, Summe (Fallverkäufer, wenn 'A', dann Stück, sonst 0 Ende), Summe (Fallverkäufer, wenn 'C'
dann Stück, sonst 0 Ende), Summe (Fallverkäufer, wenn 'B', dann Stück sonst 0 Ende) FROM Tabellenname
Gruppierung nach Typ
Ergebnisse anzeigen:
Typ Vender-PCs
Computer A 1
Computer A 1
CD B 2
CD A 2
Mobiltelefon B 3
Mobiltelefon C 3

35. Anleitung: Tabelle Tabelle1 initialisieren
TABELLE TABELLE1 TRUNCATE


36. Anleitung: Datensätze von 10 bis 15 auswählen
select top 5 * from (select top 15 * from table order by id asc) table_alias order by
id desc
 
Methode zur zufälligen Auswahl von Datenbankeinträgen (mithilfe der Randomize-Funktion, implementiert durch SQL-Anweisungen)
Bei in einer Datenbank gespeicherten Daten können Zufallszahlenfunktionen den oben genannten Effekt erzielen, sie sind jedoch möglicherweise zu langsam. Sie können ASP nicht
bitten, „eine Zufallszahl zu finden“ und diese auszudrucken. Tatsächlich besteht eine gängige Lösung darin, eine Schleife wie diese zu erstellen:
Randomize
RNumber = Int(Rnd*499) +1
 
While Not objRec.EOF
If objRec("ID ") = RNumber THEN
... Hier ist das Ausführungsskript...
end if
objRec.MoveNext
Wend

Das ist leicht zu verstehen. Zuerst ermitteln Sie eine Zufallszahl im Bereich von 1 bis 500 (vorausgesetzt, 500 ist die Gesamtzahl der Datensätze in der Datenbank). Anschließend durchlaufen Sie jeden Datensatz, um den Wert der ID zu testen und festzustellen, ob er mit der RNumber übereinstimmt. Wenn die Bedingungen erfüllt sind, führen Sie
ausDer Codeblock, der mit dem Schlüsselwort THEN beginnt. Wenn Ihre RNumber gleich 495 ist, dauert es
lange, die Datenbank zu durchsuchen. Obwohl 500 wie eine große Zahl erscheinen mag, handelt es sich im Vergleich zu robusteren Unternehmenslösungen, die typischerweise Tausende von Datensätzen in einer einzigen Datenbank enthalten, immer noch um eine kleine Datenbank. Ist er jetzt nicht tot?
Mit SQL können Sie schnell den genauen Datensatz finden und ein Recordset öffnen, das nur diesen Datensatz enthält, wie unten gezeigt
:
Randomize
RNumber = Int(Rnd*499) + 1
 
sql = "Select * FROM Customers Where ID = " & RNumber
 
set objRec = ObjConn.Execute(SQL)
Response.WriteRNumber & " = " & objRec("ID ") & " " & objRec("c_email")
 
Es ist nicht nötig, RNumber und ID auszuschreiben, Sie müssen nur die Übereinstimmung überprüfen. Solange Sie mit der Funktionsweise des obigen Codes zufrieden sind, können Sie
nach Bedarf „zufällige“ Datensätze bearbeiten. Recordset enthält keine anderen Inhalte, sodass Sie die benötigten Datensätze schnell finden können, was
die Verarbeitungszeit erheblich verkürzt.
Lassen Sie uns noch einmal über Zufallszahlen sprechen
Nachdem Sie nun entschlossen sind, den letzten Tropfen Öl aus der Zufallsfunktion herauszuholen, können Sie mehrere Zufallsdatensätze gleichzeitig herausnehmen oder
Datensätze innerhalb eines bestimmten Bereichs verwenden möchten zufälliger Bereich. Durch Erweitern des oben genannten Standard-Random-Beispiels können Sie SQL verwenden, um die beiden oben genannten Situationen zu behandeln
.
Um mehrere zufällig ausgewählte Datensätze abzurufen und im selben Datensatz zu speichern, können Sie drei Zufallszahlen speichern und dann die Datenbank
abfragen, um Datensätze zu erhalten, die diesen Zahlen entsprechen:
sql = "Select * FROM Kunden, bei denen ID = " & RNumber & " oder ID = " & RNumber2 & " oder
ID = " & RNumber3
 
Angenommen, Sie möchten 10 Datensätze auswählen (vielleicht 10 Links jedes Mal, wenn die Seite die Liste lädt). , können Sie die mathematischen Gleichungen BETWEEN oder
verwenden, um den ersten Datensatz und die entsprechende Anzahl inkrementeller Datensätze auszuwählen. Dieser Vorgang kann auf verschiedene Arten durchgeführt werden, aber die
Select-Anweisung zeigt nur eine Möglichkeit (die ID ist hier eine automatisch generierte Zahl):
sql = "Select * FROM Customers Where ID BETWEEN " & RNumber & " AND " & RNumber & "+
9"
Hinweis: Der Ausführungszweck des obigen Codes besteht nicht darin, zu überprüfen, ob 9 gleichzeitige Datensätze in der Datenbank vorhanden sind.
 
Mehrere Datensätze nach dem Zufallsprinzip lesen, getestet
Zugriffssyntax: Top 10 * aus Tabellennamen auswählen orDER BY Rnd(id)
SQL-Server: Top n * aus Tabellennamen in der Reihenfolge nach newid () auswählen
mysqlelect * Aus der Reihenfolge der Tabellennamen Durch rand() Limit n
Access-Left-Join-Syntax (aktuelle Entwicklungen müssen Left-Join verwenden, Access-Hilfe enthält nichts, es gibt keine SQL-Beschreibung für Access im Internet, nur
Ich teste es selbst, schreibe es jetzt auf, um später darauf zurückgreifen zu können Verwenden Sie die SQL-Anweisung „uses...“, um die Anzeige einer zu langen Zeichenfolge zu ersetzen.
Syntax:
SQL-Datenbank: Wählen Sie case when len(field)>10 then left(field,10)+'...' else aus Feldende als
news_name,news_id from tablename
Access-Datenbank: Select iif(len(field)>2,left(field,2)+'...',field) FROM tablename; 🎜> Conn.Execute-Beschreibung
Execute-Methode
Diese Methode wird zum Ausführen von SQL-Anweisungen verwendet. Abhängig davon, ob der Datensatz nach der Ausführung der SQL-Anweisung zurückgegeben wird, ist das Verwendungsformat dieser Methode in die folgenden zwei
-Typen unterteilt:

(1). Wenn die SQL-Abfrageanweisung ausgeführt wird, wird der durch die Abfrage erhaltene Datensatz zurückgegeben. Verwendung:
Objektvariablennamen festlegen = Verbindungsobjekt.Execute("SQL-Abfragesprache")
Nach dem Aufruf der Execute-Methode wird automatisch ein Recordset-Objekt erstellt und die Abfrageergebnisse werden im Datensatzobjekt gespeichert . Durch die Set
-Methode wird das Recordset dem angegebenen Objekt zur Speicherung zugewiesen. Die Objektvariable stellt später das Recordset-Objekt dar.

  (2). Bei der Ausführung der Operationssprache SQL wird kein Recordset zurückgegeben. Die Verwendung zu diesem Zeitpunkt ist:
Connection object.Execute „SQL-Operationsanweisung“ [, RecordAffected][, Option]
  ?RecordAffected ist optional. Nach der Ausführung der SQL-Anweisung kann die effektiv Die Anzahl der Datensätze
wird automatisch in dieser Variablen gespeichert. Durch Zugriff auf diese Variable können Sie feststellen, wie viele Datensätze die SQL-Anweisung bearbeitet hat.
  ?Option optional, der Wert dieses Parameters ist normalerweise adCMDText, der verwendet wird, um ADO mitzuteilen, dass das erste Zeichen nach der Execute
-Methode als Befehlstext interpretiert werden soll. Durch die Angabe dieses Parameters können Sie die Ausführung effizienter gestalten.
*BeginTrans-, RollbackTrans- und CommitTrans-Methoden
Diese drei Methoden sind Methoden, die vom Verbindungsobjekt für die Transaktionsverarbeitung bereitgestellt werden. BeginTrans wird verwendet, um eine Sache zu startenRollbackTrans wird zum Zurücksetzen der Transaktion verwendet. CommitTrans wird zum Übermitteln aller Transaktionsverarbeitungsergebnisse verwendet, dh zum Bestätigen der Verarbeitung der Transaktion.
Die Transaktionsverarbeitung kann eine Gruppe von Vorgängen als Ganzes behandeln. Nur wenn alle Anweisungen erfolgreich ausgeführt wurden, gilt die Transaktionsverarbeitung als erfolgreich. Wenn eine der Anweisungen fehlschlägt, wird die gesamte Verarbeitung als Fehler betrachtet und hier wird der vorherige Status wiederhergestellt.
BeginTrans und CommitTrans werden verwendet, um den Anfang und das Ende einer Transaktion zu markieren. Die Anweisungen zwischen diesen beiden werden als Transaktionen verarbeitet
. Sie können feststellen, ob die Transaktionsverarbeitung erfolgreich ist, indem Sie die Fehlersammlung des Objekts verbinden. Wenn die Anzahl der Mitglieder der Fehlersammlung
nicht 0 ist, bedeutet dies, dass ein Fehler aufgetreten ist und die Transaktionsverarbeitung fehlgeschlagen ist. Jedes Error-Objekt in der Error-Sammlung stellt eine Fehlermeldung
dar.

37. Eine SQL-Anweisung im Interview über die Gruppe von
Tabelleninhalt:
2005-05-09 Sieg
2005-05-09 Sieg
2005-05-09 Verlierer
2005-05-09 Negativ
2005-05-10 Sieg
2005-05-10 Negativ
2005-05-10 Negativ
So schreiben Sie eine SQL-Anweisung, wenn Sie sie generieren möchten die folgenden Ergebnisse?
Gewinnen oder Verlieren
2005-05-09 2 2
2005-05-10 1 2
Antwort: Der Code lautet wie folgt:
create table #tmp(rq varchar(10),shengfu nchar (1))
in #tmp-Werte einfügen('2005-05-09','win')
in #tmp-Werte einfügen('2005-05-09',' win')
in #tmp-Werte einfügen('2005-05-09','negativ')
in #tmp-Werte einfügen('2005-05-09','negativ')
einfügen in #tmp-Werte('2005-05-10','win')
in #tmp-Werte einfügen('2005-05-10','negative')
in #tmp-Werte einfügen('2005-05 -10','negative' )
1)select rq, sum(case when shengfu='win' then 1 else 0 end)'win',sum(case when shengfu='
negative' then 1 else 0 end)'negative' from #tmp group by rq
2) select N.rq,N.win,M.negative from (
select rq,win=count(*) from #tmp where shengfu=' win'group by rq)N inner join
(select rq,negative=count(*) from #tmp where shengfu='negative'group by rq)M on N.rq=M.rq
3)select a.col001,a.a1 Sieg, b.b1 verliert aus
(select col001,count(col001) a1 from temp1 where col002='win' group by col001) a,
(select col001,count(col001 ) b1 aus temp1, wobei col002= 'Negativ'-Gruppe nach col001) b
wobei a.col001=b.col001

38. Fragen Sie nach einer Frage zur SQL-Anweisungsabfrage, die im Interview aufgetreten ist.
Es gibt Drei Spalten A B C in der Tabelle. Verwenden Sie die SQL-Anweisungsimplementierung: Wenn Spalte A größer als Spalte B ist, wählen Sie Spalte A aus. Andernfalls wählen Sie Spalte B aus C.
Beispiele sind wie folgt:
select (case when a>b then a else b end ),
(case when b>c then b esle c end)
from table_name

39 , eine SQL-Anweisung zur Datumsbeurteilung?
Bitte entfernen Sie alle Datensätze in der Tabelle tb_send, deren Datum (SendTime-Feld) der aktuelle Tag ist? (SendTime-Feld ist vom Typ Datum/Uhrzeit, einschließlich Datum
Datum und Uhrzeit)
Das Beispiel sieht wie folgt aus:
Wählen Sie * aus TB aus, wobei datediff (dd,SendTime,getdate())=0

40 ist. Es gibt eine Tabelle mit 3 Feldern: Chinesisch, Mathematik und Englisch. Es gibt 3 Datensätze mit 70 Punkten in Chinesisch, 80 Punkten in Mathematik
und 58 Punkten in Englisch. Bitte verwenden Sie eine SQL-Anweisung, um diese drei Datensätze abzufragen und sie gemäß den folgenden Bedingungen anzuzeigen (und notieren Sie Ihre Ideen):
Eine Punktzahl von mehr als oder gleich 80 bedeutet ausgezeichnet, eine Punktzahl von mehr als oder gleich 60 bedeutet bestanden und eine Punktzahl von weniger als 60 bedeutet nicht bestanden.
Anzeigeformat:
Chinesisch Mathematik Englisch
Bestanden Exzellent Nicht bestanden
Beispiele sind wie folgt:
wählen Sie
(Fall wenn Chinesisch>=80, dann 'Ausgezeichnet'
wenn Chinesisch> =60, dann „bestanden“
sonst „nicht bestanden“) als Chinesisch,
(Fall wenn Mathematik>=80, dann „ausgezeichnet“
wenn Mathematik>=60, dann „bestanden“
sonst „nicht bestanden“ ) als Mathematik,
(Fall, wenn Englisch>=80, dann „ausgezeichnet“
wenn Englisch>=60, dann „bestanden“
sonst „nicht bestanden“) als Englisch,
aus Tabelle
41 . In sqlserver2000 verwenden Sie bitte SQL, um eine temporäre Benutzertabelle und eine temporäre Systemtabelle zu erstellen, die zwei Felder ID und
IDValues ​​enthalten, die beide vom Typ int sind, und erklären Sie den Unterschied zwischen den beiden Feldern Tabelle: Tabelle erstellen #xx(ID int, IDValues ​​​​int)
Temporäre Systemtabelle: Tabelle erstellen ##xx(ID int, IDValues ​​​​int)
Unterschied:
Temporäre Benutzertabelle Es ist nur sichtbar für die Sitzung des Benutzers, der diese Tabelle erstellt hat, und nicht für andere Prozesse.
Diese temporäre Tabelle wird automatisch gelöscht, wenn der Prozess, der sie erstellt hat, verschwindet.
Die globale temporäre Tabelle ist für alle sichtbar Wenn jedoch alle darauf zugreifenden Sitzungen gelöscht werden, ist sqlserver2000 nur durch das Speichermedium begrenztDiese Methode implementiert diesen Mechanismus zur unbegrenzten Kapazität.
Alle Daten werden in Datendateien (*.dbf) gespeichert. Solange die Datei groß genug ist, kann die Speicherkapazität von SQL Server erweitert werden
Es gibt drei Arten von SQL Server 2000 Datenbanken Dateien:
Primäre Datendatei
Die primäre Datendatei ist der Ausgangspunkt der Datenbank und verweist auf andere Teile der Dateien in der Datenbank. Jede Datenbank verfügt über eine Hauptdatendatei
. Die empfohlene Dateierweiterung für Primärdatendateien ist .mdf.
Sekundäre Datendatei
Die sekundäre Datendatei enthält alle Datendateien außer der primären Datendatei. Einige Datenbanken verfügen möglicherweise über keine sekundären Datendateien, während einige
-Datenbanken möglicherweise über mehrere sekundäre Datendateien verfügen. Die empfohlene Dateierweiterung für sekundäre Datendateien ist .ndf.
Protokolldatei
Die Protokolldatei enthält alle Protokollinformationen, die zur Wiederherstellung der Datenbank erforderlich sind. Jede Datenbank muss mindestens eine Protokolldatei haben, kann aber auch mehr als
eine haben. Die empfohlene Dateierweiterung für Protokolldateien ist .ldf.
43. Bitte verwenden Sie eine SQL-Anweisung, um das Ergebnis zu erhalten.
Nehmen Sie die in Tabelle 3 aufgeführten Formatdaten aus Tabelle 1 und Tabelle 2 heraus. Bitte beachten Sie, dass es sich lediglich um ein Format handelt für euren Rat.
Sie können auch gespeicherte Prozeduren verwenden.
Tabelle1
Monat Mo. Abteilung Abt. Leistung yj
Januar 01 10
Januar 02 10
Januar 03 5
Februar 02 8
Februar 04 9
März 03 8
Tabelle2
Abteilung Abteilung Abteilungsname dname
--------------------------------- --
01 Inlandsgeschäft Abteilung 1
02 Inlandsgeschäft Abteilung 2
03 Inlandsgeschäft Abteilung 3
04 International Business Abteilung
Tabelle3 (Ergebnis)
Abteilungsabt. Januar Februar März Monat
- -------------------------------------
01 10 null null
02 10 8 null
03 null 5 8
04 null null 9
------------ ------ ---------
1)
wählen Sie a.Abteilungsname dname,b.Leistung yj als „Januar“,c.Leistung yj als „Februar“, d.Leistung yj als „März“
aus Tabelle1 a, Tabelle2 b, Tabelle2 c, Tabelle2 d
wobei a.Department dep = b.Department dep und b.Month mon = 'Januar' und
a.Department dep = c.Department dep und c.Month mon = 'Februar' und
a.Department dep = d.Department dep und d.Month mon = 'März' und
2)
select a.dep,
sum( Fall, wenn b.mon=1, dann b.yj, sonst 0 Ende) als „Januar“,
sum(Fall, wenn b.mon=2, dann b.yj, sonst 0 Ende) als „Februar“,
sum( Fall, wenn b.mon=3, dann b.yj, sonst 0 Ende) als „März“,
sum(Fall, wenn b.mon=4, dann b.yj, sonst 0 Ende) als „April“,
sum( Fall, wenn b.mon=5, dann b.yj, sonst 0 Ende) als „Mai“,
sum(Fall, wenn b.mon=6, dann b.yj, sonst 0 Ende) als „Juni“,
sum( Fall, wenn b.mon=7, dann b.yj, sonst 0 Ende) als „Juli“,
sum(Fall, wenn b.mon= 8, dann b.yj, sonst 0 Ende) als „August“,
sum( Fall, wenn b.mon=9, dann b.yj, sonst 0 Ende) als „September“,
sum(Fall, wenn b.mon=10, dann b.yj, sonst 0 Ende) als „Oktober“,
sum( Fall, wenn b.mon=11, dann b.yj, sonst 0 Ende) als „November“,
sum(Fall, wenn b.mon=12, dann b.yj, sonst 0 Ende) als „Dezember“,
aus Tabelle2 a left join table1 b on a.dep=b.dep

44. Huawei-Interview-Frage
Es gibt mehrere Datensätze für eine ID in einer Tabelle und zeigt an, wie viele welche Aufzeichnungen es gibt.
--------------------------------- --- --
select id, Count(*) from tb group by id with count(*)>1
select*from(select count(ID) as count from table group by ID)T where T.count> ;1



Weitere Artikel zur grundlegendsten SQL-Syntax/-Anweisung von MySQL finden Sie auf der chinesischen PHP-Website !

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