SlideShare a Scribd company logo
1 of 5
Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич
www.pglomonosov.org
Красимир Дойчев SQL Server Команди за манипулиране на данни 1 от 5
Тема 21. Команди за манипулиране на данни – INSERT, UPDATE, DELETE
инж. Красимир Дойчев kdoychev@gmail.com
В предните уроци получихте основни знания за създаване на заявки към БД чрез
конструкцията Select. Чрез заявките може да се извличат интересуващи ни данни от
таблиците на БД.
Основен компонент на една база данни е възможността за модифи¬циране на
данните, съхранени в нея. SQL Server поддържа няколко метода за добавяне на нови редове с
данни към таблиците в една SQL Server база данни, за променяне на данните в
съществуващите редове и за изтриване на редове.
Целта на настоящия урок е да разширите знанията си за работа с Transact-SQL, като
се запознаете с командите за модифициране на данните – добавяне на нови данни, промяна
на съществуващи данни, изтриване на данни.
1. Методи за вмъкване на данни в база данни на SQL Server
SQL Server включва няколко метода за добавяне на данни в една база данни:
 Конструкция INSERT
 Конструкция SELECT...INTO – тази конструкция е разгледана в по-предния урок
 Конструкция WRITETEXT
 Няколко опции на приложния програмен интерфейс на базата данни, които можете
да използвате за добавяне на данни тип ntext, text или image към един ред
 Компонент bulk copy за вмъкване на голям брой редове
2. Конструкция INSERT
2.1. Същност и синтаксис на INSERT
Конструкция INSERT добавя един или повече нови редове в една таблица. Ако
разгледаме нещата по-опростено, конструкцията INSERT има следния вид:
INSERT [INTO] таблица или изглед [(списък от колони)] стойности на данни
Конструкцията предизвиква вмъкване на стойностите на данните като един или
повече редове в посочената таблица или изглед. Списъкът от имена на колоните, разделени
със запетаи, се използва за посочване на колоните, за които се предоставят данните. Ако не
са зададени колони, всички колони в таблицата или изгледа получават данни. Ако е зададен
само частичен списък от колони, във всяка колона, която липсва в списъка, се вмъква
стойност null или подразбиращата се стойност (ако съществува дефиниция DEFAULT).
Всички колони, които не са зададени в списъка от колони, трябва или да допускат стойности
null, или да имат присвоена стойност по подразбиране.
Не е необходимо в конструкция INSERT да се задават стойности за следните видове
колони, тъй като SQL Server автоматично генерира тези стойности:
 Колони със свойство IDENTITY
 Колони с дефиниция DEFAULT, която използва функция NEWIDQ
 Изчислявани колони
Забележка Ключовата дума INTO в конструкция INSERT е опционална и се използва
само за по-голяма разбираемост на кода.
Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич
www.pglomonosov.org
Красимир Дойчев SQL Server Команди за манипулиране на данни 2 от 5
Предоставените стойности на данните трябва да съответстват на списъка от колони:
 Броят на стойностите на данните трябва да бъде еднакъв с броя на колоните;
 Типът данни, точността и мащабът за всяка стойност на данните трябва да са
същите като тези на съответната колона.
Когато дефинирате една конструкция INSERT, можете да използвате клауза VALUES,
за да зададете стойностите на данните за един ред, или можете да използвате подзаявка
SELECT, за да зададете стойностите на данните за един или повече редове.
Забележка Подзаявката SELECT се използва в една конструкция INSERT за добавяне
на подмножества от съществуващи данни към една таблица, докато клауза VALUES се
използва в една конструкция INSERT за добавяне на нови данни към една таблица.
2.2. Използване на конструкция INSERT...VALUES за добавяне на данни
Клауза VALUES ви дава възможност да задавате стойности за един ред от таблица.
Стойностите се задават като списък от скаларни изрази, разделени със запетаи, чиито тип
данни, точност и мащаб трябва да могат да се преобразуват неявно или да са същите като на
съответната колона в списъка от колони. Ако не е зададен списък от колони, стойностите
трябва да се задават в същата последователност като колоните в таблицата или изгледа.
Пример 1:
а) В база данни Pubs да се създаде таблица NewBooks (нови книги) с полета:
 BookID – идентификационен номер, със свойство IDENTITY - с автоматично
