· 6 years ago · Jun 13, 2019, 06:50 AM
1
2--https://www.sqlservercentral.com/blogs/remove-all-foreign-keys
3
4while(exists(select 1 from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where CONSTRAINT_TYPE='FOREIGN KEY'))
5begin
6 declare @sql nvarchar(2000)
7 SELECT TOP 1 @sql=('ALTER TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME
8 + '] DROP CONSTRAINT [' + CONSTRAINT_NAME + ']')
9 FROM information_schema.table_constraints
10 WHERE CONSTRAINT_TYPE = 'FOREIGN KEY'
11 exec (@sql)
12end
13
14
15
16
17-------- USUŃ TABELE --------
18
19DROP TABLE IF EXISTS Marka;
20DROP TABLE IF EXISTS Model;
21DROP TABLE IF EXISTS Samochodciezarowy;
22DROP TABLE IF EXISTS Samochodosobowy;
23DROP TABLE IF EXISTS Typsilnika;
24DROP TABLE IF EXISTS Samochod;
25DROP TABLE IF EXISTS Dodatkowewyposazenie;
26DROP TABLE IF EXISTS Klient;
27DROP TABLE IF EXISTS Sprzedaz;
28DROP TABLE IF EXISTS Dealer;
29DROP TABLE IF EXISTS Posiada;
30DROP TABLE IF EXISTS Posiadaja;
31DROP TABLE IF EXISTS Posiadanie;
32
33------------ CREATE - UTWÓRZ TABELE I POWIĄZANIA ------------
34
35
36
37
38CREATE TABLE Marka (
39nazwa VARCHAR(20) PRIMARY KEY,
40rokzalozenia integer
41);
42
43CREATE TABLE Model (
44identyfikator VARCHAR(20) PRIMARY KEY,
45nazwa VARCHAR(20),
46rokwprowadzenianarynek INTEGER,
47Marka_nazwa VARCHAR(20) REFERENCES Marka(nazwa)
48);
49
50CREATE TABLE Samochodciezarowy (
51ladownosc INT NOT NULL
52);
53
54CREATE TABLE Samochodosobowy (
55liczbapasazerow INT NOT NULL,
56pojemnoscbagaznika INT NOT NULL
57);
58
59CREATE TABLE Typsilnika (
60identyfikator VARCHAR(20) PRIMARY KEY,
61rodzajpaliwa VARCHAR(20),
62opisparametrow VARCHAR(20),
63CHECK (rodzajpaliwa = 'diesel' or rodzajpaliwa = 'benzyna' or rodzajpaliwa = 'prad' or rodzajpaliwa = 'usmiechbabelka')
64);
65
66CREATE TABLE Dealer (
67nazwa VARCHAR(20) PRIMARY KEY,
68adres VARCHAR(20) NOT NULL
69
70);
71
72CREATE TABLE Samochod (
73VIN INT PRIMARY KEY,
74przebiegdonegocjacji INT NOT NULL,
75skrzyniabiegow VARCHAR(20),
76krajpochodzenia VARCHAR(20),
77rokprodukcji DATETIME,
78Model_identyfikator VARCHAR(20) REFERENCES Model(identyfikator),
79Typsilnika_identyfikator VARCHAR(20) REFERENCES Typsilnika(identyfikator),
80Dealer_nazwa VARCHAR(20) foreign key REFERENCES Dealer(nazwa),
81check(skrzyniabiegow = 'jestdziala' or skrzyniabiegow = 'jestniedziala' or skrzyniabiegow = 'niema' or skrzyniabiegow = 'niewiadomo' )
82);
83
84CREATE TABLE Dodatkowewyposazenie (
85nazwa VARCHAR(20) PRIMARY KEY,
86);
87
88
89
90CREATE TABLE Sprzedaz (
91data_sprzedazy DATETIME not null primary key,
92cena INT NOT NULL,
93Samochod_VIN INT REFERENCES Samochod(VIN),
94Dealer_nazwa VARCHAR(20) foreign key REFERENCES Dealer(nazwa)
95);
96
97CREATE TABLE Klient (
98ID INT primary key,
99imie VARCHAR(20) NOT NULL,
100nazwisko VARCHAR(20) NOT NULL,
101numertelefonu INT NOT NULL,
102Sprzedaz_data datetime not null references Sprzedaz(data_sprzedazy),
103);
104
105
106
107
108
109CREATE TABLE Posiada (
110Typsilnika_identyfikator VARCHAR(20) REFERENCES Typsilnika(identyfikator),
111Model_identyfikator VARCHAR(20) REFERENCES Model(identyfikator),
112PRIMARY KEY (Typsilnika_identyfikator,Model_identyfikator)
113);
114
115CREATE TABLE Posiadaja (
116Dealer_nazwa VARCHAR(20) REFERENCES Dealer(nazwa),
117Model_identyfikator VARCHAR(20) REFERENCES Model(identyfikator),
118PRIMARY KEY (Dealer_nazwa,Model_identyfikator)
119);
120
121CREATE TABLE Posiadanie (
122Samochod_VIN INT REFERENCES Samochod(VIN),
123Dodatkowewyposazenie_nazwa VARCHAR(20) REFERENCES Dodatkowewyposazenie(nazwa)
124);
125
126
127
128------------ INSERT - WSTAW DANE ------------
129
130
131
132INSERT INTO Marka(nazwa, rokzalozenia) VALUES ('Skoda',1985);
133INSERT INTO Marka(nazwa, rokzalozenia) VALUES ('Toyota',1965);
134INSERT INTO Marka(nazwa, rokzalozenia) VALUES ('Dacia',1885);
135INSERT INTO Marka(nazwa, rokzalozenia) VALUES ('BMW',1705);
136INSERT INTO Marka(nazwa, rokzalozenia) VALUES ('Opel',1855);
137INSERT INTO Marka(nazwa, rokzalozenia) VALUES ('Ford',1786);
138INSERT INTO Marka(nazwa, rokzalozenia) VALUES ('Hyundai',1596);
139INSERT INTO Marka(nazwa, rokzalozenia) VALUES ('Mini',1875);
140INSERT INTO Marka(nazwa, rokzalozenia) VALUES ('Porsche',1885);
141INSERT INTO Marka(nazwa, rokzalozenia) VALUES ('Lexux',1655);
142
143INSERT INTO Typsilnika(identyfikator, rodzajpaliwa, opisparametrow) VALUES ('DBAD','benzyna','szybki');
144INSERT INTO Typsilnika(identyfikator, rodzajpaliwa, opisparametrow) VALUES ('A123','usmiechbabelka','wolny');
145INSERT INTO Typsilnika(identyfikator, rodzajpaliwa, opisparametrow) VALUES ('B452','diesel','sredni');
146INSERT INTO Typsilnika(identyfikator, rodzajpaliwa, opisparametrow) VALUES ('C942','benzyna','wolny');
147INSERT INTO Typsilnika(identyfikator, rodzajpaliwa, opisparametrow) VALUES ('Z354','diesel','megaszybki');
148INSERT INTO Typsilnika(identyfikator, rodzajpaliwa, opisparametrow) VALUES ('M434','benzyna','megawolny');
149INSERT INTO Typsilnika(identyfikator, rodzajpaliwa, opisparametrow) VALUES ('P352','prad','szybki');
150INSERT INTO Typsilnika(identyfikator, rodzajpaliwa, opisparametrow) VALUES ('K425','benzyna','szybki');
151INSERT INTO Typsilnika(identyfikator, rodzajpaliwa, opisparametrow) VALUES ('O145','benzyna','wolny');
152INSERT INTO Typsilnika(identyfikator, rodzajpaliwa, opisparametrow) VALUES ('P535','prad','sredni');
153
154insert into Dealer(nazwa, adres) values ('OneCar', 'ul.Przykladowa')
155
156insert into Model(identyfikator, nazwa, rokwprowadzenianarynek, Marka_nazwa) values ('O23F', 'Pickup', 1968, 'Ford')
157
158insert into Samochod(VIN, przebiegdonegocjacji, skrzyniabiegow, krajpochodzenia, rokprodukcji, Model_identyfikator,
159 Typsilnika_identyfikator, Dealer_nazwa) values(12345, 20, 'jestdziala', 'Kuba', 1968, 'O23F', 'DBAD', 'OneCar')
160
161
162
163
164
165
166
167
168drop procedure if exists FastAsSanic
169
170go
171 create procedure FastAsSanic @param varchar(20)
172 as
173 select count(opisparametrow) as 'fast_cars'
174 from Typsilnika
175 where opisparametrow = @param
176go
177
178 exec FastAsSanic @param = 'szybki';
179
180
181
182
183
184------------ SELECT ------------
185
186SELECT * FROM Marka;
187SELECT * FROM Typsilnika;