Database
 sql >> Baza danych >  >> RDS >> Database

Tabela referencyjna SQL:Jak tworzyć i pisać podstawowe zapytania

W tym artykule skupimy się na pisaniu zapytań SQL względem tabeli referencyjnej bazy danych o dość prostej strukturze do zrozumienia i implementacji.

Dodatkowo wyjaśnimy koncepcje pisania skutecznych zapytań SQL wraz z kilkoma wskazówkami dotyczącymi życia zawodowego.

Przed zapytaniem do tabel bazy danych

Ponieważ ten artykuł dotyczy wykonywania zapytań w tabelach bazy danych za pomocą skryptów SQL, czytelnicy powinni mieć pewne podstawy, aby w pełni zrozumieć koncepcje i przykłady. Musimy mieć wrażenie, jak odwoływać się do tabeli. Ponadto niezbędny sprzęt musi być obecny:

Potrzebujesz:

  1. Podstawowa znajomość relacyjnych baz danych i SQL.
  2. Serwer bazy danych SQL zainstalowany lokalnie lub zdalnie.
  3. Narzędzia do zarządzania bazami danych, takie jak SQL Server Management Studio lub dbForge Studio dla SQL Server.

Powinieneś być w stanie utworzyć przykładową bazę danych (za pomocą dostarczonych skryptów), połączyć się z serwerem SQL i uruchomić na tej przykładowej bazie danych.

Zanim przejdziemy do uruchamiania zapytań w pustej bazie danych, być może będziesz musiał zapoznać się z poprzednim artykułem poświęconym temu tematowi, aby odświeżyć wiedzę:

Jak pisać proste zapytania SQL z pustej bazy danych

Pisanie zapytań SQL zaczynających się od tabel referencyjnych

Musimy napisać zapytania SQL do przykładowej bazy danych zawierającej dwie tabele. Plan polega na wyświetleniu danych z jednej z tabel znanych jako tabela referencyjna SQL. Uwaga:tabelą referencyjną może być dowolna tabela, która nie wymaga danych z innej tabeli.

Po pierwsze, musimy zrozumieć strukturę przykładowej bazy danych, aby uzyskać dokładne zapytanie.

Przykład tabeli referencyjnej bazy danych

Używamy próbki BookSimple2 baza danych składająca się z dwóch tabel, BookType i książka .

BookType tabela zawiera typy ksiąg, które mają być przypisane do księgi. Książka tabela zawiera nazwy, typy i zapasy (liczbę dostępnych egzemplarzy) książek.

Łatwo zgadnąć, że obie tabele są połączone klawiszami. Typ książki przechowywanej w książce tabela jest pierwotnie zdefiniowana w BookType stół. Pozwala to na zachowanie spójności i wiarygodności danych.

Dlatego BookType table jest tabelą referencyjną – zapewnia odniesienie (typ książki) do głównej książki tabela.

Spójrz na poniższą ilustrację:

Jeśli nie połączymy książki tabela z BookType aby uzyskać typ księgi, musimy zdefiniować wymagany typ za każdym razem, gdy zapisywana jest nowa księga. W rezultacie wkrótce pojawią się błędy, ponieważ ciągle przechowujemy ten sam typ. Co więcej, możemy stworzyć o wiele więcej typów z powodu błędów ortograficznych.

Powiedzmy, że jeśli zignorujemy użycie tabel referencyjnych i utworzymy tylko jedną główną tabelę, możemy użyć różnych sposobów reprezentowania jednego typu, na przykład Projekt , Projektowanie i Projekty . To myli, zwłaszcza podczas wyszukiwania i rozumienia danych.

Możesz również zapoznać się z poprzednim artykułem, aby uzyskać więcej informacji o tym, jak tabele odnoszą się do siebie w SQL:

Naucz się projektowania baz danych w SQL Server Management Studio (SSMS) – część 2

Teraz, gdy widzisz tło korzystania z tabel referencyjnych i tabel głównych, możemy przejść do przykładów.

Jak utworzyć tabelę referencyjną w SQL

Otwórz narzędzie do tworzenia baz danych (może to być SQL Server Management Studio lub dbForge Studio dla SQL Server) i połącz się z zainstalowaną instancją serwera SQL.

Napisz następujący skrypt do głównej bazy danych, aby skonfigurować przykładową bazę danych BookSimple2 z dwoma stołami:

-- Create sample database BookSimple2
USE MASTER
GO

CREATE DATABASE BookSimple2
GO

USE BookSimple2

-- Creating a reference table BookType
CREATE TABLE dbo.BookType
(
	BookTypeId INT IDENTITY(1,1),
	Name VARCHAR(50)NOT NULL,
	Detail VARCHAR(200)NULL 
	CONSTRAINT PK_BookType_BookTypeId PRIMARY KEY (BookTypeId)
)
GO

