Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.79 KB | None | 0 0
  1. USE ShopDB
  2. GO
  3.  
  4. DROP TABLE BTree;
  5. GO
  6.  
  7. CREATE TABLE BTree
  8. (
  9. numbers int ,
  10. word varchar(25)
  11. )
  12. GO
  13.  
  14. INSERT BTree
  15. VALUES
  16. (1,'one'),
  17. (2,'two'),
  18. (3,'three'),
  19. (4,'four'),
  20. (6,'six'),
  21. (7,'seven'),
  22. (8,'eight'),
  23. (9,'nine');
  24.  
  25. SELECT * FROM BTree;
  26.  
  27. INSERT BTree
  28. VALUES (5,'five');
  29.  
  30. SELECT * FROM BTree WHERE numbers IN (5,6);
  31. --------------------------------------------------
  32.  
  33. DROP TABLE BTree;
  34. GO
  35.  
  36. CREATE TABLE BTree
  37. (
  38. numbers int primary key, -- Первичный ключ, добавляет кластеризованый индекс
  39. word varchar(25)
  40. )
  41. --SET STATISTICS IO ON
  42. INSERT BTree
  43. VALUES
  44. (1,'one'),
  45. (2,'two'),
  46. (3,'three'),
  47. (4,'four'),
  48. (6,'six'),
  49. (7,'seven'),
  50. (8,'eight'),
  51. (9,'nine');
  52.  
  53. SELECT * FROM BTree WHERE word = 'one';
  54.  
  55. SELECT * FROM sys.indexes
  56. WHERE object_id = (SELECT object_id FROM sys.tables
  57. WHERE name = 'BTree')
  58.  
  59. INSERT BTree
  60. VALUES (5,'five');
  61.  
  62. SELECT * FROM BTree;
  63.  
  64. --------------------------------------------------
  65.  
  66. DROP TABLE BTree;
  67. GO
  68.  
  69. CREATE TABLE BTree
  70. (
  71. numbers int ,
  72. word varchar(25)primary key -- кластеризированный индекс
  73. )
  74.  
  75. INSERT BTree
  76. VALUES
  77. (1,'one'),
  78. (2,'two'),
  79. (3,'three'),
  80. (4,'four'),
  81. (6,'six'),
  82. (7,'seven'),
  83. (8,'eight'),
  84. (9,'nine');
  85.  
  86. SELECT * FROM BTree;
  87.  
  88. INSERT BTree
  89. VALUES (5,'five');
  90.  
  91. SELECT * FROM BTree;
  92.  
  93. --------------------------------------------------
  94.  
  95. DROP TABLE BTree;
  96. GO
  97.  
  98. CREATE TABLE BTree
  99. (
  100. numbers int unique, -- некластеризированный индекс на не упорядоченой таблице (данные хранятся не на листевом уровне дерева)
  101. word varchar(25)
  102. )
  103.  
  104. INSERT BTree
  105. VALUES
  106. (1,'one'),
  107. (2,'two'),
  108. (3,'three'),
  109. (4,'four'),
  110. (6,'six'),
  111. (7,'seven'),
  112. (8,'eight'),
  113. (9,'nine');
  114.  
  115. SELECT * FROM BTree;
  116.  
  117. INSERT BTree
  118. VALUES (5,'five');
  119.  
  120. SELECT * FROM BTree where word = 'one';
  121.  
  122. --------------------------------------------------
  123.  
  124. DROP TABLE BTree;
  125. GO
  126.  
  127. CREATE TABLE BTree
  128. (
  129. numbers int primary key, -- кластеризированый индекс
  130. word varchar(25)unique -- некластеризированный индекс на клатеризованной таблице
  131. )
  132.  
  133. INSERT BTree
  134. VALUES
  135. (1,'one'),
  136. (2,'two'),
  137. (3,'three'),
  138. (4,'four'),
  139. (6,'six'),
  140. (7,'seven'),
  141. (8,'eight'),
  142. (9,'nine');
  143.  
  144. SELECT * FROM BTree;
  145.  
  146. INSERT BTree
  147. VALUES (5,'five');
  148.  
  149. SELECT * FROM BTree where word in ('five', 'one'); -- поиск по некластеризованному индексу
  150. SELECT * FROM BTree where numbers in (3,5); -- поиск по кластеризованному индексу
  151. --------------------------------------------------
  152. DROP TABLE OrderDetails;
  153. GO
  154. DROP TABLE Orders;
  155. GO
  156. DROP TABLE Customers
  157. GO
  158.  
  159. CREATE TABLE Customers
  160. (
  161. CustumerNo int NOT NULL,
  162. CustumerName varchar(25) NOT NULL,
  163. Address1 varchar(25) NOT NULL,
  164. Address2 varchar(25) NOT NULL,
  165. City varchar(15) NOT NULL,
  166. State char(2) NOT NULL,
  167. Zip varchar(10) NOT NULL,
  168. Contact varchar(25) NOT NULL,
  169. Phone char(12),
  170. FedIDNo varchar(10) NOT NULL,
  171. DateInSystem smalldatetime NOT NULL
  172. )
  173. GO
  174.  
  175. INSERT INTO Customers
  176. ( CustumerNo, CustumerName, Address1, Address2, City, State, Zip, Contact, Phone, FedIDNo, DateInSystem)
  177. VALUES
  178. (1,'Alex', 'NewSTR', 'NewSTR2', 'City', 'NS', 'NewZip', 'dfgjs@mail.ru', '(093)1231212', 'qweq', GETDATE()),
  179. (2,'Alex2', 'NewSTR2', 'NewSTR22', 'City2', 'SN', 'NewZip2', 'dfg2@mail.ru', '(093)2221212', 'qwq2', GETDATE());
  180. GO
  181.  
  182. SELECT * FROM Customers;
  183.  
  184. -----------------------------------------------------------------------------------------------------------------
  185.  
  186. DROP TABLE Customers;
  187. GO
  188.  
  189. CREATE TABLE Customers
  190. (
  191. CustumerNo int NOT NULL PRIMARY KEY, -- кластеризованный индекс
  192. CustumerName varchar(25) NOT NULL,
  193. Address1 varchar(25) NOT NULL,
  194. Address2 varchar(25) NOT NULL,
  195. City varchar(15) NOT NULL,
  196. State char(2) NOT NULL,
  197. Zip varchar(10) NOT NULL,
  198. Contact varchar(25) NOT NULL,
  199. Phone char(12),
  200. FedIDNo varchar(10) NOT NULL,
  201. DateInSystem smalldatetime NOT NULL
  202. )
  203. GO
  204.  
  205. INSERT INTO Customers
  206. ( CustumerNo, CustumerName, Address1, Address2, City, State, Zip, Contact, Phone, FedIDNo, DateInSystem)
  207. VALUES
  208. (1,'Alex', 'NewSTR', 'NewSTR2', 'City', 'NS', 'NewZip', 'dfgjs@mail.ru', '(093)1231212', 'qweq', GETDATE()),
  209. (2,'Alex2', 'NewSTR2', 'NewSTR22', 'City2', 'SN', 'NewZip2', 'dfg2@mail.ru', '(093)2221212', 'qwq2', GETDATE());
  210.  
  211. SELECT * FROM Customers; -- для поиска используем кластеризованный индекс
  212.  
  213. -----------------------------------------------------------------------------------------------------------------
  214.  
  215. DROP TABLE Customers;
  216. GO
  217.  
  218. CREATE TABLE Customers
  219. (
  220. CustumerNo int NOT NULL,
  221. CustumerName varchar(25) NOT NULL,
  222. Address1 varchar(25) NOT NULL,
  223. Address2 varchar(25) NOT NULL,
  224. City varchar(15) NOT NULL,
  225. State char(2) NOT NULL,
  226. Zip varchar(10) NOT NULL,
  227. Contact varchar(25) NOT NULL,
  228. Phone char(12) UNIQUE, -- некластеризованный индекс
  229. FedIDNo varchar(10) NOT NULL,
  230. DateInSystem smalldatetime NOT NULL
  231. )
  232. GO
  233.  
  234. INSERT INTO Customers
  235. ( CustumerNo, CustumerName, Address1, Address2, City, State, Zip, Contact, Phone, FedIDNo, DateInSystem)
  236. VALUES
  237. (1,'Alex', 'NewSTR', 'NewSTR2', 'City', 'NS', 'NewZip', 'dfgjs@mail.ru', '(093)1231212', 'qweq', GETDATE()),
  238. (2,'Alex2', 'NewSTR2', 'NewSTR22', 'City2', 'SN', 'NewZip2', 'dfg2@mail.ru', '(093)2221212', 'qwq2', GETDATE());
  239. GO
  240.  
  241. SELECT * FROM Customers;
  242.  
  243. SELECT Phone FROM Customers
  244. WHERE Phone = '(093)2221212'; -- Для поиска используем некластеризованный
  245.  
  246. -----------------------------------------------------------------------------------------------------------------
  247.  
  248. DROP TABLE Customers;
  249. GO
  250.  
  251. CREATE TABLE Customers
  252. (
  253. CustumerNo int IDENTITY NOT NULL
  254. PRIMARY KEY, -- кластеризованный индекс
  255. CustumerName varchar(25) NOT NULL,
  256. Address1 varchar(25) NOT NULL,
  257. Address2 varchar(25) NOT NULL,
  258. City varchar(15) NOT NULL,
  259. State char(2) NOT NULL,
  260. Zip varchar(10) NOT NULL,
  261. Contact varchar(25) NOT NULL,
  262. Phone char(12) UNIQUE, -- некластеризованный индекс
  263. FedIDNo varchar(10) NOT NULL,
  264. DateInSystem smalldatetime NOT NULL
  265. )
  266. GO
  267.  
  268. INSERT INTO Customers
  269. ( CustumerName, Address1, Address2, City, State, Zip, Contact, Phone, FedIDNo, DateInSystem)
  270. VALUES
  271. ('Alex', 'NewSTR', 'NewSTR2', 'City', 'NS', 'NewZip', 'dfgjs@mail.ru', '(093)1231212', 'qweq', GETDATE()),
  272. ('Alex2', 'NewSTR2', 'NewSTR22', 'City2', 'SN', 'NewZip2', 'dfg2@mail.ru', '(093)2221212', 'qwq2', GETDATE());
  273.  
  274. SELECT * FROM Customers; -- для поиска используем только кластеризованный индекс
  275.  
  276. SELECT * FROM Customers -- Для поиска используем кластеризованный
  277. WHERE Phone = '(093)2221212'; -- и не кластеризированный индексы !!!
  278.  
  279. ------------------------- Кластеризованный индекс -------------------------------------------------------
  280.  
  281. DROP TABLE Customers;
  282. GO
  283.  
  284. CREATE TABLE Customers
  285. (
  286. CustumerNo int NOT NULL,
  287. CustumerName varchar(25) NOT NULL,
  288. Address1 varchar(25) NOT NULL,
  289. Address2 varchar(25) NOT NULL,
  290. City varchar(15) NOT NULL,
  291. State char(2) NOT NULL,
  292. Zip varchar(10) NOT NULL,
  293. Contact varchar(25) NOT NULL,
  294. Phone char(12),
  295. FedIDNo varchar(10) NOT NULL,
  296. DateInSystem smalldatetime NOT NULL
  297. )
  298. GO
  299.  
  300. CREATE CLUSTERED INDEX PK_IND1 -- создание собственного кластеризованного индекса
  301. ON Customers(CustumerNo);
  302. GO
  303.  
  304. INSERT INTO Customers
  305. ( CustumerNo, CustumerName, Address1, Address2, City, State, Zip, Contact, Phone, FedIDNo, DateInSystem)
  306. VALUES
  307. (1,'Alex', 'NewSTR', 'NewSTR2', 'City', 'NS', 'NewZip', 'dfgjs@mail.ru', '(093)1231212', 'qweq', GETDATE()),
  308. (1,'Alex2', 'NewSTR2', 'NewSTR22', 'City2', 'SN', 'NewZip2', 'dfg2@mail.ru', '(093)2221212', 'qwq2', GETDATE()); -- CustumerNo = 1 как и в первой строке
  309. GO
  310.  
  311. SELECT * FROM Customers;-- для поиска используем кластеризованный индекс
  312.  
  313. -----------------------Кластеризованный индекс -----------------------------------------------------------
  314.  
  315. DROP TABLE Customers;
  316. GO
  317.  
  318. CREATE TABLE Customers
  319. (
  320. CustumerNo int NOT NULL,
  321. CustumerName varchar(25) NOT NULL,
  322. Address1 varchar(25) NOT NULL,
  323. Address2 varchar(25) NOT NULL,
  324. City varchar(15) NOT NULL,
  325. State char(2) NOT NULL,
  326. Zip varchar(10) NOT NULL,
  327. Contact varchar(25) NOT NULL,
  328. Phone char(12) Primary key,
  329. FedIDNo varchar(10) NOT NULL,
  330. DateInSystem smalldatetime NOT NULL
  331. )
  332. GO
  333.  
  334. CREATE UNIQUE CLUSTERED INDEX PK_IND1 -- создание собственного кластеризованного индекса
  335. ON Customers(CustumerNo);
  336. GO
  337.  
  338. INSERT INTO Customers
  339. ( CustumerNo, CustumerName, Address1, Address2, City, State, Zip, Contact, Phone, FedIDNo, DateInSystem)
  340. VALUES
  341. (1,'Alex', 'NewSTR', 'NewSTR2', 'City', 'NS', 'NewZip', 'dfgjs@mail.ru', '(093)1231212', 'qweq', GETDATE()),
  342. (1,'Alex2', 'NewSTR2', 'NewSTR22', 'City2', 'SN', 'NewZip2', 'dfg2@mail.ru', '(093)2221212', 'qwq2', GETDATE()); -- CustumerNo = 1 будет ошибка
  343. GO
  344.  
  345. INSERT INTO Customers
  346. ( CustumerNo, CustumerName, Address1, Address2, City, State, Zip, Contact, Phone, FedIDNo, DateInSystem)
  347. VALUES
  348. (1,'Alex', 'NewSTR', 'NewSTR2', 'City', 'NS', 'NewZip', 'dfgjs@mail.ru', '(093)1231212', 'qweq', GETDATE()),
  349. (2,'Alex2', 'NewSTR2', 'NewSTR22', 'City2', 'SN', 'NewZip2', 'dfg2@mail.ru', '(093)2221212', 'qwq2', GETDATE()); --CustumerNo должен быть уникальным для каждой строки если CREATE UNIQUE CLUSTERED INDEX
  350. GO
  351.  
  352. SELECT * FROM Customers; --для поиска используем кластеризованный индекс
  353.  
  354. ------------------ Создание некластеризованного индекса на неупорядоченой таблице -------------------------------------------------
  355.  
  356. DROP TABLE Customers;
  357. GO
  358.  
  359. CREATE TABLE Customers
  360. (
  361. CustumerNo int NOT NULL,
  362. CustumerName varchar(25) NOT NULL,
  363. Address1 varchar(25) NOT NULL,
  364. Address2 varchar(25) NOT NULL,
  365. City varchar(15) NOT NULL,
  366. State char(2) NOT NULL,
  367. Zip varchar(10) NOT NULL,
  368. Contact varchar(25) NOT NULL,
  369. Phone char(12),
  370. FedIDNo varchar(10) NOT NULL,
  371. DateInSystem smalldatetime NOT NULL
  372. )
  373. GO
  374.  
  375. CREATE UNIQUE NONCLUSTERED INDEX NC_IND1 -- создание собственного некластеризованного индекса на неупорядоченной таблице
  376. ON Customers(Phone);
  377. GO
  378.  
  379. INSERT INTO Customers
  380. ( CustumerNo, CustumerName, Address1, Address2, City, State, Zip, Contact, Phone, FedIDNo, DateInSystem)
  381. VALUES
  382. (1,'Alex', 'NewSTR', 'NewSTR2', 'City', 'NS', 'NewZip', 'dfgjs@mail.ru', '(093)1111111', 'qweq', GETDATE()),
  383. (2,'Alex2', 'NewSTR2', 'NewSTR22', 'City2', 'SN', 'NewZip2', 'dfg2@mail.ru', '(093)2222222', 'qwq2', GETDATE()); --CustumerNo должен быть уникальным для каждой строки если CREATE UNIQUE CLUSTERED INDEX
  384. GO
  385.  
  386. SELECT * FROM Customers;
  387.  
  388. SELECT * FROM Customers
  389. WHERE Phone = '(093)2222222';
  390.  
  391.  
  392. ----------------Создание некластеризованного индекса на кластеризованной таблице--------------------------------------
  393.  
  394. DROP TABLE Customers;
  395. GO
  396.  
  397. CREATE TABLE Customers
  398. (
  399. CustumerNo int NOT NULL,
  400. CustumerName varchar(25) NOT NULL,
  401. Address1 varchar(25) NOT NULL,
  402. Address2 varchar(25) NOT NULL,
  403. City varchar(15) NOT NULL,
  404. State char(2) NOT NULL,
  405. Zip varchar(10) NOT NULL,
  406. Contact varchar(25) NOT NULL,
  407. Phone char(12),
  408. FedIDNo varchar(10) NOT NULL,
  409. DateInSystem smalldatetime NOT NULL
  410. )
  411. GO
  412.  
  413. CREATE UNIQUE CLUSTERED INDEX PK_IND1 -- создание собственного кластеризованного индекса
  414. ON Customers(CustumerNo);
  415. GO
  416.  
  417. CREATE UNIQUE NONCLUSTERED INDEX NC_IND1 -- создание собственного некластеризованного индекса на кластеризованной таблице
  418. ON Customers(Phone);
  419. GO
  420.  
  421. INSERT INTO Customers
  422. ( CustumerNo, CustumerName, Address1, Address2, City, State, Zip, Contact, Phone, FedIDNo, DateInSystem)
  423. VALUES
  424. (1,'Alex', 'NewSTR', 'NewSTR2', 'City', 'NS', 'NewZip', 'dfgjs@mail.ru', '(093)1231212', 'qweq', GETDATE()),
  425. (2,'Alex2', 'NewSTR2', 'NewSTR22', 'City2', 'SN', 'NewZip2', 'dfg2@mail.ru', '(093)2221212', 'qwq2', GETDATE()); --CustumerNo должен быть уникальным для каждой строки если CREATE UNIQUE CLUSTERED INDEX
  426. GO
  427.  
  428. SELECT * FROM Customers; -- Для поиска используем кластеризованный индекс
  429.  
  430. SELECT * FROM Customers -- Для поиска используем кластеризованный
  431. WHERE Phone = '(093)2221212'; -- и не кластеризированный индексы !!!
  432.  
  433.  
  434.  
  435. -----------------------------------------------------------
  436. /* Изменения индекса ALTER INDEX */
  437. -----------------------------------------------------------
  438.  
  439. DROP TABLE Customers;
  440. GO
  441.  
  442. CREATE TABLE Customers
  443. (
  444. CustumerNo int NOT NULL,
  445. CustumerName varchar(25) NOT NULL,
  446. Address1 varchar(25) NOT NULL,
  447. Address2 varchar(25) NOT NULL,
  448. City varchar(15) NOT NULL,
  449. State char(2) NOT NULL,
  450. Zip varchar(10) NOT NULL,
  451. Contact varchar(25) NOT NULL,
  452. Phone char(12),
  453. FedIDNo varchar(10) NOT NULL,
  454. DateInSystem smalldatetime NOT NULL
  455. )
  456. GO
  457.  
  458. CREATE UNIQUE INDEX PK_IND1 --если включена опция IGNORE_DUP_KEY и нету ограничения UNIQUE будет предупреждение (возможна вставка одинаковых индексов Alex и alex)
  459. ON Customers(CustumerName)
  460. WITH
  461. (
  462. IGNORE_DUP_KEY = ON -- включаем игнорирование различия между строчными и заглавными
  463. );
  464. GO
  465.  
  466. INSERT INTO Customers
  467. ( CustumerNo, CustumerName, Address1, Address2, City, State, Zip, Contact, Phone, FedIDNo, DateInSystem)
  468. VALUES
  469. (1,'Alex', 'NewSTR', 'NewSTR2', 'City', 'NS', 'NewZip', 'dfgjs@mail.ru', '(093)1231212', 'qweq', GETDATE()),
  470. (2,'alex', 'NewSTR2', 'NewSTR22', 'City2', 'SN', 'NewZip2', 'dfg2@mail.ru', '(093)2221212', 'qwq2', GETDATE()); -- Не будет ошибки
  471. GO
  472.  
  473. SELECT * FROM Customers
  474.  
  475.  
  476. ALTER INDEX PK_IND1 -- изменение индекса PK_IND1
  477. ON Customers -- заданого на таблице Customers
  478. REBUILD WITH
  479. (
  480. IGNORE_DUP_KEY = OFF
  481. );
  482.  
  483. INSERT INTO Customers
  484. ( CustumerNo, CustumerName, Address1, Address2, City, State, Zip, Contact, Phone, FedIDNo, DateInSystem)
  485. VALUES
  486. (1,'Alex', 'NewSTR', 'NewSTR2', 'City', 'NS', 'NewZip', 'dfgjs@mail.ru', '(093)1231212', 'qweq', GETDATE()),
  487. (2,'alex', 'NewSTR2', 'NewSTR22', 'City2', 'SN', 'NewZip2', 'dfg2@mail.ru', '(093)2221212', 'qwq2', GETDATE()); -- Не будет ошибки
  488. GO
  489.  
  490. SELECT * FROM Customers;
  491.  
  492. ----------------------------УДАЛЕНИЕ ИНДЕКСОВ---------------------------------------------------------------------
  493. DROP TABLE Customers;
  494. GO
  495.  
  496. CREATE TABLE Customers
  497. (
  498. CustumerNo int NOT NULL,
  499. CustumerName varchar(25) NOT NULL,
  500. Address1 varchar(25) NOT NULL,
  501. Address2 varchar(25) NOT NULL,
  502. City varchar(15) NOT NULL,
  503. State char(2) NOT NULL,
  504. Zip varchar(10) NOT NULL,
  505. Contact varchar(25) NOT NULL,
  506. Phone char(12),
  507. FedIDNo varchar(10) NOT NULL,
  508. DateInSystem smalldatetime NOT NULL
  509. )
  510. GO
  511.  
  512. CREATE UNIQUE INDEX PK_IND1 -- если включена опция IGNORE_DUP_KEY и нет ограничения UNIQUE будет предупреждения (возможна вставка одинаковых индексов Alex и alex)
  513. ON Customers(CustumerName)
  514. WITH
  515. (
  516. IGNORE_DUP_KEY = ON -- включаем игнорирование различия между строчными и заглавными символами
  517. );
  518. GO
  519.  
  520. INSERT INTO Customers
  521. ( CustumerNo, CustumerName, Address1, Address2, City, State, Zip, Contact, Phone, FedIDNo, DateInSystem)
  522. VALUES
  523. (1,'Alex', 'NewSTR', 'NewSTR2', 'City', 'NS', 'NewZip', 'dfgjs@mail.ru', '(093)1231212', 'qweq', GETDATE()),
  524. (2,'alex', 'NewSTR2', 'NewSTR22', 'City2', 'SN', 'NewZip2', 'dfg2@mail.ru', '(093)2221212', 'qwq2', GETDATE()); -- если включена опция IGNORE_DUP_KEY и есть ограничения UNIQUE данная строка не запишется
  525. GO
  526.  
  527. SELECT * FROM Customers WHERE CustumerName = 'alex'; -- для поиска используем не кластеризованный индекс
  528.  
  529. DROP INDEX Customers.PK_IND1;
  530.  
  531. SELECT * FROM Customers WHERE CustumerName = 'alex'; -- для поиска не используем индекс
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement