ndb_index_unique.result
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:11k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. drop table if exists t1, t2, t3, t4, t5, t6, t7;
  2. CREATE TABLE t1 (
  3. a int unsigned NOT NULL PRIMARY KEY,
  4. b int unsigned not null,
  5. c int unsigned,
  6. UNIQUE(b)
  7. ) engine=ndbcluster;
  8. insert t1 values(1, 2, 3), (2, 3, 5), (3, 4, 6), (4, 5, 8), (5,6, 2), (6,7, 2);
  9. select * from t1 order by b;
  10. a b c
  11. 1 2 3
  12. 2 3 5
  13. 3 4 6
  14. 4 5 8
  15. 5 6 2
  16. 6 7 2
  17. select * from t1 where b = 4 order by b;
  18. a b c
  19. 3 4 6
  20. insert into t1 values(7,8,3);
  21. select * from t1 where b = 4 order by a;
  22. a b c
  23. 3 4 6
  24. insert into t1 values(8, 2, 3);
  25. ERROR 23000: Duplicate entry '8' for key 1
  26. select * from t1 order by a;
  27. a b c
  28. 1 2 3
  29. 2 3 5
  30. 3 4 6
  31. 4 5 8
  32. 5 6 2
  33. 6 7 2
  34. 7 8 3
  35. delete from t1 where a = 1;
  36. insert into t1 values(8, 2, 3);
  37. select * from t1 order by a;
  38. a b c
  39. 2 3 5
  40. 3 4 6
  41. 4 5 8
  42. 5 6 2
  43. 6 7 2
  44. 7 8 3
  45. 8 2 3
  46. drop table t1;
  47. CREATE TABLE t1 (
  48. a int unsigned NOT NULL PRIMARY KEY,
  49. b int unsigned,
  50. c int unsigned,
  51. UNIQUE bc(b,c)
  52. ) engine = ndb;
  53. insert into t1 values(1,1,1),(2,NULL,2),(3,NULL,NULL),(4,4,NULL);
  54. select * from t1 use index (bc) where b IS NULL order by a;
  55. a b c
  56. 2 NULL 2
  57. 3 NULL NULL
  58. select * from t1 use index (bc)order by a;
  59. a b c
  60. 1 1 1
  61. 2 NULL 2
  62. 3 NULL NULL
  63. 4 4 NULL
  64. select * from t1 use index (bc) order by a;
  65. a b c
  66. 1 1 1
  67. 2 NULL 2
  68. 3 NULL NULL
  69. 4 4 NULL
  70. select * from t1 use index (PRIMARY) where b IS NULL order by a;
  71. a b c
  72. 2 NULL 2
  73. 3 NULL NULL
  74. select * from t1 use index (bc) where b IS NULL order by a;
  75. a b c
  76. 2 NULL 2
  77. 3 NULL NULL
  78. select * from t1 use index (bc) where b IS NULL and c IS NULL order by a;
  79. a b c
  80. 3 NULL NULL
  81. select * from t1 use index (bc) where b IS NULL and c = 2 order by a;
  82. a b c
  83. 2 NULL 2
  84. select * from t1 use index (bc) where b < 4 order by a;
  85. a b c
  86. 1 1 1
  87. select * from t1 use index (bc) where b IS NOT NULL order by a;
  88. a b c
  89. 1 1 1
  90. 4 4 NULL
  91. insert into t1 values(5,1,1);
  92. ERROR 23000: Duplicate entry '5' for key 1
  93. drop table t1;
  94. CREATE TABLE t2 (
  95. a int unsigned NOT NULL PRIMARY KEY,
  96. b int unsigned not null,
  97. c int unsigned not null,
  98. UNIQUE USING HASH (b, c)
  99. ) engine=ndbcluster;
  100. insert t2 values(1, 2, 3), (2, 3, 5), (3, 4, 6), (4, 5, 8), (5,6, 2), (6,7, 2);
  101. select * from t2 where a = 3;
  102. a b c
  103. 3 4 6
  104. select * from t2 where b = 4;
  105. a b c
  106. 3 4 6
  107. select * from t2 where c = 6;
  108. a b c
  109. 3 4 6
  110. insert into t2 values(7,8,3);
  111. select * from t2 where b = 4 order by a;
  112. a b c
  113. 3 4 6
  114. insert into t2 values(8, 2, 3);
  115. ERROR 23000: Duplicate entry '8' for key 1
  116. select * from t2 order by a;
  117. a b c
  118. 1 2 3
  119. 2 3 5
  120. 3 4 6
  121. 4 5 8
  122. 5 6 2
  123. 6 7 2
  124. 7 8 3
  125. delete from t2 where a = 1;
  126. insert into t2 values(8, 2, 3);
  127. select * from t2 order by a;
  128. a b c
  129. 2 3 5
  130. 3 4 6
  131. 4 5 8
  132. 5 6 2
  133. 6 7 2
  134. 7 8 3
  135. 8 2 3
  136. drop table t2;
  137. CREATE TABLE t2 (
  138. a int unsigned NOT NULL PRIMARY KEY,
  139. b int unsigned not null,
  140. c int unsigned,
  141. UNIQUE USING HASH (b, c)
  142. ) engine=ndbcluster;
  143. ERROR 42000: Column 'c' is used with UNIQUE or INDEX but is not defined as NOT NULL
  144. CREATE TABLE t3 (
  145. a int unsigned NOT NULL,
  146. b int unsigned not null,
  147. c int unsigned,
  148. PRIMARY KEY USING HASH (a, b)
  149. ) engine=ndbcluster;
  150. insert t3 values(1, 2, 3), (2, 3, 5), (3, 4, 6), (4, 5, 8), (5,6, 2), (6,7, 2);
  151. select * from t3 where a = 3;
  152. a b c
  153. 3 4 6
  154. select * from t3 where b = 4;
  155. a b c
  156. 3 4 6
  157. select * from t3 where c = 6;
  158. a b c
  159. 3 4 6
  160. insert into t3 values(7,8,3);
  161. select * from t3 where b = 4 order by a;
  162. a b c
  163. 3 4 6
  164. drop table t3;
  165. CREATE TABLE t1 (
  166. pk int NOT NULL PRIMARY KEY,
  167. a int unsigned,
  168. UNIQUE KEY (a)
  169. ) engine=ndbcluster;
  170. insert into t1 values (-1,NULL), (0,0), (1,NULL),(2,2),(3,NULL),(4,4);
  171. select * from t1 order by pk;
  172. pk a
  173. -1 NULL
  174. 0 0
  175. 1 NULL
  176. 2 2
  177. 3 NULL
  178. 4 4
  179. insert into t1 values (5,0);
  180. ERROR 23000: Duplicate entry '5' for key 1
  181. select * from t1 order by pk;
  182. pk a
  183. -1 NULL
  184. 0 0
  185. 1 NULL
  186. 2 2
  187. 3 NULL
  188. 4 4
  189. delete from t1 where a = 0;
  190. insert into t1 values (5,0);
  191. select * from t1 order by pk;
  192. pk a
  193. -1 NULL
  194. 1 NULL
  195. 2 2
  196. 3 NULL
  197. 4 4
  198. 5 0
  199. CREATE TABLE t2 (
  200. pk int NOT NULL PRIMARY KEY,
  201. a int unsigned,
  202. b tinyint NOT NULL,
  203. c VARCHAR(10),
  204. UNIQUE KEY si(a, c)
  205. ) engine=ndbcluster;
  206. insert into t2 values (-1,1,17,NULL),(0,NULL,18,NULL),(1,3,19,'abc');
  207. select * from t2 order by pk;
  208. pk a b c
  209. -1 1 17 NULL
  210. 0 NULL 18 NULL
  211. 1 3 19 abc
  212. insert into t2 values(2,3,19,'abc');
  213. ERROR 23000: Duplicate entry '2' for key 1
  214. select * from t2 order by pk;
  215. pk a b c
  216. -1 1 17 NULL
  217. 0 NULL 18 NULL
  218. 1 3 19 abc
  219. delete from t2 where c IS NOT NULL;
  220. insert into t2 values(2,3,19,'abc');
  221. select * from t2 order by pk;
  222. pk a b c
  223. -1 1 17 NULL
  224. 0 NULL 18 NULL
  225. 2 3 19 abc
  226. drop table t1, t2;
  227. CREATE TABLE t1 (
  228. cid smallint(5) unsigned NOT NULL default '0',
  229. cv varchar(250) NOT NULL default '',
  230. PRIMARY KEY  (cid),
  231. UNIQUE KEY cv (cv)
  232. ) engine=ndbcluster;
  233. INSERT INTO t1 VALUES (8,'dummy');
  234. CREATE TABLE t2 (
  235. cid bigint(20) unsigned NOT NULL auto_increment,
  236. cap varchar(255) NOT NULL default '',
  237. PRIMARY KEY  (cid),
  238. UNIQUE KEY (cid, cap)
  239. ) engine=ndbcluster;
  240. INSERT INTO t2 VALUES (NULL,'another dummy');
  241. CREATE TABLE t3 (
  242. gid bigint(20) unsigned NOT NULL auto_increment,
  243. gn varchar(255) NOT NULL default '',
  244. must tinyint(4) default NULL,
  245. PRIMARY KEY  (gid)
  246. ) engine=ndbcluster;
  247. INSERT INTO t3 VALUES (1,'V1',NULL);
  248. CREATE TABLE t4 (
  249. uid bigint(20) unsigned NOT NULL default '0',
  250. gid bigint(20) unsigned NOT NULL,
  251. rid bigint(20) unsigned NOT NULL default '-1',
  252. cid bigint(20) unsigned NOT NULL default '-1',
  253. UNIQUE KEY m (uid,gid,rid,cid)
  254. ) engine=ndbcluster;
  255. INSERT INTO t4 VALUES (1,1,2,4);
  256. INSERT INTO t4 VALUES (1,1,2,3);
  257. INSERT INTO t4 VALUES (1,1,5,7);
  258. INSERT INTO t4 VALUES (1,1,10,8);
  259. CREATE TABLE t5 (
  260. rid bigint(20) unsigned NOT NULL auto_increment,
  261. rl varchar(255) NOT NULL default '',
  262. PRIMARY KEY  (rid)
  263. ) engine=ndbcluster;
  264. CREATE TABLE t6 (
  265. uid bigint(20) unsigned NOT NULL auto_increment,
  266. un varchar(250) NOT NULL default '',
  267. uc smallint(5) unsigned NOT NULL default '0',
  268. PRIMARY KEY  (uid),
  269. UNIQUE KEY nc (un,uc)
  270. ) engine=ndbcluster;
  271. INSERT INTO t6 VALUES (1,'test',8);
  272. INSERT INTO t6 VALUES (2,'test2',9);
  273. INSERT INTO t6 VALUES (3,'tre',3);
  274. CREATE TABLE t7 (
  275. mid bigint(20) unsigned NOT NULL PRIMARY KEY,
  276. uid bigint(20) unsigned NOT NULL default '0',
  277. gid bigint(20) unsigned NOT NULL,
  278. rid bigint(20) unsigned NOT NULL default '-1',
  279. cid bigint(20) unsigned NOT NULL default '-1',
  280. UNIQUE KEY m (uid,gid,rid,cid)
  281. ) engine=ndbcluster;
  282. INSERT INTO t7 VALUES(1, 1, 1, 1, 1);
  283. INSERT INTO t7 VALUES(2, 2, 1, 1, 1);
  284. INSERT INTO t7 VALUES(3, 3, 1, 1, 1);
  285. INSERT INTO t7 VALUES(4, 4, 1, 1, 1);
  286. INSERT INTO t7 VALUES(5, 5, 1, 1, 1);
  287. INSERT INTO t7 VALUES(6, 1, 1, 1, 6);
  288. INSERT INTO t7 VALUES(7, 2, 1, 1, 7);
  289. INSERT INTO t7 VALUES(8, 3, 1, 1, 8);
  290. INSERT INTO t7 VALUES(9, 4, 1, 1, 9);
  291. INSERT INTO t7 VALUES(10, 5, 1, 1, 10);
  292. select * from t1 where cv = 'dummy';
  293. cid cv
  294. 8 dummy
  295. select * from t1 where cv = 'test';
  296. cid cv
  297. select * from t2 where cap = 'another dummy';
  298. cid cap
  299. 1 another dummy
  300. select * from t4 where uid = 1 and gid=1 and rid=2 and cid=4;
  301. uid gid rid cid
  302. 1 1 2 4
  303. select * from t4 where uid = 1 and gid=1 and rid=1 and cid=4;
  304. uid gid rid cid
  305. select * from t4 where uid = 1 order by cid;
  306. uid gid rid cid
  307. 1 1 2 3
  308. 1 1 2 4
  309. 1 1 5 7
  310. 1 1 10 8
  311. select * from t4 where rid = 2 order by cid;
  312. uid gid rid cid
  313. 1 1 2 3
  314. 1 1 2 4
  315. select * from t6 where un='test' and uc=8;
  316. uid un uc
  317. 1 test 8
  318. select * from t6 where un='test' and uc=7;
  319. uid un uc
  320. select * from t6 where un='test';
  321. uid un uc
  322. 1 test 8
  323. select * from t7 where mid = 8;
  324. mid uid gid rid cid
  325. 8 3 1 1 8
  326. select * from t7 where uid = 8;
  327. mid uid gid rid cid
  328. select * from t7 where uid = 1 order by mid;
  329. mid uid gid rid cid
  330. 1 1 1 1 1
  331. 6 1 1 1 6
  332. select * from t7 where uid = 4 order by mid;
  333. mid uid gid rid cid
  334. 4 4 1 1 1
  335. 9 4 1 1 9
  336. select * from t7 where gid = 4;
  337. mid uid gid rid cid
  338. select * from t7 where gid = 1 order by mid;
  339. mid uid gid rid cid
  340. 1 1 1 1 1
  341. 2 2 1 1 1
  342. 3 3 1 1 1
  343. 4 4 1 1 1
  344. 5 5 1 1 1
  345. 6 1 1 1 6
  346. 7 2 1 1 7
  347. 8 3 1 1 8
  348. 9 4 1 1 9
  349. 10 5 1 1 10
  350. select * from t7 where cid = 4;
  351. mid uid gid rid cid
  352. select * from t7 where cid = 8;
  353. mid uid gid rid cid
  354. 8 3 1 1 8
  355. select * from t4 where uid = 1 and gid=1 and rid=2 and cid=4;
  356. uid gid rid cid
  357. 1 1 2 4
  358. select * from t4 where uid = 1 and gid=1 and rid=1 and cid=4;
  359. uid gid rid cid
  360. select * from t4 where uid = 1 order by gid,cid;
  361. uid gid rid cid
  362. 1 1 2 3
  363. 1 1 2 4
  364. 1 1 5 7
  365. 1 1 10 8
  366. 1 1 5 12
  367. 1 2 5 12
  368. 1 3 9 11
  369. 1 3 5 12
  370. 1 4 5 12
  371. 1 5 5 12
  372. 1 6 5 12
  373. 1 7 5 12
  374. 1 8 5 12
  375. 1 9 5 12
  376. 1 10 5 12
  377. 1 11 5 12
  378. 1 12 5 12
  379. 1 13 5 12
  380. 1 14 5 12
  381. 1 15 5 12
  382. 1 16 5 12
  383. 1 17 5 12
  384. 1 18 5 12
  385. 1 19 5 12
  386. 1 20 5 12
  387. 1 21 5 12
  388. 1 22 5 12
  389. 1 23 5 12
  390. 1 24 5 12
  391. 1 25 5 12
  392. 1 26 5 12
  393. 1 27 5 12
  394. 1 28 5 12
  395. 1 29 5 12
  396. 1 30 5 12
  397. 1 31 5 12
  398. 1 32 5 12
  399. 1 33 5 12
  400. 1 34 5 12
  401. 1 35 5 12
  402. 1 36 5 12
  403. 1 37 5 12
  404. 1 38 5 12
  405. 1 39 5 12
  406. 1 40 5 12
  407. 1 41 5 12
  408. 1 42 5 12
  409. 1 43 5 12
  410. 1 44 5 12
  411. 1 45 5 12
  412. 1 46 5 12
  413. 1 47 5 12
  414. 1 48 5 12
  415. 1 49 5 12
  416. 1 50 5 12
  417. 1 51 5 12
  418. 1 52 5 12
  419. 1 53 5 12
  420. 1 54 5 12
  421. 1 55 5 12
  422. 1 56 5 12
  423. 1 57 5 12
  424. 1 58 5 12
  425. 1 59 5 12
  426. 1 60 5 12
  427. 1 61 5 12
  428. 1 62 5 12
  429. 1 63 5 12
  430. 1 64 5 12
  431. 1 65 5 12
  432. 1 66 5 12
  433. 1 67 5 12
  434. 1 68 5 12
  435. 1 69 5 12
  436. 1 70 5 12
  437. 1 71 5 12
  438. 1 72 5 12
  439. 1 73 5 12
  440. 1 74 5 12
  441. 1 75 5 12
  442. 1 76 5 12
  443. 1 77 5 12
  444. 1 78 5 12
  445. 1 79 5 12
  446. 1 80 5 12
  447. 1 81 5 12
  448. 1 82 5 12
  449. 1 83 5 12
  450. 1 84 5 12
  451. 1 85 5 12
  452. 1 86 5 12
  453. 1 87 5 12
  454. 1 88 5 12
  455. 1 89 5 12
  456. 1 90 5 12
  457. 1 91 5 12
  458. 1 92 5 12
  459. 1 93 5 12
  460. 1 94 5 12
  461. 1 95 5 12
  462. 1 96 5 12
  463. 1 97 5 12
  464. 1 98 5 12
  465. 1 99 5 12
  466. 1 100 5 12
  467. select * from t4 where uid = 1 order by gid,cid;
  468. uid gid rid cid
  469. 1 1 2 3
  470. 1 1 2 4
  471. 1 1 5 7
  472. 1 1 10 8
  473. 1 1 5 12
  474. 1 2 5 12
  475. 1 3 9 11
  476. 1 3 5 12
  477. 1 4 5 12
  478. 1 5 5 12
  479. 1 6 5 12
  480. 1 7 5 12
  481. 1 8 5 12
  482. 1 9 5 12
  483. 1 10 5 12
  484. 1 11 5 12
  485. 1 12 5 12
  486. 1 13 5 12
  487. 1 14 5 12
  488. 1 15 5 12
  489. 1 16 5 12
  490. 1 17 5 12
  491. 1 18 5 12
  492. 1 19 5 12
  493. 1 20 5 12
  494. 1 21 5 12
  495. 1 22 5 12
  496. 1 23 5 12
  497. 1 24 5 12
  498. 1 25 5 12
  499. 1 26 5 12
  500. 1 27 5 12
  501. 1 28 5 12
  502. 1 29 5 12
  503. 1 30 5 12
  504. 1 31 5 12
  505. 1 32 5 12
  506. 1 33 5 12
  507. 1 34 5 12
  508. 1 35 5 12
  509. 1 36 5 12
  510. 1 37 5 12
  511. 1 38 5 12
  512. 1 39 5 12
  513. 1 40 5 12
  514. 1 41 5 12
  515. 1 42 5 12
  516. 1 43 5 12
  517. 1 44 5 12
  518. 1 45 5 12
  519. 1 46 5 12
  520. 1 47 5 12
  521. 1 48 5 12
  522. 1 49 5 12
  523. 1 50 5 12
  524. 1 51 5 12
  525. 1 52 5 12
  526. 1 53 5 12
  527. 1 54 5 12
  528. 1 55 5 12
  529. 1 56 5 12
  530. 1 57 5 12
  531. 1 58 5 12
  532. 1 59 5 12
  533. 1 60 5 12
  534. 1 61 5 12
  535. 1 62 5 12
  536. 1 63 5 12
  537. 1 64 5 12
  538. 1 65 5 12
  539. 1 66 5 12
  540. 1 67 5 12
  541. 1 68 5 12
  542. 1 69 5 12
  543. 1 70 5 12
  544. 1 71 5 12
  545. 1 72 5 12
  546. 1 73 5 12
  547. 1 74 5 12
  548. 1 75 5 12
  549. 1 76 5 12
  550. 1 77 5 12
  551. 1 78 5 12
  552. 1 79 5 12
  553. 1 80 5 12
  554. 1 81 5 12
  555. 1 82 5 12
  556. 1 83 5 12
  557. 1 84 5 12
  558. 1 85 5 12
  559. 1 86 5 12
  560. 1 87 5 12
  561. 1 88 5 12
  562. 1 89 5 12
  563. 1 90 5 12
  564. 1 91 5 12
  565. 1 92 5 12
  566. 1 93 5 12
  567. 1 94 5 12
  568. 1 95 5 12
  569. 1 96 5 12
  570. 1 97 5 12
  571. 1 98 5 12
  572. 1 99 5 12
  573. 1 100 5 12
  574. select * from t4 where rid = 2 order by cid;
  575. uid gid rid cid
  576. 1 1 2 3
  577. 1 1 2 4
  578. drop table t1,t2,t3,t4,t5,t6,t7;
  579. CREATE TABLE t1 (   
  580. a int unsigned NOT NULL PRIMARY KEY,
  581. b int unsigned,   
  582. c int unsigned, 
  583. UNIQUE bc(b,c) ) engine = ndb;
  584. insert into t1 values(1,1,1),(2,NULL,2),(3,NULL,NULL),(4,4,NULL);
  585. select * from t1 where b=1 and c=1;
  586. a b c
  587. 1 1 1
  588. select * from t1 where b is null and c is null;
  589. a b c
  590. 3 NULL NULL
  591. select * from t1 where b is null and c = 2;
  592. a b c
  593. 2 NULL 2
  594. select * from t1 where b = 4 and c is null;
  595. a b c
  596. 4 4 NULL
  597. create table t8 as 
  598. select * from t1 where (b = 1 and c = 1)
  599. or (b is null and c is null) 
  600. or (b is null and c = 2)
  601. or (b = 4 and c is null);
  602. select * from t8 order by a;
  603. a b c
  604. 1 1 1
  605. 2 NULL 2
  606. 3 NULL NULL
  607. 4 4 NULL
  608. select * from t1 order by a;
  609. a b c
  610. 1 1 1
  611. 2 NULL 2
  612. 3 NULL NULL
  613. 4 4 NULL
  614. drop table t1, t8;
  615. create table t1(
  616. id integer not null auto_increment,
  617. month integer not null,
  618. year integer not null,
  619. code varchar( 2) not null,
  620. primary key ( id),
  621. unique idx_t1( month, code, year)
  622. ) engine=ndb;
  623. INSERT INTO t1 (month, year, code) VALUES (4,2004,'12');
  624. INSERT INTO t1 (month, year, code) VALUES (5,2004,'12');
  625. select * from t1 where code = '12' and month = 4 and year = 2004 ;
  626. id month year code
  627. 1 4 2004 12
  628. drop table t1;