Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
470
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.22 KB | None | 0 0
  1. USE master;
  2. GO
  3.  
  4. IF DB_ID ('SecondDB') IS NOT NULL
  5. DROP DATABASE SecondDB;
  6. GO
  7.  
  8. CREATE DATABASE SecondDB
  9.  ON (NAME = SecondDB_Primary, FILENAME = '/home/lab6/seconddb.mdf', SIZE = 5, MAXSIZE = 100, FILEGROWTH = 5%)
  10.     LOG ON (NAME = SecondDB_Log, FILENAME = '/home/lab6/secondlog.ldf', SIZE = 5, MAXSIZE = 25, FILEGROWTH = 5)
  11. GO
  12.  
  13. USE SecondDB
  14. GO
  15.  
  16. --Создать таблицу с автоинкрементным первичным ключом
  17.  
  18. --уникальность свойства IDENTITY гарантирована только в рамках таблицы, в которой оно использовано;
  19. --таблица может содержать только один столбец со свойством IDENTITY;
  20. CREATE SCHEMA FirstSchema
  21. CREATE TABLE FirstTable(
  22. id INT IDENTITY(1,1) PRIMARY KEY NOT NULL,
  23. phone CHAR(11) NULL,
  24. email VARCHAR(50) NOT NULL,
  25. date DATETIME NOT NULL,
  26. age INT NOT NULL,
  27. city VARCHAR(30)
  28. )
  29. GO
  30. /*
  31. --возвращает последнее значение идентификатора, созданного для таблицы
  32. --значение идентификатора может относиться к любому сеансу и любой области
  33. SELECT IDENT_CURRENT('FirstTable') AS [IDENT_CURRENT]
  34. --возвращает последнее значение идентификатора, вставленного
  35. --в любую таблицу в текущем сеансе по всем областям действий
  36. SELECT @@IDENTITY AS [IDENTITY]
  37. --возвращает последнее значение идентификатора, вставленного
  38. --в любую таблицу в текущем сеансе в той же области
  39. SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]
  40. GO
  41.  
  42. --Функция IDENT_CURRENT не ограничена областью действия и сеансом, но ограничена указанной таблицей;
  43. --Функция @@IDENTITY ограничена текущим сеансом;
  44. --Функция SCOPE_IDENTITY ограничена текущим сеансом и областью действия.
  45. --Под областью подразумевается хранимая процедура, триггер или пакет
  46.  
  47. INSERT INTO FirstSchema.FirstTable VALUES ('8900000000', 'db@yandex.ru', GETDATE(), 20, 'Berlin')
  48. INSERT INTO FirstSchema.FirstTable VALUES ('8900000001', 'db1@yandex.ru', GETDATE(), 36, 'Rome')
  49. GO
  50.  
  51. SELECT IDENT_CURRENT('FirstTable') AS [IDENT_CURRENT]
  52. SELECT @@IDENTITY AS [IDENTITY]
  53. SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]
  54. GO
  55.  
  56. DROP TABLE FirstSchema.FirstTable
  57. SELECT IDENT_CURRENT('FirstTable') AS [IDENT_CURRENT]
  58. SELECT @@IDENTITY AS [IDENTITY]
  59. SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]
  60. GO
  61. */
  62.  
  63. --Добавить поля, для которых используются ограничения (CHECK), значения по умолчанию (DEFAULT),
  64. ALTER TABLE FirstSchema.FirstTable ADD CONSTRAINT CK_date CHECK (date > CONVERT(DATETIME, '01-09-2010', 105))
  65. ALTER TABLE FirstSchema.FirstTable ADD CONSTRAINT CK_Person CHECK (age >= 18 AND City ='Moscow');
  66. ALTER TABLE FirstSchema.FirstTable ADD CONSTRAINT DFLT_date DEFAULT GETDATE() FOR date;
  67. GO
  68.  
  69. INSERT INTO FirstSchema.FirstTable (phone, email, age, city) VALUES (89992001010, 'e@mail.ru', 18, 'Moscow')
  70. INSERT INTO FirstSchema.FirstTable VALUES (89992001011, 'e@mail.ru', CONVERT(DATETIME, '01-09-2017', 105), 18, 'Moscow')
  71. INSERT INTO FirstSchema.FirstTable VALUES (89992001018, 'p@mail.ru', CONVERT(DATETIME, '01-09-2017', 105), 20, 'Moscow')
  72. INSERT INTO FirstSchema.FirstTable VALUES (89992001015, 'u@mail.ru', CONVERT(DATETIME, '01-09-2014', 105), 23, 'Moscow')
  73. INSERT INTO FirstSchema.FirstTable VALUES (89992001017, 'o@mail.ru', CONVERT(DATETIME, '01-09-2015', 105), 22, 'Moscow')
  74. --INSERT INTO FirstSchema.FirstTable VALUES (89992001012, 'r@mail.ru', CONVERT(DATETIME, '01-09-2009', 105), 30, 'Bolshevo')
  75. --INSERT INTO FirstSchema.FirstTable VALUES (89992001013, 't@mail.ru', CONVERT(DATETIME, '01-09-2015', 105), 42, 'Mytischi')
  76. --INSERT INTO FirstSchema.FirstTable VALUES (89992001014, 'y@mail.ru', CONVERT(DATETIME, '01-09-2014', 105), 17, 'Shelkovo')
  77. --INSERT INTO FirstSchema.FirstTable VALUES (89992001016, 'i@mail.ru', CONVERT(DATETIME, '01-09-2012', 105), 50, 'Himki')
  78. GO
  79.  
  80. --Создать таблицу с первичным ключом на основе глобального уникального идентификатора
  81.  
  82. --уникальный для всей базы данных или всех баз данных во всех компьютерных сетях
  83. CREATE TABLE FirstSchema.UniqueTable (
  84. workID UNIQUEIDENTIFIER NOT NULL PRIMARY KEY DEFAULT NEWID(),
  85. workName VARCHAR(25) NULL
  86. )
  87. GO
  88.  
  89. INSERT INTO FirstSchema.UniqueTable (workName) VALUES ('Nature');
  90. INSERT INTO FirstSchema.UniqueTable VALUES (NEWID(), 'Sea');
  91.  
  92. --Создать таблицу с первичным ключом на основе последовательности
  93.  
  94. --Sequence – генерирует последовательность чисел так же как и identity.
  95. --последовательность не зависит от какой-либо конкретной таблицы
  96. --В системах баз данных последовательности применяют для автоматической генерации PK
  97.  
  98. CREATE TABLE FirstSchema.SecondTable
  99. (
  100. customerID INT NOT NULL PRIMARY KEY,
  101. customerName VARCHAR(25) NOT NULL,
  102. numberOfWorks INT NULL
  103. )
  104. GO
  105.  
  106. CREATE TABLE FirstSchema.ThirdTable
  107. (
  108. customerID1 INT NOT NULL PRIMARY KEY,
  109. customerName1 VARCHAR(25) NOT NULL,
  110. numberOfWorks1 INT NULL
  111. )
  112. GO
  113.  
  114. --сквозная нумерация
  115. CREATE SEQUENCE FirstSequence
  116. START WITH 1
  117. INCREMENT BY 1;
  118. GO
  119.  
  120. INSERT FirstSchema.SecondTable (customerID, customerName, numberOfWorks)
  121. VALUES (NEXT VALUE FOR FirstSequence, 'Ivanov', 2)
  122. INSERT FirstSchema.ThirdTable (customerID1, customerName1, numberOfWorks1)
  123. VALUES (NEXT VALUE FOR FirstSequence, 'Sidorov', 8)
  124. INSERT FirstSchema.SecondTable (customerID, customerName, numberOfWorks)
  125. VALUES (NEXT VALUE FOR FirstSequence, 'Popov', 1)
  126. GO
  127.  
  128. --Создать две связанные таблицы
  129. CREATE TABLE FirstSchema.TableWithPK
  130. (
  131. purchaseID INT PRIMARY KEY IDENTITY NOT NULL,
  132. quantity INT NOT NULL,
  133. seller VARCHAR(25) NOT NULL
  134. )
  135. GO
  136.  
  137. INSERT INTO FirstSchema.TableWithPK VALUES (5, 'Ivan');
  138. INSERT INTO FirstSchema.TableWithPK VALUES (10, 'Petr');
  139. INSERT INTO FirstSchema.TableWithPK VALUES (3, 'Ivan');
  140. INSERT INTO FirstSchema.TableWithPK VALUES (3, 'Ivan');
  141. INSERT INTO FirstSchema.TableWithPK VALUES (9, 'Anna');
  142. INSERT INTO FirstSchema.TableWithPK VALUES (6, 'Petr');
  143.  
  144. CREATE TABLE FirstSchema.TableWithFK(
  145. productID INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
  146. productName VARCHAR(30) NOT NULL,
  147. manufacturer VARCHAR(30) NOT NULL,
  148. purchaseID INT NULL,
  149. CONSTRAINT configs FOREIGN KEY (purchaseID) REFERENCES FirstSchema.TableWithPK (purchaseID)
  150. --выдает ошибку
  151. --ON DELETE NO ACTION
  152. --проставлет null
  153. ON DELETE SET NULL
  154. --ON DELETE SET DEFAULT
  155. --удаляет строку
  156. --ON DELETE CASCADE
  157. )
  158. GO
  159.  
  160. INSERT INTO FirstSchema.TableWithFK VALUES ('Product1', 'Russia', 1);
  161. INSERT INTO FirstSchema.TableWithFK VALUES ('Product2', 'China', 2);
  162. INSERT INTO FirstSchema.TableWithFK VALUES ('Product2', 'Russia', 3);
  163. INSERT INTO FirstSchema.TableWithFK VALUES ('Product3', 'Italy', 4);
  164. GO
  165.  
  166. DELETE FirstSchema.TableWithPK WHERE purchaseID = 4
  167. GO
  168.  
  169. --lab7
  170. CREATE VIEW FirstSchema.FirstView WITH SCHEMABINDING AS
  171. SELECT o.id, o.phone, o.email, o.date, o.age, o.city
  172. FROM FirstSchema.FirstTable o
  173. WHERE age > 19
  174. WITH CHECK OPTION
  175. GO
  176.  
  177. CREATE VIEW FirstSchema.SecondView AS
  178. SELECT a.purchaseID, a.quantity, a.seller, b.manufacturer, b.productID, b.productName
  179. FROM FirstSchema.TableWithPK a RIGHT JOIN FirstSchema.TableWithFK b
  180. ON a.purchaseID = b.purchaseID
  181. WITH CHECK OPTION
  182. GO
  183.  
  184. CREATE INDEX FirstIndex ON FirstSchema.FirstTable (email, phone)
  185. INCLUDE (age)
  186. GO
  187.  
  188. CREATE UNIQUE CLUSTERED INDEX SecondIndex ON FirstSchema.FirstView (age)
  189. GO
  190.  
  191. SELECT * FROM FirstSchema.FirstView
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement