Тази статия ще се фокусира върху писането на SQL заявки към референтната таблица на базата данни с доста проста структура за разбиране и прилагане.
Освен това ще изясним концепциите зад писането на ефективни SQL заявки, заедно с някои съвети от професионалния живот.
Преди запитване на таблиците на базата данни
Тъй като тази статия е за запитване на таблици на база данни с помощта на SQL скриптове, читателите трябва да имат определен опит, за да разберат напълно концепциите и примерите. Трябва да имаме впечатлението как да препращаме таблица. Също така трябва да присъства необходимото оборудване:
Нуждаете се от:
- Основните познания за релационни бази данни и SQL.
- Сървър на база данни SQL, инсталиран локално или отдалечено.
- Инструменти за управление на бази данни като SQL Server Management Studio или dbForge Studio за SQL Server.
Трябва да можете да създадете примерна база данни (с помощта на предоставени скриптове), да се свържете със SQL Server и да стартирате с тази примерна база данни.
Преди да продължим да изпълняваме заявки към празна база данни, може да се наложи да се обърнете към предишната статия, посветена на темата, за да опресните знанията:
Как да напишете прости SQL заявки от празна база данни
Писане на SQL заявки, започвайки от справочни таблици
Трябва да напишем SQL заявки срещу примерна база данни, която съдържа две таблици. Планът е да видите данните от една от таблиците, известни като SQL референтна таблица. Забележка:Референтната таблица може да бъде всяка таблица, която не изисква данни от друга таблица.
Първо, трябва да разберем структурата на примерната база данни, за да я запитаме точно.
Пример за справочна таблица за база данни
Използваме примерен BookSimple2 база данни, която се състои от две таблици, BookType икнига .
BookType таблицата съдържа типовете книги, които да бъдат присвоени на книга. Ккнигата таблицата съдържа имена, видове и наличност (брой налични екземпляри) на книги.
Лесно е да се отгатне, че и двете таблици са свързани чрез ключове. Типът книга, съхранявана вКнига таблицата първоначално е дефинирана в BookType маса. Позволява поддържането на последователност и надеждност на данните.
Следователно, BookType таблицата е справочна таблица – тя предоставя своята справка (тип книга) към основната Книга таблица.
Разгледайте илюстрацията по-долу:
Ако не свържем книгата таблица сBookType за да получим типа на книгата, трябва да дефинираме необходимия тип всеки път, когато се съхранява нова книга. В резултат на това скоро ще възникнат грешки, защото съхраняваме един и същи тип отново и отново. Освен това в крайна сметка може да създадем много повече типове поради правописни грешки.
Да кажем, че ако пренебрегнем използването на референтни таблици и създадем само една основна таблица, може да използваме различни начини за представяне на един тип, като например Дизайн , Проектиране и Дизайн . Това обърква, особено при запитване и разбиране на данните.
Можете също да се обърнете към предишната статия за повече информация относно това как таблиците се свързват една с друга в SQL:
Научете дизайн на база данни със SQL Server Management Studio (SSMS) – част 2
Сега, когато виждате фона на използването на справочните таблици и основните таблици, можем да продължим към примерите.
Как да създадете справочна таблица в SQL
Отворете инструмента за разработка на база данни (това може да бъде SQL Server Management Studio или dbForge Studio за SQL Server) и се свържете с инсталирания екземпляр на SQL сървър.
Напишете следния скрипт срещу основната база данни, за да настроите примерна база данни BookSimple2 с две таблици:
-- 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
След като стартирате скрипта, можете да видите новосъздадената база данни в SSMS Object Explorer или секцията Database Explorer на dbForge Studio за SQL Server:
Как да препратите две таблици с външен ключ на SQL
Умишлено изключих частта от скрипта, която създава връзката между референтната таблица (BookType ) и основната маса (книга ) под формата на ключове.
Изпълнете следния скрипт срещу примерната база данни, за да свържете референтната таблица с основната таблица:
-- 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]);
Разгънете BookSimple2 база данни> Книга таблица> Клавиши папка:
Можем да видим, че двете таблици са успешно свързани.
По-горе е екранната снимка от SQL Server Management Studio. Изгледът обаче е абсолютно същият, ако преглеждате базата данни в Database Explorer на dbForge Studio за SQL Server.
Важен съвет относно избора на желаната база данни: Трябва да се уверите, че изпълнявате заявки към правилната база данни – примерната база данни. Следователно, изберете го от списъка с налични бази данни или изпълнете следния скрипт:
-- Select the sample SQL database to query it
USE BookSimple2
Важно! Използването на скрипт за избор на база данни не е приложимо, ако работите с облачна версия на SQL базата данни, известна като Azure SQL база данни.
Писане на първа заявка
За да направим заявка към таблиците на базата данни, трябва да имаме предвид само израза SELECT в следната форма:
SELECT * FROM <TableName>
Заменете
Инструкцията SELECT е много по-гъвкава, но засега ще се съсредоточим само върху това да видим всички записи (редове) на таблица.
Важен съвет за SQL :Не забравяйте, че SQL (особено визирайки T-SQL) не е чувствителен към малки и големи . То се отнася както за запазената в SQL дума (SELECT е същото като Избор ) или потребителски дефинирани имена (BookType е същото като booktype ) .
Преглед на всички редове от справочната таблица на BookType
Напишете следния скрипт срещу примерната база данни:
-- View all data from the BookType table
SELECT * FROM dbo.BookType
Резултатът е:
Можем да видим всички колони и редове от таблицата. Това е най-бързият метод за получаване на всички данни от таблица.
Важен съвет относно SELECT *: Трябва да използвате SELECT * за да получите всички редове и колони от таблица само когато отметнете малка таблица (като референтна таблица). В противен случай това може да отнеме много време, докато може да се нуждаем от данните за няколко колони и реда от по-голяма таблица.
Намерете всички редове от таблицата BookType, като използвате името на таблицата
Има по-добър начин да направите заявка в таблицата. Ние именуваме таблица и я свързваме с всички колони, както е показано по-долу:
-- View all data from the BookType table using bt alias
SELECT bt.* FROM dbo.BookType bt
Преглед на избраните колони от справочната таблица
Използването на имена на таблици носи повече ползи. Първо, можем бързо да изберем желаната колона от таблицата. След това прави използването на таблици и ограничени колони по-ясно, защото в повечето случаи се нуждаем само от някои колони.
Ето пример за получаване на идентификационни номера и имена само от BookType таблица:
-- View book type id and name columns from the reference table
SELECT bt.BookTypeId,bt.Name FROM dbo.BookType bt
Резултатът е:
Подобряване на синтаксиса SELECT
По този начин, въз основа на информацията, спомената по-горе, можем да подобрим синтаксиса SELECT, както следва:
SELECT t.<column1>,t.<column2> FROM <TableName> t
Сортирайте данните по колона с име, като използвате клаузата за подреждане
Можете да сортирате набора от резултати въз основа на конкретна колона или набор от колони. Сортирането на данните дава различна гледна точка.
Използването на Поръчай по клаузата в този случай е:
SELECT t.<column1>,t.<column2> FROM <TableName> t order by t.<column1>
Например, искаме да видим типовете книги, подредени по името на типа (по азбучен ред). В този случай използваме клаузата Order By в скрипта на оператора SELECT, както следва:
-- View book types (name) sorted by type name
SELECT bt.Name FROM dbo.BookType bt ORDER BY bt.Name
Резултатът е:
Сортирайте данните по колона с име в низходящ ред
Можем също да сортираме данните в низходящ ред според изискването. Например, искаме да видим списъка с всички типове книги въз основа на колоната Име в низходящ ред (от Z до A). Синтаксисът ще бъде:
SELECT t.<column1>,t.<column2> FROM <TableName> t order by t.<column1> desc
T-SQL скриптът е както следва:
-- 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
Резултатът е по-долу:
Преглед на TOP N записи от таблица
И накрая, можем да изберем желания брой редове, които да бъдат изтеглени от база данни, като използваме клаузата TOP. След тази клауза трябва да предоставим необходимия номер:
SELECT Top N t.<column1>,t.<column2> FROM <TableName> t
Въпреки това, ТОП клаузата без никакъв ред не е най-добрият вариант. Трябва да посочим реда на колоните, който да вземем предвид, когато избираме първите N редове.
Тук можем да подобрим горния синтаксис, както следва:
SELECT Top N t.<column1>,t.<column2> FROM <TableName> t order by <column> Desc/Asc
Не забравяйте, че трябва да споменем низходящия ред, като използваме DESC накрая. Възходящият ред обаче не е задължителен за споменаване – това е опцията по подразбиране.
Нека разгледаме първите 2 типа книги, подредени по име в низходящ ред:
--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
Резултатът е:
Важен съвет относно ТОП N: използвайте клаузата TOP N (с поръчка по), за да видите таблица, вместо да преглеждате всички редове на таблицата, ако искате бързо да проверите данните, известни като кратък поглед.
В професионалните житейски сценарии клаузата Top N служи за актуализиране на големи парчета данни от голяма таблица на стъпки.
Сега успешно поискахме таблицата на SQL база данни. Освен това се запознахме с някои съвети за изпълнение на заявки като професионалист и научихме някои най-добри практики за писане на SQL заявки.
Практика за справочна таблица на DB
Сега можете да пишете, изпълнявате и повишавате ефективността на SQL заявките спрямо всяка таблица. Опитайте следните упражнения, за да подобрите новите умения:
- Опитайте да напишете скрипт, за да видите идентификатора на типа книга (BookTypeId ) с подробностите (Подробности ) само колони.
- Опитайте да сортирате препратката BookType таблица по идентификатори (BookTypeId ) в низходящ ред (от 3 до 1).
- Опитайте да получите първите 2 реда от BookType таблица, включваща само идентификатор (BookTypeId ) и подробности (Подробности ) от типа книга, сортирана по Подробности колона.