Приветствую всех, сегодня рассмотрим примеры работы с переменными, а в конце я покажу как создать базу данных и таблицу.
Работа с целыми типами данных в T-SQL.
--*************************************************************************** -- Целые типы данных в T-SQL --*************************************************************************** -------------------------------------- Bit ---------------------------------- -- Целое без знака - Bit. Диапазон значений (0 или 1). -- При попытке присвоения значения отличного от 0 и 1, -- это значение будет неявно преобразовано в 1. PRINT 'Bit'; DECLARE @bit Bit = 0; PRINT @bit; SET @bit = 1; PRINT @bit; SET @bit = -4; -- (-4) будет неявно преобразовано в 1. PRINT @bit; -- bit = 1 ------------------------------------- TinyInt ------------------------------- -- Целое без знака TinyInt. Диапазон значений от 0 до 255. PRINT 'TinyInt'; DECLARE @tinyint TinyInt = 0; PRINT @tinyint; SET @tinyint = 25; PRINT @tinyint; SET @tinyint = 256; -- Ошибка присвоения: Арифметическое переполнение. PRINT @tinyint; -- Значение переменной @tinyint останется прежним. ----------------------------------- SmallInt -------------------------------- -- Целое со знаком SmallInt. Диапазон значений от -32 768 до 32 767. PRINT 'SmallInt'; DECLARE @smallint SmallInt = 32767; PRINT @smallint; SET @smallint = -32768; PRINT @smallint; -------------------------------------- Int ---------------------------------- -- Целое со знаком Int. Диапазон значений от -2 147 483 648 до 2 147 483 647. PRINT 'Int' DECLARE @int Int = 2147483647; PRINT @int; SET @int = -2147483648; PRINT @int; ------------------------------------ BigInt ---------------------------------- -- Целое со знаком BigInt. Диапазон значений от -(2^63) до 2^63-1. PRINT 'Bigint'; DECLARE @bigint Bigint = 9223372036854775807; PRINT @bigint; SET @bigint = -9223372036854775808; PRINT @bigint; ------------------------------------------------------------------------------
Работа с вещественными типами данных в T-SQL
--*************************************************************************** -- Вещественные типы данных в T-SQL --*************************************************************************** ------------------------------------- Float --------------------------------- -- Вещественное со знаком, с плавающей точкой Float. -- Диапазон значений от -1.79Е+308 до 1.79Е+308. -- Числовой тип данных с плавающей запятой записывается как Float(n), -- где n - определяет точность(по умолчанию n = 53) -- Для типа Float имеется только два вида точности: 7 и 15 знаков после запятой. -- 7 знаков - при n, в диапазоне от 1 до 24; (выделение 4 байт) -- 15 знаков - при n, в диапазоне от 25 до 53; (выделение 8 байт) PRINT 'Float' DECLARE @float float(24) = 1214782.123; PRINT @float; SET @float = 2147482435234412412.4321523598746737654; PRINT @float; ------------------------------------ Decimal -------------------------------- -- Вещественное со знаком, с фиксированной точкой Decimal (Numeric). -- Диапазон значений от -10^38+1 до 10^38-1. -- Числовой тип данных с фиксированной точкой Decimal записывается как Decimal(p, s), -- где p - определяет точность - максимальное количество знаков из которых состоит полное число -- (по умолчанию p = 18, максимальное значение p = 38, минимальное значение p = 1), -- a s - определяет масштаб - максимальное количество знаков после запятой. PRINT 'Decimal / Numeric' DECLARE @decimal Decimal(5, 3); -- p = 5, s = 3( не больше p-1) SET @decimal = 1.42; PRINT @decimal; SET @decimal = 2.234654; -- Произойдет округление дробной части. PRINT @decimal; SET @decimal = 41.12345; -- Значение округлится, т.к после запятой больше 3-х знаков. PRINT @decimal; ---------------------------------- SmallMoney ------------------------------- -- Вещественное со знаком, с фиксированной точкой SmallMoney. -- Диапазон значений от -214 748.3648 до 214 748.3647 PRINT 'SmallMoney'; DECLARE @smoney SmallMoney = 214748.3647; PRINT @smoney; SET @smoney = -214748.3648; PRINT @smoney; ------------------------------------- Money --------------------------------- -- Вещественное со знаком, с фиксированной точкой Money. -- Диапазон значений от -2^63 до 2^63-1 PRINT 'Money'; DECLARE @money Money = 1.4234; PRINT @money; SET @money = 2.234954; PRINT @money; -----------------------------------------------------------------------------
Работа с текстовыми типами данных в T-SQL
--*************************************************************************** -- Текстовые типы данных в T-SQL --*************************************************************************** -------------------------------------- Char --------------------------------- -- Текстовый тип данных записывается как Char, -- допустимое количество символов от 1 до 8000 символов. -- Текстовые типы данных записывается как Char(n), -- где n - определяет максимальное количество символов(максимально n = 8000). PRINT 'Char' DECLARE @char char(5)= 'Hello'; PRINT @char; SET @char = '1234dfghdf'; -- Часть строки "fghdf" не запишется, т.к. допустимое количество символов (5) PRINT @char; -------------------------------------- VarChar ------------------------------ -- Текстовый тип данных записывается как VarChar, -- диапазон значений от 1 до 2^31 символов. -- Текстовые типы данных записывается как VarChar(n/max), -- где n - определяет максимальное количество символов(максимально n = 8000), -- или же вместо n записывается max то максимальное количество символов становится 2^31. PRINT 'VarChar' DECLARE @vchar varchar(max)='Hello'; -- разрешено записывать 2^31 символов. PRINT @vchar; SET @vchar = '1234dfghdf'; PRINT @vchar; -------------------------------------- NChar -------------------------------- -- Текстовый тип данных в Unicode кодировке записывается как NChar, -- диапазон значений от 1 до 4000 символов. -- Текстовые типы данных записывается как NChar(n), -- где n - определяет максимальное количество символов(максимально n = 4000). -- Если количество вводимых символов меньше n то разница заполниться пробелами PRINT 'NChar' DECLARE @Nchar Nchar(7) = 'Привет!'; PRINT @Nchar; SET @Nchar = '1234 приехали'; -- Часть строки "иехали" не запишется, т.к. допустимое количество символов (7) PRINT @Nchar; ------------------------------------- NvarChar ------------------------------ -- Текстовый тип данных в Unicode кодировке записывается как NvarChar, -- диапазон значений от 1 до 2^31 символов. -- Текстовые типы данных записывается как NvarChar(n/max), -- где n - определяет максимальное количество символов(максимально n = 4000), -- или же вместо n записывается max то максимальное количество символов становится 2^31. PRINT 'NvarChar' DECLARE @NvarChar NvarChar(max) = 'Привет Мир!'; PRINT @NvarChar; SET @NvarChar = 'Много много много много много много много много много много много слов'; PRINT @NvarChar; -----------------------------------------------------------------------------
Работа с типами данных даты и времени в T-SQL
--***************************************************************************
-- Типы данных даты и времени в T-SQL
--***************************************************************************
------------------------------------ DateTime -------------------------------
-- Типы данных даты и времени DateTime.
-- Диапазон значений от 1 января 1753 года до 31 декабря 9999 года.
PRINT 'DateTime'
-- CAST (expression AS data_type) - это функция преобразования типов,
-- преобразует значение expression к типу data_type.
DECLARE @datetime DateTime = CAST('2007-05-08 12:35:29.123' AS DateTime);
PRINT @datetime;
SET @datetime = CURRENT_TIMESTAMP; -- Текущая дата и время
PRINT @datetime;
------------------------------------ DateTime2 ------------------------------
-- Типы данных даты и времени DateTime2.
-- Диапазон значений от 1 января 1 года до 31 декабря 9999 года.
-- Типы данных даты и времени записывается как DateTime2(n),
-- где n - определяет точность до 100нс ( 0<n<7 )
PRINT 'DateTime2';
DECLARE @datetime2 DateTime2(5) = CAST('2007-05-08 12:35:29.1234567' AS DateTime2)
PRINT @datetime2;
SET @datetime2 = CURRENT_TIMESTAMP; -- Текущая дата и время
PRINT @datetime2;
-------------------------------- SmallDateTime ------------------------------
-- Типы данных даты и времени SmallDateTime.
-- Диапазон значений от 1 января 1900 года до 6 июня 2079 года.
PRINT 'SmallDateTime';
DECLARE @smalldatetime SmallDateTime = CAST('2007-05-08 12:35:29' AS SmallDateTime)
PRINT @smalldatetime;
SET @smalldatetime = CURRENT_TIMESTAMP; -- Текущая дата и время
PRINT @smalldatetime;
-------------------------------- DateTimeOffSet ------------------------------
-- Типы данных даты и времени DateTimeOffSet.
-- Определяет дату, объединенную со временем дня, с учетом часового пояса в 24-часовом формате.
-- Диапазон значений от 1 января 1 года до 31 декабря 9999 года.
-- Типы данных даты и времени записывается как DateTimeOffSet(n),
-- где n - определяет точность до 100нс ( 0<n<7 )
PRINT 'DateTimeOffSet';
DECLARE @dateTimeOffSet DateTimeOffSet(5) = CAST('2007-05-08 12:35:29.1234567 +12:15' AS DateTimeOffSet)
PRINT @dateTimeOffSet;
SET @dateTimeOffSet = CURRENT_TIMESTAMP; -- Текущая дата и время
PRINT @dateTimeOffSet;
------------------------------------ Date -----------------------------------
-- Типы данных даты Date.
-- Диапазон значений от 1 января 1 года до 31 декабря 9999 года.
PRINT 'Date';
DECLARE @date Date = CAST('2007-05-08 12:35:29.1234567' AS Date)
PRINT @date;
SET @date = CURRENT_TIMESTAMP; -- Текущая дата и время
PRINT @date;
------------------------------------ Time -----------------------------------
-- Типы данных времени Time.
-- Типы данных времени записывается как Time(n),
-- где n - определяет точность до 100нс ( 0<n<7 )
PRINT 'Time';
DECLARE @time Time(5) = CAST('2007-05-08 12:35:29.1234567' AS Time);
PRINT @time;
SET @time = CURRENT_TIMESTAMP;
PRINT @time;
-----------------------------------------------------------------------------
Работа с типами двоичных данных в T-SQL
--*************************************************************************** -- Типы двоичных данных в T-SQL --*************************************************************************** ------------------------------------ Binary --------------------------------- -- Типы двоичных данных Binary. -- Диапазон значений от 1 до 8000 байт. -- Типы двоичных данных записывается как Binary(n), -- где n - определяет максимальное количество байт(максимально n = 8000). PRINT 'Binary' DECLARE @binary Binary(1) = 16; PRINT @binary; ----------------------------------- VarBinary ------------------------------- -- Типы двоичных данных VarBinary. -- Диапазон значений от 1 до 2^31 байт. -- Типы двоичных данных записывается как VarBinary(n/max), -- где n - определяет максимальное количество байт(максимально n = 8000), -- или же вместо n записывается max то максимальное количество байт становится 2^31. PRINT 'VarBinary' DECLARE @varBinary VarBinary(max) = 2147483647; PRINT @varBinary; -----------------------------------------------------------------------------
Создание программно базу данных в SQL Server
--********************************************************************************
-- Создание Базы Данных.
--********************************************************************************
-- Создаём базу данных с именем ShopDB.
CREATE DATABASE ShopDB
ON -- Задаем параметры Базы Данных.
(
NAME = 'ShopDB', -- Указываем логическое имя БД (используется при обращении к БД).
FILENAME = 'D:\ShopDB.mdf', -- Указываем Физическое полное имя файла БД.
SIZE = 10MB, -- Задаем начальный размер файла БД.
MAXSIZE = 100MB, -- Задаем максимальный размер файла БД.
FILEGROWTH = 10MB -- Задаем значение, на которое будет увеличиваться размер файла БД.
)
LOG ON -- Задаем параметры журнала Базы Данных.
(
NAME = 'LogShopDB', -- Указываем логическое имя журнала БД (используется при обращении к журналу БД).
FILENAME = 'D:\ShopDB.ldf', -- Указываем Физическое полное имя файла журнала БД.
SIZE = 5MB, -- Задаем начальный размер файла журнала БД.
MAXSIZE = 50MB, -- Задаем максимальный размер файла журнала БД.
FILEGROWTH = 5MB -- Задаем значение, на которое будет увеличиваться размер файла журнала БД.
)
COLLATE Cyrillic_General_CI_AS -- Задаем кодировку для базы данных по умолчанию
-- Выделить с 6 по 22 строку и нажать F5.
----------------------------------------------------------------------------------
-- Выводим информацию о Базе Данных - ShopDB.
EXECUTE sp_helpdb ShopDB;
----------------------------------------------------------------------------------
--********************************************************************************
-- Создание Таблицы в Базе Данных ShopDB.
--********************************************************************************
-- ВНИМАНИЕ!
-- Указываем явно имя Базы Данных, которую следует использовать, так как, существует вероятность
-- создания таблицы в Базе Данных, указанной в выпадающем списке на панели инструментов.
-- Например: Часто, ошибочно создают таблицы в БД master и кажется что таблица не создалась.
USE ShopDB
GO
----------------------------------------------------------------------------------
-- Создаем таблицу с именем MyFriends, которая будет содержать пять столбцов.
-- Первый столбец с именем FriendId, типа SmallInt с заданным автоинкрементом.
-- Второй столбец с именем FirstName, типа Varchar, размерностью в 20 символов.
-- Третий столбец с именем LastName, типа Varchar, размерностью в 20 символов.
-- Четвертый столбец с именем BirthDate, типа Date.
-- Пятый столбец с именем PhoneNumber, типа Char, размерностью в 10 символов.
CREATE TABLE MyFriends
(
-- Ключевое слово IDENTITY задает начальное значение и устанавливает авто инкремент.
-- По умолчанию значение первой ячейки равно 1 и с каждой новой записью увеличивается на 1.
-- NOT NULL не допускает пустые значения
-- NULL допускает пустые значения
FriendId smallint IDENTITY NOT NULL,
FirstName Varchar(20) NOT NULL,
LastName Varchar(20) NULL,
BirthDate date NULL,
PhoneNumber char(10) NOT NULL
)
GO -- Конец пакета инструкций.
----------------------------------------------------------------------------------
После того как мы созадли базу данных и помести в нее таблицу, мы можем ее редактировать, для этого в обозревателе объектов выбрать нашу таблицу и нажав правую кнопку мыши в открывшимся диалоговом окне выбрать изменить первые 200 строк как показано ниже.

После редактирования таблицы вот что у меня получилось:

