Урок 1. Создание объектов базы данных и отправка запросов к нимLesson 1: Create and query database objects

ОБЛАСТЬ ПРИМЕНЕНИЯ: SQL Server База данных SQL Azure Azure Synapse Analytics (Хранилище данных SQL) Parallel Data Warehouse

На этом занятии вы узнаете, как создать базу данных, создать таблицу в базе данных и получить доступ к данным таблицы и изменить их.This lesson shows you how to create a database, create a table in the database, and then access and change the data in the table. Поскольку это занятие является введением к использованию языка Transact-SQLTransact-SQL, в нем не используются и не описываются многие параметры, доступные для этих инструкций.Because this lesson is an introduction to using Transact-SQLTransact-SQL, it does not use or describe the many options that are available for these statements.

Transact-SQLTransact-SQL могут быть написаны и пересланы компоненту Компонент Database EngineDatabase Engine следующими способами:statements can be written and submitted to the Компонент Database EngineDatabase Engine in the following ways:

  • При помощи среды SQL Server Management StudioSQL Server Management Studio.By using SQL Server Management StudioSQL Server Management Studio. Предполагается, что вы используете среду Среда Management StudioManagement Studio, но можно также использовать среду Среда Management StudioManagement Studio Express, которая может быть загружена бесплатно с веб-узла центра загрузки Майкрософт.This tutorial assumes that you are using Среда Management StudioManagement Studio, but you can also use Среда Management StudioManagement Studio Express, which is available as a free download from the Microsoft Download Center.

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

  • Соединившись из создаваемого приложения.By connecting from an application that you create.

Исходный код исполняется в компоненте Компонент Database EngineDatabase Engine таким же образом и с теми же разрешениями, независимо от того, как был передан исходный код инструкций.The code executes on the Компонент Database EngineDatabase Engine in the same way and with the same permissions, regardless of how you submit the code statements.

Чтобы выполнить инструкцию языка Transact-SQLTransact-SQL в среде Среда Management StudioManagement Studio, откройте среду Среда Management StudioManagement Studio и соединитесь с экземпляром компонента Компонент SQL Server Database EngineSQL Server Database Engine.To run Transact-SQLTransact-SQL statements in Среда Management StudioManagement Studio, open Среда Management StudioManagement Studio and connect to an instance of the Компонент SQL Server Database EngineSQL Server Database Engine.

Предварительные требованияPrerequisites

Для работы с этим руководством необходима среда SQL Server Management Studio и доступ к экземпляру SQL Server.To complete this tutorial, you need SQL Server Management Studio and access to a SQL Server instance.

Если у вас нет экземпляра SQL Server, создайте его.If you don't have a SQL Server instance, create one. Чтобы создать экземпляр, выберите свою платформу по следующим ссылкам.To create one, select your platform from the following links. При выборе проверки подлинности SQL используйте учетные данные SQL Server.If you choose SQL Authentication, use your SQL Server login credentials.

Создание базы данныхCreate a database

Как и у многих инструкций языка Transact-SQLTransact-SQL, у инструкции CREATE DATABASE имеется обязательный параметр: имя базы данных. CREATE DATABASELike many Transact-SQLTransact-SQL statements, the CREATE DATABASE statement has a required parameter: the name of the database. CREATE DATABASE Кроме этого, у инструкции имеется ряд необязательных параметров, таких как расположение на диске, где требуется хранить файлы базы данных.also has many optional parameters, such as the disk location where you want to put the database files. При выполнении инструкции CREATE DATABASE без дополнительных параметров для многих из них SQL ServerSQL Server использует значения по умолчанию.When you execute CREATE DATABASE without the optional parameters, SQL ServerSQL Server uses default values for many of these parameters.

  1. В окне редактора запросов введите, но не выполняйте, следующий код:In a Query Editor window, type but do not execute the following code:

    CREATE DATABASE TestData  
    GO  
    
  2. С помощью указателя выделите слова CREATE DATABASEи нажмите клавишу F1.Use the pointer to select the words CREATE DATABASE, and then press F1. Должен открыться раздел CREATE DATABASE электронной документации на Microsoft SQL Server.The CREATE DATABASE topic in SQL Server Books Online should open. Таким же способом можно найти полный синтаксис инструкции CREATE DATABASE и других инструкций, используемых в данном учебнике.You can use this technique to find the complete syntax for CREATE DATABASE and for the other statements that are used in this tutorial.

  3. В редакторе запросов нажмите клавишу F5 , чтобы выполнить инструкцию и создать базу данных с именем TestData.In Query Editor, press F5 to execute the statement and create a database named TestData.

