prestige

Lab2_BD

May 4th, 2012
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 9.38 KB | None | 0 0
  1. GO
  2. USE master
  3. GO
  4. IF EXISTS (SELECT * from sys.databases where name='mybase')
  5.         DROP DATABASE mybase
  6. GO
  7. CREATE DATABASE mybase
  8. GO
  9. ALTER DATABASE mybase SET SINGLE_USER
  10. GO
  11. USE mybase
  12. GO
  13. CREATE TABLE Street
  14. (StreetId int NOT NULL PRIMARY KEY,
  15. Name nvarchar(25) NOT NULL)
  16. GO
  17. INSERT INTO Street(StreetId,Name)
  18.                  VALUES (1,'Пушкинская')
  19. INSERT INTO Street(StreetId,Name)
  20.                  VALUES (2,'Лермонтовская')
  21. INSERT INTO Street(StreetId,Name)
  22.                  VALUES (3,'Чуковская')
  23. INSERT INTO Street(StreetId,Name)
  24.                  VALUES (4,'Толкиенская')
  25. GO
  26. --SELECT * FROM Street
  27. --GO
  28. CREATE TABLE Fam
  29. (FamId int NOT NULL PRIMARY KEY,
  30. Name nvarchar(25) NOT NULL)
  31. GO
  32. INSERT INTO Fam(FamId,Name)
  33.          VALUES (1,'Яблочных')
  34. INSERT INTO Fam(FamId,Name)
  35.          VALUES (2,'Апельсинов')
  36. INSERT INTO Fam(FamId,Name)
  37.          VALUES (3,'Виноградов')
  38. INSERT INTO Fam(FamId,Name)
  39.          VALUES (4,'Грушев')
  40. INSERT INTO Fam(FamId,Name)
  41.          VALUES (5,'Арбузова')
  42. GO
  43. --SELECT * FROM Fam
  44. --GO
  45. CREATE TABLE Subscriber
  46. (SubscriberId int NOT NULL Primary Key,
  47. PhoneNumber nvarchar(9) NOT NULL,
  48. FamId int NOT NULL,
  49. Iniz nvarchar(4) NOT NULL,
  50. Indeks nvarchar(5) NOT NULL,
  51. StreetId int NOT NULL,
  52. HouseNumber int NOT NULL,
  53. FlatNumber int NOT NULL,
  54. Sex nvarchar(1) NOT NULL,
  55. FOREIGN KEY (FamID) REFERENCES Fam(FamId),
  56. FOREIGN KEY (StreetId) REFERENCES Street(StreetId))
  57. GO
  58. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  59.          VALUES (1,'745-34-19',1, 'А.А.','61005',2, 13,3,'М')
  60. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  61.          VALUES (2,'234-43-53',2, 'Р.В', '61005', 1,1,45,'М')
  62. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  63.          VALUES (3,'654-02-51',3, 'В.И.','61005', 3,11,2,'Ж')
  64. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  65.          VALUES (4,'350-10-20',4, 'Ф.И.', '61005', 4, 7,223,'М')
  66. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  67.          VALUES (5,'787-34-66',1, 'А.С.', '61005', 3,13,89,'Ж')
  68. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  69.          VALUES (6,'787-37-56',2, 'А.С.', '61005', 2,112,13,'М')
  70. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  71.          VALUES (7,'777-34-66',2, 'К.В.', '61005', 1,2,13,'М')
  72. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  73.          VALUES (8,'787-34-12',4, 'М.С.', '61005', 2,112,13,'Ж')
  74. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  75.          VALUES (9,'497-234',4, 'К.М.', '61005', 4,132,13,'М')
  76. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  77.          VALUES (10,'497-234',5, 'К.М.', '61005', 4,132,13,'М')
  78. GO
  79. --SELECT *
  80. --FROM Subscriber
  81. --GO
  82.  
  83. CREATE TABLE SubscriberCopy
  84. (SubscriberId int NOT NULL Primary Key,
  85. PhoneNumber nvarchar(9) NOT NULL,
  86. FamId int NOT NULL,
  87. Iniz nvarchar(4) NOT NULL,
  88. Indeks nvarchar(5) NOT NULL,
  89. StreetId int NOT NULL,
  90. HouseNumber int NOT NULL,
  91. FlatNumber int NOT NULL,
  92. Sex nvarchar(1) NOT NULL,
  93. FOREIGN KEY (FamID) REFERENCES Fam(FamId),
  94. FOREIGN KEY (StreetId) REFERENCES Street(StreetId))
  95. GO
  96. INSERT INTO SubscriberCopy(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  97.          VALUES (1,'745-34-19',1, 'А.А.','61005',2, 13,3,'М')
  98. INSERT INTO SubscriberCopy(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  99.          VALUES (2,'234-43-53',2, 'Р.В', '61005', 1,1,45,'М')
  100. INSERT INTO SubscriberCopy(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  101.          VALUES (3,'654-02-51',3, 'В.И.','61005', 3,11,2,'Ж')
  102. INSERT INTO SubscriberCopy(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  103.          VALUES (4,'350-10-20',4, 'Ф.И.', '61005', 4, 7,223,'М')
  104. INSERT INTO SubscriberCopy(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  105.          VALUES (5,'787-34-66',1, 'А.С.', '61005', 3,13,89,'Ж')
  106. INSERT INTO SubscriberCopy(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  107.          VALUES (6,'787-37-56',2, 'А.С.', '61005', 2,112,13,'М')
  108. INSERT INTO SubscriberCopy(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  109.          VALUES (7,'777-34-66',2, 'К.В.', '61005', 1,2,13,'М')
  110. INSERT INTO SubscriberCopy(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  111.          VALUES (8,'787-34-12',4, 'М.С.', '61005', 2,112,13,'Ж')
  112. GO
  113. CREATE FUNCTION dbo.f1(@o nvarchar(1))
  114. returns nvarchar(10)
  115. as
  116.     begin
  117.         declare @x nvarchar(10)
  118.         if @o='М'
  119.           begin
  120.             set @x='мужской'
  121.           end
  122.         else
  123.           begin
  124.             set @x='женский'
  125.           end
  126.         return @x
  127.     end
  128. go
  129. ------------------1
  130. SELECT SubscriberId as 'Код',PhoneNumber as'Телефон',FamId as'Код фамилии',Iniz as'Инциалы',Indeks as'Индекс',
  131. StreetId as'код улицы', HouseNumber as'Номер дома', FlatNumber as'Номер квартиры', dbo.f1(Sex) as'Пол'
  132. FROM Subscriber
  133.  
  134. ------------------2
  135. --SELECT DISTINCT HouseNumber,FlatNumber,Sex FROM Subscriber
  136. -------------------3
  137. --SELECT Fam.Name FROM Subscriber,Fam
  138. --INNER JOIN Fam
  139. --ON Fam.FamId=Subscriber.FamId
  140. --WHERE Sex='М'
  141. -------------------4
  142. --select Fam.Name from Subscriber inner join Fam on Subscriber.FamId=Fam.id
  143. --where substring(PhoneNumber,3,1)=[3,7,8]
  144. --and not substring(PhoneNumber,6,1)=[6,3,7] and substring(PhoneNumber,8,1) between 4 and 9
  145. ---------------------5
  146. --SELECT * FROM Subscriber
  147. --INNER JOIN Street
  148. --ON Street.StreetId=Subscriber.StreetId
  149. --WHERE Street.Name Like '%Героев%'
  150. -----------------------------6
  151. --SELECT * FROM Subscriber
  152. --WHERE FlatNumber IS NULL
  153. ----------------------------7
  154. --select Fam.Name from Subscriber inner join Fam on Subscriber.FamId=Fam.id
  155. --order by Subscriber.HouseNumber desc,Subscriber.FlatNumber asc
  156. -------------------------------------8
  157. --select Fam.Name from Subscriber inner join Fam on Subscriber.FamId=Fam.id
  158. --order by ABS(FlatNumber-13) DESC
  159. --------------------------------9
  160. --SELECT COUNT(*) FROM Fam
  161. --WHERE Fam.Name LIKE '%ов'
  162. -----------------------10
  163. --SELECT MIN(FlatNumber),StreeId FROM Subscriber
  164. --ORDER BY StreetId
  165. --WHERE Sex='Ж'
  166.  
  167.  
  168.  
  169.  
  170. -------------3
  171. --IF OBJECT_ID('MyDelete1','TRIGGER') IS NOT NULL
  172. --DROP TRIGGER MyDelete1
  173. --GO
  174. --CREATE TRIGGER MyDelete1
  175. --ON Subscriber
  176. --FOR DELETE
  177. --AS
  178. --DECLARE @s nvarchar(9)
  179. --BEGIN
  180. --SELECT @s=PhoneNumber FROM deleted
  181. --IF(LEN(@s)=7)
  182. --  PRINT('Успешно удалено')
  183. --ELSE
  184. --   BEGIN
  185. --  PRINT('Неверное удаление')
  186. --  ROLLBACK TRANSACTION
  187. --   END
  188. --END
  189. --GO
  190. --DELETE Subscriber
  191. --WHERE LEN(PhoneNumber)=7
  192. --GO
  193. --SELECT *
  194. --FROM SubscriberCopy
  195. --GO
  196. --------------4
  197. --IF OBJECT_ID('MyInsert1','TRIGGER') IS NOT NULL
  198. --DROP TRIGGER MyInsert1
  199. --GO
  200. --CREATE TRIGGER MyInsert1
  201. --ON Fam
  202. --INSTEAD OF INSERT
  203. --AS
  204. --DECLARE @s nvarchar(9)
  205. --IF NOT EXISTS(SELECT * FROM Inserted
  206. --WHERE Name IN
  207. --(SELECT Name FROM Fam))
  208. --BEGIN
  209. --  INSERT INTO Fam(Name) SELECT
  210. --  Name FROM Inserted
  211. --  print('Subject added')
  212. --END
  213. --ELSE
  214. --  PRINT('Unable to add')
  215. --GO
  216. -------------------5
  217. --IF OBJECT_ID('MyDelete2','TRIGGER') IS NOT NULL
  218. --DROP TRIGGER MyDelete2
  219. --GO
  220. --CREATE TRIGGER MyDelete2
  221. --ON Fam
  222. --INSTEAD OF DELETE
  223. --AS
  224. --  DELETE FROM Subscriber WHERE Subscriber.FamId IN (SELECT FamId FROM deleted)
  225. --  DELETE FROM Fam WHERE FamId IN(SELECT FamId FROM deleted)
  226. --GO
  227. --DELETE FROM Fam
  228. --WHERE Name='Арбузова'
  229. --GO
  230. -------------1
  231. --UPDATE TOP(1) SubscriberCopy
  232. --SET HouseNumber=3
  233. --WHERE SubscriberId=3
  234. --GO
  235. -------------2
  236. --SELECT SubscriberId, PhoneNumber, Fam.Name, Iniz,Indeks,Street.Name, HouseNumber, FlatNumber, Sex
  237. --FROM Subscriber,Fam,Street
  238. --WHERE Subscriber.FamId=Fam.FamId and Subscriber.StreetId=Street.StreetId and Fam.Name NOT IN
  239. --(SELECT Fam.Name FROM Fam WHERE Fam.Name LIKE('А%') or Fam.Name LIKE ('О%'))
  240. --UNION SELECT SubscriberId, PhoneNumber, Fam.Name, Iniz,Indeks,Street.Name, HouseNumber, FlatNumber, Sex
  241. --FROM SubscriberCopy,Fam,Street
  242. --WHERE SubscriberCopy.FamId=Fam.FamId and SubscriberCopy.StreetId=Street.StreetId and Fam.Name NOT IN
  243. --(SELECT Fam.Name FROM Fam WHERE Fam.Name LIKE('А%') or Fam.Name LIKE ('О%'))
  244. --ORDER BY Street.Name
  245. --GO
  246. ----------------------6
  247. --IF OBJECT_ID('UpdeteInsert','TRIGGER') IS NOT NULL
  248. --DROP TRIGGER UpdateInsert
  249. --GO
  250. --CREATE TRIGGER UpdateInsert
  251. --ON Subscriber
  252. --INSTEAD OF UPDATE,INSERT
  253. --AS
  254. --  if not exist(select * from inserted
  255. --  where StreetId in
  256. --  (select * from Subscriber group by StreetId having count(*)>=3))
  257. --      print('Unable to add')
  258. --  else
  259. --      begin
  260. --          insert into Subscriber SELECT
  261. --          * FROM inserted
  262. --          print('Added')
  263. --      end
  264. --GO
  265.  
  266. --SELECT *
  267. --FROM SubscriberCopy
  268. --GO
Advertisement
Add Comment
Please, Sign In to add comment