Главная страница
Навигация по странице:

  • ВСТРОЕННОГО ЯЗЫКА TRANSACT SQL В MICROSOFT SQL SERVER Цель работы

  • Содержание работы

  • Пояснения к выполнению работы Для освоения программирования используем пример базы данных c названием DB_Books

  • Специальные знаки и простейшие операторы в Transact SQL

  • Пример : DECLARE @a INT, @b numeric(10,2)DECLARE @str CHAR(20)Присвоение значений переменным и вывод значений на экран Присвоение с помощью SET

  • Пример : DECLARE @a INT, @b numeric(10,2)SET @a = 20SET @b = (@a+@a)/15SELECT @b --вывод на экран результатаПрисвоение с помощью SELECT

  • Пример : DECLARE @a INTSELECT @a = COUNT(*) FROM AuthorsПример

  • Сочетание ключевых слов SET и SELECT Пример

  • Создание временной таблицы через переменную типа TABLE

  • Пример : DECLARE @mytable TABLE(id INT, myname CHAR(20) DEFAULT ‘Вве-дите имя’)INSERT INTO @mytable(id) VALUES (1)SELECT * FROM @mytableПример

  • Преобразование типов переменных Функция CAST

  • Операторские скобки BEGIN

  • Объявление курсора CURSOR

  • Операторы для работы с курсором

  • Лабораторная работа 1 создание баз данных (БД) в microsoft sql server


    Скачать 1.1 Mb.
    НазваниеЛабораторная работа 1 создание баз данных (БД) в microsoft sql server
    Дата15.10.2019
    Размер1.1 Mb.
    Формат файлаdoc
    Имя файлаms_sql_2005_c_v2.doc
    ТипЛабораторная работа
    #90115
    страница7 из 11
    1   2   3   4   5   6   7   8   9   10   11

    Лабораторная работа №3
    ОСВОЕНИЕ ПРОГРАММИРОВАНИЯ С ПОМОЩЬЮ
    ВСТРОЕННОГО ЯЗЫКА TRANSACT SQL
    В MICROSOFT SQL SERVER
    Цель работы знакомство с основными приципами программирования вMS SQL Server средствами встроенного языка Transact SQL.
    Содержание работы:

    1. Знакомство с правилами обозначения синтаксиса команд в справоч-

    ной системе MS SQL Server (утилита Books Online).

    1. Изучение правил написания программ на Transact SQL.




    1. Изучение правил построения идентификаторов, правил объявления переменных и их типов.

    2. Изучение работы с циклами и ветвлениями.

    3. Изучение работы с переменными типа Table и Cursor.

    4. Проработка всех примеров, анализ результатов их выполнения.

    5. Выполнение индивидуальных заданий по вариантам.


    Пояснения к выполнению работы
    Для освоения программирования используем пример базы данных c названием DB_Books, которая была создана в лабораторной работе №1. При выполнении примеров и заданий обращайте внимание на соответствие названий БД, таблиц и других объектов проекта.

    20

    Специальные знаки и простейшие операторы в Transact SQL


    Знак

    Назначение




    Знак

    Назначение

    *

    Знак умножения




    " "




    В них заключают строковые зна-
















    чения, если SET
















    QUOTED_IDENTIFIER OFF

    -

    Знак вычитания








    В них заключают строковые зна-
















    чения

    %

    Остаток от деления двух чисел

    <>

    Не равно

    +

    Знак сложения или конкатена-

    [ ]




    Аналог кавычек, в них можно




    ции (объединение двух строк в







    заключать названия идентифика-




    одну)










    торов, если в их названиях
















    встречаются пробелы

    =

    Знак равенства или сравнения

    !<




    Не менее чем

    <=

    Меньше или равно




    !>




    Не более чем

    >=

    Больше или равно




    >




    Больше

    !=

    Не равно




    <




    Меньше

    @

    Ставится перед именем пере-

    .




    Разделяет родительские и подчи-




    менной










    ненные объекты

    @@

    Указывает на

    системные

    /




    Знак деления




    функции













    --

    Однострочный комментарий

    /*

    */

    Многострочный комментарий




    или комментарий

    с текущей













    позиции и до конца строки











    Идентификаторы –это имена объектов,на которые можно ссылаться впрограмме, написанной на языке Transact SQL. Первый символ может со-стоять из букв английского алфавита или “_”, “@”, “#”. Остальные до-полнительно из цифр и «$».
    Имя идентификатора не должно совпадать с зарезервированным сло-вом.
    Для ограничителей идентификаторов при установленном параметре

    SET QUOTED_IDENTIFIER ON
    можно использовать как квадратные скобки, так и одинарные кавычки, а строковые значения только в одинарных кавычках (режим по умолчанию).
    Если использовать установленный параметр в режиме
    SET QUOTED_IDENTIFIER OFF,
    то в качестве ограничителей идентификаторов можно использовать только квадратные скобки, а строковые значения указываются в одинарных или двойных кавычках.
    Переменные используются для сохранения промежуточных данных в хра-нимых процедурах и функциях. Все переменные считаются локальными. Имя переменной должно начинаться с @.


    21

    Объявление переменных
    Синтаксис в обозначениях MS SQL Server:
    DECLARE @имя_переменной1 тип_переменной, …, @имя_переменнойN тип_переменной
    Если тип переменной предполагает указание размера, то используется следующий сиснтаксис для объявления переменных:
    DECLARE @имя_переменной1 тип_переменной (размер), …, @имя_переменнойN тип_переменной(размер)
    Пример_:_DECLARE_@a_INTSELECT_@a_=_COUNT(*)_FROM_AuthorsПример'>Пример_:_DECLARE_@a_INT,_@b_numeric(10,2)SET_@a_=_20SET_@b_=_(@a+@a)/15SELECT_@b_--вывод_на_экран_результатаПрисвоение_с_помощью_SELECT'>Пример_:_DECLARE_@a_INT,_@b_numeric(10,2)DECLARE_@str_CHAR(20)Присвоение_значений_переменным_и_вывод_значений_на_экран_Присвоение_с_помощью_SET'>Пример:

    DECLARE @a INT, @b numeric(10,2)
    DECLARE @str CHAR(20)
    Присвоение значений переменным и вывод значений на экран
    Присвоение с помощью SET – обычное присвоение, синтаксис: SET @имя_переменной = значение.
    Пример:

    DECLARE @a INT, @b numeric(10,2)

    SET @a = 20
    SET @b = (@a+@a)/15

    SELECT @b --вывод на экран результата
    Присвоение с помощью SELECT – помещение результата запроса в переменную. Если в результате выполнения запроса не будет возвращено ни одной строки, то значение переменной не меняется, т.е. остается ста-рым.
    Пример:

    DECLARE @a INT

    SELECT @a = COUNT(*) FROM Authors
    Пример:

    DECLARE @str CHAR(30)

    SELECT @str = name FROM Authors
    В данном примере в переменную поместится последнее значение из результата запроса.
    Сочетание ключевых слов SET и SELECT

    Пример:

    DECLARE @a INT
    SET @a = (SELECT COUNT(*) FROM Authors)

    22


    Работа с датой и временем
    Оператор SET DATEFORMAT dmy | ymd | mdy задает порядок следо-вания компонентов даты.
    Пример:

    SET DATEFORMAT dmy

    DECLARE @d DateTime
    SET @d = ’31.01.2005 13:23:15’

    SET @d = @d+1
    SELECT @d
    Создание временной таблицы через переменную типа TABLE
    Объявляется через DECLARE с указанием в скобках столбцов табли-цы, их типов, размеров, значений по умолчанию, а также индексов типа
    PRIMARY KEY или UNIQUE.
    Пример:

    DECLARE @mytable TABLE(id INT, myname CHAR(20) DEFAULT ‘Вве-
    дите имя’)

    INSERT INTO @mytable(id) VALUES (1)
    SELECT * FROM @mytable
    Пример:

    DECLARE @mytable TABLE(id INT, myname CHAR(20) DEFAULT ‘Вве-
    дите имя’)
    INSERT @mytable SELECT Code_publish, City FROM Publishing_house SELECT * FROM @mytable
    Преобразование типов переменных
    Функция CAST возвращает значение, преобразованное к указанному типу:
    CAST(@переменная или значение AS требуемый_тип_данных)
    Пример:

    DECLARE @d DateTime, @str char(20)

    SET @d = ’31.01.2005 13:23:15’
    SET @str = CAST(@d AS Char(20))
    SELECT 2str
    Функция CONVERT возвращает значение, преобразованное к указан-ному типу по заданному формату. Изучить дополнительно, по желанию.

    23


    Операторские скобки

    BEGIN
    /* в них нельзя помещать команды, изменяющие структуры объектов БД. Операторские скобки должны содержать хотя бы один оператор. Тре-буются для конструкций поливариантных ветвлений, условных и цикличе-ских конструкций
    */

    END
    Условная конструкция IF

    Синтаксис:
    IF условие

    Набор операторов1
    ELSE

    Набор операторов2
    Пример:

    DECLARE @a INT
    DECLARE @str CHAR(30)

    SET @a = (SELECT COUNT(*) FROM Authors)
    IF @a >10

    BEGIN
    SET @str = 'Количество авторов больше 10'

    SELECT @str
    END

    ELSE
    BEGIN

    SET @str = 'Количество авторов = ' + str(@a)
    SELECT @str

    END
    Цикл WHILE

    Синтаксис:
    WHILE Условие Набор операторов1
    BREAK

    Набор опреторов2
    CONTINUE
    Конструкции BREAK и CONTINUE являются необязательными.
    Цикл можно принудительно остановить, если в его теле выполнить ко-манду BREAK. Если же нужно начать цикл заново, не дожидаясь выпол-нения всех команд в теле, необходимо выполнить команду CONTINUE.


    24

    Пример:

    DECLARE @a INT

    SET @a = 1
    WHILE @a <100

    BEGIN
    PRINT @a -- вывод на экран значения переменной

    IF (@a>40) AND (@a<50)
    BREAK --выход и выполнение 1-й команды за циклом

    ELSE
    SET @a = @a+rand()*10

    CONTINUE
    END

    PRINT @a
    Объявление курсора
    CURSOR – это набор строк, являющийся результатом выполнения за-проса. В один момент времени доступна лишь одна строка (текущая), по курсору можно передвигаться и получать доступ к элементарным данным. При объявлении курсора создается временная копия данных, которая со-храняется в БД tempdb.
    Динамический курсор – данные в курсоре могут быть изменены. Статический курсор – данные в курсоре не меняются.
    Стандартный способ объявления курсора, синтаксис в обозначениях

    MS SQL Server:
    DECLARE cursor_name [ INSENSITIVE ] [ SCROLL ] CURSOR FOR select_statement

    [ FOR { READ ONLY | UPDATE [ OF column_name [ ,...n ] ] } ]
    Примеры объявления курсоров:

    DECLARE MyCursor1 CURSOR FOR (select * from Authors)
    /*объявили курсор с названием MyCursor1, который содержит всю инфор-мацию об авторах, двигаться по нему можно только от первой записи вниз до последней. Курсор является динамическим.*/
    DECLARE MyCursor1 INSENSITIVE CURSOR FOR (select * from Authors) /*объявили курсор с названием MyCursor1, который содержит всю инфор-мацию об авторах, двигаться по нему можно только от первой записи вниз до последней. Курсор является статическим.*/
    DECLARE MyCursor1 SCROLL CURSOR FOR (select * from Authors)

    25

    /*объявили курсор с названием MyCursor1, который содержит всю инфор-мацию об авторах, двигаться по нему можно в любом направлении. Курсор является динамическим.*/
    DECLARE MyCursor1 INSENSITIVE SCROLL CURSOR FOR (select * from Authors)
    /*объявили курсор с названием MyCursor1, который содержит всю инфор-мацию об авторах, двигаться по нему можно в любом направлении. Курсор является статическим.*/
    DECLARE MyCursor1 CURSOR FOR (select * from Authors) FOR READ
    ONLY
    /*объявили курсор с названием MyCursor1, который содержит всю инфор-мацию об авторах, двигаться по нему можно только от первой записи вниз до последней. Курсор является динамическим. Данные доступны только для чтения.*/
    DECLARE MyCursor1 CURSOR FOR (select * from Authors) FOR UPDATE /*объявили курсор с названием MyCursor1, который содержит всю инфор-мацию об авторах, двигаться по нему можно только от первой записи вниз до последней. Курсор является динамическим. Данные курсора можно ме-нять.*/
    Операторы для работы с курсором
    Прежде чем обратиться к данным курсора, его нужно после объявления открыть.
    Синтаксис оператора OPEN в обозначениях MS SQL Server:

    OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }
    Пример:
    DECLARE MyCursor1 CURSOR FOR (select * from Authors) OPEN MyCursor1
    После прекращения работы с курсором, его нужно закрыть. Курсор ос-тается доступным для последующего использования в рамках процедуры или триггера, в котором он создан.

    Синтаксис оператора CLOSE в обозначениях MS SQL Server:
    CLOSE { { [ GLOBAL ] cursor_name } | cursor_variable_name }
    Пример:
    DECLARE MyCursor1 CURSOR FOR (select * from Authors) OPEN MyCursor1

    --здесь операторы работы с курсором

    26

    CLOSE MyCursor1
    Если курсором больше не будут пользоваться, то его необходимо уничтожить и освободить переменную.
    Синтаксис оператора DEALLOCATE в обозначениях MS SQL Server:
    DEALLOCATE { { [ GLOBAL ] cursor_name } | @cursor_variable_name }
    Пример:
    DECLARE MyCursor1 CURSOR FOR (select * from Authors) OPEN MyCursor1

    --здесь операторы работы с курсором

    CLOSE MyCursor1
    DEALLOCATE MyCursor1
    FETCH – оператор движения по записям курсора и извлечения данных те-кущей записи в указанные переменные.
    Синтаксис оператора FETCH в обозначениях MS SQL Server:

    FETCH
    [ [ NEXT | PRIOR | FIRST | LAST | ABSOLUTE { n | @nvar }
    | RELATIVE { n | @nvar }
    ]

    FROM
    ]
    { { [ GLOBAL ] cursor_name } | @cursor_variable_name } [ INTO @variable_name [ ,...n ] ]
    Пример:
    DECLARE MyCursor1 SCROLL CURSOR FOR (select * from Authors) DECLARE @i bigint, @s char(20), @d smalldatetime

    OPEN MyCursor1
    FETCH FIRST FROM MyCursor1 INTO @i, @s, @d PRINT @i
    PRINT @s PRINT @d CLOSE MyCursor1
    DEALLOCATE MyCursor1
    1   2   3   4   5   6   7   8   9   10   11


    написать администратору сайта