Работа с переменными в SQL

Приветствую всех, сегодня рассмотрим примеры работы с переменными, а в конце я покажу как создать базу данных и таблицу.

Работа с целыми типами данных в 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 строк как показано ниже.

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

 

Обновлено: 06.08.2018 — 20:58

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.