sql >> Databáze >  >> RDS >> Database

Referenční tabulka SQL:Jak vytvářet a zapisovat základní dotazy

Tento článek se zaměří na psaní SQL dotazů proti referenční tabulce databáze s poměrně jednoduchou strukturou, kterou lze pochopit a implementovat.

Kromě toho se chystáme objasnit koncepty psaní efektivních SQL dotazů spolu s několika tipy pro profesní život.

Před dotazem na databázové tabulky

Protože tento článek je o dotazování databázových tabulek pomocí SQL skriptů, čtenáři by měli mít určité znalosti, aby plně porozuměli konceptům a příkladům. Musíme mít dojem, jak odkazovat na tabulku. Také musí být přítomno potřebné vybavení:

Potřebujete:

  1. Základní znalost relačních databází a SQL.
  2. Databázový server SQL nainstalovaný lokálně nebo vzdáleně.
  3. Nástroje pro správu databáze, jako je SQL Server Management Studio nebo dbForge Studio pro SQL Server.

Měli byste být schopni vytvořit ukázkovou databázi (s pomocí poskytnutých skriptů), připojit se k SQL Serveru a spustit s touto ukázkovou databází.

Než přistoupíme ke spouštění dotazů na prázdnou databázi, možná si budete muset prostudovat předchozí článek věnovaný tomuto tématu, abyste si obnovili znalosti:

Jak psát jednoduché SQL dotazy z prázdné databáze

Psaní SQL dotazů počínaje referenčními tabulkami

Potřebujeme napsat SQL dotazy proti ukázkové databázi, která obsahuje dvě tabulky. Plán je zobrazit data z jedné z tabulek známých jako referenční tabulka SQL. Poznámka:Referenční tabulkou může být jakákoli tabulka, která nevyžaduje data z jiné tabulky.

Nejprve musíme porozumět struktuře vzorové databáze, abychom ji mohli přesně dotazovat.

Příklad referenční tabulky databáze

Používáme ukázku BookSimple2 databáze, která se skládá ze dvou tabulek, BookType a rezervovat .

BookType tabulka obsahuje typy knih, které mají být ke knize přiřazeny. Kniha tabulka obsahuje názvy, typy a sklad (počet dostupných kopií) knih.

Je snadné uhodnout, že obě tabulky jsou propojeny pomocí klíčů. Typ knihy uložený v Knize tabulka je původně definována v BookType stůl. Umožňuje udržovat data konzistentní a spolehlivá.

Proto BookType tabulka je referenční tabulka – poskytuje svůj odkaz (typ knihy) na hlavní Knihu tabulka.

Podívejte se na níže uvedený obrázek:

Pokud nepropojíme Knihu tabulka s BookType abychom získali typ knihy, musíme při každém uložení nové knihy definovat potřebný typ. V důsledku toho se brzy vyskytnou chyby, protože ukládáme stále stejný typ. Navíc můžeme skončit vytvořením mnohem více typů kvůli pravopisným chybám.

Řekněme, že pokud ignorujeme použití referenčních tabulek a vytvoříme pouze jednu hlavní tabulku, můžeme použít různé způsoby reprezentace jednoho typu, například Design , Návrh a Návrhy . Je to matoucí, zvláště při dotazování a pochopení dat.

Můžete se také podívat na minulý článek, kde najdete další informace o vzájemném vztahu tabulek v SQL:

Naučte se návrh databáze pomocí SQL Server Management Studio (SSMS) – část 2

Nyní, když vidíte pozadí používání referenčních tabulek a hlavních tabulek, můžeme přejít k příkladům.

Jak vytvořit referenční tabulku v SQL

Otevřete nástroj pro vývoj databáze (může to být SQL Server Management Studio nebo dbForge Studio pro SQL Server) a připojte se k nainstalované instanci SQL serveru.

Napište následující skript proti hlavní databázi a nastavte vzorovou databázi BookSimple2 se dvěma tabulkami:

-- 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 spuštění skriptu můžete nově vytvořenou databázi zobrazit v Průzkumníku objektů SSMS nebo v části Průzkumník databáze v dbForge Studio pro SQL Server:

Jak odkazovat na dvě tabulky cizím klíčem SQL

Záměrně jsem vyloučil část skriptu, která vytváří vztah mezi referenční tabulkou (BookType ) a hlavní stůl (Kniha ) ve formě klíčů.

Chcete-li propojit referenční tabulku s hlavní tabulkou, spusťte následující skript proti ukázkové databázi:

-- 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]);

Rozbalte BookSimple2 databáze> Kniha tabulka> Klíče složka:

Vidíme, že tyto dvě tabulky jsou úspěšně propojeny.

Výše uvedené je snímek obrazovky z SQL Server Management Studio. Zobrazení je však úplně stejné, pokud si databázi prohlížíte v Průzkumníku databáze dbForge Studio pro SQL Server.

Důležitý tip pro výběr požadované databáze: Musíte zajistit, že spouštíte dotazy proti správné databázi – vzorové databázi. Vyberte ji proto ze seznamu dostupných databází nebo spusťte následující skript:

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

Důležité! Použití skriptu k výběru databáze nelze použít, pokud pracujete s cloudovou verzí databáze SQL známou jako Azure SQL Database.

Psaní prvního dotazu

Pro dotazování databázových tabulek musíme mít na paměti pouze příkaz SELECT v následujícím tvaru:

SELECT * FROM <TableName>

Nahraďte názvem existující tabulky a skript vám vrátí všechny záznamy (řádky) této tabulky.

Příkaz SELECT je mnohem flexibilnější, ale prozatím se zaměříme pouze na zobrazení všech záznamů (řádků) tabulky.

Důležitý tip ohledně SQL :Pamatujte, že SQL (zejména s odkazem na T-SQL) nerozlišuje malá a velká písmena . Týká se jak slova vyhrazeného pro SQL (SELECT je stejný jako Vybrat ) nebo uživatelem definované názvy (BookType je stejný jako booktype ) .

Zobrazit všechny řádky z referenční tabulky BookType

Napište následující skript proti ukázkové databázi:

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

Výstup je:

Vidíme všechny sloupce a řádky z tabulky. Je to zdaleka nejrychlejší metoda, jak získat všechna data z tabulky.

Důležitý tip k SELECT *: Měli byste použít SELECT * získat všechny řádky a sloupce z tabulky pouze při kontrole malé tabulky (například referenční tabulky). V opačném případě to může zabrat spoustu času, zatímco bychom mohli potřebovat data v několika sloupcích a řádcích z větší tabulky.

Najděte všechny řádky v tabulce BookType pomocí názvu tabulky

Existuje lepší způsob dotazování na tabulku. Pojmenujeme tabulku a svážeme ji se všemi sloupci, jak je uvedeno níže:

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

Zobrazit vybrané sloupce z referenční tabulky

Použití názvů tabulek přináší více výhod. Nejprve můžeme rychle vybrat požadovaný sloupec z tabulky. Potom je používání tabulek a omezených sloupců přehlednější, protože ve většině případů vyžadujeme pouze některé sloupce.

Zde je příklad získávání ID a jmen pouze z BookType tabulka:

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

Výsledek je:

Vylepšení syntaxe SELECT

Na základě výše uvedených informací tedy můžeme vylepšit syntaxi SELECT následovně:

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

Seřadit data podle sloupce názvu pomocí klauzule Order By

Sadu výsledků můžete seřadit na základě konkrétního sloupce nebo sady sloupců. Třídění dat poskytuje jiný úhel pohledu.

Použití Objednat podle klauzule v tomto případě je:

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

Chceme například vidět typy knih seřazené podle názvu typu (abecední pořadí). V tomto případě použijeme klauzuli Order By ve skriptu příkazu SELECT takto:

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

Výstup je:

Seřadit data podle sloupce názvu v sestupném pořadí

Údaje můžeme také seřadit sestupně podle požadavku. Chceme například vidět seznam všech typů knih podle sloupce Název v sestupném pořadí (Z až A). Syntaxe bude:

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

Skript T-SQL je následující:

-- 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

Sada výsledků je níže:

Zobrazit TOP N záznamů z tabulky

Nakonec můžeme pomocí klauzule TOP vybrat požadovaný počet řádků, které mají být vytaženy z databáze. Po této klauzuli musíme poskytnout požadované číslo:

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

Klauzule TOP bez jakéhokoli pořadí však není nejlepší variantou. Musíme určit pořadí sloupců, které je třeba vzít v úvahu při výběru prvních n řádků.

Zde můžeme vylepšit výše uvedenou syntaxi následovně:

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

Nezapomeňte, že musíme uvést sestupné pořadí pomocí DESC na konci. Vzestupné pořadí však není povinné uvádět – je to výchozí možnost.

Podívejme se na 2 nejlepší typy knih seřazené podle názvu v sestupném pořadí:

--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

Výstup je:

Důležitý tip k TOP N: použijte klauzuli TOP N (s pořadím podle) k zobrazení tabulky místo zobrazení všech řádků tabulky, pokud chcete rychle zkontrolovat data známá jako sneak peek.

Ve scénářích profesního života slouží klauzule Top N k aktualizaci velkých kusů dat z velké tabulky v krocích.

Nyní jsme úspěšně zadali dotaz na tabulku SQL databáze. Kromě toho jsme se seznámili s některými tipy, jak spouštět dotazy jako profesionál, a naučili jsme se některé osvědčené postupy pro psaní dotazů SQL.

Procvičování referenčních tabulek DB

Nyní můžete psát, spouštět a zvyšovat efektivitu SQL dotazů proti jakékoli tabulce. Vyzkoušejte následující cvičení ke zlepšení nových dovedností:

  1. Zkuste napsat skript pro zobrazení ID typu knihy (BookTypeId ) s podrobnostmi (Podrobnosti ) pouze sloupce.
  2. Zkuste seřadit referenci BookType tabulka podle ID (BookTypeId ) v sestupném pořadí (od 3 do 1).
  3. Zkuste získat 2 horní řádky z BookType tabulka obsahující pouze id (BookTypeId ) a podrobnosti (Podrobnosti ) typu knihy seřazené podle Detailu sloupec.

  1. Heroku Postgres:psql:FATAL:žádný záznam pg_hba.conf pro hostitele

  2. Při mapování sloupce PostgreSQL LTREE v režimu spánku se zobrazuje chyba

  3. SQLite - Vytvořte vztah

  4. SQL dotaz na odstranění tabulky v MySQL