-- Populating (adding rows to the) table BookType
SET IDENTITY_INSERT dbo.BookType ON
GO
INSERT INTO dbo.BookType
(
  BookTypeId
 ,Name
 ,Detail
)
VALUES
(
  1  -- ID - INT Primary Key
 ,'Designing' -- Name - varchar(50) NOT NULL
 ,'This is Designing' -- Detail - varchar(200)
),
(
  2  -- ID - INT Primary Key
 ,'Testing' -- Name - varchar(50) NOT NULL
 ,'This is Testing' -- Detail - varchar(200)
),
(
  3  -- ID - INT Primary Key
 ,'Coding' -- Name - varchar(50) NOT NULL
 ,'This is Coding' -- Detail - varchar(200)
);
GO
SET IDENTITY_INSERT dbo.BookType OFF
GO

-- Creating a table Book
CREATE TABLE dbo.Book
(
	BookId INT IDENTITY(1,1),
	Name VARCHAR(50),
	BookTypeId INT,
	Stock INT,
	CONSTRAINT PK_Book_BookId PRIMARY KEY (BookId)
)
GO

Po uruchomieniu skryptu możesz wyświetlić nowo utworzoną bazę danych w Eksploratorze obiektów SSMS lub w sekcji Eksplorator baz danych w dbForge Studio dla SQL Server:

Jak odwoływać się do dwóch tabel za pomocą klucza obcego SQL

Celowo wykluczyłem część skryptu, która tworzy relację między tabelą referencyjną (BookType ) i głównej tabeli (Książka ) w postaci kluczy.

Wykonaj następujący skrypt względem przykładowej bazy danych, aby połączyć tabelę referencyjną z tabelą główną:

-- Creating foreign key constraint on Book table to get BookTypeId values from BookType table
ALTER TABLE dbo.Book
    ADD CONSTRAINT [FK_Book_BookType_BookTypeId] 
FOREIGN KEY ([BookTypeId]) REFERENCES dbo.[BookType] ([BookTypeId]);

Rozwiń KsiążkęSimple2 baza danych> Książka tabela> Klawisze folder:

Widzimy, że te dwie tabele zostały pomyślnie połączone.

Powyższe to zrzut ekranu z SQL Server Management Studio. Jednak widok jest dokładnie taki sam, jeśli przeglądasz bazę danych w Eksploratorze bazy danych dbForge Studio dla SQL Server.

Ważna wskazówka dotycząca wyboru żądanej bazy danych: Musisz upewnić się, że uruchamiasz zapytania względem poprawnej bazy danych — przykładowej bazy danych. Dlatego wybierz go z listy dostępnych baz danych lub uruchom następujący skrypt:

-- Select the sample SQL database to query it
USE BookSimple2

Ważny! Użycie skryptu do wyboru bazy danych nie ma zastosowania, jeśli pracujesz z chmurową wersją bazy danych SQL, znaną jako Azure SQL Database.

Pisanie pierwszego zapytania

Aby wykonać zapytanie do tabel bazy danych, musimy tylko pamiętać o poleceniu SELECT w następującej formie:

SELECT * FROM <TableName>

Zastąp nazwą istniejącej tabeli, a skrypt zwróci wszystkie rekordy (wiersze) tej tabeli.

Instrukcja SELECT jest o wiele bardziej elastyczna, ale na razie skupimy się tylko na wyświetlaniu wszystkich rekordów (wierszy) tabeli.

Ważna wskazówka dotycząca SQL :Pamiętaj, że SQL (w szczególności w odniesieniu do T-SQL) nie rozróżnia wielkości liter . Odnosi się do słowa zastrzeżonego SQL (SELECT to to samo co Wybierz ) lub nazwy zdefiniowane przez użytkownika (BookType to to samo co booktype ) .

Wyświetl wszystkie wiersze z tabeli referencyjnej BookType

Napisz następujący skrypt w przykładowej bazie danych:

-- View all data from the BookType table
SELECT * FROM dbo.BookType

Dane wyjściowe to:

Widzimy wszystkie kolumny i wiersze z tabeli. Jest to zdecydowanie najszybsza metoda uzyskania wszystkich danych z tabeli.

Ważna wskazówka dotycząca SELECT *: Powinieneś użyć SELECT * aby pobrać wszystkie wiersze i kolumny z tabeli tylko wtedy, gdy sprawdzasz małą tabelę (na przykład tabelę referencyjną). W przeciwnym razie może to zająć dużo czasu, podczas gdy możemy potrzebować danych z kilku kolumn i wierszy z większej tabeli.

Znajdź wszystkie wiersze z tabeli BookType, używając nazwy tabeli

Jest lepszy sposób na zapytanie tabeli. Nazywamy tabelę i łączymy ją ze wszystkimi kolumnami, jak pokazano poniżej:

-- View all data from the BookType table using bt alias
SELECT bt.* FROM dbo.BookType bt

Wyświetl wybrane kolumny z tabeli referencyjnej

Korzystanie z nazw tabel przynosi więcej korzyści. Po pierwsze, możemy szybko wybrać żądaną kolumnę z tabeli. Dzięki temu korzystanie z tabel i ograniczonych kolumn jest bardziej przejrzyste, ponieważ w większości przypadków potrzebujemy tylko niektórych kolumn.

Oto przykład pobierania identyfikatorów i nazw tylko z BookType tabela:

-- View book type id and name columns from the reference table
SELECT bt.BookTypeId,bt.Name FROM dbo.BookType bt

Wynik:

Poprawa składni SELECT

W związku z tym, w oparciu o powyższe informacje, możemy poprawić składnię SELECT w następujący sposób:

SELECT t.<column1>,t.<column2> FROM <TableName> t

Sortuj dane według kolumny nazw przy użyciu kolejności według klauzuli

Zestaw wyników można sortować na podstawie określonej kolumny lub zestawu kolumn. Sortowanie danych daje inny punkt widzenia.

Użycie Zamów do klauzula w tym przypadku to:

SELECT t.<column1>,t.<column2> FROM <TableName> t order by t.<column1>

Na przykład chcemy zobaczyć typy książek uporządkowane według nazwy typu (w porządku alfabetycznym). W tym przypadku używamy klauzuli Order By w skrypcie instrukcji SELECT w następujący sposób:

-- View book types (name) sorted by type name 
SELECT bt.Name FROM dbo.BookType bt ORDER BY bt.Name

Dane wyjściowe to:

Sortuj dane według kolumny nazw w kolejności malejącej

Możemy również posortować dane w kolejności malejącej zgodnie z wymaganiami. Na przykład chcemy zobaczyć listę wszystkich typów książek na podstawie kolumny Nazwa w kolejności malejącej (od Z do A). Składnia będzie następująca:

SELECT t.<column1>,t.<column2> FROM <TableName> t order by t.<column1> desc

Skrypt T-SQL wygląda następująco:

-- View book types (name) sorted by a type name in descending order (from Z to A)
SELECT bt.Name FROM dbo.BookType bt ORDER BY bt.Name desc

Zestaw wyników znajduje się poniżej:

Wyświetl TOP N rekordów z tabeli

Na koniec możemy wybrać żądaną liczbę wierszy do pobrania z bazy danych za pomocą klauzuli TOP. Po tej klauzuli musimy podać wymagany numer:

SELECT Top N t.<column1>,t.<column2> FROM <TableName> t 

Jednak klauzula TOP bez zamówienia nie jest najlepszą opcją. Musimy określić kolejność kolumn do rozważenia podczas wybierania pierwszych n wierszy.

Tutaj możemy poprawić powyższą składnię w następujący sposób:

SELECT Top N t.<column1>,t.<column2> FROM <TableName> t order by <column> Desc/Asc

Pamiętaj, że musimy wspomnieć o kolejności malejącej, używając DESC na końcu. Jednak kolejność rosnąco nie jest obowiązkowa – jest to opcja domyślna.

Zobaczmy dwa najlepsze typy książek uporządkowane według nazwy w kolejności malejącej:

--View Top 2 types of the books ordered by name in descending order (from Z to A)
SELECT TOP 2 bt.Name FROM dbo.BookType bt 
ORDER BY bt.Name DESC

Dane wyjściowe to:

Ważna wskazówka na temat TOP N: użyj klauzuli TOP N (z kolejnością według), aby wyświetlić tabelę, zamiast wyświetlać wszystkie wiersze tabeli, jeśli chcesz szybko sprawdzić dane znane jako zajawka.

W scenariuszach życia zawodowego klauzula Top N służy do aktualizacji dużych porcji danych z dużej tabeli krok po kroku.

Teraz pomyślnie przeszukaliśmy tabelę bazy danych SQL. Poza tym zapoznaliśmy się z kilkoma wskazówkami dotyczącymi uruchamiania zapytań jak profesjonalista i nauczyliśmy się kilku najlepszych praktyk dotyczących pisania zapytań SQL.

Praktyka dotycząca tabel referencyjnych DB

Teraz możesz pisać, uruchamiać i zwiększać efektywność zapytań SQL w dowolnej tabeli. Wypróbuj następujące ćwiczenia, aby poprawić nowe umiejętności:

  1. Spróbuj napisać skrypt, aby wyświetlić identyfikator typu książki (BookTypeId ) ze szczegółami (Szczegóły ) tylko kolumny.
  2. Spróbuj posortować odnośnik BookType tabela według identyfikatorów (BookTypeId ) w porządku malejącym (od 3 do 1).
  3. Spróbuj pobrać 2 górne wiersze z BookType tabela zawierająca tylko identyfikator (BookTypeId ) i szczegóły (Szczegóły ) typu książki posortowane według Szczegółów kolumna.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmniejsz liczbę wywołań bazy danych, aby poprawić wydajność witryny

  2. Jak upewnić się, że bazy danych nie mają pofragmentowanych indeksów

  3. Monitorowanie kopii zapasowych w różnych instancjach

  4. Wprowadzenie do auto_explain:Jak automatycznie rejestrować wolne plany zapytań Postgres

  5. Jak używać klauzuli HAVING w SQL