· 10 years ago · Sep 26, 2016, 10:42 AM
1USE master
2/*ОБРÐЩЕÐИЕ К СИСТЕМÐОЙ БÐЗЕ SQL СЕРВЕРÐ
3ДЛЯ СОЗДÐÐИЯ ПОЛЬЗОВÐТЕЛЬСКОЙ БÐЗЫ ДÐÐÐЫХ*/
4GO --Ð ÐЗДЕЛИТЕЛЬ БÐТЧЕЙ (BATH)
5
6IF EXISTS (
7 SELECT name
8 FROM sys.databases
9 WHERE name = N'Dmitry_Golubev'
10)
11ALTER DATABASE [Dmitry_Golubev] set single_user with rollback immediate
12GO
13/* ПРОВЕРЯЕМ, СУЩЕСТВУЕТ ЛИ ÐРСЕРВЕРЕ БÐЗРДÐÐÐЫХ
14С ИМЕÐЕМ [Dmitry_Golubev], ЕСЛИ ДÐ, ТО ЗÐКРЫВÐЕМ ВСЕ ТЕКУЩИЕ
15 СОЕДИÐЕÐИЯ С ÐТОЙ БÐЗОЙ */
16
17IF EXISTS (
18 SELECT name
19 FROM sys.databases
20 WHERE name = N'Dmitry_Golubev'
21)
22DROP DATABASE [Dmitry_Golubev]
23GO
24/* СÐОВРПРОВЕРЯЕМ, СУЩЕСТВУЕТ ЛИ ÐРСЕРВЕРЕ БÐЗРДÐÐÐЫХ
25С ИМЕÐЕМ [Dmitry_Golubev], ЕСЛИ ДÐ, УДÐЛЯЕМ ЕЕ С СЕРВЕРР*/
26
27/* ДÐÐÐЫЙ БЛОК ÐЕОБХОДИМ ДЛЯ КОРРЕКТÐОГО ПЕРЕСОЗДÐÐИЯ БÐЗЫ
28ДÐÐÐЫХ С ИМЕÐЕМ [Dmitry_Golubev] ПРИ ÐЕОБХОДИМОСТИ */
29
30CREATE DATABASE [Dmitry_Golubev]
31GO
32-- СОЗДÐЕМ БÐЗУ ДÐÐÐЫХ
33
34USE [Dmitry_Golubev]
35GO
36/* ПЕРЕХОДИМ К СОЗДÐÐÐОЙ БÐЗЕ ДÐÐÐЫХ ДЛЯ ПОСЛЕДУЮЩЕЙ Ð ÐБОТЫ С ÐЕЙ
37ИЛИ С ÐТИХ КОМÐÐД ПРОДОЛЖÐЕМ Ð ÐБОТУ С БÐЗОЙ ДÐÐÐЫХ ЕСЛИ ОÐÐ
38 УЖЕ СУЩЕСТВУЕТ ÐРСЕРВЕРЕ */
39
40IF EXISTS(
41 SELECT *
42 FROM sys.schemas
43 WHERE name = N'ФамилиÑ'
44)
45 DROP SCHEMA ФамилиÑ
46GO
47/*ПРОВЕРЯЕМ, СУЩЕСТВУЕТ ЛИ Ð’ БÐЗЕ ДÐÐÐЫХ
48 [Dmitry_Golubev] СХЕМРС ИМЕÐЕМ ФамилиÑ, ЕСЛИ ДÐ,
49 ТО ПРЕДВÐРИТЕЛЬÐО УДÐЛЯЕМ ЕЕ ИЗ БÐЗЫ
50 ЕСЛИ ВЫ УÐЛЯЕТЕ ВСЮ БÐЗУ ЦЕЛИКОМ - ÐТРЧÐСТЬ СКРИПТРÐЕ ÐУЖÐÐ */
51
52CREATE SCHEMA ФамилиÑ
53GO
54/*СОЗДÐЕМ Ð’ БÐЗЕ ДÐÐÐЫХ
55 [Dmitry_Golubev] СХЕМУ С ИМЕÐЕМ Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ */
56
57IF OBJECT_ID('[Dmitry_Golubev].ФамилиÑ.ut_students', 'U') IS NOT NULL
58 DROP TABLE [Dmitry_Golubev].ФамилиÑ.ut_students
59GO
60
61/*ПРОВЕРЯЕМ, СУЩЕСТВУЕТ ЛИ Ð’ БÐЗЕ ДÐÐÐЫХ
62 [Dmitry_Golubev] И СХЕМЕ С ИМЕÐЕМ Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ Ð¢ÐБЛИЦРut_students ЕСЛИ ДÐ,
63 ТО ПРЕДВÐРИТЕЛЬÐО УДÐЛЯЕМ ЕЕ ИЗ БÐЗЫ И СХЕМЫ.
64 ЕСЛИ ВЫ УÐЛЯЕТЕ ВСЮ БÐЗУ ЦЕЛИКОМ - ÐТРЧÐСТЬ СКРИПТРÐЕ ÐУЖÐÐ */
65
66CREATE TABLE [Dmitry_Golubev].ФамилиÑ.ut_students
67(
68 NumberZach nvarchar(12) NOT NULL,
69 Family nvarchar(40) NULL,
70 Name nvarchar(40) NULL,
71 CONSTRAINT PK_NumberZach PRIMARY KEY (NumberZach)
72)
73GO
74/*СОЗДÐЕМ Ð’ БÐЗЕ ДÐÐÐЫХ [Dmitry_Golubev] Ð’ СХЕМЕ С ИМЕÐЕМ
75 Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ Ð¢ÐБЛИЦУ ut_students С ТРЕМЯ ТЕКСТОВЫМИ ПОЛЯМИ
76 И ПЕРВИЧÐЫМ КЛЮЧОМ (PRIMARY KEY),
77 ГДЕ PK_NumberZach - ИМЯ КЛЮЧÐ, Ð NumberZach - ИМЯ КЛЮЧЕВОГО ПОЛЯ*/
78
79ALTER TABLE [Dmitry_Golubev].ФамилиÑ.ut_students ADD
80 NumberGroup tinyint null,
81 Kurs char(1) null
82 GO
83
84ALTER TABLE [Dmitry_Golubev].ФамилиÑ.ut_students ADD
85 Birthday date null
86GO
87
88ALTER TABLE [Dmitry_Golubev].ФамилиÑ.ut_students
89ALTER COLUMN Birthday date NOT NULL
90GO
91
92/*СУЩЕСТВУЮЩИЕ ОБЪЕКТЫ БÐЗЫ ДÐÐÐЫХ МОЖÐО ИЗМЕÐЯТЬ С ПОМОЩЬЮ
93ИÐСТРУКЦИИ ALTER (ИМЯ ОБЪЕКТÐ) */
94
95
96--DROP TABLE [Dmitry_Golubev].ФамилиÑ.ut_students
97--GO
98
99/*УДÐЛЕÐИЕ ОБЪЕКТРТÐБЛИЦЫ ИЗ БÐЗЫ ДÐÐÐЫХ */
100
101CREATE TABLE [Dmitry_Golubev].ФамилиÑ.ut_nameGroup
102(
103 NumberGroup tinyint NOT NULL,
104 NameGroup nvarchar(40) NULL,
105 Kurs tinyint DEFAULT (3) NOT NULL,
106 CONSTRAINT PK_NumberGroup PRIMARY KEY (NumberGroup)
107)
108GO
109/*СОЗДÐЕМ Ð’ БÐЗЕ ДÐÐÐЫХ [Dmitry_Golubev] Ð’ СХЕМЕ С ИМЕÐЕМ
110 Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ Ð¢ÐБЛИЦУ ut_nameGroup С ТЕКСТОВЫМ ПОЛЯМ И ДВУМЯ ЦЕЛОЧИСЛЕÐÐЫМИ
111 ПОЛЯМИ. ОДÐО ПОЛЕ ДЕЛÐЕМ ИДЕÐТИФИКÐТОРОМ, Ð’ ДРУГОЕ ПОЛЕ Ð’ÐОСИМ ЗÐÐЧЕÐИЕ
112 ПО УМОЛЧЕÐИЮ. СОЗДÐЕМ ПЕРВИЧÐЫЙ КЛЮЧ (PRIMARY KEY),
113 ГДЕ PK_NumberGroup - ИМЯ КЛЮЧÐ, Ð NumberGroup - ИМЯ КЛЮЧЕВОГО ПОЛЯ*/
114
115ALTER TABLE [Dmitry_Golubev].ФамилиÑ.ut_students ADD
116 CONSTRAINT FK_NameGroup FOREIGN KEY (NumberGroup)
117 REFERENCES [Dmitry_Golubev].ФамилиÑ.ut_nameGroup(NumberGroup)
118 ON UPDATE CASCADE
119GO
120 /*СОЗДÐЕМ Ð’ ТÐБЛИЦЕ ut_students Ð’ÐЕШÐИЙ КЛЮЧ (FOREIGN KEY)
121 С ИМЕÐЕМ FK_NameGroup, СВЯЗЫВÐЮЩИЙ ПОЛЕ NumberGroup ТÐБЛИЦЫ ut_students
122 С ПОЛЕМ NumberGroup ТÐБЛИЦЫ ut_nameGroup. СВЯЗЬ МÐОГИЕ-К-ОДÐОМУ.
123 Ð’ÐЕШÐИЙ КЛЮЧ СОЗДÐЕМ С ПОМОЩЬЮ ИÐСТРУКЦИИ ALTER TABLE,
124 ПОСКОЛЬКУ ÐÐРУШЕÐРОЧЕРЕДÐОСТЬ СОЗДÐÐИЯ ТÐБЛИЦ*/
125
126 ALTER TABLE [Dmitry_Golubev].ФамилиÑ.ut_nameGroup ADD
127 CONSTRAINT CK_Kurs
128 CHECK (Kurs>0 and Kurs<=6)
129GO
130/*УСТÐÐÐВЛИВÐЕМ ОГРÐÐИЧЕÐИЕ (CHECK) Ð’ ТÐБЛИЦЕ ut_nameGroup ÐРПОЛЕ Kurs.
131 CK_Kurs - ИМЯ ОГРÐÐИЧЕÐИЯ*/
132
133 INSERT INTO [Dmitry_Golubev].ФамилиÑ.ut_nameGroup
134 (NumberGroup,NameGroup)
135 VALUES
136 (1,N'КÐ-301')
137 ,(2,N'КÐ-303')
138 ,(3,N'КБ-301')
139GO
140/*Ð’ÐОСИМ ДÐÐÐЫЕ Ð’ ТÐБЛИЦУ ut_nameGroup ТОЛЬКО Ð’ ДВРПОЛЕ
141 ПОЛЕ Kurs ЗÐПОЛÐЯЕТСЯ ÐВТОМÐТИЧЕСКИ*/
142
143SELECT * From [Dmitry_Golubev].ФамилиÑ.ut_nameGroup
144--ПРОСМÐТРИВÐЕМ СОДЕРЖИМОЕ ТÐБЛИЦЫ ut_nameGroup
145
146
147INSERT INTO [Dmitry_Golubev].ФамилиÑ.ut_students
148 VALUES
149 ('095811',N'Сергеев',N'Петр',2,3,'19950924')
150 , ('095812',N'Петров',N'Сергей',1,3,'19960924')
151
152 /*Ð’ÐОСИМ ДÐÐÐЫЕ Ð’ ТÐБЛИЦУ ut_students,
153 ПОСКОЛЬКУ ЗÐПОЛÐЯЮТСЯ ВСЕ ПОЛЯ, ПИШУТЬСЯ ТОЛЬКО ДÐÐÐЫЕ
154 Ð’ ПОРЯДКЕ СЛЕДОВÐÐИЯ ПОЛЕЙ Ð’ ТÐБЛИЦЕ.
155 ОБРÐТИТЕ Ð’ÐИМÐÐИЕ ÐРВВОД ДÐТЫ!!! */
156
157CREATE TABLE [Dmitry_Golubev].ФамилиÑ.test_stuff
158(
159 TestInt tinyint NOT NULL,
160 TestNChar nvarchar(30) NOT NULL
161)
162GO
163
164INSERT INTO [Dmitry_Golubev].ФамилиÑ.test_stuff
165 (TestInt, TestNChar)
166 VALUES
167 (1,N'Кolol')
168 ,(2,N'lolo')
169 ,(3,N'hop')
170GO
171SELECT * From [Dmitry_Golubev].ФамилиÑ.ut_students
172--ПРОСМÐТРИВÐЕМ СОДЕРЖИМОЕ ТÐБЛИЦЫ ut_students
173
174--DELETE FROM [Dmitry_Golubev].ФамилиÑ.ut_students
175/*УДÐЛЯЕМ ВСЕ ДÐÐÐЫЕ ИЗ ТÐБЛИЦЫ ut_students.
176СÐМРТÐБЛИЦРОСТÐЕТСЯ Ð’ БÐЗЕ ДÐÐÐЫХ*/
177
178UPDATE [Dmitry_Golubev].ФамилиÑ.ut_nameGroup
179SET NumberGroup = 7 where NumberGroup =2
180
181--ПРОВЕРЯЕМ ОГРÐÐИЧЕÐИЕ ON UPDATE CASCADE
182
183SELECT * From [Dmitry_Golubev].ФамилиÑ.ut_nameGroup
184--ПРОСМÐТРИВÐЕМ СОДЕРЖИМОЕ ТÐБЛИЦЫ ut_nameGroup
185
186SELECT * From [Dmitry_Golubev].ФамилиÑ.ut_students
187--ПРОСМÐТРИВÐЕМ СОДЕРЖИМОЕ ТÐБЛИЦЫ ut_students
188
189SELECT * From [Dmitry_Golubev].ФамилиÑ.test_stuff