SlideShare a Scribd company logo
1 of 22
Download to read offline
Съдържание
                                                  1. Национална академия по разработка
                                                     на софтуер (НАРС)
                                                                 НАРС)
                                                                (НАРС)
             Релационни бази от данни и
                                                  2. Релационни бази от данни
              Microsoft SQL Server 2005
                                                     • Таблици, връзки, E/R диаграми,
                                                       Таблици, връзки,     диаграми,
                            Теория и практика          нормализация, съхранени процедури,
                                                       нормализация,             процедури,
                                                       тригери, изгледи, транзакции
                                                       тригери, изгледи,
                                                  3. Работа с езика SQL
        Светлин Наков                                • Извличане на данни, съединения,
                                                                    данни, съединения,
                                                       агрегатни функции, групиране
                                                                 функции,
        Национална академия по
        разработка на софтуер

                                                     • Вмъкване, промяна, изтриване
                                                       Вмъкване, промяна,
        academy.devbg.org




                            За лектора
       • Светлин Наков
         • Носител на наградата “Джон
                                “Джон
                                                        Национална академия
           Атанасов” на Президента на
           Атанасов”
                                                          по разработка на
           България
         • Автор на 3 книги и над 20 статии
                                                          софтуер (НАРС)
         • 15 години опит с програмирането
             • 8 от тях професионално
         • Директор направление обучение в
           Национална академия по разработка
           на софтуер
         • Преподавател във ФМИ на СУ




                            Какво е НАРС?
                                    НАРС?                    Курсовете за начинаещи

        • Национална академия по разработка       • Курсове за начинаещи – 6 седмици
          на софтуер (НАРС)
                      НАРС)
                     (НАРС)                         • Въведение в програмирането с C# и Java
          • Практическо обучение за софтуерни       • Не се изискват предварителни знания
            инженери
                                                    • Обхващат основите на програмирането
          • Курсове за начинаещи и напреднали         • Масиви, цикли, структури от данни
                                                        Масиви, цикли,
          • Специалности Java и .NET                  • Вход / изход, елементи от ООП
                                                               изход,
          • Гарантирана работа по специалността     • Успешно завършилите продължават в
                                                      следващите нива
          • Безплатно!
            Безплатно!
                                                    • Безплатно!
                                                      Безплатно!
          • http://academy.devbg.org




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                         1
Курсове за напреднали                               НАРС – успешен старт
        • Курсове за напреднали                           • НАРС ви гарантира успешен старт в
                                                            кариерата на софтуерен инженер
          • Дават професията “софтуерен инженер”
                             “софтуерен инженер”
          • Практическо обучение по:
                                 по:                        • Работа в престижи софтуерни фирми:
                                                                                          фирми:
            • Обектно-ориентирано програмиране
              Обектно-
              Обектно-ориентирано                             • SAP Labs Bulgaria, telerik, Sciant, Rila
                                                                Solutions, Sirma, Seeburger Informatik,
            • Бази от данни (Oracle, SQL Server)
                            (Oracle,
                                                                ICB, Stemo, Wohnfinder, Bank Service
            • Уеб приложения и GUI приложения
                                                            • Безплатно обучение!
                                                                        обучение!
            • Софтуерно инженерство и работа в екип
          • Специалности Java и .NET
          • Гарантирана работа!
                        работа!                             • За контакти:
                                                                 контакти:
          • Безплатно!
            Безплатно!                                        http://academy.devbg.org




                                                                        Релационни бази от данни

                                                          • Модели на базите от данни
                                                            • йерархичен (дървовиден)
                                                                          дървовиден)
                                                                         (дървовиден)
                    Релационни                              • мрежови
                   бази от данни                            • релационен (табличен)
                                                                          табличен)
                                                                         (табличен)
                                                            • обектно-релационен
                                                              обектно-
                                                              обектно-релационен
                 Фундаментални концепции
                                                          • Релационните бази от данни
                                                            • Представляват съвкупности от таблици и
                                                              връзки между тях (релации)
                                                                                релации)
                                                                               (релации)
                                                            • Ползват здрава математическа основа:
                                                                                           основа:
                                                              релационната алгебра




                    Системи за управление на                            Системи за управление на
                    бази от данни                                       бази от данни
        • Системи за управление на релационни бази от     • RDBMS системите се наричат още
          данни (СУБД) = Relational Database Management
                 СУБД)
                (СУБД)                                      • сървъри за управление на бази от данни
          System (RDBMS)
                 (RDBMS)
                                                            • или просто quot;Database сървъриquot;
                                                                                   сървъриquot;
        • Осигуряват програмни средства за:
                                        за:
                                                          • По-известни RDBMS сървъри:
                                                            По-               сървъри:
                                                            По-известни
          • създаване / промяна / изтриване на таблици
                                                            • Oracle Database
            и връзки между тях
                                                            • Microsoft SQL Server
          • добавяне, промяна, изтриване, търсене и
            добавяне, промяна, изтриване,
                                                            • IBM DB2
            извличане на данни от таблиците
                                                            • PostgreSQL
          • поддръжка на езика SQL
                                                            • MySQL
          • управление на транзакции
                                                            • Borland Interbase
            (незадължително)
             незадължително)
            (незадължително)




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                                     2
Таблици
                                                              • Таблиците представляват съвкупност от
                                                                стойности, подредени в редове и колони.
                                                                стойности,                      колони.
                                                                Пример (таблица PERSONS):
                                                                       (таблица PERSONS):
                   Таблици и връзки                                id      name       family         employer
                                                                   1     Светлин    Наков       НАРС
                          Основни понятия
                                                                   2     Бранимир   Гюров       Tam Tam
                                                                   3     Мартин     Кулов       НАРС

                                                              • Редовете имат еднаква структура
                                                              • Колоните имат име и тип (число, символен
                                                                                         число,
                                                                                        (число,
                                                                низ, дата или др.)
                                                                низ,          др.)




                      Схема на таблица                                      Първичен ключ
        • Схема на таблица е наредена                         • Първичният ключ (primary key) е колона от
                                                                таблицата, която уникално идентифицира
                                                                таблицата,
          последователност от описания на
                                                                даден неин ред
          колони (име и тип)
                 (име тип)
                                                                           id     name      family    employer
                                                               Primary
        • Например таблицата PERSONS има                         key
                                                                           1    Светлин    Наков     БАРС
          следната схема:
                   схема:
                                                                           2    Бранимир   Гюров     BSH
                    PERSONS (                                              3    Мартин     Кулов     CodeAttest
                      id: число,
                      id: число,
                                                              • Два записа (реда) са различни когато са
                                                                            реда)
                                                                           (реда)
                      name: символен низ,
                      name:          низ,
                                                                различни първичните им ключове
                      family: символен низ,
                      family:          низ,
                      employer: символен низ
                                                              • Първичният ключ може да е съвкупност от
                    )
                                                                няколко колони




                      Връзки (релации)                                      Връзки (релации)
                             (релации)                                             (релации)
        • Връзките между таблиците се базират на              • Външният ключ (foreign key) е номер на
                                                                                 (foreign
          взаимоотношения primary key / foreign key             запис (primary key) в друга таблица
                                                              • Връзките спестяват повтарянето на
                             Foreign
         Primary
                               key
                                                                информация
           key
                                         Primary
                     TOWN                  key
                                                                • В примера името на държавата не се повтаря
           id      name     country_id           COUNTRY          за всеки град
            1   София            1
                                            id      name      • Връзките имат множественост (multiplicity):
                                                                                             multiplicity):
                                                                                            (multiplicity):
            2   Пловдив          1
                                            1      България
                                                                • 1 x 1 – например човек ↔ студент
            3   Мюнхен           2
                                            2      Германия
                                                                • 1 x много – държава / градове
            4   Берлин           2
                                            3      Русия
            5   Москва           3                              • много x много – студент / учебен курс




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                                            3
Множественост на                                       Множественост на
                        връзките (1 x 1)                                       връзките (1 x n)
        • Връзка 1 x 1                                          • Връзка 1 x много (или много x 1)
                                                                                   (или
          • 1 запис от едната таблица съответства                 • 1 запис от първата таблица съответства
            на точно 1 запис от другата таблица                     на много записи от втората таблица
          • Моделира наследяване на таблици                       • Използва се много често
         Primary            Primary &                                      TOWN
           key             Foreign key
                                                                  id    name     country_id
                   TOWN                       POPULATION                                           COUNTRY
                                                                  1    София         1
                                         id population
                   id    name                                                                 id     name
                                                                  2    Пловдив       1
                   1    София            1     1 177 000                                      1     България
                                                                  3    Мюнхен        2
                   2    Пловдив          2     720 000                                        2     Германия
                                                                  4    Берлин        2
                                         3     1 260 000
                   3    Мюнхен                                                                3     Русия
                                                                  5    Москва        3
                                         4     3 400 000
                   4    Берлин




                        Множественост на
                        връзките (n x n)
        • Връзка много x много
          • 1 запис от първата таблица съответства
            на много записи от втората таблица и
            обратното
                                                                               E/R диаграми
          • Реализира се чрез междинна таблица
                           STUDENT_COURSE
         STUDENT
                                                       COURSE
                          student_id course_id
         id   name
                                                      id name
                                1         1
         1    Пешо
                                                       1 .NET
                                1         2
         2    Минка
                                3         2            2 Java
         3    Гошо              3         3            3 PHP
         4    Пенка             4         2




                        Релационна схема                                       E/R диаграми – пример
                                                                   Диаграмата е
        • Релационна схема на БД наричаме                          създадена с
                                                                  Microsoft SQL
          съвкупността от:
                       от:                                      Server Management
                                                                      Studio
          • схемите на всички таблици
          • връзките между таблиците
        • Релационната схема описва
          структурата на БД
          • не съдържа данни, а само метаданни
                       данни,
        • Релационните схеми се изобразяват
          графично чрез Entity/Relationship
          диаграми (E/R Diagrams)
                   (E/R




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                                         4
E/R диаграми – пример            E/R диаграми – пример

                                                         Диаграмата е създадена
                                   Диаграмата е
                                                         с fabFORCE DB Designer
                                    създадена с
                                  PLATINUM ERwin




                  E/R диаграми – пример




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                            5
Нормализация                                                      Нормализация – пример
                                                                        • Пример за нормализирана схема:
                                                                                                  схема:
        • Нормализацията на релационната
          схема премахва повтарящите се данни                            PRODUCT
        • Денормализираните данни съдържат                                                      произво       катего магаз град
                                                                        id       продукт                 цена
          много повторения. Например:
                повторения. Например:                                                           дител_id
                                                                                                дител_id      рия_id ин_id _id
                                                                                                              рия_id ин_id
                                                                         1   кисело мляко          2       0.67    2     4      1
                      произво-
                      произво-
          продукт                цена категория     магазин     град     2   хляб quot;Добруждаquot;
                                                                                   Добруждаquot;       3       0.55    2     4      1
                       дител
                                                                         3   ракия quot;Пещерскаquot;
                                                                                    Пещерскаquot;      6       4.38    5     2      1
           кисело      Млекис    0.67   хранителни супермаркет София
           мляко        ООД                стоки     quot;Ментеquot;
                                                      Ментеquot;             4   бира quot;Tuborgquot;         4       0.67    4     1      3
            хляб       Фурна     0.55   хранителни супермаркет София
                                                                         VENDOR             CATEGORY
         quot;Добруждаquot;
          Добруждаquot;   quot;Пушекаquot;
                       Пушекаquot;             стоки     quot;Ментеquot;
                                                      Ментеquot;                                                  STORE      TOWN
            бира      Загорка    0.58   безалкох.
                                        безалкох.   павилион    Варна   id      име        id     име                    id   име
                                                                                                              id   име
          quot;Загоркаquot;
           Загоркаquot;     АД               напитки    quot;24 часаquot;
                                                        часаquot;
                                                                         2 quot;Млексquot; ООД
                                                                            Млексquot;          4 бира                       1 София
                                                                                                              1 Billa
            бира      Шуменско   0.67   безалкох.
                                        безалкох.   павилион    Варна
                                                                         4 quot;Загоркаquot; АД
                                                                            Загоркаquot;        2 хранителни                 3 Варна
                                                                                                              4 METRO
          quot;Tuborgquot;    пиво АД            напитки    quot;24 часаquot;
                                                        часаquot;




                                                                                          Ограничения
                                                                                          (Constraints)
                                                                        • Ограниченията (constraints) задават
                                                                                         (constraints)
                                                                          правила, за данните, които не могат да
                                                                          правила,    данните,
                                                                          бъдат нарушавани
                        Ограничения                                     • Ограничение по първичен ключ (primary
                                                                                                       (primary
                        (Constraints)                                     key constraint)
                                                                             • Първичният ключ е уникален за всеки запис
                                                                        • Ограничение по уникален ключ (unique key
                                                                                                       (unique
                                                                          constraint)
                                                                             • Стойностите в дадена колона (или група
                                                                                                           (или
                                                                               колони) са уникални
                                                                               колони)




                        Ограничения
                        (Constraints)
        • Ограничение по външен ключ (foreign
                                     (foreign
          key constraint)
          • Стойността в дадена колона е ключ от
            друга таблица                                                                    Индекси
        • Ограничение по стойност (check
                                  (check
          constraint)
          • Стойностите в дадена колона
            изпълняват дадено условие
          • Например:
            Например:
              • (hour>=0) AND (hour<=24)
                (hour>=0)
              • name = upper(name)




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                                                              6
Индекси
        • Индексите ускоряват скоростта на
          търсене на стойност в дадена колона
          или група от колони
        • Ползват се при големи таблици                             Езикът SQL
        • Реализират се най-често с B-дървета
                         най-
                         най-често B-дървета
          или хеш-таблици
              хеш-
              хеш-таблици
        • Могат да бъдат външни (извън
                                  (извън
          таблицата) или вградени
          таблицата)
        • Добавянето и изтриването от
          индексирани таблици е по-бавно
                                 по-
                                 по-бавно




                   Езикът SQL                                      Езикът SQL
        • SQL (Structured Query Language)              • SQL се състои от:
                                                                       от:
          • Стандартизиран декларативен език             • DDL – Data Definition Language
            (стандарт) за манипулация на релационни
             стандарт)
            (стандарт)
                                                           • Команди CREATE, ALTER, DROP
            бази от данни
                                                         • DML – Data Manipulation Language
          • SQL-92 – поддържан от всички RDBMS
            SQL-
            SQL-92
          • SQL-99 – навлиза все повече
            SQL-
            SQL-99                                         • Команди SELECT, INSERT, UPDATE,
                                                             DELETE
        • SQL поддържа:
              поддържа:
                                                       • Пример за SQL SELECT заявка:
                                                                              заявка:
          • Създаване, промяна, изтриване на таблици
            Създаване, промяна,
            и други обекти в БД
                                                           SELECT Name
          • Търсене, извличане, добавяне, промяна и
            Търсене, извличане, добавяне,                  FROM Town
            изтриване на данни                             WHERE TownId = 18




                                                                   Съхранение процедури

                                                       • Процедури на ниво база (запазени
                                                                                 (запазени
                                                         процедури, stored procedures)
                                                         процедури,
                                                         • Програмен код, който се изпълнява в самия
                                                                     код,
                     Съхранени                             сървър за бази данни
                     процедури                           • Работят много по-бързо от външен код
                                                                         по-
                                                                         по-бързо
                                                         • Данните са локално достъпни
                                                         • Могат да приемат параметри
                                                         • Могат да връщат резултат
                                                           • единична стойност
                                                           • съвкупност от записи (record set)
                                                                                  (record




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                                 7
Съхранени процедури
        • Процедури на ниво база се пишат на
          език, разширение на SQL
          език,
          • T-SQL – в Microsoft SQL Server
            T-SQL
                                                                   Изгледи (Views)
          • PL/SQL – в Oracle
        • Пример за процедура на T-SQL:
                                   SQL:
                                 T-SQL:
         CREATE PROC sp_FindEmployee
                     sp_F indEmployee
           @empnum int AS
         SELECT * FROM Employees
         WHERE emp_id = @empnum




                                                                     Изгледи (views) –
                                                                             (views)
                   Изгледи (views)
                           (views)                                   пример
                                                    T_COMPANY                   T_TOWN                   T_COUNTRY
        • Изгледите представляват именувани                              town                   count    id   country
                                                    id    company               id    town
          SQL SELECT заявки, които се използват
                       заявки,                                            _id                   ry_id    1 България
          като таблици                              1    Менте ООД        1     1    София      1        2 Русия
                                                    2    BulkSoft Inc.    2     2    New York   3        3 САЩ
        • Улесняват писането на сложни SQL          3    ХардСофт АД      4     3    Москва     2
          заявки                                    4    Спутник АД       3     4    Пловдив    1
        • Прилагат се за фина настройка на          CREATE VIEW V_BG_COMPANY AS
          сигурността:
          сигурността:                                SELECT
                                                                                                    V_BG_COMPANY
                                                        T_COMPANY.id AS id,
                                                        T_COMPANY.company AS company
          • На даден потребител не се дават права                                                   id    company
                                                      FROM T_COMPANY INNER JOIN
            над никоя таблица                           (T_TOWN INNER JOIN T_COUNTRY ON             1 Менте ООД
                                                         T_TOWN.country_id=T_COUNTRY.id)
                                                                                                    3 ХардСофт АД
          • Дават му се права само над някои            ON T_COMPANY.town_id=T_TOWN.id
                                                      WHERE
            изгледи (подмножество от данните)
                                      данните)
                    (подмножество                       T_COUNTRY.country=quot;Българияquot;;
                                                        T_COUNTRY.country=quot;Българияquot;;




                                                                     Тригери (triggers)

                                                    • Тригерите (triggers) са процедури на ниво
                                                                 (triggers)
                                                      база, които се активират при някакво
                                                      база,
                                                      условие, например:
                                                      условие, например:
                                                         • при добавяне на запис
                Тригери (Triggers)                       • при промяна на запис
                                                         • при изтриване на запис
                                                    • Тригерите могат да извършват
                                                      допълнителна обработка на данните
                                                         • промяна на данните при добавяне
                                                         • поддръжка на логове и история




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                                                  8
Тригери – пример
        • Имаме таблица с имена на фирми:
                                   фирми:
            CREATE TABLE COMPANY(
                                                                          Транзакции
              id int NOT NULL,
              name varchar(50) NOT NULL)

                                                                Интегритет на данните и управление
        • Тригер, който при добавяне на нова
          Тригер,                                                     на конкурентния достъп
          фирма добавя quot;Ltd.quot; към името й:
                                         й:
            CREATE TRIGGER trg_CompanyInsert
               ON Company
               FOR INSERT
            AS
               UPDATE Company SET Name = Name + ' Ltd.'
               WHERE Id = (SELECT Id FROM Inserted)




                                                                         Отговорности на
                     Транзакции                                          транзакциите
                                                            • Транзакциите гарантират
        • Транзакциите са последователности от
                                                              консистентността и възстановимостта
          действия (заявки към базата данни), които
                                      данни),
                   (заявки
          се изпълняват атомарно:
                        атомарно:                             на базата данни
          • или се изпълняват всичките действия             • Промяната не се счита за окончателна
            заедно (като едно цяло)
                              цяло)
                   (като
                                                              докато не се извърши COMMIT
          • или никое от действията не се изпълнява
                                                            • Командата ROLLBACK анулира
            изобщо
                                                              транзакцията и връща обратно
        • Пример:
          Пример:
                                                              промените
          • Банково прехвърляне на пари от една
                                                            • Всички операции се извършват като
            сметка в друга (теглене + внасяне)
                           (теглене внасяне)
                                                              едно цяло, включително операциите
                                                                   цяло,
          • Ако тегленето или внасянето на парите
                                                              върху множество от записи
            пропадне, пропада цялата операция
            пропадне,




                     Свойства на
                                                                         Транзакции – пример
                     транзакциите (ACID)
        • Atomicity – атомарност
          Atomicity                                         • Имаме таблица с банкови сметки:
                                                                                      сметки:
          • Изпълнява се всичко или нищо
                                                              CREATE TABLE Account(
                                                                           Account(
        • Consistency – цялост на данните
          Consistency                                           id int NOT NULL,
                                                                balance decimal NOT NULL)
          • Базата винаги остава консистентна с логически
            коректни данни                                  • Използваме транзакция при трансфер на
                                                              пари от сметка на сметка:
                                                                                сметка:
        • Isolation – изолация на данните
          Isolation
          • Отделните транзакции са изолирани една от         CREATE PROCEDURE sp_Transfer_Money(
            друга в зависимост от избраното ниво                @from_acc int,
                                                                @to_acc int,
        • Durability – стабилност на данните
          Durability                                            @ammount decimal
                                                              ) AS
          • Ако една транзакция бъде потвърдена, тя не
                                     потвърдена,                                             (примерът продължава)
                                                                                             (примерът продължава)
            може да бъде изгубена




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                                               9
Транзакции – пример                                      Транзакции и изолация
                                                              • Транзакциите могат да дефинират
          BEGIN TRANSACTION
          UPDATE Account set balance = balance - @ammount
                                                                нива на изолация (isolation levels)
          WHERE id = @from_acc
          IF @@rowcount <> 1 BEGIN
                                                                                      четене на  неповто-
                                                                                                 неповто-
             ROLLBACK TRANSACTION                                   ниво на                                фантомни
                                                                                     непотвър-
                                                                                     непотвър-   ряемост
             RAISERROR ('Invalid source account!', 16, 1)          изолация                                 записи
                                                                                     дени данни при четене
             RETURN
          END                                                  Read uncommitted         да          да          да
          UPDATE Account set balance = balance + @ammount
                                                               Read committed           не          да          да
          WHERE id = @to_acc
                                                               Repeatable read          не          не          да
          IF @@rowcount <> 1 BEGIN
             ROLLBACK TRANSACTION                              Serializable             не          не          не
             RAISERROR ('Invalid destination account!', 16,
          1)
                                                                • По-силната изолация осигурява по-
                                                                  По-                            по-
                                                                  По-силната
             RETURN
                                                                  добра консистентност, но работи по-
                                                                        консистентност,           по-
          END
          COMMIT TRANSACTION
                                                                  бавно и заключва данните за по-дълго
                                                                                              по-
                                                                                              по-дълго




                     Употреба на транзакции
        • Кога се ползват транзакции?
                          транзакции?
          • Винаги, когато за една бизнес
            Винаги,                                                           Introduction to
            операция се осъществява достъп до
                                                                              SQL Language
            повече от една таблица
          • Пример:
            Пример:
                                                                  (with Microsoft SQL Server 2005)
             • На касата в склад на едро: извършваме
                                    едро:
               покупка на съвкупност от продукти
             • Или купуваме всички продукти и плащаме
               или нищо не купуваме и не даваме пари
          • Ако някоя операция не успее,
                                  успее,
            анулираме транзакцията




                     Relational Databases                                     Communicating with a DB

       • A relational database:                                SQL statement is
                                                               entered
         • Can be accessed and modified by                                             SQL statement is
                                                                                       sent to the database
           executing Structured Query
                     Structured Query                          SELECT Name
                                                               FROM Department
                                                                                                              Database
           Language (SQL) statements
           Language
            • Uses a set of operations to extract
              subset of the data
                                                                       Name
         • Contains a collection of tables                             Engineering
                                                                                             The result is returned
                                                                       Sales
            • Relationships are defined between                                              (usually as a table)
                                                                       Marketing

              the tables                                               …




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                                                   10
What is SQL?
                                                                     • Structured Query Language (SQL)
                                                                       • Declarative language for query and
                                                                         manipulation of relational data
                      SQL and T-SQL
                                                                     • SQL consists of:
                             Introduction
                                                                       • Data Manipulation Language (DML)
                                                                           SELECT, INSERT, UPDATE,
                                                                         • SELECT, INSERT, UPDATE, DELETE
                                                                       • Data Definition Language (DDL)
                                                                           CREATE, DROP,
                                                                         • CREATE, DROP, ALTER
                                                                           GRANT,
                                                                         • GRANT, REVOKE




                       SQL – Examples                                           What is T-SQL?
                                                                                        T-SQL?
                                                                     • T-SQL is an extension to the standard
                                                                       T-SQL
         SELECT FirstName, LastName, JobTitle
                                                                       SQL language
         FROM Employee


                                                                       • The standard language in MS SQL Server
         INSERT INTO Project(Name, StartDate)
                                                                         database
         VALUES('Introduction to SQL Course', '1/1/2006')


                                                                       • Supports if statements, loops, exceptions
         SELECT * FROM Project WHERE StartDate = '1/1/2006'

                                                                         • Like the high-level procedural
                                                                                    high-
                                                                                    high-level
         UPDATE Project
                                                                           programming languages
         SET EndDate = '8/31/2006'
         WHERE StartDate = '1/1/2006'
                                                                       • Used for writing procedures, functions,
                                                                         triggers, etc.
         DELETE FROM Project
         WHERE StartDate = '1/1/2006'




                       T-SQL – Example
                       T-SQL

        CREATE PROCEDURE EmpDump AS
          DECLARE @EmpId INT, @EmpFName NVARCHAR(100),
                  @EmpId
            @EmpLName NVARCHAR(100)
                                                                                 The NASD
          DECLARE emps CURSOR FOR
            SELECT EmployeeID, FirstName, LastName FROM Employee
                                                                              Database Schema
          OPEN emps
          FETCH NEXT FROM emps INTO @EmpId, @EmpFName, @EmpLName
          WHILE (@@FETCH_STATUS = 0) BEGIN
                                                                                     E/R Diagram
            PRINT CAST(@EmpId AS VARCHAR(10)) + ' '
              + @EmpFName + ' ' + @EmpLName
            FETCH NEXT FROM emps INTO @EmpId, @EmpFName, @EmpLName
          END
          CLOSE emps
          DEALLOCATE emps
        GO




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                                               11
The NASD Database
                                 Schema in SQL Server

                   Employee                     Department
                     EmployeeID                    DepartmentID

                                                   Name
                     FirstName

                     LastName                      ManagerID


                                                                                                            SQL Language
                     MiddleName

                     JobTitle

                     DepartmentID

                                                                                                        Introducing SELECT Statement
                                                Address                        Town
                     ManagerID
                                                   AddressID
                     HireDate                                                     TownID
                                                   AddressText
                     Salary                                                       Name
                                                   TownID
                     AddressID



                                                Project
                                                   ProjectID
               EmployeeProject
                                                   Name
                     EmployeeID
                                                   Description
                     ProjectID
                                                   StartDate

                                                   EndDate




                                 Capabilities of SQL                                                        Basic SELECT Statement
                                 SELECT
                                                                 Selection
        Projection                                                                          SELECT *|{[DISTINCT] column|expression
                                                                 Take some of the rows
        Take some of the columns                                                            [alias],...}
                                                                                            FROM table


                                                                                             • SELECT identifies what columns
         Table 1                                                  Table 1
                                                                                             • FROM identifies which table
            Join
            Combine
            tables by
            some
            column                                                  Table 2
                                    Table 1




                                 SELECT Example                                                             Arithmetic Operations
        • Selecting all columns from departments                                           • Arithmetic operators are available:
          SELECT * FROM Department
                                                                                             • +, -, *, /
                                                                                                  -,
          DepartmentID            Name                                        ManagerID
                                                                                           • Example:
          1                       Engineering                                 12
          2                       Tool design                                 4
                                                                                             SELECT LastName, Salary, Salary + 300
                                                                                                              Salary,
          3                       Sales                                       273
                                                                                             FROM Employee
          …                       …                                           …

        • Selecting specific columns                                                         LastName           Salary     (No column name)
                                                                                             Gilbert            12500,00   12800,00
                                                   DepartmentID Name
          SELECT
                                                   1            Engineering
            DepartmentID,                                                                    Brown              13500,00   13800,00
            Name                                   2            Tool design                  Tamburello         43300,00   43600,00
          FROM Department                          3                   Sales




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                                                                        12
The NULL Value                                           Column Alias
        • A NULL is a value that is unavailable,                   • Renames a column heading
          unassigned, unknown, or inapplicable
                                                                   • Useful with calculations
          • Not the same as zero or a blank space
                                                                   • Immediately follows the column name
        • Arithmetic expressions containing a NULL                   • There is an optional AS keyword
          value are evaluated to NULL
                                                                   • Double quotation marks if contains spaces
          SELECT LastName, ManagerID FROM Employee
                                                                     SELECT FirstName, LastName, Salary,
                                                                     Salary*0.2 AS Bonus FROM Employee
          LastName      ManagerID
          Sánchez       NULL                                         FirstName       LastName        Salary            Bonus
                                           NULL is displayed as
          Duffy         300                                          Guy             Gilbert         12500,00          2500.00000
                                          empty space or as NULL
          Wang          1                                            Kevin           Brown           13500,00          2700.00000




                            Concatenation Operator                                   Literal Character Strings
                                                                   • A literal is a character, a number, or a date
        • Concatenates columns or character strings
                                                                     included in the SELECT list
          to other columns
                                                                   • Date and character literal values must be
        • Is represented by plus sign “+”
                                      “+”
                                                                     enclosed within single quotation marks
        • Creates a resultant column that is a                     • Each character string is output once for each
          character expression                                       row returned
          SELECT FirstName + ' ' + LastName AS [Full Name],           SELECT FirstName + '''s last name is ' +
          EmployeeID as [No.] FROM Employee                           LastName AS [Our Employees] FROM Employee

          Full Name                 No.                               Our Employees
          Guy Gilbert               1                                 Guy's last name is Gilbert
          Kevin Brown               2                                 Kevin's last name is Brown
          Roberto Tamburello        3                                 Roberto's last name is Tamburello




                            Removing Duplicate Rows                                  Limiting the Rows Selected
        • The default display of queries is all rows,              • Restrict the rows returned by using the
          including duplicate rows DepartmentID                      WHERE clause:
                                               7                                                          LastName     DepartmentID
                                                                      SELECT LastName,
          SELECT DepartmentID                  7                                                          Tamburello   1
                                                                      DepartmentID FROM
          FROM Employee                        2                      Employee WHERE                      Erickson     1
                                                                      DepartmentID = 1
                                               ...                                                        Goldberg     1
                                                                                                          ...          ...
        • Eliminate duplicate rows by using the                    • More examples:
          DISTINCT keyword in the SELECT clause
                                                                      SELECT FirstName, LastName, DepartmentID FROM
                                                                      Employee WHERE LastName = 'Sullivan'
                                               DepartmentID
           SELECT
                                               7
             DISTINCT DepartmentID
                                               2                      SELECT LastName, Salary FROM Employee
           FROM Employee
                                               ...                    WHERE Salary <= 20000




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                                                                13
Other Comparison                                             Other Comparison
                         Conditions                                                   Conditions (2)
                                                                         • Checking for NULL value:
        • Using BETWEEN operator to specify a range:
          SELECT LastName, Salary FROM Employee                            SELECT LastName FROM Employee
          WHERE Salary BETWEEN 20000 AND 22000                             WHERE ManagerID IS NULL

                                                                           • Note: COLUMN=NULL is always false!
        • Using IN / NOT IN operators to specify a
          set of values:                                                 • Using OR and AND operators:
          SELECT FirstName, LastName, ManagerID FROM
                                                                           SELECT FirstName, LastName FROM Employee
          Employee WHERE ManagerID IN (109, 3, 16)
                                      (109,    16)
                                                                           WHERE Salary >= 20000 AND LastName LIKE 'C%'

        • Using LIKE operator to specify a pattern:
                                                                           SELECT LastName FROM Employee
                                                                           WHERE ManagerID IS NOT NULL
          SELECT FirstName FROM Employee
                                                                             OR LastName LIKE '%so_'
          WHERE FirstName LIKE 'S%'




                         Sorting with ORDER BY
        • Sort rows with the ORDER BY clause
          • ASC: ascending order, default
            ASC:
          • DESC: descending order
            DESC:                                                                    SQL Language
                                              LastName     HireDate
                                                                              Selecting Data From Multiple Tables
          SELECT LastName,                    Gilbert      1998-07-31
                                                           1998- 07-
          HireDate FROM Employee
                                              Brown        1999-02-26
                                                           1999- 02-
          ORDER BY HireDate
                                              Tamburello   1999-12-12
                                                           1999- 12-

                                              LastName     HireDate
          SELECT LastName,
                                              Valdez       2005-07-01
                                                           2005- 07-
          HireDate FROM Employee
                                              Tsoflias     2005-07-01
                                                           2005- 07-
          ORDER BY HireDate DESC
                                              Abbas        2005-04-15
                                                           2005- 04-




                                                                                      Cartesian Product
                         Data from Multiple Tables

                                                                         • This will produce Cartesian product:
        • Sometimes you need data from more
          than one table:                                                  SELECT LastName, Name AS DepartmentName
                                                                           FROM Employee, Department
          LastName   DepartmentID             DepartmentID Name
          Duffy      1                        1            Engineering
                                                                         • The result:
          Abbas      3                        2            Tool design
          Galvin     2                        3             Sales                    LastName   DepartmentName
                                                                                                DepartmentName
                                                                                     Duffy      Document Control
                                                                                     Wang       Document Control
                     LastName       DepartmentName
                                                                                     Sullivan   Document Control
                     Duffy          Engineering
                                                                                     Duffy      Engineering
                     Galvin         Tool design
                                                                                     Wang       Engineering
                     Abbas          Sales
                                                                                     ..         ..




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                                                    14
Types of Joins                                                   INNER JOIN with ON Clause

                                                                        • To specify arbitrary conditions or specify
        • Inner joins
                                                                          columns to join, the ON clause is used
        • Left outer join
                                                                          • Such JOIN is called also INNER JOIN
        • Right outer                                                     SELECT e.EmployeeID, e.LastName, e.DepartmentID,
                                                                                 d.DepartmentID, d.Name AS DepartmentName
        • Full outer join                                                 FROM Employee e
                                                                            INNER JOIN Department d
                                                                              ON e.DepartmentID = d.DepartmentID

                                                                         EmployeeID    LastName        Depart   Depart   DepartmentName
                                                                                                       mentID   mentID
                                                                         1             Gilbert         7        7        Production
                                                                         2             Brown      4             4        Marketing
                                                                         3             Tamburello 1             1        Engineering




                                                                                         INNER vs. OUTER Joins
                        Equijoins
        • Inner joins with join conditions pushed                       • The join of two tables returning only
          down to the WHERE clause                                        matched rows is an inner join
                                                                        • A join between two tables that returns
          SELECT e.EmployeeID, e.LastName, e.DepartmentID,
                 d.DepartmentID, d.Name AS DepartmentName
                                                                          the results of the inner join as well as
          FROM Employee e, Department d
                                                                          unmatched rows from the left (or right)
          WHERE e.DepartmentID = d.DepartmentID

                                                                          table is a left (or right) outer join
                                                                                              right)
          EmployeeID   LastName      Depart Depart     DepartmentName
                                                                        • A join between two tables that returns
                                     mentID mentID
          1            Gilbert       7      7          Production
                                                                          the results of an inner join as well as the
          2            Brown         4      4          Marketing
                                                                          results of a left and right join is a full
          3            Tamburello    1      1          Engineering
                                                                          outer join




                        INNER JOIN                                                       LEFT OUTER JOIN

         SELECT e.LastName EmpLastName,                                  SELECT e.LastName EmpLastName,
                m.EmployeeID MgrID, m.LastName MgrLastName                      m.EmployeeID MgrID, m.LastName MgrLastName
         FROM Employee e INNER JOIN Employee m                           FROM Employee e LEFT OUTER JOIN Employee m
           ON e.ManagerID = m.EmployeeID                                   ON e.ManagerID = m.EmployeeID


         EmpLastName         MgrID              MgrLastName              EmpLastName             MgrID               MgrLastName
         Erickson            3                  Tamburello               Sánchez                 NULL                NULL
         Goldberg            3                  Tamburello               Benshoof                6                   Bradley
         Duffy               109                Sánchez                  Miller                  14                  Maxwell
         Johnson             185                Hill                     Okelberry               16                  Brown
         Higa                185                Hill                     Hill                    25                  Mu
         Ford                185                Hill                     Frum                    184                 Richins
         Maxwell             21                 Krebs                    Culbertson              30                  Barreto de Mattos
         ...                 ...                ...                      ...                     ...                 ...




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                                                                    15
RIGHT OUTER JOIN                                              FULL OUTER JOIN

         SELECT e.LastName EmpLastName,                                    SELECT e.LastName EmpLastName,
                m.EmployeeID MgrID, m.LastName MgrLastName                        m.EmployeeID MgrID, m.LastName MgrLastName
         FROM Employee e RIGHT OUTER JOIN Employee m                       FROM employee e FULL OUTER JOIN employee m
           ON e.ManagerID = m.EmployeeID                                     ON e.ManagerID = m.EmployeeID


         EmpLastName             MgrID             MgrLastName             EmpLastName            MgrID                MgrLastName
         Lertpiriyasuwat         38                Liu                     Sanchez                NULL                 NULL
         NULL                    39                Hines                   …                      …                    …
         NULL                    40                McKay                   Cracium                3                    Tamburello
         Berglund                41                Wu                      Gilbert                16                   Brown
         Koenigsbauer            123               Hay                     …                      …                    …
         NULL                    124               Zabokritski             NULL                   17                   Hartwig
         NULL                    125               Decker                  NULL                   1                    Gilbert
         ...                     ...               ...                     …                      …                    …




                            Three-Way Joins                                               Additional Conditions
                            Three-Way
        • A three-way join is a join of three tables
            three-                                                        • You can apply additional conditions in the
            three-way
                                                                            WHERE clause:
          SELECT e.FirstName, e.LastName,
            t.Name as Town, a.AddressText                                  SELECT e.EmployeeID, e.LastName, e.DepartmentID,
          FROM Employee e                                                         d.DepartmentID, d.Name AS DepartmentName
            JOIN Address a                                                 FROM Employee e
              ON e.AddressID = a.AddressID                                   INNER JOIN Department d
            JOIN Town t                                                        ON e.DepartmentID = d.DepartmentID
              ON a.TownID = t.TownID                                       WHERE d.Name = 'Sales'
                                                                                           Sales'


          FirstName        LastName      Town      AddressText             EmployeeID    LastName         Depart   Depart DepartmentName
                                                                                                          mentID   mentID
          Guy              Gilbert       Monroe    7726 Driftwood Drive
                                                                           268           Jiang            3        3      Sales
          Kevin            Brown         Everett   2294 West 39th St.
                                                                           273           Welcker          3        3      Sales
          Roberto          Tamburello    Redmond   8000 Crane Court
                                                                           275           Blythe           3        3       Sales
          ...              ...           ...       ...




                                                                                          Nested SELECT Statements

                                                                          • SELECT statements can be nested in the
                                                                            where clause
                                                                            SELECT FirstName, LastName, Salary
                           SQL Language                                     FROM Employee
                                                                            WHERE Salary =
                                                                              (SELECT MAX(Salary) FROM Employee)
                      Nested SELECT Statements
                                                                            SELECT FirstName, LastName, DepartmentID, Salary
                                                                            FROM Employee
                                                                            WHERE DepartmentID IN
                                                                              (SELECT DepartmentID FROM Department
                                                                               WHERE Name='Sales')

                                                                            • Note: Always prefer joins to nested
                                                                              SELECT statements (better performance)




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                                                                     16
Nested SELECT Statements
                                                                                Using the EXISTS Operator
                     With Table Aliases
        • We can refer tables from the main                  • Using the EXISTS operator in SELECT
          SELECT in the nested SELECT by aliases               statements
        • Example: Get the maximal salary for                  • Find all employees with managers from
          each department and the name of the                    the first department
          employee that gets it
                                                              SELECT FirstName, LastName, EmployeeID, ManagerID
                                                              FROM Employee e
          SELECT FirstName, LastName, DepartmentID, Salary
                                                              WHERE EXISTS
          FROM Employee e
                                                                (SELECT EmployeeID
          WHERE Salary =
                                                                 FROM Employee m
            (SELECT MAX(Salary) FROM Employee
                                                                 WHERE m.EmployeeID = e.ManagerID
             WHERE DepartmentID = e.DepartmentID)
                                  e.DepartmentID)                  AND m.DepartmentID = 1)
          ORDER BY DepartmentID




                                                                                Group Functions
                                                             • Group functions operate on sets of rows
                                                               to give one result per group
                    SQL Language                                EmployeeID      Salary
                       Aggregating Data                         1               12500,00
                                                                2               13500,00
                                                                                                          MAX(Salary)
                                                                3               43300,00
                                                                                                          125500,00
                                                                4               29800,00
                                                                5               25000,00
                                                                ...             ...




                     Group Functions in SQL                                     AVG() and SUM() Functions

        • COUNT(*) – count of the selected rows              • You can use AVG() and SUM() only for
                                                               numeric data types
        • SUM(column) – sum of the values in
          SUM(column)
          given column from the selected rows                  SELECT
                                                                 AVG(Salary) [Average Salary],
                                                                             [Average
        • AVG(column) – average of the values in
          AVG(column)                                            MAX(Salary) [Max Salary],
                                                                 MIN(Salary) [Min Salary],
          given column                                           SUM(Salary) [Salary Sum]
                                                                                      Sum]
                                                               FROM Employee
        • MAX(column) – the maximal value in
          MAX(column)                                          WHERE JobTitle = 'Sales Representative'
          given column
                                                               Average Salary   Max Salary   Min Salary   Salary Sum
        • MIN(column) – the minimal value in
          MIN(column)                                          23100,00         23100,00     23100,00     323400,00
          given column




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                                                  17
The COUNT(…) Function
                         MIN() and MAX() Functions                                            COUNT(…)
        • You can use MIN() and MAX() for any                               • COUNT(*) returns the number of rows in
          data type (int, datetime, varchar, ...)
                    (int, datetime, varchar,                                  the result table
                    (int,
          SELECT MIN(HireDate) MinHD, MAX(HireDate) MaxHD                                                          Cnt
                                                                              SELECT COUNT(*) Cnt FROM Employee
          FROM Employee                                                       WHERE DepartmentID = 3               18

          MinHD                             MaxHD
                                                                            • COUNT(expr) returns the number of rows
                                                                              COUNT(expr)
                                                                              COUNT(expr)
          1996-07-31
          1996- 07-                         2003-06-03
                                            2003- 06-
                                                                              with non-null values for the expr
                                                                                   non-
                                                                                   non-null
        • Displaying the first and last employee's
                                                                                                                  MgrCount AllCount
                                                                              SELECT COUNT(ManagerID) MgrCount,
          name in alphabetical order:                                                COUNT(*) AllCount            1        2
                                                                              FROM Employee
          SELECT MIN(LastName), MAX(LastName)
                                                                              WHERE DepartmentID = 16
          FROM employee




                         Group Functions in Nested
                         Queries
        • For each department display the earliest
          hired employee
                                                                                         SQL Language
         SELECT e.FirstName, e.LastName, e.HireDate, d.Name
         FROM Employee e
           JOIN Department d
                                                                                        Group Functions and the
             ON e.DepartmentID = d.DepartmentID
                                                                                          GROUP BY Statement
         WHERE e.HireDate =
           (SELECT MIN(HireDate) FROM Employee
            WHERE DepartmentID = d.DepartmentID)

         FirstName     LastName      HireDate              Name
         Guy           Gilbert       1998-07-31 00:00:00
                                     1998- 07-             Production
         Kevin         Brown         1999-02-26 00:00:00
                                     1999- 02-             Marketing
         Roberto       Tamburello    1999-12-12 00:00:00
                                     1999- 12-             Engineering




                                                                                          The GROUP BY Statement
                         Creating Groups of Data
                                                                            • We can divide rows in a table into smaller
         Employee
                                                                              groups by using the GROUP BY clause
          DepartmentID Salary
          12            10300
                                                                            • The syntax:
          12            16800
                                    72000
          12            16800
                                                                              SELECT   <columns>, <group_function(column)>
                                                                                       <columns>, <group_function(column)>
                                                 DepartmentID SUM(Salary)
          12            10300
                                                                              FROM     <table>
                                                                                       <table>
                                                 12           72000
          12            17800
                                                                              [WHERE   <condition>]
                                                                                       <condition>]
                                                 2            108600
          2             28800
                                                                              [GROUP   BY <group_by_expression>]
                                                                                            group_by_expression>]
                                                 16           185600
          2             25000
                                    108600                                    [ORDER   BY <columns>
                                                                                            columns>
                                                 ...          ...
          2             29800
          2             25000
                                                                            • The <group_by_expression> is a list of
                                                                                  <group_by_expression>
          16            125500
                                    185600
                                                                             columns
          16            60100
          ...           ...




(c) 2006 National Academy for Software
Development - http://academy.devbg.org                                                                                                18
Intro To RDBMS And SQL Server 2005 - Svetlin Nakov
Intro To RDBMS And SQL Server 2005 - Svetlin Nakov
Intro To RDBMS And SQL Server 2005 - Svetlin Nakov
Intro To RDBMS And SQL Server 2005 - Svetlin Nakov

More Related Content

What's hot

俄罗斯Gost标准,进出口购买商品目录№RG 3753
俄罗斯Gost标准,进出口购买商品目录№RG 3753俄罗斯Gost标准,进出口购买商品目录№RG 3753
俄罗斯Gost标准,进出口购买商品目录№RG 3753Turkmenistan Laws
 
Библейские истории: Животные
Библейские истории: ЖивотныеБиблейские истории: Животные
Библейские истории: ЖивотныеFreekidstories
 
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2689
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2689俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2689
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2689Turkmenistan Laws
 
тупицын Ec2 Rootconf2009
тупицын Ec2 Rootconf2009тупицын Ec2 Rootconf2009
тупицын Ec2 Rootconf2009Liudmila Li
 
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 146
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 146俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 146
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 146Turkmenistan Laws
 
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 1479
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 1479俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 1479
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 1479Turkmenistan Laws
 
Обеспечение безопасности web приложений
Обеспечение безопасности web приложенийОбеспечение безопасности web приложений
Обеспечение безопасности web приложенийSQALab
 
俄罗斯Gost标准,进出口购买商品目录№RG 375
俄罗斯Gost标准,进出口购买商品目录№RG 375俄罗斯Gost标准,进出口购买商品目录№RG 375
俄罗斯Gost标准,进出口购买商品目录№RG 375Turkmenistan Laws
 
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3434
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3434俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3434
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3434Azerbaijan Laws
 
Taleb's Black Swan - SG 20090520
Taleb's Black Swan - SG 20090520Taleb's Black Swan - SG 20090520
Taleb's Black Swan - SG 20090520beewolf
 
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 1961
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 1961俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 1961
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 1961Armenia Laws
 
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3897
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3897俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3897
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3897Azerbaijan Laws
 
企业级搜索引擎Solr交流
企业级搜索引擎Solr交流企业级搜索引擎Solr交流
企业级搜索引擎Solr交流chuan liang
 
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2657
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2657俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2657
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2657Turkmenistan Laws
 
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 101
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 101俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 101
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 101Turkmenistan Laws
 
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 4122
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 4122俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 4122
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 4122Azerbaijan Laws
 

What's hot (20)

俄罗斯Gost标准,进出口购买商品目录№RG 3753
俄罗斯Gost标准,进出口购买商品目录№RG 3753俄罗斯Gost标准,进出口购买商品目录№RG 3753
俄罗斯Gost标准,进出口购买商品目录№RG 3753
 
Библейские истории: Животные
Библейские истории: ЖивотныеБиблейские истории: Животные
Библейские истории: Животные
 
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2689
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2689俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2689
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2689
 
20070613 Rit2007 Training
20070613 Rit2007 Training20070613 Rit2007 Training
20070613 Rit2007 Training
 
тупицын Ec2 Rootconf2009
тупицын Ec2 Rootconf2009тупицын Ec2 Rootconf2009
тупицын Ec2 Rootconf2009
 
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 146
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 146俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 146
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 146
 
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 1479
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 1479俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 1479
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 1479
 
Обеспечение безопасности web приложений
Обеспечение безопасности web приложенийОбеспечение безопасности web приложений
Обеспечение безопасности web приложений
 
俄罗斯Gost标准,进出口购买商品目录№RG 375
俄罗斯Gost标准,进出口购买商品目录№RG 375俄罗斯Gost标准,进出口购买商品目录№RG 375
俄罗斯Gost标准,进出口购买商品目录№RG 375
 
Postgre Sql 8 4
Postgre Sql 8 4Postgre Sql 8 4
Postgre Sql 8 4
 
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3434
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3434俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3434
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3434
 
Taleb's Black Swan - SG 20090520
Taleb's Black Swan - SG 20090520Taleb's Black Swan - SG 20090520
Taleb's Black Swan - SG 20090520
 
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 1961
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 1961俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 1961
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 1961
 
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3897
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3897俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3897
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3897
 
Scrum And Business
Scrum And BusinessScrum And Business
Scrum And Business
 
企业级搜索引擎Solr交流
企业级搜索引擎Solr交流企业级搜索引擎Solr交流
企业级搜索引擎Solr交流
 
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2657
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2657俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2657
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2657
 
Hasql in practice (Russian)
Hasql in practice (Russian)Hasql in practice (Russian)
Hasql in practice (Russian)
 
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 101
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 101俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 101
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 101
 
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 4122
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 4122俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 4122
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 4122
 

Viewers also liked

Comobajarelprec Carburantes
Comobajarelprec CarburantesComobajarelprec Carburantes
Comobajarelprec Carburantescalentito
 
NARS - Opening the Academy for Software Developers
NARS - Opening the Academy for Software DevelopersNARS - Opening the Academy for Software Developers
NARS - Opening the Academy for Software DevelopersSvetlin Nakov
 
Nakov High Quality Code
Nakov High Quality CodeNakov High Quality Code
Nakov High Quality CodeSvetlin Nakov
 
Echemos el telón a 20 años y 30 días de Gilismo
Echemos el telón a 20 años y 30 días de GilismoEchemos el telón a 20 años y 30 días de Gilismo
Echemos el telón a 20 años y 30 días de Gilismokyll0
 
Mickey’S Adventures In Vmk.Gif
Mickey’S Adventures In Vmk.GifMickey’S Adventures In Vmk.Gif
Mickey’S Adventures In Vmk.Gifdasherthepup
 
Cool Things You Can Do With Gmail
Cool Things You Can Do With GmailCool Things You Can Do With Gmail
Cool Things You Can Do With Gmaillagrace625
 
Blue Ocean Strategy
Blue Ocean StrategyBlue Ocean Strategy
Blue Ocean Strategykkjjkevin03
 

Viewers also liked (9)

Comobajarelprec Carburantes
Comobajarelprec CarburantesComobajarelprec Carburantes
Comobajarelprec Carburantes
 
BT- It Nice Guy
BT-  It Nice GuyBT-  It Nice Guy
BT- It Nice Guy
 
NARS - Opening the Academy for Software Developers
NARS - Opening the Academy for Software DevelopersNARS - Opening the Academy for Software Developers
NARS - Opening the Academy for Software Developers
 
Nakov High Quality Code
Nakov High Quality CodeNakov High Quality Code
Nakov High Quality Code
 
Echemos el telón a 20 años y 30 días de Gilismo
Echemos el telón a 20 años y 30 días de GilismoEchemos el telón a 20 años y 30 días de Gilismo
Echemos el telón a 20 años y 30 días de Gilismo
 
Blonde Accident
Blonde AccidentBlonde Accident
Blonde Accident
 
Mickey’S Adventures In Vmk.Gif
Mickey’S Adventures In Vmk.GifMickey’S Adventures In Vmk.Gif
Mickey’S Adventures In Vmk.Gif
 
Cool Things You Can Do With Gmail
Cool Things You Can Do With GmailCool Things You Can Do With Gmail
Cool Things You Can Do With Gmail
 
Blue Ocean Strategy
Blue Ocean StrategyBlue Ocean Strategy
Blue Ocean Strategy
 

Similar to Intro To RDBMS And SQL Server 2005 - Svetlin Nakov

Управление рисками ИБ: отдельные практические аспекты
Управление рисками ИБ: отдельные практические аспектыУправление рисками ИБ: отдельные практические аспекты
Управление рисками ИБ: отдельные практические аспектыAleksey Lukatskiy
 
Java For Digitally Signing Documents In Web Book - Svetlin Nakov
Java For Digitally Signing Documents In Web Book - Svetlin NakovJava For Digitally Signing Documents In Web Book - Svetlin Nakov
Java For Digitally Signing Documents In Web Book - Svetlin NakovSvetlin Nakov
 
Customer Profiling&Targeted Advertisement
Customer Profiling&Targeted AdvertisementCustomer Profiling&Targeted Advertisement
Customer Profiling&Targeted Advertisement2tique
 
Background Examples From Eu Ru
Background Examples From Eu RuBackground Examples From Eu Ru
Background Examples From Eu RuVictor Gridnev
 
Учет рабочего времени сотрудников: полное руководство
Учет рабочего времени сотрудников: полное руководство Учет рабочего времени сотрудников: полное руководство
Учет рабочего времени сотрудников: полное руководство Yaware
 
Сегментация рынка и сегментационные исследования
Сегментация рынка и сегментационные исследованияСегментация рынка и сегментационные исследования
Сегментация рынка и сегментационные исследованияabramamama
 
ТЕХНИКА ВЗЛОМА.
ТЕХНИКА ВЗЛОМА.ТЕХНИКА ВЗЛОМА.
ТЕХНИКА ВЗЛОМА.Matweika
 
Розробка уроку з англійської мови.
Розробка  уроку  з англійської мови.Розробка  уроку  з англійської мови.
Розробка уроку з англійської мови.ssuser672c3e
 
vSphere Launch Business Keynote - Москва, 26 мая
vSphere Launch Business Keynote - Москва, 26 маяvSphere Launch Business Keynote - Москва, 26 мая
vSphere Launch Business Keynote - Москва, 26 маяAnton Antich
 
норма санпин
норма санпиннорма санпин
норма санпинhelen-66
 
норма санпин
норма санпиннорма санпин
норма санпинhelen-66
 
Как построить лучший корпоративный Университет (по версии CUX). Опыт и рекоме...
Как построить лучший корпоративный Университет (по версии CUX). Опыт и рекоме...Как построить лучший корпоративный Университет (по версии CUX). Опыт и рекоме...
Как построить лучший корпоративный Университет (по версии CUX). Опыт и рекоме...Vitaliy Mazurenko
 
Delivery of media content of IIS Media Services
Delivery of media content of  IIS Media ServicesDelivery of media content of  IIS Media Services
Delivery of media content of IIS Media ServicesSQALab
 
Как сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsКак сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsYaroslav Markin
 
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3411
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3411俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3411
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3411Azerbaijan Laws
 
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3455
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3455俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3455
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3455Azerbaijan Laws
 
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3701
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3701俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3701
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3701Azerbaijan Laws
 
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 4121
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 4121俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 4121
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 4121Azerbaijan Laws
 

Similar to Intro To RDBMS And SQL Server 2005 - Svetlin Nakov (20)

Управление рисками ИБ: отдельные практические аспекты
Управление рисками ИБ: отдельные практические аспектыУправление рисками ИБ: отдельные практические аспекты
Управление рисками ИБ: отдельные практические аспекты
 
Java For Digitally Signing Documents In Web Book - Svetlin Nakov
Java For Digitally Signing Documents In Web Book - Svetlin NakovJava For Digitally Signing Documents In Web Book - Svetlin Nakov
Java For Digitally Signing Documents In Web Book - Svetlin Nakov
 
Customer Profiling&Targeted Advertisement
Customer Profiling&Targeted AdvertisementCustomer Profiling&Targeted Advertisement
Customer Profiling&Targeted Advertisement
 
Background Examples From Eu Ru
Background Examples From Eu RuBackground Examples From Eu Ru
Background Examples From Eu Ru
 
Учет рабочего времени сотрудников: полное руководство
Учет рабочего времени сотрудников: полное руководство Учет рабочего времени сотрудников: полное руководство
Учет рабочего времени сотрудников: полное руководство
 
Сегментация рынка и сегментационные исследования
Сегментация рынка и сегментационные исследованияСегментация рынка и сегментационные исследования
Сегментация рынка и сегментационные исследования
 
ТЕХНИКА ВЗЛОМА.
ТЕХНИКА ВЗЛОМА.ТЕХНИКА ВЗЛОМА.
ТЕХНИКА ВЗЛОМА.
 
Розробка уроку з англійської мови.
Розробка  уроку  з англійської мови.Розробка  уроку  з англійської мови.
Розробка уроку з англійської мови.
 
Grape Online Strategy Cases
Grape Online Strategy CasesGrape Online Strategy Cases
Grape Online Strategy Cases
 
vSphere Launch Business Keynote - Москва, 26 мая
vSphere Launch Business Keynote - Москва, 26 маяvSphere Launch Business Keynote - Москва, 26 мая
vSphere Launch Business Keynote - Москва, 26 мая
 
норма санпин
норма санпиннорма санпин
норма санпин
 
норма санпин
норма санпиннорма санпин
норма санпин
 
EU Competition Policy
EU Competition PolicyEU Competition Policy
EU Competition Policy
 
Как построить лучший корпоративный Университет (по версии CUX). Опыт и рекоме...
Как построить лучший корпоративный Университет (по версии CUX). Опыт и рекоме...Как построить лучший корпоративный Университет (по версии CUX). Опыт и рекоме...
Как построить лучший корпоративный Университет (по версии CUX). Опыт и рекоме...
 
Delivery of media content of IIS Media Services
Delivery of media content of  IIS Media ServicesDelivery of media content of  IIS Media Services
Delivery of media content of IIS Media Services
 
Как сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsКак сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on Rails
 
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3411
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3411俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3411
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3411
 
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3455
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3455俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3455
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3455
 
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3701
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3701俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3701
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3701
 
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 4121
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 4121俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 4121
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 4121
 

More from Svetlin Nakov

BG-IT-Edu: отворено учебно съдържание за ИТ учители
BG-IT-Edu: отворено учебно съдържание за ИТ учителиBG-IT-Edu: отворено учебно съдържание за ИТ учители
BG-IT-Edu: отворено учебно съдържание за ИТ учителиSvetlin Nakov
 
Programming World in 2024
Programming World in 2024Programming World in 2024
Programming World in 2024Svetlin Nakov
 
AI Tools for Business and Startups
AI Tools for Business and StartupsAI Tools for Business and Startups
AI Tools for Business and StartupsSvetlin Nakov
 
AI Tools for Scientists - Nakov (Oct 2023)
AI Tools for Scientists - Nakov (Oct 2023)AI Tools for Scientists - Nakov (Oct 2023)
AI Tools for Scientists - Nakov (Oct 2023)Svetlin Nakov
 
AI Tools for Entrepreneurs
AI Tools for EntrepreneursAI Tools for Entrepreneurs
AI Tools for EntrepreneursSvetlin Nakov
 
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023Svetlin Nakov
 
AI Tools for Business and Personal Life
AI Tools for Business and Personal LifeAI Tools for Business and Personal Life
AI Tools for Business and Personal LifeSvetlin Nakov
 
Дипломна работа: учебно съдържание по ООП - Светлин Наков
Дипломна работа: учебно съдържание по ООП - Светлин НаковДипломна работа: учебно съдържание по ООП - Светлин Наков
Дипломна работа: учебно съдържание по ООП - Светлин НаковSvetlin Nakov
 
Дипломна работа: учебно съдържание по ООП
Дипломна работа: учебно съдържание по ООПДипломна работа: учебно съдържание по ООП
Дипломна работа: учебно съдържание по ООПSvetlin Nakov
 
Свободно ИТ учебно съдържание за учители по програмиране и ИТ
Свободно ИТ учебно съдържание за учители по програмиране и ИТСвободно ИТ учебно съдържание за учители по програмиране и ИТ
Свободно ИТ учебно съдържание за учители по програмиране и ИТSvetlin Nakov
 
AI and the Professions of the Future
AI and the Professions of the FutureAI and the Professions of the Future
AI and the Professions of the FutureSvetlin Nakov
 
Programming Languages Trends for 2023
Programming Languages Trends for 2023Programming Languages Trends for 2023
Programming Languages Trends for 2023Svetlin Nakov
 
IT Professions and How to Become a Developer
IT Professions and How to Become a DeveloperIT Professions and How to Become a Developer
IT Professions and How to Become a DeveloperSvetlin Nakov
 
GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)Svetlin Nakov
 
IT Professions and Their Future
IT Professions and Their FutureIT Professions and Their Future
IT Professions and Their FutureSvetlin Nakov
 
How to Become a QA Engineer and Start a Job
How to Become a QA Engineer and Start a JobHow to Become a QA Engineer and Start a Job
How to Become a QA Engineer and Start a JobSvetlin Nakov
 
Призвание и цели: моята рецепта
Призвание и цели: моята рецептаПризвание и цели: моята рецепта
Призвание и цели: моята рецептаSvetlin Nakov
 
What Mongolian IT Industry Can Learn from Bulgaria?
What Mongolian IT Industry Can Learn from Bulgaria?What Mongolian IT Industry Can Learn from Bulgaria?
What Mongolian IT Industry Can Learn from Bulgaria?Svetlin Nakov
 
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)How to Become a Software Developer - Nakov in Mongolia (Oct 2022)
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)Svetlin Nakov
 
Blockchain and DeFi Overview (Nakov, Sept 2021)
Blockchain and DeFi Overview (Nakov, Sept 2021)Blockchain and DeFi Overview (Nakov, Sept 2021)
Blockchain and DeFi Overview (Nakov, Sept 2021)Svetlin Nakov
 

More from Svetlin Nakov (20)

BG-IT-Edu: отворено учебно съдържание за ИТ учители
BG-IT-Edu: отворено учебно съдържание за ИТ учителиBG-IT-Edu: отворено учебно съдържание за ИТ учители
BG-IT-Edu: отворено учебно съдържание за ИТ учители
 
Programming World in 2024
Programming World in 2024Programming World in 2024
Programming World in 2024
 
AI Tools for Business and Startups
AI Tools for Business and StartupsAI Tools for Business and Startups
AI Tools for Business and Startups
 
AI Tools for Scientists - Nakov (Oct 2023)
AI Tools for Scientists - Nakov (Oct 2023)AI Tools for Scientists - Nakov (Oct 2023)
AI Tools for Scientists - Nakov (Oct 2023)
 
AI Tools for Entrepreneurs
AI Tools for EntrepreneursAI Tools for Entrepreneurs
AI Tools for Entrepreneurs
 
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023
 
AI Tools for Business and Personal Life
AI Tools for Business and Personal LifeAI Tools for Business and Personal Life
AI Tools for Business and Personal Life
 
Дипломна работа: учебно съдържание по ООП - Светлин Наков
Дипломна работа: учебно съдържание по ООП - Светлин НаковДипломна работа: учебно съдържание по ООП - Светлин Наков
Дипломна работа: учебно съдържание по ООП - Светлин Наков
 
Дипломна работа: учебно съдържание по ООП
Дипломна работа: учебно съдържание по ООПДипломна работа: учебно съдържание по ООП
Дипломна работа: учебно съдържание по ООП
 
Свободно ИТ учебно съдържание за учители по програмиране и ИТ
Свободно ИТ учебно съдържание за учители по програмиране и ИТСвободно ИТ учебно съдържание за учители по програмиране и ИТ
Свободно ИТ учебно съдържание за учители по програмиране и ИТ
 
AI and the Professions of the Future
AI and the Professions of the FutureAI and the Professions of the Future
AI and the Professions of the Future
 
Programming Languages Trends for 2023
Programming Languages Trends for 2023Programming Languages Trends for 2023
Programming Languages Trends for 2023
 
IT Professions and How to Become a Developer
IT Professions and How to Become a DeveloperIT Professions and How to Become a Developer
IT Professions and How to Become a Developer
 
GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)
 
IT Professions and Their Future
IT Professions and Their FutureIT Professions and Their Future
IT Professions and Their Future
 
How to Become a QA Engineer and Start a Job
How to Become a QA Engineer and Start a JobHow to Become a QA Engineer and Start a Job
How to Become a QA Engineer and Start a Job
 
Призвание и цели: моята рецепта
Призвание и цели: моята рецептаПризвание и цели: моята рецепта
Призвание и цели: моята рецепта
 
What Mongolian IT Industry Can Learn from Bulgaria?
What Mongolian IT Industry Can Learn from Bulgaria?What Mongolian IT Industry Can Learn from Bulgaria?
What Mongolian IT Industry Can Learn from Bulgaria?
 
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)How to Become a Software Developer - Nakov in Mongolia (Oct 2022)
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)
 
Blockchain and DeFi Overview (Nakov, Sept 2021)
Blockchain and DeFi Overview (Nakov, Sept 2021)Blockchain and DeFi Overview (Nakov, Sept 2021)
Blockchain and DeFi Overview (Nakov, Sept 2021)
 

Recently uploaded

Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 
Français Patch Tuesday - Avril
Français Patch Tuesday - AvrilFrançais Patch Tuesday - Avril
Français Patch Tuesday - AvrilIvanti
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentMahmoud Rabie
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialJoão Esperancinha
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 

Recently uploaded (20)

Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 
Français Patch Tuesday - Avril
Français Patch Tuesday - AvrilFrançais Patch Tuesday - Avril
Français Patch Tuesday - Avril
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
How Tech Giants Cut Corners to Harvest Data for A.I.
How Tech Giants Cut Corners to Harvest Data for A.I.How Tech Giants Cut Corners to Harvest Data for A.I.
How Tech Giants Cut Corners to Harvest Data for A.I.
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career Development
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorial
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 

Intro To RDBMS And SQL Server 2005 - Svetlin Nakov

  • 1. Съдържание 1. Национална академия по разработка на софтуер (НАРС) НАРС) (НАРС) Релационни бази от данни и 2. Релационни бази от данни Microsoft SQL Server 2005 • Таблици, връзки, E/R диаграми, Таблици, връзки, диаграми, Теория и практика нормализация, съхранени процедури, нормализация, процедури, тригери, изгледи, транзакции тригери, изгледи, 3. Работа с езика SQL Светлин Наков • Извличане на данни, съединения, данни, съединения, агрегатни функции, групиране функции, Национална академия по разработка на софтуер • Вмъкване, промяна, изтриване Вмъкване, промяна, academy.devbg.org За лектора • Светлин Наков • Носител на наградата “Джон “Джон Национална академия Атанасов” на Президента на Атанасов” по разработка на България • Автор на 3 книги и над 20 статии софтуер (НАРС) • 15 години опит с програмирането • 8 от тях професионално • Директор направление обучение в Национална академия по разработка на софтуер • Преподавател във ФМИ на СУ Какво е НАРС? НАРС? Курсовете за начинаещи • Национална академия по разработка • Курсове за начинаещи – 6 седмици на софтуер (НАРС) НАРС) (НАРС) • Въведение в програмирането с C# и Java • Практическо обучение за софтуерни • Не се изискват предварителни знания инженери • Обхващат основите на програмирането • Курсове за начинаещи и напреднали • Масиви, цикли, структури от данни Масиви, цикли, • Специалности Java и .NET • Вход / изход, елементи от ООП изход, • Гарантирана работа по специалността • Успешно завършилите продължават в следващите нива • Безплатно! Безплатно! • Безплатно! Безплатно! • http://academy.devbg.org (c) 2006 National Academy for Software Development - http://academy.devbg.org 1
  • 2. Курсове за напреднали НАРС – успешен старт • Курсове за напреднали • НАРС ви гарантира успешен старт в кариерата на софтуерен инженер • Дават професията “софтуерен инженер” “софтуерен инженер” • Практическо обучение по: по: • Работа в престижи софтуерни фирми: фирми: • Обектно-ориентирано програмиране Обектно- Обектно-ориентирано • SAP Labs Bulgaria, telerik, Sciant, Rila Solutions, Sirma, Seeburger Informatik, • Бази от данни (Oracle, SQL Server) (Oracle, ICB, Stemo, Wohnfinder, Bank Service • Уеб приложения и GUI приложения • Безплатно обучение! обучение! • Софтуерно инженерство и работа в екип • Специалности Java и .NET • Гарантирана работа! работа! • За контакти: контакти: • Безплатно! Безплатно! http://academy.devbg.org Релационни бази от данни • Модели на базите от данни • йерархичен (дървовиден) дървовиден) (дървовиден) Релационни • мрежови бази от данни • релационен (табличен) табличен) (табличен) • обектно-релационен обектно- обектно-релационен Фундаментални концепции • Релационните бази от данни • Представляват съвкупности от таблици и връзки между тях (релации) релации) (релации) • Ползват здрава математическа основа: основа: релационната алгебра Системи за управление на Системи за управление на бази от данни бази от данни • Системи за управление на релационни бази от • RDBMS системите се наричат още данни (СУБД) = Relational Database Management СУБД) (СУБД) • сървъри за управление на бази от данни System (RDBMS) (RDBMS) • или просто quot;Database сървъриquot; сървъриquot; • Осигуряват програмни средства за: за: • По-известни RDBMS сървъри: По- сървъри: По-известни • създаване / промяна / изтриване на таблици • Oracle Database и връзки между тях • Microsoft SQL Server • добавяне, промяна, изтриване, търсене и добавяне, промяна, изтриване, • IBM DB2 извличане на данни от таблиците • PostgreSQL • поддръжка на езика SQL • MySQL • управление на транзакции • Borland Interbase (незадължително) незадължително) (незадължително) (c) 2006 National Academy for Software Development - http://academy.devbg.org 2
  • 3. Таблици • Таблиците представляват съвкупност от стойности, подредени в редове и колони. стойности, колони. Пример (таблица PERSONS): (таблица PERSONS): Таблици и връзки id name family employer 1 Светлин Наков НАРС Основни понятия 2 Бранимир Гюров Tam Tam 3 Мартин Кулов НАРС • Редовете имат еднаква структура • Колоните имат име и тип (число, символен число, (число, низ, дата или др.) низ, др.) Схема на таблица Първичен ключ • Схема на таблица е наредена • Първичният ключ (primary key) е колона от таблицата, която уникално идентифицира таблицата, последователност от описания на даден неин ред колони (име и тип) (име тип) id name family employer Primary • Например таблицата PERSONS има key 1 Светлин Наков БАРС следната схема: схема: 2 Бранимир Гюров BSH PERSONS ( 3 Мартин Кулов CodeAttest id: число, id: число, • Два записа (реда) са различни когато са реда) (реда) name: символен низ, name: низ, различни първичните им ключове family: символен низ, family: низ, employer: символен низ • Първичният ключ може да е съвкупност от ) няколко колони Връзки (релации) Връзки (релации) (релации) (релации) • Връзките между таблиците се базират на • Външният ключ (foreign key) е номер на (foreign взаимоотношения primary key / foreign key запис (primary key) в друга таблица • Връзките спестяват повтарянето на Foreign Primary key информация key Primary TOWN key • В примера името на държавата не се повтаря id name country_id COUNTRY за всеки град 1 София 1 id name • Връзките имат множественост (multiplicity): multiplicity): (multiplicity): 2 Пловдив 1 1 България • 1 x 1 – например човек ↔ студент 3 Мюнхен 2 2 Германия • 1 x много – държава / градове 4 Берлин 2 3 Русия 5 Москва 3 • много x много – студент / учебен курс (c) 2006 National Academy for Software Development - http://academy.devbg.org 3
  • 4. Множественост на Множественост на връзките (1 x 1) връзките (1 x n) • Връзка 1 x 1 • Връзка 1 x много (или много x 1) (или • 1 запис от едната таблица съответства • 1 запис от първата таблица съответства на точно 1 запис от другата таблица на много записи от втората таблица • Моделира наследяване на таблици • Използва се много често Primary Primary & TOWN key Foreign key id name country_id TOWN POPULATION COUNTRY 1 София 1 id population id name id name 2 Пловдив 1 1 София 1 1 177 000 1 България 3 Мюнхен 2 2 Пловдив 2 720 000 2 Германия 4 Берлин 2 3 1 260 000 3 Мюнхен 3 Русия 5 Москва 3 4 3 400 000 4 Берлин Множественост на връзките (n x n) • Връзка много x много • 1 запис от първата таблица съответства на много записи от втората таблица и обратното E/R диаграми • Реализира се чрез междинна таблица STUDENT_COURSE STUDENT COURSE student_id course_id id name id name 1 1 1 Пешо 1 .NET 1 2 2 Минка 3 2 2 Java 3 Гошо 3 3 3 PHP 4 Пенка 4 2 Релационна схема E/R диаграми – пример Диаграмата е • Релационна схема на БД наричаме създадена с Microsoft SQL съвкупността от: от: Server Management Studio • схемите на всички таблици • връзките между таблиците • Релационната схема описва структурата на БД • не съдържа данни, а само метаданни данни, • Релационните схеми се изобразяват графично чрез Entity/Relationship диаграми (E/R Diagrams) (E/R (c) 2006 National Academy for Software Development - http://academy.devbg.org 4
  • 5. E/R диаграми – пример E/R диаграми – пример Диаграмата е създадена Диаграмата е с fabFORCE DB Designer създадена с PLATINUM ERwin E/R диаграми – пример (c) 2006 National Academy for Software Development - http://academy.devbg.org 5
  • 6. Нормализация Нормализация – пример • Пример за нормализирана схема: схема: • Нормализацията на релационната схема премахва повтарящите се данни PRODUCT • Денормализираните данни съдържат произво катего магаз град id продукт цена много повторения. Например: повторения. Например: дител_id дител_id рия_id ин_id _id рия_id ин_id 1 кисело мляко 2 0.67 2 4 1 произво- произво- продукт цена категория магазин град 2 хляб quot;Добруждаquot; Добруждаquot; 3 0.55 2 4 1 дител 3 ракия quot;Пещерскаquot; Пещерскаquot; 6 4.38 5 2 1 кисело Млекис 0.67 хранителни супермаркет София мляко ООД стоки quot;Ментеquot; Ментеquot; 4 бира quot;Tuborgquot; 4 0.67 4 1 3 хляб Фурна 0.55 хранителни супермаркет София VENDOR CATEGORY quot;Добруждаquot; Добруждаquot; quot;Пушекаquot; Пушекаquot; стоки quot;Ментеquot; Ментеquot; STORE TOWN бира Загорка 0.58 безалкох. безалкох. павилион Варна id име id име id име id име quot;Загоркаquot; Загоркаquot; АД напитки quot;24 часаquot; часаquot; 2 quot;Млексquot; ООД Млексquot; 4 бира 1 София 1 Billa бира Шуменско 0.67 безалкох. безалкох. павилион Варна 4 quot;Загоркаquot; АД Загоркаquot; 2 хранителни 3 Варна 4 METRO quot;Tuborgquot; пиво АД напитки quot;24 часаquot; часаquot; Ограничения (Constraints) • Ограниченията (constraints) задават (constraints) правила, за данните, които не могат да правила, данните, бъдат нарушавани Ограничения • Ограничение по първичен ключ (primary (primary (Constraints) key constraint) • Първичният ключ е уникален за всеки запис • Ограничение по уникален ключ (unique key (unique constraint) • Стойностите в дадена колона (или група (или колони) са уникални колони) Ограничения (Constraints) • Ограничение по външен ключ (foreign (foreign key constraint) • Стойността в дадена колона е ключ от друга таблица Индекси • Ограничение по стойност (check (check constraint) • Стойностите в дадена колона изпълняват дадено условие • Например: Например: • (hour>=0) AND (hour<=24) (hour>=0) • name = upper(name) (c) 2006 National Academy for Software Development - http://academy.devbg.org 6
  • 7. Индекси • Индексите ускоряват скоростта на търсене на стойност в дадена колона или група от колони • Ползват се при големи таблици Езикът SQL • Реализират се най-често с B-дървета най- най-често B-дървета или хеш-таблици хеш- хеш-таблици • Могат да бъдат външни (извън (извън таблицата) или вградени таблицата) • Добавянето и изтриването от индексирани таблици е по-бавно по- по-бавно Езикът SQL Езикът SQL • SQL (Structured Query Language) • SQL се състои от: от: • Стандартизиран декларативен език • DDL – Data Definition Language (стандарт) за манипулация на релационни стандарт) (стандарт) • Команди CREATE, ALTER, DROP бази от данни • DML – Data Manipulation Language • SQL-92 – поддържан от всички RDBMS SQL- SQL-92 • SQL-99 – навлиза все повече SQL- SQL-99 • Команди SELECT, INSERT, UPDATE, DELETE • SQL поддържа: поддържа: • Пример за SQL SELECT заявка: заявка: • Създаване, промяна, изтриване на таблици Създаване, промяна, и други обекти в БД SELECT Name • Търсене, извличане, добавяне, промяна и Търсене, извличане, добавяне, FROM Town изтриване на данни WHERE TownId = 18 Съхранение процедури • Процедури на ниво база (запазени (запазени процедури, stored procedures) процедури, • Програмен код, който се изпълнява в самия код, Съхранени сървър за бази данни процедури • Работят много по-бързо от външен код по- по-бързо • Данните са локално достъпни • Могат да приемат параметри • Могат да връщат резултат • единична стойност • съвкупност от записи (record set) (record (c) 2006 National Academy for Software Development - http://academy.devbg.org 7
  • 8. Съхранени процедури • Процедури на ниво база се пишат на език, разширение на SQL език, • T-SQL – в Microsoft SQL Server T-SQL Изгледи (Views) • PL/SQL – в Oracle • Пример за процедура на T-SQL: SQL: T-SQL: CREATE PROC sp_FindEmployee sp_F indEmployee @empnum int AS SELECT * FROM Employees WHERE emp_id = @empnum Изгледи (views) – (views) Изгледи (views) (views) пример T_COMPANY T_TOWN T_COUNTRY • Изгледите представляват именувани town count id country id company id town SQL SELECT заявки, които се използват заявки, _id ry_id 1 България като таблици 1 Менте ООД 1 1 София 1 2 Русия 2 BulkSoft Inc. 2 2 New York 3 3 САЩ • Улесняват писането на сложни SQL 3 ХардСофт АД 4 3 Москва 2 заявки 4 Спутник АД 3 4 Пловдив 1 • Прилагат се за фина настройка на CREATE VIEW V_BG_COMPANY AS сигурността: сигурността: SELECT V_BG_COMPANY T_COMPANY.id AS id, T_COMPANY.company AS company • На даден потребител не се дават права id company FROM T_COMPANY INNER JOIN над никоя таблица (T_TOWN INNER JOIN T_COUNTRY ON 1 Менте ООД T_TOWN.country_id=T_COUNTRY.id) 3 ХардСофт АД • Дават му се права само над някои ON T_COMPANY.town_id=T_TOWN.id WHERE изгледи (подмножество от данните) данните) (подмножество T_COUNTRY.country=quot;Българияquot;; T_COUNTRY.country=quot;Българияquot;; Тригери (triggers) • Тригерите (triggers) са процедури на ниво (triggers) база, които се активират при някакво база, условие, например: условие, например: • при добавяне на запис Тригери (Triggers) • при промяна на запис • при изтриване на запис • Тригерите могат да извършват допълнителна обработка на данните • промяна на данните при добавяне • поддръжка на логове и история (c) 2006 National Academy for Software Development - http://academy.devbg.org 8
  • 9. Тригери – пример • Имаме таблица с имена на фирми: фирми: CREATE TABLE COMPANY( Транзакции id int NOT NULL, name varchar(50) NOT NULL) Интегритет на данните и управление • Тригер, който при добавяне на нова Тригер, на конкурентния достъп фирма добавя quot;Ltd.quot; към името й: й: CREATE TRIGGER trg_CompanyInsert ON Company FOR INSERT AS UPDATE Company SET Name = Name + ' Ltd.' WHERE Id = (SELECT Id FROM Inserted) Отговорности на Транзакции транзакциите • Транзакциите гарантират • Транзакциите са последователности от консистентността и възстановимостта действия (заявки към базата данни), които данни), (заявки се изпълняват атомарно: атомарно: на базата данни • или се изпълняват всичките действия • Промяната не се счита за окончателна заедно (като едно цяло) цяло) (като докато не се извърши COMMIT • или никое от действията не се изпълнява • Командата ROLLBACK анулира изобщо транзакцията и връща обратно • Пример: Пример: промените • Банково прехвърляне на пари от една • Всички операции се извършват като сметка в друга (теглене + внасяне) (теглене внасяне) едно цяло, включително операциите цяло, • Ако тегленето или внасянето на парите върху множество от записи пропадне, пропада цялата операция пропадне, Свойства на Транзакции – пример транзакциите (ACID) • Atomicity – атомарност Atomicity • Имаме таблица с банкови сметки: сметки: • Изпълнява се всичко или нищо CREATE TABLE Account( Account( • Consistency – цялост на данните Consistency id int NOT NULL, balance decimal NOT NULL) • Базата винаги остава консистентна с логически коректни данни • Използваме транзакция при трансфер на пари от сметка на сметка: сметка: • Isolation – изолация на данните Isolation • Отделните транзакции са изолирани една от CREATE PROCEDURE sp_Transfer_Money( друга в зависимост от избраното ниво @from_acc int, @to_acc int, • Durability – стабилност на данните Durability @ammount decimal ) AS • Ако една транзакция бъде потвърдена, тя не потвърдена, (примерът продължава) (примерът продължава) може да бъде изгубена (c) 2006 National Academy for Software Development - http://academy.devbg.org 9
  • 10. Транзакции – пример Транзакции и изолация • Транзакциите могат да дефинират BEGIN TRANSACTION UPDATE Account set balance = balance - @ammount нива на изолация (isolation levels) WHERE id = @from_acc IF @@rowcount <> 1 BEGIN четене на неповто- неповто- ROLLBACK TRANSACTION ниво на фантомни непотвър- непотвър- ряемост RAISERROR ('Invalid source account!', 16, 1) изолация записи дени данни при четене RETURN END Read uncommitted да да да UPDATE Account set balance = balance + @ammount Read committed не да да WHERE id = @to_acc Repeatable read не не да IF @@rowcount <> 1 BEGIN ROLLBACK TRANSACTION Serializable не не не RAISERROR ('Invalid destination account!', 16, 1) • По-силната изолация осигурява по- По- по- По-силната RETURN добра консистентност, но работи по- консистентност, по- END COMMIT TRANSACTION бавно и заключва данните за по-дълго по- по-дълго Употреба на транзакции • Кога се ползват транзакции? транзакции? • Винаги, когато за една бизнес Винаги, Introduction to операция се осъществява достъп до SQL Language повече от една таблица • Пример: Пример: (with Microsoft SQL Server 2005) • На касата в склад на едро: извършваме едро: покупка на съвкупност от продукти • Или купуваме всички продукти и плащаме или нищо не купуваме и не даваме пари • Ако някоя операция не успее, успее, анулираме транзакцията Relational Databases Communicating with a DB • A relational database: SQL statement is entered • Can be accessed and modified by SQL statement is sent to the database executing Structured Query Structured Query SELECT Name FROM Department Database Language (SQL) statements Language • Uses a set of operations to extract subset of the data Name • Contains a collection of tables Engineering The result is returned Sales • Relationships are defined between (usually as a table) Marketing the tables … (c) 2006 National Academy for Software Development - http://academy.devbg.org 10
  • 11. What is SQL? • Structured Query Language (SQL) • Declarative language for query and manipulation of relational data SQL and T-SQL • SQL consists of: Introduction • Data Manipulation Language (DML) SELECT, INSERT, UPDATE, • SELECT, INSERT, UPDATE, DELETE • Data Definition Language (DDL) CREATE, DROP, • CREATE, DROP, ALTER GRANT, • GRANT, REVOKE SQL – Examples What is T-SQL? T-SQL? • T-SQL is an extension to the standard T-SQL SELECT FirstName, LastName, JobTitle SQL language FROM Employee • The standard language in MS SQL Server INSERT INTO Project(Name, StartDate) database VALUES('Introduction to SQL Course', '1/1/2006') • Supports if statements, loops, exceptions SELECT * FROM Project WHERE StartDate = '1/1/2006' • Like the high-level procedural high- high-level UPDATE Project programming languages SET EndDate = '8/31/2006' WHERE StartDate = '1/1/2006' • Used for writing procedures, functions, triggers, etc. DELETE FROM Project WHERE StartDate = '1/1/2006' T-SQL – Example T-SQL CREATE PROCEDURE EmpDump AS DECLARE @EmpId INT, @EmpFName NVARCHAR(100), @EmpId @EmpLName NVARCHAR(100) The NASD DECLARE emps CURSOR FOR SELECT EmployeeID, FirstName, LastName FROM Employee Database Schema OPEN emps FETCH NEXT FROM emps INTO @EmpId, @EmpFName, @EmpLName WHILE (@@FETCH_STATUS = 0) BEGIN E/R Diagram PRINT CAST(@EmpId AS VARCHAR(10)) + ' ' + @EmpFName + ' ' + @EmpLName FETCH NEXT FROM emps INTO @EmpId, @EmpFName, @EmpLName END CLOSE emps DEALLOCATE emps GO (c) 2006 National Academy for Software Development - http://academy.devbg.org 11
  • 12. The NASD Database Schema in SQL Server Employee Department EmployeeID DepartmentID Name FirstName LastName ManagerID SQL Language MiddleName JobTitle DepartmentID Introducing SELECT Statement Address Town ManagerID AddressID HireDate TownID AddressText Salary Name TownID AddressID Project ProjectID EmployeeProject Name EmployeeID Description ProjectID StartDate EndDate Capabilities of SQL Basic SELECT Statement SELECT Selection Projection SELECT *|{[DISTINCT] column|expression Take some of the rows Take some of the columns [alias],...} FROM table • SELECT identifies what columns Table 1 Table 1 • FROM identifies which table Join Combine tables by some column Table 2 Table 1 SELECT Example Arithmetic Operations • Selecting all columns from departments • Arithmetic operators are available: SELECT * FROM Department • +, -, *, / -, DepartmentID Name ManagerID • Example: 1 Engineering 12 2 Tool design 4 SELECT LastName, Salary, Salary + 300 Salary, 3 Sales 273 FROM Employee … … … • Selecting specific columns LastName Salary (No column name) Gilbert 12500,00 12800,00 DepartmentID Name SELECT 1 Engineering DepartmentID, Brown 13500,00 13800,00 Name 2 Tool design Tamburello 43300,00 43600,00 FROM Department 3 Sales (c) 2006 National Academy for Software Development - http://academy.devbg.org 12
  • 13. The NULL Value Column Alias • A NULL is a value that is unavailable, • Renames a column heading unassigned, unknown, or inapplicable • Useful with calculations • Not the same as zero or a blank space • Immediately follows the column name • Arithmetic expressions containing a NULL • There is an optional AS keyword value are evaluated to NULL • Double quotation marks if contains spaces SELECT LastName, ManagerID FROM Employee SELECT FirstName, LastName, Salary, Salary*0.2 AS Bonus FROM Employee LastName ManagerID Sánchez NULL FirstName LastName Salary Bonus NULL is displayed as Duffy 300 Guy Gilbert 12500,00 2500.00000 empty space or as NULL Wang 1 Kevin Brown 13500,00 2700.00000 Concatenation Operator Literal Character Strings • A literal is a character, a number, or a date • Concatenates columns or character strings included in the SELECT list to other columns • Date and character literal values must be • Is represented by plus sign “+” “+” enclosed within single quotation marks • Creates a resultant column that is a • Each character string is output once for each character expression row returned SELECT FirstName + ' ' + LastName AS [Full Name], SELECT FirstName + '''s last name is ' + EmployeeID as [No.] FROM Employee LastName AS [Our Employees] FROM Employee Full Name No. Our Employees Guy Gilbert 1 Guy's last name is Gilbert Kevin Brown 2 Kevin's last name is Brown Roberto Tamburello 3 Roberto's last name is Tamburello Removing Duplicate Rows Limiting the Rows Selected • The default display of queries is all rows, • Restrict the rows returned by using the including duplicate rows DepartmentID WHERE clause: 7 LastName DepartmentID SELECT LastName, SELECT DepartmentID 7 Tamburello 1 DepartmentID FROM FROM Employee 2 Employee WHERE Erickson 1 DepartmentID = 1 ... Goldberg 1 ... ... • Eliminate duplicate rows by using the • More examples: DISTINCT keyword in the SELECT clause SELECT FirstName, LastName, DepartmentID FROM Employee WHERE LastName = 'Sullivan' DepartmentID SELECT 7 DISTINCT DepartmentID 2 SELECT LastName, Salary FROM Employee FROM Employee ... WHERE Salary <= 20000 (c) 2006 National Academy for Software Development - http://academy.devbg.org 13
  • 14. Other Comparison Other Comparison Conditions Conditions (2) • Checking for NULL value: • Using BETWEEN operator to specify a range: SELECT LastName, Salary FROM Employee SELECT LastName FROM Employee WHERE Salary BETWEEN 20000 AND 22000 WHERE ManagerID IS NULL • Note: COLUMN=NULL is always false! • Using IN / NOT IN operators to specify a set of values: • Using OR and AND operators: SELECT FirstName, LastName, ManagerID FROM SELECT FirstName, LastName FROM Employee Employee WHERE ManagerID IN (109, 3, 16) (109, 16) WHERE Salary >= 20000 AND LastName LIKE 'C%' • Using LIKE operator to specify a pattern: SELECT LastName FROM Employee WHERE ManagerID IS NOT NULL SELECT FirstName FROM Employee OR LastName LIKE '%so_' WHERE FirstName LIKE 'S%' Sorting with ORDER BY • Sort rows with the ORDER BY clause • ASC: ascending order, default ASC: • DESC: descending order DESC: SQL Language LastName HireDate Selecting Data From Multiple Tables SELECT LastName, Gilbert 1998-07-31 1998- 07- HireDate FROM Employee Brown 1999-02-26 1999- 02- ORDER BY HireDate Tamburello 1999-12-12 1999- 12- LastName HireDate SELECT LastName, Valdez 2005-07-01 2005- 07- HireDate FROM Employee Tsoflias 2005-07-01 2005- 07- ORDER BY HireDate DESC Abbas 2005-04-15 2005- 04- Cartesian Product Data from Multiple Tables • This will produce Cartesian product: • Sometimes you need data from more than one table: SELECT LastName, Name AS DepartmentName FROM Employee, Department LastName DepartmentID DepartmentID Name Duffy 1 1 Engineering • The result: Abbas 3 2 Tool design Galvin 2 3 Sales LastName DepartmentName DepartmentName Duffy Document Control Wang Document Control LastName DepartmentName Sullivan Document Control Duffy Engineering Duffy Engineering Galvin Tool design Wang Engineering Abbas Sales .. .. (c) 2006 National Academy for Software Development - http://academy.devbg.org 14
  • 15. Types of Joins INNER JOIN with ON Clause • To specify arbitrary conditions or specify • Inner joins columns to join, the ON clause is used • Left outer join • Such JOIN is called also INNER JOIN • Right outer SELECT e.EmployeeID, e.LastName, e.DepartmentID, d.DepartmentID, d.Name AS DepartmentName • Full outer join FROM Employee e INNER JOIN Department d ON e.DepartmentID = d.DepartmentID EmployeeID LastName Depart Depart DepartmentName mentID mentID 1 Gilbert 7 7 Production 2 Brown 4 4 Marketing 3 Tamburello 1 1 Engineering INNER vs. OUTER Joins Equijoins • Inner joins with join conditions pushed • The join of two tables returning only down to the WHERE clause matched rows is an inner join • A join between two tables that returns SELECT e.EmployeeID, e.LastName, e.DepartmentID, d.DepartmentID, d.Name AS DepartmentName the results of the inner join as well as FROM Employee e, Department d unmatched rows from the left (or right) WHERE e.DepartmentID = d.DepartmentID table is a left (or right) outer join right) EmployeeID LastName Depart Depart DepartmentName • A join between two tables that returns mentID mentID 1 Gilbert 7 7 Production the results of an inner join as well as the 2 Brown 4 4 Marketing results of a left and right join is a full 3 Tamburello 1 1 Engineering outer join INNER JOIN LEFT OUTER JOIN SELECT e.LastName EmpLastName, SELECT e.LastName EmpLastName, m.EmployeeID MgrID, m.LastName MgrLastName m.EmployeeID MgrID, m.LastName MgrLastName FROM Employee e INNER JOIN Employee m FROM Employee e LEFT OUTER JOIN Employee m ON e.ManagerID = m.EmployeeID ON e.ManagerID = m.EmployeeID EmpLastName MgrID MgrLastName EmpLastName MgrID MgrLastName Erickson 3 Tamburello Sánchez NULL NULL Goldberg 3 Tamburello Benshoof 6 Bradley Duffy 109 Sánchez Miller 14 Maxwell Johnson 185 Hill Okelberry 16 Brown Higa 185 Hill Hill 25 Mu Ford 185 Hill Frum 184 Richins Maxwell 21 Krebs Culbertson 30 Barreto de Mattos ... ... ... ... ... ... (c) 2006 National Academy for Software Development - http://academy.devbg.org 15
  • 16. RIGHT OUTER JOIN FULL OUTER JOIN SELECT e.LastName EmpLastName, SELECT e.LastName EmpLastName, m.EmployeeID MgrID, m.LastName MgrLastName m.EmployeeID MgrID, m.LastName MgrLastName FROM Employee e RIGHT OUTER JOIN Employee m FROM employee e FULL OUTER JOIN employee m ON e.ManagerID = m.EmployeeID ON e.ManagerID = m.EmployeeID EmpLastName MgrID MgrLastName EmpLastName MgrID MgrLastName Lertpiriyasuwat 38 Liu Sanchez NULL NULL NULL 39 Hines … … … NULL 40 McKay Cracium 3 Tamburello Berglund 41 Wu Gilbert 16 Brown Koenigsbauer 123 Hay … … … NULL 124 Zabokritski NULL 17 Hartwig NULL 125 Decker NULL 1 Gilbert ... ... ... … … … Three-Way Joins Additional Conditions Three-Way • A three-way join is a join of three tables three- • You can apply additional conditions in the three-way WHERE clause: SELECT e.FirstName, e.LastName, t.Name as Town, a.AddressText SELECT e.EmployeeID, e.LastName, e.DepartmentID, FROM Employee e d.DepartmentID, d.Name AS DepartmentName JOIN Address a FROM Employee e ON e.AddressID = a.AddressID INNER JOIN Department d JOIN Town t ON e.DepartmentID = d.DepartmentID ON a.TownID = t.TownID WHERE d.Name = 'Sales' Sales' FirstName LastName Town AddressText EmployeeID LastName Depart Depart DepartmentName mentID mentID Guy Gilbert Monroe 7726 Driftwood Drive 268 Jiang 3 3 Sales Kevin Brown Everett 2294 West 39th St. 273 Welcker 3 3 Sales Roberto Tamburello Redmond 8000 Crane Court 275 Blythe 3 3 Sales ... ... ... ... Nested SELECT Statements • SELECT statements can be nested in the where clause SELECT FirstName, LastName, Salary SQL Language FROM Employee WHERE Salary = (SELECT MAX(Salary) FROM Employee) Nested SELECT Statements SELECT FirstName, LastName, DepartmentID, Salary FROM Employee WHERE DepartmentID IN (SELECT DepartmentID FROM Department WHERE Name='Sales') • Note: Always prefer joins to nested SELECT statements (better performance) (c) 2006 National Academy for Software Development - http://academy.devbg.org 16
  • 17. Nested SELECT Statements Using the EXISTS Operator With Table Aliases • We can refer tables from the main • Using the EXISTS operator in SELECT SELECT in the nested SELECT by aliases statements • Example: Get the maximal salary for • Find all employees with managers from each department and the name of the the first department employee that gets it SELECT FirstName, LastName, EmployeeID, ManagerID FROM Employee e SELECT FirstName, LastName, DepartmentID, Salary WHERE EXISTS FROM Employee e (SELECT EmployeeID WHERE Salary = FROM Employee m (SELECT MAX(Salary) FROM Employee WHERE m.EmployeeID = e.ManagerID WHERE DepartmentID = e.DepartmentID) e.DepartmentID) AND m.DepartmentID = 1) ORDER BY DepartmentID Group Functions • Group functions operate on sets of rows to give one result per group SQL Language EmployeeID Salary Aggregating Data 1 12500,00 2 13500,00 MAX(Salary) 3 43300,00 125500,00 4 29800,00 5 25000,00 ... ... Group Functions in SQL AVG() and SUM() Functions • COUNT(*) – count of the selected rows • You can use AVG() and SUM() only for numeric data types • SUM(column) – sum of the values in SUM(column) given column from the selected rows SELECT AVG(Salary) [Average Salary], [Average • AVG(column) – average of the values in AVG(column) MAX(Salary) [Max Salary], MIN(Salary) [Min Salary], given column SUM(Salary) [Salary Sum] Sum] FROM Employee • MAX(column) – the maximal value in MAX(column) WHERE JobTitle = 'Sales Representative' given column Average Salary Max Salary Min Salary Salary Sum • MIN(column) – the minimal value in MIN(column) 23100,00 23100,00 23100,00 323400,00 given column (c) 2006 National Academy for Software Development - http://academy.devbg.org 17
  • 18. The COUNT(…) Function MIN() and MAX() Functions COUNT(…) • You can use MIN() and MAX() for any • COUNT(*) returns the number of rows in data type (int, datetime, varchar, ...) (int, datetime, varchar, the result table (int, SELECT MIN(HireDate) MinHD, MAX(HireDate) MaxHD Cnt SELECT COUNT(*) Cnt FROM Employee FROM Employee WHERE DepartmentID = 3 18 MinHD MaxHD • COUNT(expr) returns the number of rows COUNT(expr) COUNT(expr) 1996-07-31 1996- 07- 2003-06-03 2003- 06- with non-null values for the expr non- non-null • Displaying the first and last employee's MgrCount AllCount SELECT COUNT(ManagerID) MgrCount, name in alphabetical order: COUNT(*) AllCount 1 2 FROM Employee SELECT MIN(LastName), MAX(LastName) WHERE DepartmentID = 16 FROM employee Group Functions in Nested Queries • For each department display the earliest hired employee SQL Language SELECT e.FirstName, e.LastName, e.HireDate, d.Name FROM Employee e JOIN Department d Group Functions and the ON e.DepartmentID = d.DepartmentID GROUP BY Statement WHERE e.HireDate = (SELECT MIN(HireDate) FROM Employee WHERE DepartmentID = d.DepartmentID) FirstName LastName HireDate Name Guy Gilbert 1998-07-31 00:00:00 1998- 07- Production Kevin Brown 1999-02-26 00:00:00 1999- 02- Marketing Roberto Tamburello 1999-12-12 00:00:00 1999- 12- Engineering The GROUP BY Statement Creating Groups of Data • We can divide rows in a table into smaller Employee groups by using the GROUP BY clause DepartmentID Salary 12 10300 • The syntax: 12 16800 72000 12 16800 SELECT <columns>, <group_function(column)> <columns>, <group_function(column)> DepartmentID SUM(Salary) 12 10300 FROM <table> <table> 12 72000 12 17800 [WHERE <condition>] <condition>] 2 108600 2 28800 [GROUP BY <group_by_expression>] group_by_expression>] 16 185600 2 25000 108600 [ORDER BY <columns> columns> ... ... 2 29800 2 25000 • The <group_by_expression> is a list of <group_by_expression> 16 125500 185600 columns 16 60100 ... ... (c) 2006 National Academy for Software Development - http://academy.devbg.org 18