При создании базы данных сервер SQL ServerSQL Server создает копию базы данных model и присваивает ей указанное имя базы данных.When you create a database, SQL ServerSQL Server makes a copy of the model database, and renames the copy to the database name. Эта операция обычно занимает несколько секунд, если только с помощью дополнительного параметра не указан большой исходный размер базы данных.This operation should only take several seconds, unless you specify a large initial size of the database as an optional parameter.

Примечание

Когда в одном пакете представлено несколько инструкций, они разделяются с помощью ключевого слова GO.The keyword GO separates statements when more than one statement is submitted in a single batch. Ключевое слово GO является необязательным, если в пакете содержится только одна инструкция.GO is optional when the batch contains only one statement.

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

ОБЛАСТЬ ПРИМЕНЕНИЯ: SQL Server База данных SQL Azure Azure Synapse Analytics (Хранилище данных SQL) Parallel Data Warehouse

Чтобы создать таблицу, нужно указать имя таблицы, имена и типы данных для каждого столбца таблицы.To create a table, you must provide a name for the table, and the names and data types of each column in the table. Также рекомендуется указывать, допускаются ли значения NULL для каждого из столбцов.It is also a good practice to indicate whether null values are allowed in each column. Для создания таблицы необходимо иметь разрешение CREATE TABLE и разрешение ALTER SCHEMA для схемы, которая будет содержать таблицу.To create a table, you must have the CREATE TABLE permission, and the ALTER SCHEMA permission on the schema that will contain the table. Предопределенная роль базы данных db_ddladmin имеет эти разрешения.The db_ddladmin fixed database role has these permissions.

Большинство таблиц имеют первичный ключ, состоящий из одной или нескольких столбцов таблицы.Most tables have a primary key, made up of one or more columns of the table. Первичный ключ всегда уникален.A primary key is always unique. Компонент Компонент Database EngineDatabase Engine потребует выполнения условия неповторения значения первичного ключа в таблице.The Компонент Database EngineDatabase Engine will enforce the restriction that any primary key value cannot be repeated in the table.

Список типов данных и ссылки на их описание см. в разделе Типы данных (Transact-SQL).For a list of data types and links for a description of each, see Data Types (Transact-SQL).

Примечание

Компонент Компонент Database EngineDatabase Engine может быть установлен с учетом регистра и без учета регистра.The Компонент Database EngineDatabase Engine can be installed as case sensitive or non-case sensitive. Если компонент Компонент Database EngineDatabase Engine установлен с учетом регистра, имена объектов должны иметь одно и тоже имя.If the Компонент Database EngineDatabase Engine is installed as case sensitive, object names must always have the same case. Например, таблица с именем OrderData будет отличаться от таблицы ORDERDATA.For example, a table named OrderData is a different table from a table named ORDERDATA. Если компонент Компонент Database EngineDatabase Engine установлен без учета регистра, эти два имени таблицы будут рассматриваться как одна таблица, то есть имя может быть использовано только один раз.If the Компонент Database EngineDatabase Engine is installed as non-case sensitive, those two table names are considered to be the same table, and that name can only be used one time.

Переключение соединения редактора запросов на базу данных TestDataSwitch the Query Editor connection to the TestData database

В окне редактора запросов введите и выполните следующий код, чтобы изменить соединение на базу данных TestData .In a Query Editor window, type and execute the following code to change your connection to the TestData database.

USE TestData  
GO  

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

В окне редактора запросов введите и выполните следующий код, чтобы создать таблицу Products.In a Query Editor window, type and execute the following code to create a table named Products. Столбцы таблицы имеют имена ProductID, ProductName, Priceи ProductDescription.The columns in the table are named ProductID, ProductName, Price, and ProductDescription. Столбец ProductID является первичным ключом таблицы.The ProductID column is the primary key of the table. int, varchar(25), moneyи varchar(max) .int, varchar(25), money, and varchar(max) are all data types. Только столбцы Price и ProductionDescription могут быть пустыми при вставке или изменении строки.Only the Price and ProductionDescription columns can have no data when a row is inserted or changed. Данная инструкция содержит необязательный элемент (dbo.), называемый схемой.This statement contains an optional element (dbo.) called a schema. Схема — это объект базы данных, к которому принадлежит таблица.The schema is the database object that owns the table. Если вы являетесь администратором, схемой по умолчанию будет схема dbo .If you are an administrator, dbo is the default schema. dbo означает владельца базы данных.dbo stands for database owner.

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

Вставка данных в таблицу и их обновлениеInsert and update data in a table

После создания таблицы Products в нее можно вставлять данные с помощью инструкции INSERT.Now that you have created the Products table, you are ready to insert data into the table by using the INSERT statement. После вставки данных содержимое строки изменяется с помощью инструкции UPDATE.After the data is inserted, you will change the content of a row by using an UPDATE statement. Предложение WHERE предназначено для ограничения числа строк, изменяемых в процессе выполнения инструкции UPDATE до одной строки.You will use the WHERE clause of the UPDATE statement to restrict the update to a single row. Чтобы ввести следующие данные, потребуется четыре инструкции.The four statements will enter the following data.

ProductIDProductID ProductNameProductName ЦенаPrice ProductDescriptionProductDescription
11 ClampClamp 12,4812.48 Workbench clampWorkbench clamp
5050 ScrewdriverScrewdriver 3,173.17 Flat headFlat head
7575 Tire BarTire Bar Tool for changing tires.Tool for changing tires.
30003000 3 mm Bracket3 mm Bracket 0,520.52

Базовый синтаксис: INSERT, имя таблицы, список столбцов, VALUES, а затем список добавляемых значений.The basic syntax is: INSERT, table name, column list, VALUES, and then a list of the values to be inserted. Два дефиса в начале строки означают, что строка является примечанием и текст не будет обрабатываться компилятором.The two hyphens in front of a line indicate that the line is a comment and the text will be ignored by the compiler. В этом случае примечание описывает возможные варианты синтаксиса.In this case, the comment describes a permissible variation of the syntax.

Вставка данных в таблицуInsert data into a table

  1. Выполните следующую инструкцию, чтобы добавить строку в таблицу Products , которая была создана в предыдущей задаче.Execute the following statement to insert a row into the Products table that was created in the previous task.
-- Standard syntax  
INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription)  
    VALUES (1, 'Clamp', 12.48, 'Workbench clamp')  
GO   

Примечание

Если вставка выполнена, перейдите к следующему шагу.If the insert succeeds, proceed to the next step.

Если вставка завершается сбоем, это может быть вызвано тем, что в таблице Product уже есть строка с таким ИД продукта.If the insert fails, it may be because the Product table already has a row with that product ID in it. Чтобы продолжить, удалите все строки в таблице и повторите предыдущий шаг.To proceed, delete all the rows in the table and repeat the preceding step. TRUNCATE TABLE удаляет все строки в таблице.TRUNCATE TABLE deletes all the rows in the table.

Выполните следующую команду, чтобы удалить все строки в таблице:Run the following command to delete all the rows in the table:

TRUNCATE TABLE TestData.dbo.Products;
GO

После усечения таблицы повторите команду INSERT на этом шаге.After you truncate the table, repeat the INSERT command in this step.

  1. В следующей инструкции показано, как можно изменить порядок, в котором приведены параметры, изменив расположение ProductID и ProductName одновременно как в списке полей (в круглых скобках), так и в списке значений.The following statement shows how you can change the order in which the parameters are provided by switching the placement of the ProductID and ProductName in both the field list (in parentheses) and in the values list.
-- Changing the order of the columns  
INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription)  
    VALUES ('Screwdriver', 50, 3.17, 'Flat head')  
GO    
  1. Следующая инструкция показывает, что имена столбцов перечислять не обязательно, если значения перечислены в нужном порядке.The following statement demonstrates that the names of the columns are optional, as long as the values are listed in the correct order. Этот синтаксис является стандартным, но не рекомендуется, поскольку другим будет трудно понять ваш код.This syntax is common but is not recommended because it might be harder for others to understand your code. NULL указано в столбце Price , так как цена этого товара пока неизвестна.NULL is specified for the Price column because the price for this product is not yet known.
-- Skipping the column list, but keeping the values in order  
INSERT dbo.Products  
    VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.')  
GO  
  1. Имя схемы указывать не обязательно, пока доступ и изменение таблицы осуществляются с помощью схемы по умолчанию.The schema name is optional as long as you are accessing and changing a table in your default schema. Поскольку в столбце ProductDescription разрешены значения NULL и значение для столбца не приведено, имя и значение столбца ProductDescription в инструкции могут быть полностью опущены.Because the ProductDescription column allows null values and no value is being provided, the ProductDescription column name and value can be dropped from the statement completely.
-- Dropping the optional dbo and dropping the ProductDescription column  
INSERT Products (ProductID, ProductName, Price)  
    VALUES (3000, '3 mm Bracket', 0.52)  
GO  

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

Введите и выполните следующую инструкцию UPDATE , чтобы изменить значение ProductName второго продукта со значения Screwdriverна значение Flat Head Screwdriver.Type and execute the following UPDATE statement to change the ProductName of the second product from Screwdriver, to Flat Head Screwdriver.

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

Чтение данных из таблицыRead data from a table

Для чтения данных в таблице используется инструкция SELECT.Use the SELECT statement to read the data in a table. Инструкция SELECT является одной из наиболее важных инструкций Transact-SQLTransact-SQL , и для нее существует много разновидностей синтаксиса.The SELECT statement is one of the most important Transact-SQLTransact-SQL statements, and there are many variations in the syntax. В этом учебнике будет показана работа с пятью простыми вариантами.For this tutorial, you will work with five simple versions.

Чтение данных в таблицеRead the data in a table

  1. Чтобы прочитать данные из таблицы Products , введите и выполните следующие инструкции.Type and execute the following statements to read the data in the Products table.
-- The basic syntax for reading data from a single table  
SELECT ProductID, ProductName, Price, ProductDescription  
    FROM dbo.Products  
GO  
  1. Чтобы выбрать все столбцы в таблице, можно использовать звездочку (*).You can use an asterisk (*) to select all the columns in the table. Звездочка используется для нерегламентированных запросов.The asterisk is for ad hoc queries. В постоянном коде укажите список всех столбцов, чтобы инструкция возвращала нужные столбцы, даже если какой-то столбец будет добавлен в таблицу позднее.In permanent code, provide the column list so that the statement returns the predicted columns, even if a new column is added to the table later.
-- Returns all columns in the table  
-- Does not use the optional schema, dbo  
SELECT * FROM Products  
GO   
  1. Если нет необходимости возвращать определенные столбцы, их можно опустить.You can omit columns that you do not want to return. Столбцы возвращаются в том порядке, в котором они перечислены.The columns will be returned in the order that they are listed.
-- Returns only two of the columns from the table  
SELECT ProductName, Price  
    FROM dbo.Products  
GO    
  1. Чтобы ограничить количество строк, возвращаемых пользователю, используйте предложение WHERE .Use a WHERE clause to limit the rows that are returned to the user.
-- Returns only two of the records in the table  
SELECT ProductID, ProductName, Price, ProductDescription  
    FROM dbo.Products  
    WHERE ProductID < 60  
