Advertisement
SquirrelInBox

queries

Nov 15th, 2015
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 14.61 KB | None | 0 0
  1. USE master
  2. GO
  3.  
  4. IF  EXISTS (
  5.         SELECT name
  6.                 FROM sys.DATABASES
  7.                 WHERE name = N'ElenaBeklenishcheva'
  8. )
  9. ALTER DATABASE ElenaBeklenishcheva SET single_user WITH ROLLBACK immediate
  10. GO
  11.  
  12. IF  EXISTS (
  13.         SELECT name
  14.                 FROM sys.DATABASES
  15.                 WHERE name = N'ElenaBeklenishcheva'
  16. )
  17. DROP DATABASE [ElenaBeklenishcheva]
  18. GO
  19.  
  20. CREATE DATABASE [ElenaBeklenishcheva]
  21. GO
  22.  
  23. USE [ElenaBeklenishcheva]
  24. GO
  25.  
  26. IF EXISTS(
  27.   SELECT *
  28.     FROM sys.schemas
  29.    WHERE name = N'Scheme'
  30. )
  31.  DROP SCHEMA Scheme
  32. GO
  33.  
  34. CREATE SCHEMA Scheme
  35. GO
  36.  
  37.  
  38. IF OBJECT_ID('regionsList', 'U') IS NOT NULL
  39.   DROP TABLE regionsList
  40. GO
  41.  
  42.  
  43.  
  44. CREATE TABLE regionsList(
  45.     id_region VARCHAR(3) NOT NULL,
  46.     region_name VARCHAR(50) NOT NULL
  47. )
  48. GO
  49.  
  50. ALTER TABLE regionsList
  51. ADD CONSTRAINT uniq_regionsList UNIQUE (region_name)
  52. GO
  53.  
  54. ALTER TABLE regionsList
  55. ADD CONSTRAINT primary_regionsList PRIMARY KEY (id_region)
  56. GO
  57.  
  58. ALTER TABLE regionsList
  59. ADD CONSTRAINT chk_regionsList CHECK (
  60.     id_region LIKE '[0-9][0-9]'
  61. )
  62. GO
  63.  
  64. INSERT INTO regionsList(id_region, region_name) VALUES
  65. ('01', 'Республика Адыгея'),
  66. ('59', 'Пермский край'),
  67. ('66', 'Свердловская область'),
  68. ('50', 'Московская область'),
  69. ('68', 'Тамбовская область'),
  70. ('64', 'Саратовская область')
  71.  
  72.  
  73. /*INSERT INTO regionsList(id_region, region_name) VALUES
  74. (546, 'Плохая область')*/
  75.  
  76. UPDATE regionsList SET region_name = UPPER(region_name)
  77. GO
  78.  
  79. SELECT * FROM regionsList
  80.  
  81.  
  82. IF OBJECT_ID('regions', 'U') IS NOT NULL
  83.   DROP TABLE regions
  84. GO
  85.  
  86. CREATE TABLE regions (
  87.     id_region VARCHAR(3) NOT NULL,
  88.     region_number VARCHAR(3) PRIMARY KEY NOT NULL
  89.     FOREIGN KEY (id_region) REFERENCES regionsList(id_region)
  90. )
  91. GO
  92.  
  93.  
  94. ALTER TABLE regions
  95.  
  96.     ADD CONSTRAINT chk_regions CHECK (
  97.         id_region LIKE '[0-9][0-9]' AND
  98.         (region_number LIKE '[0-9][0-9]' OR
  99.         region_number LIKE '[1|2|7][0-9][0-9]')
  100.     )
  101. GO
  102.  
  103. INSERT INTO regions(id_region, region_number) VALUES
  104. ('01', '01'),
  105. ('59', '81'),
  106. ('59', '59'),
  107. ('59', '159'),
  108. ('66', '96'),
  109. ('66', '66'),
  110. ('50', '90'),
  111. ('50', '50'),
  112. ('50', '150'),
  113. ('50', '190'),
  114. ('64', '164'),
  115. ('64', '64')
  116.  
  117. /* несуществующий регион */
  118. /*INSERT INTO regions(id_region, region_number) VALUES
  119. /*(50, 154)*/
  120. (50, 310)
  121. */
  122.  
  123.  
  124. SELECT * FROM regions
  125.  
  126. IF OBJECT_ID('type_car', 'U') IS NOT NULL
  127.   DROP TABLE type_car
  128. GO
  129.  
  130. CREATE TABLE type_car (
  131.     type_car_id INT PRIMARY KEY NOT NULL,
  132.     type_car_name VARCHAR(12) UNIQUE NOT NULL
  133. )
  134. GO
  135.  
  136. UPDATE type_car SET type_car_name = UPPER(type_car_name)
  137. GO
  138.  
  139. INSERT INTO type_car(type_car_id, type_car_name) VALUES
  140. (1, 'Audi'),
  141. (2, 'Ford'),
  142. (3, 'Renault'),
  143. (4, 'Honda'),
  144. (5, 'Lada')
  145.  
  146. /*/* повторяющаяся марка*/
  147. INSERT INTO type_car(type_car_id, type_car_name) VALUES
  148. (6, 'Ford'),
  149. (7, 'Ford')
  150. */
  151.  
  152.  
  153. SELECT * FROM type_car
  154.  
  155.  
  156. IF OBJECT_ID('color', 'U') IS NOT NULL
  157.     DROP TABLE color
  158. GO
  159.  
  160.  
  161.  
  162. IF OBJECT_ID('color', 'U') IS NOT NULL
  163.   DROP TABLE color
  164. GO
  165.  
  166. CREATE TABLE color(
  167.     id_color INT PRIMARY KEY NOT NULL,
  168.     color_name VARCHAR(50) UNIQUE NOT NULL
  169. )
  170. GO
  171.  
  172. INSERT INTO color(id_color, color_name) VALUES
  173. (0, 'ЧЕРНЫЙ'),
  174. (1, 'беЛый'),
  175. (2, 'красныЙ'),
  176. (3, 'жЕлтый')
  177.  
  178. UPDATE color SET color_name = LOWER(color_name)
  179. GO
  180.  
  181. SELECT * FROM color
  182. GO
  183.  
  184. IF OBJECT_ID('cars', 'U') IS NOT NULL
  185.   DROP TABLE cars
  186. GO
  187.  
  188. CREATE TABLE cars (
  189.     id_car INT PRIMARY KEY NOT NULL,
  190.     type_car_id INT NOT NULL,
  191.     id_color INT NOT NULL,
  192.     car_number VARCHAR(6) NOT NULL,
  193.     car_number_region VARCHAR(3) NOT NULL
  194.  
  195.     /*FOREIGN KEY (car_number_region) REFERENCES regions(region_number),*/
  196.     /*FOREIGN KEY (type_car_id) REFERENCES type_car(type_car_id),*/
  197.     /*FOREIGN KEY (id_color) REFERENCES color(id_color)*/
  198. )
  199. GO
  200.  
  201. ALTER TABLE cars
  202. ADD CONSTRAINT FK_cars_region FOREIGN KEY(car_number_region)
  203.     REFERENCES regions(region_number)
  204.     ON DELETE CASCADE
  205. GO
  206.  
  207. ALTER TABLE cars
  208. ADD CONSTRAINT FK_type_car FOREIGN KEY(type_car_id)
  209.     REFERENCES type_car(type_car_id)
  210.     ON DELETE CASCADE
  211. GO
  212.  
  213. ALTER TABLE cars
  214. ADD CONSTRAINT FK_car_color FOREIGN KEY(id_color)
  215.     REFERENCES color(id_color)
  216.     ON DELETE CASCADE
  217. GO
  218.  
  219.  
  220. ALTER TABLE cars
  221. ADD CONSTRAINT chk_cars CHECK (
  222.     car_number LIKE '[ABEKMHOPCTYXАВЕКМНОРСТУХ][0-9][0-9][0-9][ABEKMHOPCTYXАВЕКМНОРСТУХ][ABEKMHOPCTYXАВЕКМНОРСТУХ]'
  223.     AND (
  224.             (car_number_region LIKE '[127][0-9][0-9]'
  225.         OR
  226.             car_number_region LIKE '[0-9][0-9]')
  227.     )
  228. )
  229. GO
  230.  
  231. ALTER TABLE cars
  232. ADD CONSTRAINT uniq_num UNIQUE (car_number, car_number_region)
  233. GO
  234.  
  235.  
  236. INSERT INTO cars(id_car, type_car_id, id_color, car_number, car_number_region) VALUES
  237. (0, 2, 0, 'A000AA', '66'),
  238. (1, 2, 1, 'H123Ko', '96'),
  239. (2, 5, 3, 'B159OP', '164'),
  240. (3, 5, 3, 'B159OP', '50'),
  241. (4, 5, 3, 'A123PO', '164'),
  242. (5, 5, 3, 'H546PO', '164')
  243. GO
  244. /*
  245. INSERT INTO cars(id_car, type_car_id, id_color, car_number, car_number_region) VALUES
  246. (100, 1, 1, 'a125qw', 96),
  247. (101, 2, 2, 'a456hk', 578)
  248. GO*/
  249.  
  250.  
  251. UPDATE cars SET car_number = UPPER(car_number)
  252. GO
  253.  
  254. SELECT * FROM cars
  255. GO
  256.  
  257. IF OBJECT_ID('humans', 'U') IS NOT NULL
  258.   DROP TABLE humans
  259. GO
  260.  
  261. CREATE TABLE humans (
  262.     human_id INT PRIMARY KEY NOT NULL,
  263.     human_surname VARCHAR(30) NOT NULL,
  264.     human_name VARCHAR(20) NOT NULL
  265. )
  266. GO
  267. /*ALTER TABLE humans
  268. ADD CONSTRAINT chk_name CHECK*/
  269. /*check name for symbols*/
  270.  
  271. UPDATE humans SET human_surname = UPPER(human_surname),
  272.                   human_name = UPPER(human_name)
  273. GO
  274.  
  275. INSERT INTO humans(human_id, human_surname, human_name) VALUES
  276. (0, 'Абрамов', 'Александр'),
  277. (1, 'Середкина', 'Галина'),
  278. (2, 'Васильев', 'Сергей'),
  279. (3, 'Давлатова', 'Татьяна'),
  280. (4, 'Сергеев', 'Алексей')
  281. GO
  282.  
  283. IF OBJECT_ID('penalties', 'U') IS NOT NULL
  284.   DROP TABLE penalties
  285. GO
  286.  
  287. CREATE TABLE penalties (
  288.     penalty_id INT PRIMARY KEY NOT NULL,
  289.     penalty_name VARCHAR(500) NOT NULL,
  290.     penalty_cost money NOT NULL
  291. )
  292. GO
  293.  
  294. INSERT INTO penalties(penalty_id, penalty_name, penalty_cost) VALUES
  295. (1211, 'Управление ТС, не зарегистрированным в установленном порядке', 800),
  296. (1232, 'Управление ТС водителем, не имеющим при себе документов на право
  297.         управления им, страхового полиса обязательного страхования
  298.         гражданской ответственности владельцев ТС', 500),
  299. (1233, 'Передача управления ТС лицу, не имеющему при себе документов на право управления им', 3000),
  300. (1271, 'Управление ТС водителем, не имеющим права управления ТС (за исключением учебной езды)', 5000),
  301. (1281, 'Управление ТС водителем, находящимся в состоянии опьянения', 30000),
  302. (1292, 'Превышение установленной скорости движения транспортного средства
  303.         на величину более 20, но не более 40 километров в чаc', 500)
  304.  
  305. ALTER TABLE penalties
  306. ADD CONSTRAINT uniq_penalties UNIQUE NONCLUSTERED (
  307.     penalty_name, penalty_cost
  308. )
  309. GO
  310.  
  311.  
  312. IF OBJECT_ID('isPay', 'U') IS NOT NULL
  313.     DROP TABLE isPay
  314. GO
  315.  
  316. CREATE TABLE isPay (
  317.     is_pay bit PRIMARY KEY DEFAULT 0,
  318.     name_pay VARCHAR(3) NOT NULL
  319. )
  320.  
  321. ALTER TABLE isPay
  322. ADD CONSTRAINT uniq_pay UNIQUE (name_pay)
  323. GO
  324.  
  325. INSERT INTO isPay(is_pay, name_pay) VALUES
  326. (0, 'Да'),
  327. (1, 'Нет')
  328. GO
  329.  
  330.  
  331. IF OBJECT_ID('human_penalties', 'U') IS NOT NULL
  332.   DROP TABLE human_penalties
  333. GO
  334.  
  335. CREATE TABLE human_penalties (
  336.     id_node INT PRIMARY KEY NOT NULL,
  337.     human_id INT NOT NULL,
  338.     penalty_id INT NOT NULL,
  339.     is_pay bit DEFAULT 0
  340.  
  341.     /*FOREIGN KEY (human_id) REFERENCES humans(human_id),
  342.     FOREIGN KEY (penalty_id) REFERENCES penalties(penalty_id)*/
  343. )
  344. GO
  345.  
  346. ALTER TABLE human_penalties
  347. ADD CONSTRAINT FK_human_penalties_id FOREIGN KEY(human_id)
  348.     REFERENCES humans(human_id)
  349.     ON DELETE CASCADE
  350. GO
  351.  
  352. ALTER TABLE human_penalties
  353. ADD CONSTRAINT FK_human_penalties FOREIGN KEY(penalty_id)
  354.     REFERENCES penalties(penalty_id)
  355.     ON DELETE CASCADE
  356. GO
  357.  
  358. ALTER TABLE human_penalties
  359. ADD CONSTRAINT FK_human_penalties_pay FOREIGN KEY(is_pay)
  360.     REFERENCES isPay(is_pay)
  361.     ON DELETE CASCADE
  362. GO
  363.  
  364. INSERT INTO human_penalties(id_node, human_id, penalty_id, is_pay) VALUES
  365. (0, 0, 1232, 1),
  366. (1, 0, 1292, 0),
  367. (2, 1, 1292, 1)
  368. GO
  369.  
  370. IF OBJECT_ID('GIBDD_posts', 'U') IS NOT NULL
  371.   DROP TABLE GIBDD_posts
  372. GO
  373.  
  374. CREATE TABLE GIBDD_posts (
  375.     post_id INT PRIMARY KEY NOT NULL,
  376.     post_address VARCHAR(50) NOT NULL
  377. )
  378. GO
  379.  
  380. INSERT INTO GIBDD_posts(post_id, post_address) VALUES
  381. (0, 'Южный пост'),
  382. (1, 'Северный пост'),
  383. (2, 'Западный пост'),
  384. (3, 'Восточный пост')
  385. GO
  386.  
  387.  
  388. IF OBJECT_ID('main', 'U') IS NOT NULL
  389.   DROP TABLE main
  390. GO
  391.  
  392. CREATE TABLE main (
  393.     human_id INT NOT NULL,
  394.     post_id INT NOT NULL,
  395.     car_id INT NOT NULL,
  396.     date_measure TIME NOT NULL,
  397.     napr bit NOT NULL
  398. )
  399.  
  400. ALTER TABLE main
  401. ADD CONSTRAINT FK_human_id FOREIGN KEY(human_id)
  402.     REFERENCES humans(human_id)
  403.     ON DELETE CASCADE
  404. GO
  405.  
  406. ALTER TABLE main
  407. ADD CONSTRAINT FK_post_id FOREIGN KEY(post_id)
  408.     REFERENCES GIBDD_posts(post_id)
  409.     ON DELETE CASCADE
  410. GO
  411.  
  412. ALTER TABLE main
  413. ADD CONSTRAINT FK_car_id FOREIGN KEY(car_id)
  414.     REFERENCES cars(id_car)
  415.     ON DELETE CASCADE
  416. GO
  417. /*
  418. ALTER TABLE main
  419. ADD CONSTRAINT chk_napr CHECK(
  420.     SELECT ()
  421. )*/
  422.  
  423. INSERT INTO main(human_id, post_id, car_id, date_measure, napr) VALUES
  424. --местные
  425. (0, 2, 1, '10:43:30', 0),
  426. (0, 3, 1, '08:00:00', 1),
  427. (2, 2, 0, '22:00:00', 1),
  428. (2, 2, 0, '23:00:00', 0),
  429.  
  430. --иногородние
  431. (4, 1, 3, '02:28:30', 0),
  432. (4, 1, 3, '03:28:30', 1),
  433.  
  434. --транзитные
  435. (1, 0, 4, '03:00:00', 1),
  436. (1, 1, 4, '04:00:00', 0),
  437.  
  438. --остальные
  439. (3, 0, 2, '01:00:00', 0)
  440.  
  441. --(0, 0, 4, '01:12:05', 0),
  442. --(0, 0, 2, '18:25:15', 1),
  443. --(3, 3, 3, '20:35:30', 1),
  444. --(2, 1, 5, '05:00:00', 0),
  445. --(2, 1, 5, '07:00:00', 1),
  446. --(4, 1, 6, '07:00:00', 0),
  447. --(4, 1, 6, '08:00:00', 1)
  448. GO
  449.  
  450. --SELECT * FROM main
  451.  
  452.  
  453. /*Подсчитывать количество различных категорий автомобилей.*/
  454. /*SELECT type_car.type_car_name as 'Марка машины',
  455.     COUNT(cars.id_car) as 'Количество машин'
  456. FROM cars INNER JOIN
  457.     type_car ON type_car.type_car_id=cars.type_car_id
  458. GROUP BY type_car.type_car_name
  459.  
  460.  
  461. SELECT color.color_name as 'Цвет машины',
  462.     COUNT(cars.id_car) as 'Количество машин'
  463. FROM cars INNER JOIN
  464.     color ON color.id_color=cars.id_color
  465. GROUP BY color.color_name
  466. */
  467.  
  468. /*поправить, чтобы 66 и 96 считались за один регион*/
  469. /*SELECT regions.region_number as 'Номер региона',
  470.     COUNT(cars.id_car) as 'Количество машин'
  471. FROM cars
  472.     INNER JOIN regions ON regions.region_number = cars.car_number_region
  473. GROUP BY regions.region_number
  474.  
  475.  
  476. SELECT humans.human_surname as 'Фамилия водителя',
  477.        humans.human_name as 'Имя водителя',
  478.        penalties.penalty_name as 'Наименование штрафа',
  479.        penalties.penalty_cost as 'Стоимость штрафа',
  480.        isPay.name_pay as 'Оплачен?'
  481. FROM human_penalties
  482.     INNER JOIN humans ON humans.human_id=human_penalties.human_id
  483.     INNER JOIN penalties ON penalties.penalty_id=human_penalties.penalty_id
  484.     INNER JOIN isPay ON isPay.is_pay=human_penalties.is_pay
  485. GROUP BY humans.human_surname, humans.human_name, penalties.penalty_name, penalties.penalty_cost, isPay.name_pay
  486. GO*/
  487.  
  488. --местные 0 - въехал, 1 -выехал
  489. SELECT humans.human_surname AS 'Фамилия водителя',
  490.        humans.human_name AS 'Имя водителя',
  491.        cars.car_number AS 'Номер автомобиля',
  492.        cars.car_number_region AS 'Номер региона'
  493. FROM main  AS i
  494.     INNER JOIN humans ON humans.human_id=i.human_id
  495.     INNER JOIN GIBDD_posts ON GIBDD_posts.post_id=i.post_id
  496.     INNER JOIN cars ON cars.id_car=i.car_id
  497. WHERE i.napr=1 AND (cars.car_number_region=96 OR cars.car_number_region=66) AND
  498.         i.car_id IN (
  499.         SELECT main.car_id
  500.         FROM main
  501.         WHERE main.napr=0 AND main.date_measure > i.date_measure
  502.     )
  503. GROUP BY humans.human_surname, humans.human_name, cars.car_number, cars.car_number_region
  504. GO
  505.  
  506. --иногородние
  507. SELECT humans.human_surname AS 'Фамилия водителя',
  508.        humans.human_name AS 'Имя водителя',
  509.        cars.car_number AS 'Номер автомобиля',
  510.        cars.car_number_region AS 'Номер региона'
  511. FROM main  AS i
  512.     INNER JOIN humans ON humans.human_id=i.human_id
  513.     INNER JOIN GIBDD_posts ON GIBDD_posts.post_id=i.post_id
  514.     INNER JOIN cars ON cars.id_car=i.car_id
  515. WHERE i.napr=0 AND cars.car_number_region!=66 AND cars.car_number_region!=96 AND
  516.         i.car_id IN (
  517.         SELECT main.car_id
  518.         FROM main
  519.         WHERE main.napr=1 AND main.post_id=i.post_id
  520.     )
  521. GROUP BY humans.human_surname, humans.human_name, cars.car_number, cars.car_number_region
  522. GO
  523.  
  524.  
  525. --транзитные
  526. SELECT humans.human_surname AS 'Фамилия водителя',
  527.        humans.human_name AS 'Имя водителя',
  528.        cars.car_number AS 'Номер автомобиля',
  529.        cars.car_number_region AS 'Номер региона'
  530. FROM main AS i
  531.     INNER JOIN humans ON humans.human_id=i.human_id
  532.     INNER JOIN GIBDD_posts ON GIBDD_posts.post_id=i.post_id
  533.     INNER JOIN cars ON cars.id_car=i.car_id
  534. WHERE i.napr=0 AND cars.car_number_region!=66 AND cars.car_number_region!=96 AND
  535.         i.car_id IN (
  536.         SELECT main.car_id
  537.         FROM main
  538.         WHERE main.napr=1 AND i.post_id!=main.post_id
  539.     )
  540. GROUP BY humans.human_surname, humans.human_name, cars.car_number, cars.car_number_region
  541. GO
  542.  
  543. SELECT humans.human_surname AS 'Фамилия водителя',
  544.        humans.human_name AS 'Имя водителя',
  545.        cars.car_number AS 'Номер автомобиля',
  546.        cars.car_number_region AS 'Номер региона'
  547. FROM main i
  548.     INNER JOIN humans ON humans.human_id=i.human_id
  549.     INNER JOIN GIBDD_posts ON GIBDD_posts.post_id=i.post_id
  550.     INNER JOIN cars ON cars.id_car=i.car_id
  551. WHERE i.car_id IN (
  552.     ((SELECT main.car_id
  553.     FROM main
  554.     EXCEPT (
  555.     SELECT main.car_id
  556.     FROM main
  557.     WHERE main.napr=1 AND i.post_id!=main.post_id AND i.napr=0) )
  558.     EXCEPT(
  559.     SELECT main.car_id
  560.     FROM main
  561.     WHERE main.napr=1 AND i.post_id=main.post_id AND i.napr=0))
  562.     EXCEPT(
  563.     SELECT main.car_id
  564.     FROM main
  565.     WHERE main.napr=0 AND i.napr=1
  566.     )
  567. )
  568. GROUP BY humans.human_surname, humans.human_name, cars.car_number, cars.car_number_region
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement