prestige

lab6_BD

May 16th, 2012
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 4.02 KB | None | 0 0
  1. GO
  2. USE master
  3. GO
  4. IF EXISTS (SELECT * from sys.databases where name='moedata')
  5.         DROP DATABASE moedata
  6. GO
  7. CREATE DATABASE moedata
  8. GO
  9. ALTER DATABASE moedata SET MULTI_USER
  10. GO
  11. USE moedata
  12. GO
  13. CREATE TABLE Street
  14. (StreetId int NOT NULL identity(1,1)PRIMARY KEY,
  15. Name nvarchar(25) NOT NULL)
  16. GO
  17. ----GO
  18. INSERT INTO Street(Name)
  19.                  VALUES ('Пушкинская')
  20. INSERT INTO Street(Name)
  21.                  VALUES ('Лермонтовская')
  22. INSERT INTO Street(Name)
  23.                  VALUES ('Чуковская')
  24. INSERT INTO Street(Name)
  25.                  VALUES ('Толкиенская')
  26. --GO
  27. ----SELECT * FROM Street
  28. ----GO
  29. CREATE TABLE Fam
  30. (FamId int NOT NULL identity(1,1) PRIMARY KEY,
  31. Name nvarchar(25) NOT NULL)
  32. GO
  33. INSERT INTO Fam(Name)
  34.          VALUES ('Яблочных')
  35. INSERT INTO Fam(Name)
  36.          VALUES ('Апельсинов')
  37. INSERT INTO Fam(Name)
  38.          VALUES ('Виноградов')
  39. INSERT INTO Fam(Name)
  40.          VALUES ('Грушев')
  41. INSERT INTO Fam(Name)
  42.          VALUES ('Арбузова')
  43. --GO
  44. ----SELECT * FROM Fam
  45. --GO
  46. CREATE TABLE Subscriber
  47. (SubscriberId int NOT NULL identity(1,1) Primary Key,
  48. PhoneNumber nvarchar(9),
  49. FamId int NOT NULL,
  50. Iniz nvarchar(4),
  51. Indeks nvarchar(5),
  52. StreetId int NOT NULL,
  53. HouseNumber nvarchar(4),
  54. FlatNumber int,
  55. Sex nvarchar(1),
  56. FOREIGN KEY (FamID) REFERENCES Fam(FamId),
  57. FOREIGN KEY (StreetId) REFERENCES Street(StreetId))
  58. GO
  59. INSERT INTO Subscriber(PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  60.          VALUES ('745-34-19',1, 'А.А.','61005',2, '13',3,'М')
  61. INSERT INTO Subscriber(PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  62.          VALUES ('234-43-53',2, 'Р.В', '61005', 1,'1',45,'М')
  63. INSERT INTO Subscriber(PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  64.          VALUES ('834-43-53',1, 'Р.В', '61005', 1,'1',45,'М')        
  65. go
  66.  
  67. -----------------------------------------------1
  68. if OBJECT_ID('proc1','procedure') is not null
  69.     drop view proc1
  70. go
  71. create procedure proc1 @fam nvarchar(50), @outp int output
  72. as
  73.     declare @nom int
  74.     select @nom=MAX(Subscriber.HouseNumber) from Subscriber inner join Street
  75.     on Street.StreetId=Subscriber.StreetId where Street.Name=@fam
  76.     set @outp=(select Subscriber.FamId from Subscriber inner join Street
  77.     on Street.StreetId=Subscriber.StreetId where Street.Name=@fam and Subscriber.HouseNumber=@nom)
  78. go
  79.  
  80. --------------------------------------------------2
  81. if OBJECT_ID('proc2','procedure') is not null
  82.     drop view proc2
  83. go
  84. create procedure proc2 @fam nvarchar(50),@street nvarchar(50),@indeks int,@sex nvarchar(1),@phone nvarchar(9)
  85. as
  86.     if exists(select Fam.Name,Street.name,Subscriber.Indeks,Subscriber.Sex,Subscriber.PhoneNumber
  87.     from Subscriber inner join Fam on Fam.FamId=Subscriber.FamId inner join Street on Street.StreetId=Subscriber.StreetId
  88.     where Fam.Name=@fam and Street.Name=@street and Subscriber.Indeks=@indeks and Subscriber.Sex=@sex and Subscriber.PhoneNumber=@phone)
  89.     begin
  90.         UPDATE Subscriber set PhoneNumber='1a' where FlatNumber=(select max(flatNumber) from Subscriber)
  91.     end
  92.     else
  93.     begin
  94.         declare @kod1 int
  95.         declare @kod2 int
  96.         insert into Fam values(@fam)
  97.         select @kod1=FamId from Fam where Name=@fam
  98.         insert into Street values(@street)
  99.         select @kod2=StreetId from Street where Name=@street
  100.         insert into Subscriber values(@phone,@kod1,null,@indeks,@kod2,null,null,@sex)
  101.     end
  102. go
  103. ----------------------------------------------3
  104. if OBJECT_ID('view1','view') is not null
  105.     drop view view1
  106. go
  107. create view view1
  108. as
  109.     select PhoneNumber,Iniz,Indeks,HouseNumber,FlatNumber,Sex from Subscriber
  110.     where PhoneNumber like '%[368]%'
  111. go
  112. select * from view1
  113. go
  114. ----------------------------------------------4
  115. if OBJECT_ID('view2','view') is not null
  116.     drop view view2
  117. go
  118. create view view2(f,i,d)
  119. as
  120.     select Street.Name,max(Subscriber.PhoneNumber),count(*) from Subscriber inner join Street on Street.StreetId=Subscriber.StreetId
  121.     group by Street.Name
  122. go
  123. select * from view2
  124. go
Advertisement
Add Comment
Please, Sign In to add comment