GO    
  1. Можно работать со значениями столбцов, по мере того как столбцы возвращаются.You can work with the values in the columns as they are returned. В следующем примере выполняется математическая операция над столбцом Price .The following example performs a mathematical operation on the Price column. Столбцы, изменяемые подобным образом, не имеют имени, если только имя не указывается с использованием ключевого слова AS .Columns that have been changed in this way will not have a name unless you provide one by using the AS keyword.
-- 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  

Полезные функции в инструкции SELECTUseful functions in a SELECT Statement

Сведения о работе с функциями, которые используются в инструкциях SELECT, см. в следующих разделах:For information about some functions that you can use to work with data in SELECT statements, see the following topics:

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

Представление является хранимой инструкцией SELECT, а хранимая процедура представляет собой одну или более инструкций Transact-SQLTransact-SQL , выполняемых в виде пакета.A view is a stored SELECT statement, and a stored procedure is one or more Transact-SQLTransact-SQL statements that execute as a batch.

Представления запрашиваются так же, как таблицы, и не принимают параметры.Views are queried like tables and do not accept parameters. Хранимые процедуры сложнее, чем представления.Stored procedures are more complex than views. Хранимые процедуры содержат как входные, так и выходные параметры и могут содержать инструкции, которые управляют потоком кода, например IF и WHILE.Stored procedures can have both input and output parameters and can contain statements to control the flow of the code, such as IF and WHILE statements. Использование хранимых процедур для всех повторяющихся действий в базе данных является хорошим стилем программирования.It is good programming practice to use stored procedures for all repetitive actions in the database.

В этом примере используется инструкция CREATE VIEW, чтобы создать представление, которое выбирает только два столбца в таблице Products .For this example, you will use CREATE VIEW to create a view that selects only two of the columns in the Products table. Затем с помощью инструкции CREATE PROCEDURE создается хранимая процедура, которая принимает цену в качестве параметра и возвращает только те продукты, цена которых меньше значения, указанного в качестве параметра.Then, you will use CREATE PROCEDURE to create a stored procedure that accepts a price parameter and returns only those products that cost less than the specified parameter value.

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

Выполните следующую инструкцию, создающую представление, которое выполняет инструкцию select и возвращает названия и цены продуктов пользователю.Execute the following statement to create a view that executes a select statement, and returns the names and prices of our products to the user.

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

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

С представлениями обращаются так же, как с таблицами.Views are treated just like tables. Используйте инструкцию SELECT , чтобы получить доступ к представлению.Use a SELECT statement to access a view.

SELECT * FROM vw_Names;  
GO   

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

В следующем примере создается хранимая процедура pr_Namesс входным параметром @VarPrice типа money.The following statement creates a stored procedure name pr_Names, accepts an input parameter named @VarPrice of data type money. Эта хранимая процедура печатает инструкцию Products less than , соединенную операцией сцепления с входным параметром, тип которого преобразуется из money в varchar(10) .The stored procedure prints the statement Products less than concatenated with the input parameter that is changed from the money data type into a varchar(10) character data type. Затем процедура выполняет инструкцию SELECT на представлении, передавая входной параметр в предложение WHERE .Then, the procedure executes a SELECT statement on the view, passing the input parameter as part of the WHERE clause. Возвращаются все продукты, цена которых меньше значения входного параметра.This returns all products that cost less than the input parameter value.

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    

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

Чтобы выполнить хранимую процедуру, введите и выполните следующую инструкцию.To test the stored procedure, type and execute the following statement. Эта процедура должна возвратить названия двух продуктов, введенных в таблицу Products на занятии 1, цена которых меньше 10.00.The procedure should return the names of the two products entered into the Products table in Lesson 1 with a price that is less than 10.00.

EXECUTE pr_Names 10.00;  
GO  

Дальнейшие действияNext steps

В следующей статье вы узнаете, как настроить разрешения в объектах базы данных.The next article teaches you how to configure permissions on database objects. Объекты, созданные в уроке 1, также будут использоваться в уроке 2.The objects created in lesson 1 will also be used in lesson 2.

Дополнительные сведения см. в следующей статье:Go to the next article to learn more: