Поделиться через


Урок 1. Создание объектов базы данных и отправка запросов к ним

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure платформенная система аналитики (PDW)

Примечание.

Схема обучения Transact-SQL предоставляет более подробное содержимое, а также практические примеры.

На этом занятии вы узнаете, как создать базу данных, создать таблицу в базе данных и получить доступ к данным таблицы и изменить их. Поскольку этот урок является введением в использование Transact-SQL, он не использует или описывает множество вариантов, доступных для этих инструкций.

Инструкции Transact-SQL могут быть написаны и пересланы ядру СУБД следующими способами:

  • С помощью СРЕДЫ SQL Server Management Studio. В этом руководстве предполагается, что вы используете Management Studio, но вы также можете использовать Management Studio Express, которая доступна как бесплатная загрузка из Центра загрузки Майкрософт.

  • Посредством программы sqlcmd.

  • Соединившись из создаваемого приложения.

Код выполняется на ядро СУБД таким же образом и с одинаковыми разрешениями независимо от того, как вы отправляете инструкции кода.

Чтобы выполнить инструкцию языка Transact-SQL в Management Studio, откройте Management Studio и подключитесь к экземпляру ядра СУБД SQL Server.

Необходимые компоненты

Для работы с этим руководством необходима среда SQL Server Management Studio и доступ к экземпляру SQL Server.

Если у вас нет экземпляра SQL Server, создайте его. Чтобы создать экземпляр, выберите свою платформу по следующим ссылкам. При выборе проверки подлинности SQL используйте учетные данные SQL Server.

Создание базы данных

Как и многие инструкции Transact-SQL, инструкция CREATE DATABASE имеет обязательный параметр: имя базы данных. Кроме этого, у инструкции CREATE DATABASE имеется ряд необязательных параметров, таких как расположение на диске, где требуется хранить файлы базы данных. При выполнении CREATE DATABASE без необязательных параметров SQL Server использует значения по умолчанию для многих из этих параметров.

  1. В окне Редактор запросов введите, но не выполните следующий код:

    CREATE DATABASE TestData
    GO
    
  2. С помощью указателя выделите слова CREATE DATABASEи нажмите клавишу F1. Статья CREATE DATABASE должна открыться. Таким же способом можно найти полный синтаксис инструкции CREATE DATABASE и других инструкций, используемых в данном учебнике.

  3. В редакторе запросов нажмите клавишу F5 , чтобы выполнить инструкцию и создать базу данных с именем TestData.

При создании базы данных SQL Server создает копию model базы данных и переименовывает копию в имя базы данных. Эта операция обычно занимает несколько секунд, если только с помощью дополнительного параметра не указан большой исходный размер базы данных.

Примечание.

Когда в одном пакете представлено несколько инструкций, они разделяются с помощью ключевого слова GO. Ключевое слово GO является необязательным, если в пакете содержится только одна инструкция.

Создание таблицы

Область применения: SQL Server База данных SQL Azure Azure Synapse Analytics Analytics Platform System (PDW)

Чтобы создать таблицу, нужно указать имя таблицы, имена и типы данных для каждого столбца таблицы. Также рекомендуется указывать, допускаются ли значения NULL для каждого из столбцов. Для создания таблицы необходимо иметь разрешение CREATE TABLE и разрешение ALTER SCHEMA для схемы, которая будет содержать таблицу. У предопределенных ролей базы данных db_ddladmin эти разрешения.

Большинство таблиц имеют первичный ключ, состоящий из одной или нескольких столбцов таблицы. Первичный ключ всегда уникален. Ядро СУБД применяет ограничение, которое невозможно повторить в таблице любым значением первичного ключа.

Список типов данных и ссылки на их описание см. в разделе Типы данных (Transact-SQL).

Примечание.

Ядро СУБД можно установить как конфиденциальный регистр или не учитывает регистр. Если ядро СУБД устанавливается в качестве конфиденциального регистра, имена объектов всегда должны иметь одинаковый регистр. Например, таблица с именем OrderData будет отличаться от таблицы ORDERDATA. Если ядро СУБД устанавливается как конфиденциальный регистр, эти две таблицы считаются одной и той же таблицей, и это имя может использоваться только один раз.

Переключение соединения редактора запросов на базу данных TestData

В окне редактора запросов введите и выполните следующий код, чтобы изменить соединение на базу данных TestData .