номериране;
 BookTitle – заглавие на книгата, текст с променлива дължина до 50 символа, не
допуска стойност Null;
 BookType – тип на книгата, текст с фиксирана дължина 12 символа, не допуска
стойност Null, има подразбираща се стойност 'Undecided' - нерешен;
 PubCity – град на издаване, текст с променлива дължина до 50 символа, допуска
стойност Null;
USE Pubs
CREATE TABLE NewBooks
(
BookID INT IDENTITY(1,1) NOT NULL,
BookTitle VARCHAR(50) NOT NULL,
BookType CHAR(12) NOT NULL
CONSTRAINT [booktype_df] DEFAULT ('Undecided'),
PubCity VARCHAR(50) NULL
б) След създаване на таблицата, да се добави ред с данни към тази таблица.
Следващата конструкция INSERT използва клауза VALUES за вмъкване на нов ред в
таблица NewBooks:
USE Pubs
INSERT INTO NewBooks (BookTitle, PubCity)
VALUES ('Life Without Fear’, 'Chicago')
Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич
www.pglomonosov.org
Красимир Дойчев SQL Server Команди за манипулиране на данни 3 от 5
С тази конструкция се дефинират стойности за колона BookTitle и колона PubCity. He
е необходимо да се включва колона BookID в конструкцията INSERT, тъй като колона
BookID е дефинирана със свойство IDENTITY. Следователно стойностите за тази колона се
генерират автоматично. Освен това, понеже не е дефинирана стойност за колона BookTitle,
SQL Server автоматично вмъква подразбиращата се стойност (Undecided) в колоната, когато
изпълнявате конструкцията INSERT.
2.3. Използване на подзаявка SELECT за добавяне на данни
Можете да използвате подзаявка SELECT в конструкцията INSERT, за да добавите
стойности от една или повече други таблици или изгледи към дадена таблица. Подзаявката
ви дава възможност да добавите повече от един ред едновременно.
Пример 2:
Следващата конструкция INSERT използва подзаявка SELECT за вмъкване на редове
в таблица NewBooks:
USE Pubs
INSERT INTO NewBooks (BookTitle, BookType)
SELECT Title, Type
FROM Titles
WHERE Type = 'mod_cook'
Тази конструкция INSERT използва изхода от една подзаявка SELECT, за да
предостави данните, които трябва да бъдат вмъкнат в таблица NewBooks.
3. Методи за модифициране на данни в база данни на SQL Server
След като таблиците са създадени и в тях са добавени данни, промяната или
актуализирането на данни в таблиците става един от ежедневните процеси по поддържане на
базата данни. SQL Server предоставя няколко метода за промяна на данните в една
съществуваща таблица:
 Конструкция UPDATE
 Приложни програмни интерфейси на базата данни и курсори
 Конструкция UPDATETEXT
Актуализациите се извършват върху изгледите по същия начин, както и върху
таблиците (с някои ограничения).
4. Конструкция UPDATE за модифициране на данни
4.1. Същност на UPDATE
Конструкция UPDATE може да променя стойностите на данните в отделни редове, в
групи редове или във всички редове в една таблица или изглед. Можете също така да
използвате тази конструкция и за актуализиране на редовете на един отдалечен сървър, като
използвате или името на свързан сървър или функциите OPENROWSET,
OPENDATASOURCE и OPENQUERY (при условие, че OLE DB доставчикът, използван за
достъп до отдалечения сървър, поддържа актуализации). Една конструкция UPDATE, в
която има обръщение към таблица или изглед, може да променя данните в само една базова
таблица във всеки момент.
Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич
www.pglomonosov.org
Красимир Дойчев SQL Server Команди за манипулиране на данни 4 от 5
Забележка Една актуализация е успешна, само ако новата стойност е съвместима с
типа данни на колоната-адресат и ако спазва всички ограничения, които са в сила за тази
колона.
Конструкция UPDATE има следните основни клаузи:
 SET
 WHERE
 FROM
4.2. Използване на клауза SET за модифициране на данни
SET задава колоните, които трябва да бъдат променени и новите стойности за тези
колони. Стойностите в зададените колони се актуализират със стойностите, посочени в
клауза SET във всички редове, които отговарят на условията за търсене в клауза WHERE.
Ако не е зададена клауза WHERE, всички редове се актуализират.
Пример 3: В следващата конструкция UPDATE има клауза SET, чрез която се
увеличават цените на книгите в таблица NewBooks с 10 процента:
USE Pubs
UPDATE NewBooks
SET Price = Price * 1.1
В тази конструкция не се използва клауза WHERE, така че ще бъдат актуализирани
всички редове в таблицата (освен ако колона Price съдържа стойност null).
4.3. Използване на клауза WHERE за модифициране на данни
Клауза WHERE изпълнява две функции:
 Определя редовете, които трябва да бъдат актуализирани
 Посочва редовете от таблиците-източник, които отговарят на изискванията за
предоставяне на стойности за актуализацията, ако е зададена също и клауза FROM
Ако не е зададена клауза WHERE, всички редове в таблицата се актуализират.
Пример 4: В следващата конструкция UPDATE клауза WHERE се използва, за да
ограничи актуализацията само до тези редове, които отговарят на условието, дефинирано в
клаузата:
USE Pubs
UPDATE NewBooks
SET BookType = 'popular'
WHERE BookType = 'popular_comp'
Тази конструкция променя името popular_comp и то става popular. Ако в
конструкцията липсваше клауза WHERE, всички стойности в ВоокТуре щяха да бъдат
променени на popular.
4.4. Използване на клауза FROM за модифициране на данни
Можете да използвате клауза FROM, за да изтеглите данни от една или повече
таблици или изгледи в таблицата, която искате да актуализирате.
Пример 5: В следващата конструкция UPDATE клаузата FROM включва вътрешно
съединение, което обединява заглавията от таблици NewBooks и Titles:
Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич
www.pglomonosov.org
Красимир Дойчев SQL Server Команди за манипулиране на данни 5 от 5
USE Pubs
UPDATE NewBooks
SET Price = Titles.Price
FROM NewBooks JOIN Titles
ON NewBooks.BookTitle = Titles.Title
С тази конструкция стойностите за Price в таблица NewBooks се актуализират със
същите стойности, които се намират в колона Price от таблица Titles.
Конструкциите за модифициране на данни работят с изгледите по същия начин, както
с таблиците (с някои ограничения).
5. Изтриване на данни в база данни на SQL Server
SQL Server поддържа няколко метода, които можете да използвате за изтриване на
данни в една съществуваща таблица:
 Конструкция DELETE
 API и курсори
 Конструкция TRUNCATE TABLE
5.1. Използване на конструкция DELETE за изтриване на данни
Конструкция DELETE премахва един или повече редове от една таблица или изглед.
Следният синтаксис представлява опростен, форма на конструкция DELETE:
DELETE таблица или изглед FROM таблица източник WHERE условие за търсене
На мястото на „таблица или изглед” се задава името на таблица или изглед, от който
трябва да се изтрият редове. Всички редове в една таблица или изглед, които отговарят на
условието за търсене в клауза WHERE, се изтриват. Ако не е зададена клауза WHERE, се
изтриват всички редове от таблицата или изгледа.
Клауза FROM задава допълнителни таблици или изгледи и условия за съединение,
които могат да се използват от предикатите в условието за търсене от клауза WHERE, за да
определят редовете за изтриване от една таблица или изглед. От таблиците, посочени в
клауза FROM, не се изтриват редове. Изтриването на редове става само от таблиците,
посочени в клауза DELETE.
Пример 6: От таблица NewBooks да се изтрият редовете с книги, за които хонорарът
на автора от продажбите на тези книги е 10 процента. Хонорарът се определя от стойностите
в колона Royalty на таблица Titles.
USE Pubs
DELETE NewBooks
FROM Titles
WHERE NewBooks.BookTitle = Titles.Title AND Titles.Royalty = 10
Забележка: Всяка таблица, на която са изтрити всичките редове, остава в базата данни.
Конструкция DELETE изтрива единствено редове от таблицата. Таблицата трябва да бъде
премахната от базата данни чрез конструкция DROP TABLE.
ЛИТЕРАТУРА
1. Microsoft. MSCE Microsoft SQL Server 2000 Проектиране и реализация на бази данни
Training kit. С., Софтпрес, 2001.
2. SQL Server Books Online

More Related Content

Similar to 21 manipulirane na danni v sql server

20 podzajavki v select
20 podzajavki v select20 podzajavki v select
20 podzajavki v selectIvan Peev
 
17 klauzi upraznenia
17 klauzi   upraznenia17 klauzi   upraznenia
17 klauzi uprazneniaIvan Peev
 
23a sazdavane na izgledii v sql server upraznenie
23a sazdavane na izgledii v sql server   upraznenie23a sazdavane na izgledii v sql server   upraznenie
23a sazdavane na izgledii v sql server upraznenieIvan Peev
 
22 sazdavane na bd i tablici v sql server
22 sazdavane na bd i tablici v sql server22 sazdavane na bd i tablici v sql server
22 sazdavane na bd i tablici v sql serverIvan Peev
 
Nakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroNakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroSvetlin Nakov
 
3. настройване свойства на полетата
3. настройване свойства на полетата3. настройване свойства на полетата
3. настройване свойства на полетатаdnaidenowa
 

Similar to 21 manipulirane na danni v sql server (7)

B9 t9 db_my_sql
B9 t9 db_my_sqlB9 t9 db_my_sql
B9 t9 db_my_sql
 
20 podzajavki v select
20 podzajavki v select20 podzajavki v select
20 podzajavki v select
 
17 klauzi upraznenia
17 klauzi   upraznenia17 klauzi   upraznenia
17 klauzi upraznenia
 
23a sazdavane na izgledii v sql server upraznenie
23a sazdavane na izgledii v sql server   upraznenie23a sazdavane na izgledii v sql server   upraznenie
23a sazdavane na izgledii v sql server upraznenie
 
22 sazdavane na bd i tablici v sql server
22 sazdavane na bd i tablici v sql server22 sazdavane na bd i tablici v sql server
22 sazdavane na bd i tablici v sql server
 
Nakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroNakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - Intro
 
3. настройване свойства на полетата
3. настройване свойства на полетата3. настройване свойства на полетата
3. настройване свойства на полетата
 

More from Ivan Peev

18 operatori i funkcii
18 operatori i funkcii18 operatori i funkcii
18 operatori i funkciiIvan Peev
 
08 pravila za dostap
08 pravila za dostap08 pravila za dostap
08 pravila za dostapIvan Peev
 
06 pregled na sigurnostta v sql server
06 pregled na sigurnostta v sql server06 pregled na sigurnostta v sql server
06 pregled na sigurnostta v sql serverIvan Peev
 
01 vavedenie v sql server 2000
01 vavedenie v sql server 200001 vavedenie v sql server 2000
01 vavedenie v sql server 2000Ivan Peev
 
24 sazdavane na potrebiteli i zadavane na razreshenia
24 sazdavane na potrebiteli i zadavane na razreshenia24 sazdavane na potrebiteli i zadavane na razreshenia
24 sazdavane na potrebiteli i zadavane na razresheniaIvan Peev
 
22a sazdavane na bd i tablici v sql server upraznenie
22a sazdavane na bd i tablici v sql server   upraznenie22a sazdavane na bd i tablici v sql server   upraznenie
22a sazdavane na bd i tablici v sql server upraznenieIvan Peev
 
Konspekt prilojen mrejovi-software-12kl
Konspekt prilojen mrejovi-software-12klKonspekt prilojen mrejovi-software-12kl
Konspekt prilojen mrejovi-software-12klIvan Peev
 
Block diagrame 1
Block diagrame 1Block diagrame 1
Block diagrame 1Ivan Peev
 

More from Ivan Peev (8)

18 operatori i funkcii
18 operatori i funkcii18 operatori i funkcii
18 operatori i funkcii
 
08 pravila za dostap
08 pravila za dostap08 pravila za dostap
08 pravila za dostap
 
06 pregled na sigurnostta v sql server
06 pregled na sigurnostta v sql server06 pregled na sigurnostta v sql server
06 pregled na sigurnostta v sql server
 
01 vavedenie v sql server 2000
01 vavedenie v sql server 200001 vavedenie v sql server 2000
01 vavedenie v sql server 2000
 
24 sazdavane na potrebiteli i zadavane na razreshenia
24 sazdavane na potrebiteli i zadavane na razreshenia24 sazdavane na potrebiteli i zadavane na razreshenia
24 sazdavane na potrebiteli i zadavane na razreshenia
 
22a sazdavane na bd i tablici v sql server upraznenie
22a sazdavane na bd i tablici v sql server   upraznenie22a sazdavane na bd i tablici v sql server   upraznenie
22a sazdavane na bd i tablici v sql server upraznenie
 
Konspekt prilojen mrejovi-software-12kl
Konspekt prilojen mrejovi-software-12klKonspekt prilojen mrejovi-software-12kl
Konspekt prilojen mrejovi-software-12kl
 
Block diagrame 1
Block diagrame 1Block diagrame 1
Block diagrame 1
 

21 manipulirane na danni v sql server

  • 1. Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич www.pglomonosov.org Красимир Дойчев SQL Server Команди за манипулиране на данни 1 от 5 Тема 21. Команди за манипулиране на данни – INSERT, UPDATE, DELETE инж. Красимир Дойчев kdoychev@gmail.com В предните уроци получихте основни знания за създаване на заявки към БД чрез конструкцията Select. Чрез заявките може да се извличат интересуващи ни данни от таблиците на БД. Основен компонент на една база данни е възможността за модифи¬циране на данните, съхранени в нея. SQL Server поддържа няколко метода за добавяне на нови редове с данни към таблиците в една SQL Server база данни, за променяне на данните в съществуващите редове и за изтриване на редове. Целта на настоящия урок е да разширите знанията си за работа с Transact-SQL, като се запознаете с командите за модифициране на данните – добавяне на нови данни, промяна на съществуващи данни, изтриване на данни. 1. Методи за вмъкване на данни в база данни на SQL Server SQL Server включва няколко метода за добавяне на данни в една база данни:  Конструкция INSERT  Конструкция SELECT...INTO – тази конструкция е разгледана в по-предния урок  Конструкция WRITETEXT  Няколко опции на приложния програмен интерфейс на базата данни, които можете да използвате за добавяне на данни тип ntext, text или image към един ред  Компонент bulk copy за вмъкване на голям брой редове 2. Конструкция INSERT 2.1. Същност и синтаксис на INSERT Конструкция INSERT добавя един или повече нови редове в една таблица. Ако разгледаме нещата по-опростено, конструкцията INSERT има следния вид: INSERT [INTO] таблица или изглед [(списък от колони)] стойности на данни Конструкцията предизвиква вмъкване на стойностите на данните като един или повече редове в посочената таблица или изглед. Списъкът от имена на колоните, разделени със запетаи, се използва за посочване на колоните, за които се предоставят данните. Ако не са зададени колони, всички колони в таблицата или изгледа получават данни. Ако е зададен само частичен списък от колони, във всяка колона, която липсва в списъка, се вмъква стойност null или подразбиращата се стойност (ако съществува дефиниция DEFAULT). Всички колони, които не са зададени в списъка от колони, трябва или да допускат стойности null, или да имат присвоена стойност по подразбиране. Не е необходимо в конструкция INSERT да се задават стойности за следните видове колони, тъй като SQL Server автоматично генерира тези стойности:  Колони със свойство IDENTITY  Колони с дефиниция DEFAULT, която използва функция NEWIDQ  Изчислявани колони Забележка Ключовата дума INTO в конструкция INSERT е опционална и се използва само за по-голяма разбираемост на кода.
  • 2. Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич www.pglomonosov.org Красимир Дойчев SQL Server Команди за манипулиране на данни 2 от 5 Предоставените стойности на данните трябва да съответстват на списъка от колони:  Броят на стойностите на данните трябва да бъде еднакъв с броя на колоните;  Типът данни, точността и мащабът за всяка стойност на данните трябва да са същите като тези на съответната колона. Когато дефинирате една конструкция INSERT, можете да използвате клауза VALUES, за да зададете стойностите на данните за един ред, или можете да използвате подзаявка SELECT, за да зададете стойностите на данните за един или повече редове. Забележка Подзаявката SELECT се използва в една конструкция INSERT за добавяне на подмножества от съществуващи данни към една таблица, докато клауза VALUES се използва в една конструкция INSERT за добавяне на нови данни към една таблица. 2.2. Използване на конструкция INSERT...VALUES за добавяне на данни Клауза VALUES ви дава възможност да задавате стойности за един ред от таблица. Стойностите се задават като списък от скаларни изрази, разделени със запетаи, чиито тип данни, точност и мащаб трябва да могат да се преобразуват неявно или да са същите като на съответната колона в списъка от колони. Ако не е зададен списък от колони, стойностите трябва да се задават в същата последователност като колоните в таблицата или изгледа. Пример 1: а) В база данни Pubs да се създаде таблица NewBooks (нови книги) с полета:  BookID – идентификационен номер, със свойство IDENTITY - с автоматично номериране;  BookTitle – заглавие на книгата, текст с променлива дължина до 50 символа, не допуска стойност Null;  BookType – тип на книгата, текст с фиксирана дължина 12 символа, не допуска стойност Null, има подразбираща се стойност 'Undecided' - нерешен;  PubCity – град на издаване, текст с променлива дължина до 50 символа, допуска стойност Null; USE Pubs CREATE TABLE NewBooks ( BookID INT IDENTITY(1,1) NOT NULL, BookTitle VARCHAR(50) NOT NULL, BookType CHAR(12) NOT NULL CONSTRAINT [booktype_df] DEFAULT ('Undecided'), PubCity VARCHAR(50) NULL б) След създаване на таблицата, да се добави ред с данни към тази таблица. Следващата конструкция INSERT използва клауза VALUES за вмъкване на нов ред в таблица NewBooks: USE Pubs INSERT INTO NewBooks (BookTitle, PubCity) VALUES ('Life Without Fear’, 'Chicago')
  • 3. Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич www.pglomonosov.org Красимир Дойчев SQL Server Команди за манипулиране на данни 3 от 5 С тази конструкция се дефинират стойности за колона BookTitle и колона PubCity. He е необходимо да се включва колона BookID в конструкцията INSERT, тъй като колона BookID е дефинирана със свойство IDENTITY. Следователно стойностите за тази колона се генерират автоматично. Освен това, понеже не е дефинирана стойност за колона BookTitle, SQL Server автоматично вмъква подразбиращата се стойност (Undecided) в колоната, когато изпълнявате конструкцията INSERT. 2.3. Използване на подзаявка SELECT за добавяне на данни Можете да използвате подзаявка SELECT в конструкцията INSERT, за да добавите стойности от една или повече други таблици или изгледи към дадена таблица. Подзаявката ви дава възможност да добавите повече от един ред едновременно. Пример 2: Следващата конструкция INSERT използва подзаявка SELECT за вмъкване на редове в таблица NewBooks: USE Pubs INSERT INTO NewBooks (BookTitle, BookType) SELECT Title, Type FROM Titles WHERE Type = 'mod_cook' Тази конструкция INSERT използва изхода от една подзаявка SELECT, за да предостави данните, които трябва да бъдат вмъкнат в таблица NewBooks. 3. Методи за модифициране на данни в база данни на SQL Server След като таблиците са създадени и в тях са добавени данни, промяната или актуализирането на данни в таблиците става един от ежедневните процеси по поддържане на базата данни. SQL Server предоставя няколко метода за промяна на данните в една съществуваща таблица:  Конструкция UPDATE  Приложни програмни интерфейси на базата данни и курсори  Конструкция UPDATETEXT Актуализациите се извършват върху изгледите по същия начин, както и върху таблиците (с някои ограничения). 4. Конструкция UPDATE за модифициране на данни 4.1. Същност на UPDATE Конструкция UPDATE може да променя стойностите на данните в отделни редове, в групи редове или във всички редове в една таблица или изглед. Можете също така да използвате тази конструкция и за актуализиране на редовете на един отдалечен сървър, като използвате или името на свързан сървър или функциите OPENROWSET, OPENDATASOURCE и OPENQUERY (при условие, че OLE DB доставчикът, използван за достъп до отдалечения сървър, поддържа актуализации). Една конструкция UPDATE, в която има обръщение към таблица или изглед, може да променя данните в само една базова таблица във всеки момент.
  • 4. Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич www.pglomonosov.org Красимир Дойчев SQL Server Команди за манипулиране на данни 4 от 5 Забележка Една актуализация е успешна, само ако новата стойност е съвместима с типа данни на колоната-адресат и ако спазва всички ограничения, които са в сила за тази колона. Конструкция UPDATE има следните основни клаузи:  SET  WHERE  FROM 4.2. Използване на клауза SET за модифициране на данни SET задава колоните, които трябва да бъдат променени и новите стойности за тези колони. Стойностите в зададените колони се актуализират със стойностите, посочени в клауза SET във всички редове, които отговарят на условията за търсене в клауза WHERE. Ако не е зададена клауза WHERE, всички редове се актуализират. Пример 3: В следващата конструкция UPDATE има клауза SET, чрез която се увеличават цените на книгите в таблица NewBooks с 10 процента: USE Pubs UPDATE NewBooks SET Price = Price * 1.1 В тази конструкция не се използва клауза WHERE, така че ще бъдат актуализирани всички редове в таблицата (освен ако колона Price съдържа стойност null). 4.3. Използване на клауза WHERE за модифициране на данни Клауза WHERE изпълнява две функции:  Определя редовете, които трябва да бъдат актуализирани  Посочва редовете от таблиците-източник, които отговарят на изискванията за предоставяне на стойности за актуализацията, ако е зададена също и клауза FROM Ако не е зададена клауза WHERE, всички редове в таблицата се актуализират. Пример 4: В следващата конструкция UPDATE клауза WHERE се използва, за да ограничи актуализацията само до тези редове, които отговарят на условието, дефинирано в клаузата: USE Pubs UPDATE NewBooks SET BookType = 'popular' WHERE BookType = 'popular_comp' Тази конструкция променя името popular_comp и то става popular. Ако в конструкцията липсваше клауза WHERE, всички стойности в ВоокТуре щяха да бъдат променени на popular. 4.4. Използване на клауза FROM за модифициране на данни Можете да използвате клауза FROM, за да изтеглите данни от една или повече таблици или изгледи в таблицата, която искате да актуализирате. Пример 5: В следващата конструкция UPDATE клаузата FROM включва вътрешно съединение, което обединява заглавията от таблици NewBooks и Titles:
  • 5. Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич www.pglomonosov.org Красимир Дойчев SQL Server Команди за манипулиране на данни 5 от 5 USE Pubs UPDATE NewBooks SET Price = Titles.Price FROM NewBooks JOIN Titles ON NewBooks.BookTitle = Titles.Title С тази конструкция стойностите за Price в таблица NewBooks се актуализират със същите стойности, които се намират в колона Price от таблица Titles. Конструкциите за модифициране на данни работят с изгледите по същия начин, както с таблиците (с някои ограничения). 5. Изтриване на данни в база данни на SQL Server SQL Server поддържа няколко метода, които можете да използвате за изтриване на данни в една съществуваща таблица:  Конструкция DELETE  API и курсори  Конструкция TRUNCATE TABLE 5.1. Използване на конструкция DELETE за изтриване на данни Конструкция DELETE премахва един или повече редове от една таблица или изглед. Следният синтаксис представлява опростен, форма на конструкция DELETE: DELETE таблица или изглед FROM таблица източник WHERE условие за търсене На мястото на „таблица или изглед” се задава името на таблица или изглед, от който трябва да се изтрият редове. Всички редове в една таблица или изглед, които отговарят на условието за търсене в клауза WHERE, се изтриват. Ако не е зададена клауза WHERE, се изтриват всички редове от таблицата или изгледа. Клауза FROM задава допълнителни таблици или изгледи и условия за съединение, които могат да се използват от предикатите в условието за търсене от клауза WHERE, за да определят редовете за изтриване от една таблица или изглед. От таблиците, посочени в клауза FROM, не се изтриват редове. Изтриването на редове става само от таблиците, посочени в клауза DELETE. Пример 6: От таблица NewBooks да се изтрият редовете с книги, за които хонорарът на автора от продажбите на тези книги е 10 процента. Хонорарът се определя от стойностите в колона Royalty на таблица Titles. USE Pubs DELETE NewBooks FROM Titles WHERE NewBooks.BookTitle = Titles.Title AND Titles.Royalty = 10 Забележка: Всяка таблица, на която са изтрити всичките редове, остава в базата данни. Конструкция DELETE изтрива единствено редове от таблицата. Таблицата трябва да бъде премахната от базата данни чрез конструкция DROP TABLE. ЛИТЕРАТУРА 1. Microsoft. MSCE Microsoft SQL Server 2000 Проектиране и реализация на бази данни Training kit. С., Софтпрес, 2001. 2. SQL Server Books Online