Тук създаваме три таблици в SQL Server, след което анализираме скрипта, който ги е създал. Изпълняваме и друг скрипт, за да проверим дали таблицата е създадена.
По-рано създадохме база данни от скрипт. Въпреки това базата данни е празна база данни - тя не съдържа таблици или данни.
Сега ще създадем някои таблици за нашата база данни.
Първо, за освежаване, ето какво направихме досега:
CREATE DATABASE Music;
Това създаде празна база данни. Ако все още не сте го направили, стартирайте този скрипт.
Сега стартирайте следния скрипт:
USE Music; CREATE TABLE Artists ( ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY, ArtistName nvarchar(255) NOT NULL, ActiveFrom date ); GO CREATE TABLE Genres ( GenreId int IDENTITY(1,1) NOT NULL PRIMARY KEY, Genre nvarchar(50) NOT NULL ); CREATE TABLE Albums ( AlbumId int IDENTITY(1,1) NOT NULL PRIMARY KEY, AlbumName nvarchar(255) NOT NULL, ReleaseDate date NOT NULL, ArtistId int NOT NULL, GenreId int NOT NULL CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId) REFERENCES dbo.Artists (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION );
Този скрипт добавя три таблици към базата данни. Таблиците се наричат Artists
, Genres
и Albums
.
Ето резултата в SQL Operations Studio/Azure Data Studio:
Всеки GUI инструмент ще покаже таблиците по почти същия начин. Всяка таблица може да бъде разширена, за да разкрие нейните колони, както и всички индекси, тригери, ключове и т.н. Можете също да разширите Колоните възел, за да разкрие списъка с колони и техните типове данни, както и всички ограничения, които са били посочени.
Обяснение на CREATE TABLE
Изявление
Скриптът, който току-що изпълнихме, се състои от три CREATE TABLE
изрази — всеки от тях създава различна таблица. Скриптът добавя и ограничение за външен ключ, но ще го разгледаме по-късно.
Засега нека анализираме първия CREATE TABLE
изявление в нашия скрипт:
USE Music; CREATE TABLE Artists ( ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY, ArtistName nvarchar(255) NOT NULL, ActiveFrom date ); GO
Този SQL израз създава таблица, наречена Artists
с три колони, наречени ArtistId
, ArtistName
и ActiveFrom
. Дефиницията на всяка колона започва с нейното име, последвано от нейния тип данни и всички ограничения, които трябва да бъдат приложени към тази колона.
Ето по-подробно описание "ред по ред":
USE Music;
- Тази част всъщност не е част от
CREATE TABLE
изявление. Той е там само за превключване към Музика база данни. Може да има много бази данни на сървъра и искаме да сме сигурни, че създаваме таблиците в правилната база данни. Нямате нужда от този ред, ако вече работите в правилната база данни. CREATE TABLE Artists (
- Това е началото на
CREATE TABLE
изявление. Следва името на таблицата (в този случайArtists
), последвано от първата от скобите, които обхващат дефиницията на таблицата. ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
- След това дефинираме първата колона. В този случай го наричаме
ArtistId
, посочете неговия тип данни като цяло число (int
), задайте го като колона за идентичност (тази колона ще предостави уникалния идентификатор за таблицата и стойността ще се увеличава с всеки добавен ред),(1,1)
означава, че стойността започва от 1 и се увеличава с 1,NOT NULL
означава, че полето не може да съдържа нулеви стойности иPRIMARY KEY
задава тази колона като първичен ключ за таблицата. първичен ключ е колона, която е конфигурирана като поле за уникален идентификатор за таблицата. ArtistName nvarchar(255) NOT NULL,
- Следващата колона се нарича
ArtistName
и неговият тип данни еnvarchar(255)
, което означава, че приема Unicode низови данни с променлива дължина с максимална дължина от 255 знака. Ние също така задаваме тази колона наNOT NULL
така че не може да съдържа нулеви записи. ActiveFrom date
- Последната колона се нарича
ActiveFrom
и го настроихме да приема тип данниdate
);
- След това използваме
)
за да затворите дефиницията и;
за да завършите изявлението (точката и запетаята е терминатор на израза). GO
- Сигнализира края на партида Transact-SQL оператори. Това всъщност не е изявление на Transact-SQL. Това е команда, разпозната от помощните програми sqlcmd и osql и редактора на код на SQL Server Management Studio, за да сигнализира за края на партида Transact-SQL изрази.
Как да извлечете информация за таблицата, когато използвате инструмент за команден ред
Когато използвате инструмент за команден ред, нямате лукса да виждате таблиците на базата си данни, разположени в страничния панел, чакащи да бъдат разширени с едно щракване. Но това не означава, че не можете да преглеждате информация за вашите таблици или други обекти на базата данни.
Когато използвате инструмент за команден ред, можете да изпълните следното изявление, за да покажете информация за таблиците в горната база данни:
USE Music; SELECT column_name, data_type, character_maximum_length, is_nullable FROM information_schema.columns;Резултат
column_name data_type character_maximum_length is_nullable ----------- --------- ------------------------ ----------- ArtistId int null NO ArtistName nvarchar 255 NO ActiveFrom date null YES GenreId int null NO Genre nvarchar 50 NO AlbumId int null NO AlbumName nvarchar 255 NO ReleaseDate date null NO ArtistId int null NO GenreId int null NO 10 row(s) returned Executed in 1 ms
Въпросната таблица е в базата данни, наречена Музика затова първо преминаваме към него.
Можете също да го стесните до конкретна таблица, като използвате WHERE
клауза:
USE Music; SELECT column_name, data_type, character_maximum_length, is_nullable FROM information_schema.columns WHERE table_name = 'Artists';Резултат
column_name data_type character_maximum_length is_nullable ----------- --------- ------------------------ ----------- ArtistId int null NO ArtistName nvarchar 255 NO ActiveFrom date null YES 3 row(s) returned Executed in 1 ms
Има много повече полета, които могат да бъдат върнати от information_schema.columns
. Можете да използвате SELECT *
да ги върнете всички, ако желаете.
Методът на командния ред за извличане на информация от таблицата също работи при използване на GUI инструмент (в края на краищата те са просто SQL изрази). Можете да въведете едни и същи SQL изрази, за да извлечете едни и същи данни, независимо дали използвате sql-cli, sqlcmd, SSMS, Azure Data Studio, DBeaver или друг инструмент за управление на SQL Server:
GO
Команда
Може да се наложи да добавите GO
до края на скрипта (при използване на sqlcmd например).
Много реда
Може да откриете, че получавате грешка, ако се опитате да разпространите горните скриптове на няколко реда с инструмент за команден ред.
Ако случаят е такъв, опитайте да добавите обратна наклонена черта в края на всеки ред. Като това:
USE Music; \ SELECT column_name, data_type, character_maximum_length, is_nullable \ FROM information_schema.columns;
Ако не ви харесва идеята да добавяте обратна наклонена черта, друга опция е да запишете многоредовия скрипт в .sql файл, след което да го стартирате от командния ред.
Методът за изпълнение на скрипт от командния ред ще зависи от помощната програма на командния ред, която използвате.
Ето как да използвате sqlcmd, за да стартирате файл, записан на машина с Windows:
sqlcmd -S myServer\instanceName -i C:\myScript.sql
И ето как да използвате sql-cli, за да стартирате файл, записан на Mac:
.run /myScript.sql
Очевидно пълният път и имената на файловете ще зависят от името на файла и къде сте го запазили.