USE TestData
GO

Создание таблицы

В окне редактора запросов введите и выполните следующий код, чтобы создать таблицу Products. Столбцы таблицы имеют имена ProductID, ProductName, Priceи ProductDescription. Столбец ProductID является первичным ключом таблицы. int, varchar(25), moneyи varchar(max) . Только столбцы Price и ProductionDescription могут быть пустыми при вставке или изменении строки. Данная инструкция содержит необязательный элемент (dbo.), называемый схемой. Схема — это объект базы данных, к которому принадлежит таблица. Если вы являетесь администратором, схемой по умолчанию будет схема dbo . dbo означает владельца базы данных.

CREATE TABLE dbo.Products
    (ProductID int PRIMARY KEY NOT NULL,
    ProductName varchar(25) NOT NULL,
    Price money NULL,
    ProductDescription varchar(max) NULL)
GO

Вставка данных в таблицу и их обновление

Теперь, когда вы создали таблицу Products , вы можете вставить данные в таблицу с помощью инструкции INSERT. После вставки данных содержимое строки изменяется с помощью инструкции UPDATE. Предложение WHERE инструкции UPDATE используется для ограничения обновления до одной строки. Четыре оператора введите следующие данные.

ProductID НаименованиеПродукта Цена, ОписаниеПродукта
1 Зажим 12,48 Workbench clamp
50 Screwdriver 3,17 Flat head
75 Tire Bar Tool for changing tires.
3000 3 mm Bracket 0,52

Базовый синтаксис: INSERT, имя таблицы, список столбцов, VALUES, а затем список добавляемых значений. Два дефиса перед строкой указывают на то, что строка является комментарием, а текст игнорируется компилятором. В этом случае примечание описывает возможные варианты синтаксиса.

Вставка данных в таблицу

  1. Выполните следующую инструкцию, чтобы добавить строку в таблицу Products , которая была создана в предыдущей задаче.

    -- Standard syntax
    INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription)
        VALUES (1, 'Clamp', 12.48, 'Workbench clamp')
    GO
    

    Если вставка выполнена, перейдите к следующему шагу.

    Если вставка завершается сбоем, это может быть вызвано тем, что в таблице Product уже есть строка с таким ИД продукта. Чтобы продолжить, удалите все строки в таблице и повторите предыдущий шаг. TRUNCATE TABLE удаляет все строки в таблице.

    Выполните следующую команду, чтобы удалить все строки в таблице:

    TRUNCATE TABLE TestData.dbo.Products;
    GO
    

    После усечения таблицы повторите команду INSERT на этом шаге.

  2. В следующей инструкции показано, как можно изменить порядок, в котором приведены параметры, изменив расположение ProductID и ProductName одновременно как в списке полей (в круглых скобках), так и в списке значений.

    -- Changing the order of the columns
    INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription)
        VALUES ('Screwdriver', 50, 3.17, 'Flat head')
    GO
    
  3. Следующая инструкция показывает, что имена столбцов перечислять не обязательно, если значения перечислены в нужном порядке. Этот синтаксис распространен, но не рекомендуется, так как для других пользователей может быть сложнее понять код. NULL указан для столбца Price , так как цена на этот продукт еще не известна.

    -- Skipping the column list, but keeping the values in order
    INSERT dbo.Products
        VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.')
    GO
    
  4. Имя схемы указывать не обязательно, пока доступ и изменение таблицы осуществляются с помощью схемы по умолчанию. Поскольку в столбце ProductDescription разрешены значения NULL и значение для столбца не приведено, имя и значение столбца ProductDescription в инструкции могут быть полностью опущены.

    -- Dropping the optional dbo and dropping the ProductDescription column
    INSERT Products (ProductID, ProductName, Price)
        VALUES (3000, '3 mm Bracket', 0.52)
    GO
    

Обновление таблицы продуктов

Введите и выполните следующую инструкцию UPDATE , чтобы изменить значение ProductName второго продукта со значения Screwdriverна значение Flat Head Screwdriver.

UPDATE dbo.Products
    SET ProductName = 'Flat Head Screwdriver'
    WHERE ProductID = 50
GO

Чтение данных из таблицы

Для чтения данных в таблице используется инструкция SELECT. Инструкция SELECT является одной из наиболее важных инструкций Transact-SQL, и для нее существует много разновидностей синтаксиса. В этом руководстве вы будете работать с пятью основными версиями.

Чтение данных в таблице

  1. Чтобы прочитать данные из таблицы Products , введите и выполните следующие инструкции.

    -- The basic syntax for reading data from a single table
    SELECT ProductID, ProductName, Price, ProductDescription
        FROM dbo.Products
    GO
    
  2. Чтобы выбрать все столбцы в таблице, можно использовать звездочку (*). Звездочка используется для нерегламентированных запросов. В постоянном коде укажите список всех столбцов, чтобы инструкция возвращала нужные столбцы, даже если какой-то столбец будет добавлен в таблицу позднее.

    -- Returns all columns in the table
    -- Does not use the optional schema, dbo
    SELECT * FROM Products
    GO
    
  3. Вы можете опустить столбцы, которые не нужно возвращать. Столбцы возвращаются в порядке их перечисления.

    -- Returns only two of the columns from the table
    SELECT ProductName, Price
        FROM dbo.Products
    GO
    
  4. Чтобы ограничить количество строк, возвращаемых пользователю, используйте предложение WHERE .

    -- Returns only two of the records in the table
    SELECT ProductID, ProductName, Price, ProductDescription
        FROM dbo.Products
        WHERE ProductID < 60
    GO
    
  5. Можно работать со значениями столбцов, по мере того как столбцы возвращаются. В следующем примере выполняется математическая операция над столбцом Price . Столбцы, которые были изменены таким образом, не имеют имени, если только вы не указали его с помощью ключевого AS слова.

    -- Returns ProductName and the Price including a 7% tax
    -- Provides the name CustomerPays for the calculated column
    SELECT ProductName, Price * 1.07 AS CustomerPays
        FROM dbo.Products
    GO
    

Полезные функции в инструкции SELECT

Сведения о некоторых функциях, которые можно использовать для работы с данными в инструкциях SELECT, см. в следующих статьях:

Создание представлений и хранимых процедур

Представление является хранимой инструкцией SELECT, а хранимая процедура представляет собой одну или более инструкций Transact-SQL, выполняемых в виде пакета.

Представления запрашиваются как таблицы и не принимают параметры. Хранимые процедуры сложнее, чем представления. Хранимые процедуры содержат как входные, так и выходные параметры и могут содержать инструкции, которые управляют потоком кода, например IF и WHILE. Использование хранимых процедур для всех повторяющихся действий в базе данных является хорошим стилем программирования.

В этом примере вы используете CREATE VIEW для создания представления, которое выбирает только два столбца в Products таблице. Затем вы используете CREATE PROCEDURE для создания хранимой процедуры, которая принимает параметр цены и возвращает только те продукты, которые стоят меньше указанного значения параметра.

Создание представления

Выполните следующую инструкцию, создающую представление, которое выполняет инструкцию select и возвращает названия и цены продуктов пользователю.

CREATE VIEW vw_Names
   AS
   SELECT ProductName, Price FROM Products;
GO

Тестирование представления

С представлениями обращаются так же, как с таблицами. Используйте инструкцию SELECT , чтобы получить доступ к представлению.

SELECT * FROM vw_Names;
GO

Создание хранимой процедуры

В следующем примере создается хранимая процедура pr_Namesс входным параметром @VarPrice типа money. Эта хранимая процедура печатает инструкцию Products less than , соединенную операцией сцепления с входным параметром, тип которого преобразуется из money в varchar(10) . Затем процедура выполняет инструкцию SELECT на представлении, передавая входной параметр в предложение WHERE . Возвращаются все продукты, цена которых меньше значения входного параметра.

CREATE PROCEDURE pr_Names @VarPrice money
   AS
   BEGIN
      -- The print statement returns text to the user
      PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10));
      -- A second statement starts here
      SELECT ProductName, Price FROM vw_Names
            WHERE Price < @VarPrice;
   END
GO

Тестирование хранимой процедуры

Чтобы выполнить хранимую процедуру, введите и выполните следующую инструкцию. Эта процедура должна возвратить названия двух продуктов, введенных в таблицу Products на занятии 1, цена которых меньше 10.00.

EXECUTE pr_Names 10.00;
GO

Следующие шаги

В следующей статье вы узнаете, как настроить разрешения в объектах базы данных. Объекты, созданные в уроке 1, также будут использоваться в уроке 2.

Дополнительные сведения см. в следующей статье: