From 9d46401c0b8a887e007d0b4573f330cb3c553f70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E5=BF=97=E7=BF=94?= <230825509@qq.com> Date: Fri, 6 Oct 2023 18:09:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20230905.md" | 9 - .../20230906.md" | 103 - .../20230906\344\275\234\344\270\232.vsdx" | Bin 52253 -> 0 bytes .../20230907.md" | 103 - .../20230908.md" | 242 - .../20230912.md" | 239 - .../20230913.md" | 129 - .../20230914.md" | 132 - .../20230917.md" | 147 - .../20230920.md" | 715 -- .../20230921.md" | 201 - .../20230921sku.md" | 105 - .../20230924.md" | 256 - .../20230925.md" | 384 - .../.keep" | 0 .../9.5\347\254\224\350\256\260.md" | 9 - .../9.5\347\254\224\350\256\2602.md" | 10 - .../9.6.md" | 110 - .../9.7\347\254\224\350\256\260.md" | 7 - .../9.8\347\254\224\350\256\260.md" | 9 - .../912.md" | 169 - .../912\347\254\224\350\256\260.md" | 1 - .../915\344\275\234\344\270\232.md" | 110 - .../919\344\275\234\344\270\232.md" | 265 - .../920\344\275\234\344\270\232.md" | 146 - ...41\347\220\206\347\263\273\347\273\237.md" | 262 - .../\347\254\224\350\256\260.md" | 259 - .../\350\247\206\345\233\276.md" | 68 - ...46\347\254\254\344\270\200\350\257\276.md" | 43 - ...11\345\244\247\350\214\203\345\274\217.md" | 138 - .../20230908 powerdesigner.md" | 130 - ...6\347\223\243\347\224\265\345\275\261.jpg" | Bin 148577 -> 0 bytes ...06\347\223\243\347\224\265\345\275\261.md" | 240 - .../20230913 \345\214\273\351\231\242.jpg" | Bin 82596 -> 0 bytes .../20230914 \345\244\215\344\271\240.md" | 9 - ...5\350\275\246\351\224\200\345\224\256.jpg" | Bin 62222 -> 0 bytes ...20230919 mysql\345\244\215\344\271\240.md" | 765 -- .../20230920 RBAC.jpg" | Bin 33450 -> 0 bytes .../20230920 RBAC.md" | 157 - .../20230921 SKU \344\270\216 SPU.md" | 144 - .../20230921 SKU \344\270\216 SPU.png" | Bin 53699 -> 0 bytes ...30\347\272\247\351\242\204\344\271\240.md" | 130 - ...46\344\271\240\350\267\257\347\272\277.md" | 33 - ...56\345\272\223\345\205\263\347\263\273.md" | 150 - ...23\347\232\204\350\214\203\345\274\217.md" | 19 - ...41\347\220\206\347\263\273\347\273\237.md" | 111 - ...56\345\272\223\350\256\276\350\256\241.md" | 171 - ...41\347\220\206\347\263\273\347\273\237.md" | 247 - ...24\350\256\260\350\241\245\344\272\244.md" | 121 - ...56\345\215\226\347\263\273\347\273\237.md" | 154 - ...42\345\244\215\344\271\240\351\242\230.md" | 776 -- .../20230920 RBAC\347\254\224\350\256\260.md" | 174 - .../20230921 SKU\347\254\224\350\256\260.md" | 191 - ...10\351\242\204\344\271\240\357\274\211.md" | 106 - ...37\344\270\216\350\247\206\345\233\276.md" | 349 - .../20230910.md" | 5 - .../20230912\344\275\234\344\270\232.md" | 65 - .../20230914\344\275\234\344\270\232.md" | 35 - .../20230917.md" | 156 - .../20230922.md" | 3 - .../20230925\351\242\204\344\271\240.md" | 43 - .../20230926.md" | 70 - .../9.20.md" | 737 -- .../SKU\344\275\234\344\270\232.md" | 169 - ...46\351\246\206\344\275\234\344\270\232.md" | 51 - ...00\346\254\241\347\254\224\350\256\260.md" | 9 - ...11\346\254\241\347\254\224\350\256\260.md" | 19 - ...14\346\254\241\344\275\234\344\270\232.md" | 67 - .../20230905.md" | 31 - .../20230906.md" | 19 - .../20230907.md" | 105 - .../20230908.md" | 145 - .../20230912.md" | 148 - .../20230913.md" | 196 - .../20230914.md" | 15 - .../20230915.md" | 210 - .../20230919.md" | 742 -- .../20230920.md" | 107 - .../20230921.md" | 132 - .../20230922.md" | 127 - .../\346\215\225\350\216\267.PNG" | Bin 127468 -> 0 bytes ...05\347\254\224\350\256\260\344\270\200.md" | 32 - ...06\347\254\224\350\256\260\344\272\214.md" | 159 - ...07\347\254\224\350\256\260\344\270\211.md" | 40 - .../20230908 powerdesigner.md" | 131 - ...10\347\254\224\350\256\260\345\233\233.md" | 132 - ...65\345\275\261\347\256\241\347\220\206.md" | 202 - ...57\345\223\201\347\227\205\344\272\272.md" | 110 - ...75\350\275\246\351\241\276\345\256\242.md" | 203 - .../20230919MySQL\345\244\215\344\271\240.md" | 764 -- .../20230920RBAC.md" | 158 - ...45\351\201\245\351\242\206\345\205\210.md" | 98 - .../20230924\345\244\215\344\271\240.md" | 23 - .../20230927\350\247\206\345\233\276.md" | 347 - ...46\347\254\254\344\270\200\350\257\276.md" | 26 - ...56\345\272\223\350\256\276\350\256\241.md" | 144 - ...56\345\272\223\350\214\203\345\274\217.md" | 95 - ...0 \345\233\276\344\271\246\351\246\206.md" | 172 - ...65\345\275\261\344\275\234\344\270\232.md" | 216 - ...73\347\224\237\344\275\234\344\270\232.md" | 266 - ...20230915 mysql\345\244\215\344\271\240.md" | 34 - .../20230917 \345\260\217\346\265\213.md" | 125 - .../20230919 \345\244\215\344\271\240 .md" | 777 -- .../20230920 \347\254\224\350\256\260.md" | 153 - .../20230921 \344\275\234\344\270\232.md" | 185 - .../20230924 \351\242\204\344\271\240.md" | 30 - .../20230927 \350\247\206\345\233\276.md" | 136 - ...56\345\272\223\351\253\230\347\272\247.md" | 51 - ...56\345\272\223\351\253\230\347\272\247.md" | 166 - ...56\345\272\223\351\253\230\347\272\247.md" | 90 - ...56\345\272\223\351\253\230\347\272\247.md" | 106 - ...56\345\272\223\351\253\230\347\272\247.md" | 187 - ...56\345\272\223\351\253\230\347\272\247.md" | 114 - ...56\345\272\223\351\253\230\347\272\247.md" | 11 - ...56\345\272\223\351\253\230\347\272\247.md" | 165 - ...56\345\272\223\351\253\230\347\272\247.md" | 338 - ...56\345\272\223\351\253\230\347\272\247.md" | 161 - ...56\345\272\223\351\253\230\347\272\247.md" | 126 - ...56\345\272\223\351\253\230\347\272\247.md" | 163 - ...56\345\272\223\351\253\230\347\272\247.md" | 119 - ...30\347\272\247\344\275\234\344\270\232.md" | 95 - ...00\350\257\276\347\254\224\350\256\260.md" | 29 - ...64\347\232\204\345\205\263\347\263\273.md" | 144 - ...56\345\272\223\350\214\203\345\274\217.md" | 19 - ...06\351\207\214\347\263\273\347\273\237.md" | 96 - ...21\347\253\231\350\256\276\350\256\241.md" | 201 - ...56\345\272\223\350\256\276\350\256\241.md" | 87 - ...00\345\224\256\347\256\241\347\220\206.md" | 136 - ...15\344\271\240\347\273\203\344\271\240.md" | 579 -- .../20230920 RBAC\347\254\224\350\256\260.md" | 18 - .../20230921 sku.md" | 105 - .../20230921 \347\254\224\350\256\260.md" | 201 - .../20230924 \347\254\224\350\256\260.md" | 256 - .../20230926 \350\247\206\345\233\276.md" | 63 - .../32e38aa3f50dcd0bac0c70ecfeb41f5.png" | Bin 60937 -> 0 bytes ...45\233\276\347\211\207_20230913121457.png" | Bin 114430 -> 0 bytes .../1.PNG" | Bin 67175 -> 0 bytes .../2.PNG" | Bin 108481 -> 0 bytes .../20239.24.md" | 27 - .../3.PNG" | Bin 56509 -> 0 bytes ...41\347\220\206\347\263\273\347\273\237.md" | 184 - .../9.10\347\254\224\350\256\260 .md" | 54 - .../9.15\347\254\224\350\256\260.md" | 10 - .../9.20\345\244\215\344\271\240.md" | 768 -- ...34\344\270\232\347\254\224\350\256\260.md" | 92 - .../9.21\347\254\224\350\256\260 .md" | 9 - .../9.27\344\275\234\344\270\232.txt" | 285 - .../9.7\347\254\224\350\256\260.md" | 35 - ...00\346\254\241\344\275\234\344\270\232.md" | 70 - .../9.8\347\254\224\350\256\260.md" | 48 - .../\345\214\273\351\231\242.md" | 157 - ...75\350\275\246\346\237\245\350\257\242.md" | 89 - .../\347\224\265\345\275\261.PNG" | Bin 48407 -> 0 bytes .../\347\224\265\345\275\261.md" | 159 - ...00\346\254\241\347\254\224\350\256\260.md" | 5 - ...14\346\254\241\347\254\224\350\256\260.md" | 47 - ...11\346\254\241\347\254\224\350\256\260.md" | 7 - .../0908\344\275\234\344\270\232.md" | 69 - ...65\345\275\261\344\275\234\344\270\232.md" | 213 - .../0913\345\274\200\350\215\257.md" | 128 - .../0914\345\214\273\351\231\242.md" | 96 - .../0915\344\271\260\350\275\246.md" | 111 - .../0919\344\275\234\344\270\232.md" | 432 - .../0920\346\235\203\351\231\220.md" | 112 - .../0921\345\225\206\345\223\201.md" | 90 - ...04\344\271\240\347\254\224\350\256\260.md" | 32 - ...06\345\233\276\344\275\234\344\270\232.md" | 78 - ...60\345\212\240\344\275\234\344\270\232.md" | 171 - .../0920\347\254\224\350\256\260.md" | 130 - .../0922\347\254\224\350\256\260.md" | 132 - .../0927\347\254\224\350\256\260.md" | 351 - ...30\347\272\247\347\254\224\350\256\260.md" | 9 - ...24\350\256\260\344\275\234\344\270\232.md" | 101 - .../9.21\347\254\224\350\256\260.md" | 174 - ...\344\270\200\350\212\202\350\257\276md.md" | 6 - ...54\344\272\214\350\212\202\350\257\276.md" | 14 - ...\346\234\21019\344\275\234\344\270\232.md" | 816 -- .../b9f15c44a08aadf90bd62e92666ccdd.png" | Bin 51483 -> 0 bytes .../crebas.sql" | 143 - .../hosp.sql" | 76 - ...00\345\224\256\347\263\273\347\273\237.md" | 116 - ...46\344\271\240\347\233\256\346\240\207.md" | 32 - ...50\212\202\350\257\276 E-R\345\233\276.md" | 148 - ...56\345\272\223\350\214\203\345\274\217.md" | 10 - ...41\347\220\206\347\263\273\347\273\237.md" | 122 - ...61\346\236\266\346\236\204\345\233\276.md" | 191 - ...73\351\231\242\347\256\241\347\220\206.md" | 209 - ...56\345\272\223\350\256\276\350\256\241.md" | 109 - ...56\345\215\226\347\263\273\347\273\237.md" | 154 - .../20230926 \350\247\206\345\233\276.md" | 349 - .../image-20230907093523576.png" | Bin 114061 -> 0 bytes ...73\351\231\242\347\263\273\347\273\237.md" | 117 - .../20230922\344\275\234\344\270\232.md" | 146 - .../RBAC.md" | 31 - .../sku\344\275\234\344\270\232.md" | 150 - .../\345\260\217\346\265\213.md" | 112 - ...56\345\272\223\350\214\203\345\274\217.md" | 7 - ...30\347\272\247\351\242\204\344\271\240.md" | 22 - ...60\345\222\214\344\275\234\344\270\232.md" | 129 - ...37\345\222\214\350\247\206\345\233\276.md" | 98 - .../\347\273\203\344\271\240.md" | 349 - ...00\345\244\251\347\254\224\350\256\260.md" | 23 - ...14\345\244\251\347\254\224\350\256\260.md" | 13 - ...00\346\254\241\344\275\234\344\270\232.md" | 60 - ...11\345\244\251\347\254\224\350\256\260.md" | 9 - ...33\345\244\251\347\254\224\350\256\260.md" | 9 - ...11\345\233\276\344\271\246\351\246\206.md" | 454 -- ...75\350\275\246\344\275\234\344\270\232.md" | 144 - .../20230922\351\242\204\344\271\240.md" | 45 - ...06\345\233\276\347\254\224\350\256\260.md" | 104 - .../RBAC\347\254\224\350\256\260.md" | 8 - ...34\344\270\232\347\254\224\350\256\260.md" | 176 - .../mysql\345\244\215\344\271\240.md" | 759 -- .../\345\214\273\351\231\242.md" | 144 - ...61\346\225\260\346\215\256\345\272\223.md" | 180 - .../20230905\347\254\224\350\256\260.md" | 31 - .../20230906\347\254\224\350\256\260.md" | 28 - .../20230907\344\275\234\344\270\232.md" | 71 - .../20230907\347\254\224\350\256\260.md" | 15 - .../20230911\344\275\234\344\270\232.md" | 66 - .../20230911\347\254\224\350\256\260.md" | 11 - .../20230912\344\275\234\344\270\232.md" | 150 - .../20230913\344\275\234\344\270\232.md" | 118 - .../20230913\347\254\224\350\256\260.md" | 1 - .../20230917\344\275\234\344\270\232.md" | 135 - .../20230919\344\275\234\344\270\232.md" | 783 -- .../20230920\344\275\234\344\270\232.md" | 179 - .../20230920\347\254\224\350\256\260.md" | 19 - .../20230921\344\275\234\344\270\232.md" | 84 - .../20230921\347\254\224\350\256\260.md" | 15 - .../20230922\347\254\224\350\256\260.md" | 27 - .../20230926\344\275\234\344\270\232.md" | 277 - .../20230926\347\254\224\350\256\260.md" | 59 - .../\346\227\240\346\240\207\351\242\230.png" | Bin 73811 -> 0 bytes .../RBAC\347\254\224\350\256\260.md" | 105 - ...PU\347\232\204\347\254\224\350\256\260.md" | 100 - .../mysql\345\244\215\344\271\240.md" | 737 -- .../\344\275\234\344\270\232.md" | 148 - .../\345\214\273\351\231\242.md" | 198 - ...41\347\220\206\347\263\273\347\273\237.md" | 67 - ...46\345\271\264\350\247\204\345\210\222.md" | 34 - ...23\347\232\204\350\214\203\345\274\217.md" | 7 - ...56\345\272\223\350\256\276\350\256\241.md" | 26 - ...56\345\272\223\351\242\204\344\271\240.md" | 127 - ...75\350\275\246\351\224\200\345\224\256.md" | 210 - ...06\347\223\243\347\224\265\345\275\261.md" | 239 - ...00\346\254\241\347\254\224\350\256\260.md" | 25 - ...14\346\254\241\347\254\224\350\256\260.md" | 25 - ...56\345\272\223\345\205\263\347\263\273.md" | 150 - ...56\345\272\223\350\214\203\345\274\217.md" | 10 - .../20230908\347\273\223\346\236\204.md" | 122 - ...61\346\236\266\346\236\204\345\233\276.md" | 191 - ...42\346\225\260\346\215\256\345\272\223.md" | 256 - ...56\345\215\226\347\263\273\347\273\237.md" | 154 - ...42\345\244\215\344\271\240\351\242\230.md" | 776 -- .../20230920 RBAC\347\254\224\350\256\260.md" | 174 - .../20230921 SKU\347\254\224\350\256\260.md" | 191 - ...13\347\232\204\344\274\240\345\217\202.md" | 106 - ...37\344\270\216\350\247\206\345\233\276.md" | 349 - ...50\345\222\214\350\257\264\346\230\216.md" | 153 - ...06\345\222\214\344\275\277\347\224\250.md" | 606 -- .../SKU.md" | 284 - ...76\347\232\204\344\275\277\347\224\250.md" | 111 - .../er\347\273\230\345\233\276.jpg" | Bin 22299 -> 0 bytes .../rbac\350\256\276\350\256\241.md" | 173 - .../\345\214\273\351\231\242.markdown" | 124 - ...\233\276\344\271\246\351\246\206.markdown" | 68 - ...46\344\271\240\347\233\256\346\240\207.md" | 25 - .../\345\244\247\347\273\203\344\271\240.md" | 846 -- ...\224\256\344\277\241\346\201\257.markdown" | 202 - ...\225\260\346\215\256\345\272\223.markdown" | 137 - ...46\347\254\254\344\270\200\350\257\276.md" | 46 - ...50\256\276\350\256\241 E-R\345\233\276.md" | 123 - ...23\347\232\204\350\214\203\345\274\217.md" | 19 - ...51\347\220\206\346\250\241\345\236\213.md" | 158 - ...65\345\275\261\344\277\241\346\201\257.md" | 151 - .../20230914.md" | 222 - ...20230915 MySQL\345\244\215\344\271\240.md" | 37 - ...75\350\275\246\351\224\200\345\224\256.md" | 113 - .../20230920 RBAC.md" | 197 - ...20230920 mysql\345\244\215\344\271\240.md" | 1403 ---- .../20230921 sku.md" | 181 - .../20230924 .md" | 71 - ...30\347\272\247\351\242\204\344\271\240.md" | 97 - .../20230926 \350\247\206\345\233\276.md" | 377 - .../20230905\347\254\224\350\256\260.md" | 16 +- ...56\345\272\223\350\256\276\350\256\241.md" | 70 +- .../20230907\350\214\203\345\274\217.md" | 13 + ...08\346\246\202\345\277\265\345\233\276.md" | 21 +- .../20230912\347\224\265\345\275\261.md" | 13 +- .../20230913\345\214\273\351\231\242.md" | 10 +- .../20230915\346\261\275\350\275\246.md" | 13 +- .../20230919\345\244\215\344\271\240.md" | 14 +- .../20230920RABC.md" | 37 +- .../20230921SKU.md" | 35 +- ...30\347\272\247\351\242\204\344\271\240.md" | 39 +- .../20230926\350\247\206\345\233\276.md" | 31 +- ...24\350\256\260\345\207\275\346\225\260.md" | 127 +- ...56\345\272\223\351\253\230\347\272\247.md" | 114 - .../9.17\344\275\234\344\270\232.md" | 113 - .../9.18\347\273\203\344\271\240.md" | 630 -- .../9.21\347\273\203\344\271\240.md" | 122 - ...34\344\270\232\347\273\203\344\271\240.md" | 144 - .../9.22\347\254\224\350\256\260.md" | 11 - .../9.26\344\275\234\344\270\232.md" | 94 - ...00\345\255\246\347\254\224\350\256\260.md" | 4 - ...34\344\270\232\347\254\224\350\256\260.md" | 79 - ...14\346\254\241\344\275\234\344\270\232.md" | 55 - ...12\346\227\245\344\275\234\344\270\232.md" | 221 - ...01\344\270\200\344\275\234\344\270\232.md" | 97 - ...06\346\225\260\346\215\256\345\272\223.md" | 109 - ...L\347\232\204\345\244\215\344\271\240.txt" | 267 - "27 \346\235\250\346\242\205/RBAC.txt" | 147 - .../sku\346\211\213\346\234\272.md" | 140 - .../\345\214\273\351\231\242.md." | 168 - ...1\347\220\206\347\263\273\347\273\237.txt" | 283 - ...46\346\240\241\347\263\273\347\273\237.md" | 100 - ...41\347\220\206\347\263\273\347\273\237.md" | 383 - ...75\350\275\246\351\224\200\345\224\256.md" | 296 - ...47\220\206\357\274\210pdm\357\274\211.jpg" | Bin 53347 -> 0 bytes ...6\344\277\241\346\201\257\350\241\250.jpg" | Bin 70077 -> 0 bytes ...47\273\237\357\274\210ldm\357\274\211.jpg" | Bin 98133 -> 0 bytes ...02\350\257\276\347\254\224\350\256\260.md" | 14 - .../\350\247\206\345\233\276.md" | 94 - ...51\345\215\226\346\260\264\346\235\257.md" | 177 - ...46\347\254\254\344\270\200\350\257\276.md" | 10 - ...64\350\204\221\351\243\216\346\232\264.md" | 137 - ...64\346\234\200\347\273\210\347\211\210.md" | 190 - ...41\347\220\206\347\263\273\347\273\237.md" | 311 - ...41\347\220\206\347\263\273\347\273\237.md" | 386 - .../20230913 \345\214\273\351\231\242.md" | 256 - ...62\350\247\243\345\214\273\351\231\242.md" | 170 - .../20230915 \346\261\275\350\275\246.md" | 190 - ...45\350\257\242\347\273\203\344\271\240.md" | 829 -- .../20230920 RBAC.md" | 155 - "29 \350\267\257\347\216\262/20230921 sku.md" | 215 - .../20230924 \347\254\224\350\256\260.md" | 246 - ...06\345\233\276\344\275\234\344\270\232.md" | 480 -- ...46\344\271\240\350\247\204\345\210\222.md" | 56 - .../20230906\344\275\234\344\270\2321.md" | 107 - ...\347\263\273\345\222\214ER\345\233\276.md" | 18 - ...34\344\270\232\347\254\224\350\256\260.md" | 147 - ...60\344\270\216\344\275\234\344\270\232.md" | 114 - .../20230922\344\275\234\344\270\232.md" | 189 - ...37\345\222\214\350\247\206\345\233\276.md" | 352 - ...40\344\270\216\344\275\234\344\270\232.md" | 735 -- ...73\351\231\242\347\263\273\347\273\237.md" | 93 - ...41\347\220\206\347\263\273\347\273\237.md" | 260 - ...00\345\224\256\347\263\273\347\273\237.md" | 121 - ...65\345\275\261\347\263\273\347\273\237.md" | 179 - ...02\350\257\276\347\254\224\350\256\260.md" | 9 - ...02\350\257\276\347\254\224\350\256\260.md" | 25 - .../.keep" | 0 ...76\345\240\202\347\273\203\344\271\240.md" | 190 - .../mysql\345\244\215\344\271\240.md" | 277 - .../rbac.md" | 131 - .../spu,sku.md" | 115 - .../\345\214\273\351\231\242.md" | 97 - .../\345\233\276\344\271\246\351\246\206.md" | 266 - ...46\351\246\206\345\256\214\346\225\264.md" | 433 - ...345\233\276\344\274\240\343\200\201CDM.md" | 180 - ...32\345\222\214\347\254\224\350\256\260.md" | 118 - .../\346\261\275\350\275\246.md" | 107 - .../\347\254\254\344\270\200\350\257\276.md" | 5 - .../\350\214\203\345\274\217.md" | 5 - .../\350\247\206\345\233\276.md" | 79 - ...00\346\254\241\344\275\234\344\270\232.md" | 160 - ...4\350\204\221\351\243\216\346\232\264.txt" | 105 - ...PowerDesigner\347\254\224\350\256\260.txt" | 66 - ...46\351\246\206\347\263\273\347\273\237.md" | 283 - ...65\345\275\261\347\263\273\347\273\237.md" | 383 - ...41\347\220\206\347\263\273\347\273\237.md" | 252 - ...00\345\224\256\347\263\273\347\273\237.md" | 149 - ...45\350\257\242\347\273\203\344\271\240.md" | 297 - .../20230920 RBAC.md" | 148 - .../20230921 sku\347\254\224\350\256\260.txt" | 11 - .../20230921 spu\345\222\214sku.md" | 156 - ...1\345\222\214\350\247\206\345\233\276.txt" | 161 - ...6\345\233\276\347\254\224\350\256\260.txt" | 57 - ...06\345\233\276\347\273\203\344\271\240.md" | 83 - ...46\347\254\254\344\270\200\350\257\276.md" | 3 - ...56\345\272\223\350\256\276\350\256\241.md" | 141 - ...6\345\272\223\350\256\276\350\256\2412.md" | 97 - ...76\350\256\241\344\275\234\344\270\232.md" | 132 - ...76\350\256\241\344\275\234\344\270\232.md" | 176 - ...76\350\256\241\344\275\234\344\270\232.md" | 196 - ...76\350\256\241\344\275\234\344\270\232.md" | 125 - .../20230919 \344\275\234\344\270\232.md" | 869 -- .../20230920 RBAC.md" | 30 - ...54\344\270\234\344\275\234\344\270\232.md" | 97 - .../20230924 \344\275\234\344\270\232.md" | 254 - ...06\345\233\276\344\275\234\344\270\232.md" | 366 - ...75\350\275\246\344\275\234\344\270\232.md" | 144 - .../20230920\347\254\224\350\256\260.md" | 114 - .../20230921.md" | 108 - .../\344\275\234\344\270\232.md" | 90 - .../\345\214\273\351\231\242.md" | 171 - ...46\351\246\206\344\275\234\344\270\232.md" | 294 - ...\344\271\240or\351\242\204\344\271\240.md" | 69 - .../\346\237\245\350\257\242.md" | 826 -- ...65\345\275\261\344\277\241\346\201\257.md" | 122 - .../\347\254\224\350\256\2601.md" | 13 - .../\347\254\224\350\256\2602.md" | 17 - .../\347\254\224\350\256\2603.md" | 7 - .../\347\254\224\350\256\2604.md" | 9 - .../\350\247\206\345\233\276.md" | 138 - .../.keep" | 0 ...56\345\272\223\350\214\203\345\274\217.md" | 7 - ...10\345\233\276\344\271\246\351\246\206.md" | 271 - ...65\345\275\261\347\256\241\347\220\206.md" | 168 - ...72\344\270\216\350\215\257\345\223\201.md" | 105 - .../20230915\346\261\275\350\275\246.md" | 107 - .../20230920mysql\345\244\215\344\271\240.md" | 266 - .../20230921squ,sku.md" | 115 - .../20230921\346\235\203\351\231\220.md" | 142 - ...76\345\240\202\347\273\203\344\271\240.md" | 188 - .../20230926\350\247\206\345\233\276.md" | 305 - ...00\350\257\276\345\277\203\345\276\227.md" | 7 - ...56\345\272\223\350\256\276\350\256\241.md" | 134 - ...41\347\220\206\347\263\273\347\273\237.md" | 52 - ...56\345\272\223\350\214\203\345\274\217.md" | 8 - ...00\350\257\276\347\254\224\350\256\260.md" | 11 - ...14\350\257\276\347\254\224\350\256\260.md" | 100 - .../NB.sql" | 215 - .../RBAC(\347\254\224\350\256\260).md" | 93 - ...15\344\271\240\344\275\234\344\270\232.md" | 835 -- .../sku\344\275\234\344\270\232.md" | 125 - ...52\350\277\236\346\216\245\357\274\211.md" | 82 - ...73\351\231\242\347\263\273\347\273\237.md" | 98 - ...32\350\257\276\345\277\203\345\276\227.md" | 24 - ...74\346\211\223\346\200\252\345\205\275.md" | 135 - ...45\351\252\244\347\254\224\350\256\260.md" | 22 - ...10\346\261\275\350\275\246\357\274\211.md" | 141 - ...00\346\254\241\344\275\234\344\270\232.md" | 224 - ...61\347\263\273\347\273\237\357\274\211.md" | 118 - ...40\346\224\271\346\237\245\357\274\211.md" | 351 - ...00\350\257\276\347\254\224\350\256\260.md" | 261 - .../20230907\344\275\234\344\270\232.md" | 52 - ...07\346\227\245\344\275\234\344\270\232.md" | 41 - .../20230910\344\275\234\344\270\232.md" | 92 - .../20230912\344\275\234\344\270\232.md" | 188 - .../20230914\344\275\234\344\270\232.md" | 106 - "44\344\273\243\347\221\236/20230916.md" | 93 - .../20230917\344\275\234\344\270\232.md" | 164 - .../20230920\344\275\234\344\270\232.md" | 803 -- .../20230921\344\275\234\344\270\232 (2).md" | 148 - .../20230921\344\275\234\344\270\232.md" | 39 - .../20230922\344\275\234\344\270\232.md" | 59 - .../20230926\350\247\206\345\233\276.md" | 447 -- ...76\345\240\202\347\254\224\350\256\260.md" | 43 - ...76\345\240\202\347\254\224\350\256\260.md" | 40 - ...76\345\240\202\347\254\224\350\256\260.md" | 19 - ...76\345\240\202\347\254\224\350\256\260.md" | 190 - ...30\347\272\247\344\275\234\344\270\232.md" | 173 - ...30\347\272\247\344\275\234\344\270\232.md" | 109 - ...76\345\240\202\347\254\224\350\256\260.md" | 19 - ...30\347\272\247\344\275\234\344\270\232.md" | 129 - ...QL\345\244\215\344\271\240\351\242\230.md" | 781 -- ...76\345\240\202\347\254\224\350\256\260.md" | 51 - ...32\344\270\216\347\254\224\350\256\260.md" | 138 - ...30\347\272\247\351\242\204\344\271\240.md" | 79 - ...30\347\272\247\350\247\206\345\233\276.md" | 390 - ...56\345\272\223\351\253\230\347\272\247.md" | 114 - .../9\346\234\21011\346\227\245.md" | 113 - ...06\346\227\245\344\275\234\344\270\232.md" | 69 - ...07\346\227\245\344\275\234\344\270\232.md" | 31 - ...\344\271\235\346\234\21012\346\227\245.md" | 139 - ...10\344\272\214\345\215\201\344\270\200.md" | 85 - ...01\345\205\255\344\275\234\344\270\232.md" | 252 - .../\344\275\234\344\270\232.md" | 250 - ...75\350\275\246\345\224\256\345\215\226.md" | 98 - .../\347\254\224\350\256\260.md" | 7 - ...00\346\254\241\347\254\224\350\256\260.md" | 14 - ...35\346\254\241\344\275\234\344\270\232.md" | 109 - ...04\344\271\240\344\275\234\344\270\232.md" | 38 - ...6\347\223\243\347\224\265\345\275\261.jpg" | Bin 148577 -> 0 bytes ...61\346\225\260\346\215\256\345\272\223.md" | 209 - ...3\351\231\242\347\227\205\344\272\272.png" | Bin 21900 -> 0 bytes ...72\346\225\260\346\215\256\345\272\223.md" | 132 - ...5\350\275\246\351\224\200\345\224\256.jpg" | Bin 62222 -> 0 bytes ...46\346\225\260\346\215\256\345\272\223.md" | 118 - .../9.19mysql\345\244\215\344\271\240.md" | 766 -- .../9.20RBAC.jpg" | Bin 33450 -> 0 bytes .../9.20RBAC.md" | 176 - .../9.21 ksu\345\222\214psu.png" | Bin 13861 -> 0 bytes .../9.21ksu.md" | 139 - ...47\346\225\260\346\215\256\345\272\223.md" | 133 - ...76\347\273\203\344\271\240\351\242\230.md" | 221 - ....5\347\254\254\344\270\200\350\257\276.md" | 29 - ...56\345\272\223\350\256\276\350\256\241.md" | 155 - ...56\345\272\223\351\253\230\347\272\247.md" | 97 - ...06\346\225\260\346\215\256\345\272\223.md" | 122 - ...54\344\270\200\350\212\202\350\257\276.md" | 32 - ...50\212\202\350\257\276 E-R\345\233\276.md" | 140 - ...56\345\272\223\350\214\203\345\274\217.md" | 95 - ...41\347\220\206\347\263\273\347\273\237.md" | 115 - .../20230913 \345\275\261\350\247\206.md" | 132 - ...73\351\231\242\347\256\241\347\220\206.md" | 209 - ...75\350\275\246\347\256\241\347\220\206.md" | 102 - ...70\345\205\263\344\271\240\351\242\230.md" | 225 - ...C \347\254\254\344\270\200\350\257\276.md" | 237 - .../20230921 \346\211\213\346\234\272.md" | 169 - ...56\345\272\223\351\242\204\344\271\240.md" | 49 - ...56\345\272\223\345\244\215\344\271\240.md" | 93 - ...06\345\233\276\344\275\234\344\270\232.md" | 287 - "51 \347\250\213\350\210\234/20230905.md" | 43 - "51 \347\250\213\350\210\234/20230906.md" | 106 - "51 \347\250\213\350\210\234/20230907.md" | 14 - "51 \347\250\213\350\210\234/20230908.md" | 148 - "51 \347\250\213\350\210\234/20230912.md" | 150 - "51 \347\250\213\350\210\234/20230913.md" | 208 - "51 \347\250\213\350\210\234/20230914.md" | 31 - "51 \347\250\213\350\210\234/20230915.md" | 107 - "51 \347\250\213\350\210\234/20230919.md" | 1400 ---- "51 \347\250\213\350\210\234/20230920.md" | 201 - "51 \347\250\213\350\210\234/20230921.md" | 131 - "51 \347\250\213\350\210\234/20230922.md" | 127 - "51 \347\250\213\350\210\234/20230926.md" | 83 - .../123.sql" | 32 - .../9.19.md" | 322 - .../9.20.md" | 97 - ...12\346\227\245\344\275\234\344\270\232.md" | 131 - ...13\346\227\245\344\275\234\344\270\232.md" | 140 - ...15\346\227\245\344\275\234\344\270\232.md" | 101 - ...21\346\227\245\344\275\234\344\270\232.md" | 58 - ...22\346\227\245\344\275\234\344\270\232.md" | 177 - ...26\346\227\245\344\275\234\344\270\232.md" | 287 - .../crebas.sql" | 122 - .../\344\275\234\344\270\2321.md" | 440 -- .../\344\275\234\344\270\2324.md" | 101 - ...00\346\254\241\344\275\234\344\270\232.md" | 29 - ...46\346\234\237\345\277\203\345\276\227.md" | 7 - ...47\263\273-\344\270\223\344\270\232....md" | 190 - ...345\267\245\344\275\234\347\260\2771.xlsx" | Bin 10784 -> 0 bytes .../\347\273\230\345\233\2761.pdf" | Bin 82384 -> 0 bytes ...11\345\244\247\350\214\203\345\274\217.md" | 137 - .../code.sql" | 222 - ...1\347\220\206\347\263\273\347\273\237.cdm" | 4153 ---------- ...41\347\220\206\347\263\273\347\273\237.md" | 258 - ...1\347\220\206\347\263\273\347\273\237.pdf" | Bin 747617 -> 0 bytes ...06\347\223\243\347\224\265\345\275\261.md" | 161 - ...6\347\223\243\347\224\265\345\275\261.pdf" | Bin 657361 -> 0 bytes ...6\347\223\243\347\224\265\345\275\261.png" | Bin 222171 -> 0 bytes ...6\347\223\243\347\224\265\345\275\261.sql" | 149 - .../Doctor.png" | Bin 49426 -> 0 bytes .../\345\214\273\347\224\237.sql" | 169 - ...37\346\225\260\346\215\256\345\272\223.md" | 178 - .../1.png" | Bin 26034 -> 0 bytes .../ConceptualDataModel_1.cdm" | 2376 ------ .../ConceptualDataModel_1.ldm" | 2422 ------ .../ConceptualDataModel_1.pdm" | 5678 ------------- ...75\350\275\246\345\225\206\345\272\227.md" | 359 - ...5\350\275\246\345\225\206\345\272\227.txt" | 354 - .../tesxt010000333" | 1 - .../\347\255\224\346\241\210.md" | 274 - ...71\2649\346\234\21020\346\227\245 RBAC.md" | 126 - .../SKU.md" | 277 - .../CF.md" | 204 - .../CF.png" | Bin 44947 -> 0 bytes ...7\350\266\212\347\201\253\347\272\277.sql" | 179 - .../ConceptualDataModel_1.ldm" | 3317 -------- .../ConceptualDataModel_1.pdm" | 7017 ----------------- ...76\344\270\216\345\207\275\346\225\260.md" | 21 - .../\350\247\206\345\233\276.md" | 154 - .../9.12\344\275\234\344\270\232.md" | 124 - .../9.13\344\275\234\344\270\232.md" | 106 - .../9.15\344\275\234\344\270\232.md" | 119 - .../9.19\344\275\234\344\270\232.md" | 827 -- .../9.21\344\275\234\344\270\232.md" | 139 - .../9.6\344\275\234\344\270\232.md" | 84 - .../9.8\344\275\234\344\270\232 .md" | 108 - .../\347\254\224\350\256\260 (2).md" | 20 - .../\347\254\224\350\256\260 (3).md" | 29 - .../\347\254\224\350\256\260.md" | 5 - ...00\345\244\251\347\254\224\350\256\260.md" | 13 - ...11\345\244\251\347\254\224\350\256\260.md" | 7 - ...14\345\244\251\347\254\224\350\256\260.md" | 19 - ...55\345\244\251\347\254\224\350\256\260.md" | 1 - ...33\345\244\251\347\254\224\350\256\260.md" | 11 - ...5 \346\225\260\346\215\256\345\272\223.md" | 54 - .../20230905\347\254\224\350\256\260.md" | 13 - ...56\345\272\223\350\256\276\350\256\241.md" | 88 - ...56\345\272\223\350\214\203\345\274\217.md" | 93 - ...0 \345\233\276\344\271\246\351\246\206.md" | 180 - .../ConceptualDataModel_2.ldm" | 2265 ------ .../20230914\345\214\273\351\231\242.md" | 143 - .../20230917 \350\275\246.md" | 122 - .../20230919 \346\237\245\350\257\242.md" | 776 -- .../20230924 \347\254\224\350\256\260.md" | 38 - .../20230926 \350\247\206\345\233\276.md" | 103 - .../20290913 \347\224\265\345\275\261.md" | 416 - .../RBAC\347\254\224\350\256\260.md" | 8 - .../mysql\345\244\215\344\271\240.md" | 759 -- ...47\344\272\214\350\256\241\345\210\222.md" | 26 - ...56\345\272\223\350\256\276\350\256\241.md" | 127 - ...56\345\272\223\350\214\203\345\274\217.md" | 100 - ...06\346\225\260\346\215\256\345\272\223.md" | 199 - ...61\346\225\260\346\215\256\345\272\223.md" | 212 - ...42\346\225\260\346\215\256\345\272\223.md" | 256 - ...46\346\225\260\346\215\256\345\272\223.md" | 132 - ...20230919 MySQL\345\244\215\344\271\240.md" | 801 -- .../20230920 RBAC.md" | 293 - .../20230921 SKU.md" | 169 - ...15\344\271\240\347\214\252\347\214\252.md" | 123 - ...30\347\272\247\351\242\204\344\271\240.md" | 45 - ...37\344\270\216\350\247\206\345\233\276.md" | 339 - .../2023-09-05.md" | 20 - .../2023-09-06.md" | 119 - .../2023-09-07.md" | 9 - .../2023-09-08.md" | 112 - .../2023-09-12.md" | 137 - .../2023-09-13.md" | 123 - .../2023-09-14.md" | 97 - .../2023-09-15.md" | 185 - .../2023-09-19.md" | 803 -- .../2023-09-20.md" | 23 - .../2023-09-21.md" | 146 - .../2023-09-22.md" | 131 - .../2023-09-26.md" | 297 - .../9\346\234\21012\346\227\245.md" | 47 - .../9\346\234\21013\346\227\245.md" | 172 - .../9\346\234\21014\346\227\245.md" | 33 - .../9\346\234\21015\345\217\267.md" | 145 - .../9\346\234\21019\346\227\245.md" | 799 -- .../9\346\234\21020.md" | 129 - .../9\346\234\21021\346\227\245.md" | 147 - .../9\346\234\21022\346\227\245.md" | 130 - .../9\346\234\21026\346\227\245.md" | 285 - .../9\346\234\2105\346\227\245.md" | 17 - .../9\346\234\2106\346\227\245.md" | 119 - ...07\346\227\245\347\254\224\350\256\260.md" | 13 - ...08\346\227\245\344\275\234\344\270\232.md" | 112 - README.md | 8 - image-20230910234344708.png | Bin 116366 -> 0 bytes ...37\346\234\200\347\273\210\347\211\210.md" | 283 - 635 files changed, 179 insertions(+), 124247 deletions(-) delete mode 100644 "01 \351\231\210\346\242\246\346\242\246/20230905.md" delete mode 100644 "01 \351\231\210\346\242\246\346\242\246/20230906.md" delete mode 100644 "01 \351\231\210\346\242\246\346\242\246/20230906\344\275\234\344\270\232.vsdx" delete mode 100644 "01 \351\231\210\346\242\246\346\242\246/20230907.md" delete mode 100644 "01 \351\231\210\346\242\246\346\242\246/20230908.md" delete mode 100644 "01 \351\231\210\346\242\246\346\242\246/20230912.md" delete mode 100644 "01 \351\231\210\346\242\246\346\242\246/20230913.md" delete mode 100644 "01 \351\231\210\346\242\246\346\242\246/20230914.md" delete mode 100644 "01 \351\231\210\346\242\246\346\242\246/20230917.md" delete mode 100644 "01 \351\231\210\346\242\246\346\242\246/20230920.md" delete mode 100644 "01 \351\231\210\346\242\246\346\242\246/20230921.md" delete mode 100644 "01 \351\231\210\346\242\246\346\242\246/20230921sku.md" delete mode 100644 "01 \351\231\210\346\242\246\346\242\246/20230924.md" delete mode 100644 "01 \351\231\210\346\242\246\346\242\246/20230925.md" delete mode 100644 "02 \351\231\210\346\230\216\345\207\275/.keep" delete mode 100644 "02 \351\231\210\346\230\216\345\207\275/9.5\347\254\224\350\256\260.md" delete mode 100644 "02 \351\231\210\346\230\216\345\207\275/9.5\347\254\224\350\256\2602.md" delete mode 100644 "02 \351\231\210\346\230\216\345\207\275/9.6.md" delete mode 100644 "02 \351\231\210\346\230\216\345\207\275/9.7\347\254\224\350\256\260.md" delete mode 100644 "02 \351\231\210\346\230\216\345\207\275/9.8\347\254\224\350\256\260.md" delete mode 100644 "02 \351\231\210\346\230\216\345\207\275/912.md" delete mode 100644 "02 \351\231\210\346\230\216\345\207\275/912\347\254\224\350\256\260.md" delete mode 100644 "02 \351\231\210\346\230\216\345\207\275/915\344\275\234\344\270\232.md" delete mode 100644 "02 \351\231\210\346\230\216\345\207\275/919\344\275\234\344\270\232.md" delete mode 100644 "02 \351\231\210\346\230\216\345\207\275/920\344\275\234\344\270\232.md" delete mode 100644 "02 \351\231\210\346\230\216\345\207\275/\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" delete mode 100644 "02 \351\231\210\346\230\216\345\207\275/\347\254\224\350\256\260.md" delete mode 100644 "02 \351\231\210\346\230\216\345\207\275/\350\247\206\345\233\276.md" delete mode 100644 "03 \350\265\226\345\277\203\345\246\215/20230905 \345\274\200\345\255\246\347\254\254\344\270\200\350\257\276.md" delete mode 100644 "03 \350\265\226\345\277\203\345\246\215/20230907 \346\225\260\346\215\256\345\272\223\344\270\211\345\244\247\350\214\203\345\274\217.md" delete mode 100644 "03 \350\265\226\345\277\203\345\246\215/20230908 powerdesigner.md" delete mode 100644 "03 \350\265\226\345\277\203\345\246\215/20230912 \350\261\206\347\223\243\347\224\265\345\275\261.jpg" delete mode 100644 "03 \350\265\226\345\277\203\345\246\215/20230912 \350\261\206\347\223\243\347\224\265\345\275\261.md" delete mode 100644 "03 \350\265\226\345\277\203\345\246\215/20230913 \345\214\273\351\231\242.jpg" delete mode 100644 "03 \350\265\226\345\277\203\345\246\215/20230914 \345\244\215\344\271\240.md" delete mode 100644 "03 \350\265\226\345\277\203\345\246\215/20230915 \346\261\275\350\275\246\351\224\200\345\224\256.jpg" delete mode 100644 "03 \350\265\226\345\277\203\345\246\215/20230919 mysql\345\244\215\344\271\240.md" delete mode 100644 "03 \350\265\226\345\277\203\345\246\215/20230920 RBAC.jpg" delete mode 100644 "03 \350\265\226\345\277\203\345\246\215/20230920 RBAC.md" delete mode 100644 "03 \350\265\226\345\277\203\345\246\215/20230921 SKU \344\270\216 SPU.md" delete mode 100644 "03 \350\265\226\345\277\203\345\246\215/20230921 SKU \344\270\216 SPU.png" delete mode 100644 "03 \350\265\226\345\277\203\345\246\215/20230922 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\351\242\204\344\271\240.md" delete mode 100644 "04 \346\235\216\346\230\216\345\201\245/20230905 \345\244\247\344\272\214java\345\255\246\344\271\240\350\267\257\347\272\277.md" delete mode 100644 "04 \346\235\216\346\230\216\345\201\245/20230907 \346\225\260\346\215\256\345\272\223\345\205\263\347\263\273.md" delete mode 100644 "04 \346\235\216\346\230\216\345\201\245/20230907 \346\225\260\346\215\256\345\272\223\347\232\204\350\214\203\345\274\217.md" delete mode 100644 "04 \346\235\216\346\230\216\345\201\245/20230910 \345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" delete mode 100644 "04 \346\235\216\346\230\216\345\201\245/20230912 \347\224\265\345\275\261\347\275\221\347\253\231\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" delete mode 100644 "04 \346\235\216\346\230\216\345\201\245/20230914 \345\214\273\351\231\242\347\256\241\347\220\206\347\263\273\347\273\237.md" delete mode 100644 "04 \346\235\216\346\230\216\345\201\245/20230914 \347\254\224\350\256\260\350\241\245\344\272\244.md" delete mode 100644 "04 \346\235\216\346\230\216\345\201\245/20230916 \346\261\275\350\275\246\345\224\256\345\215\226\347\263\273\347\273\237.md" delete mode 100644 "04 \346\235\216\346\230\216\345\201\245/20230919 \346\237\245\350\257\242\345\244\215\344\271\240\351\242\230.md" delete mode 100644 "04 \346\235\216\346\230\216\345\201\245/20230920 RBAC\347\254\224\350\256\260.md" delete mode 100644 "04 \346\235\216\346\230\216\345\201\245/20230921 SKU\347\254\224\350\256\260.md" delete mode 100644 "04 \346\235\216\346\230\216\345\201\245/20230924 \345\255\230\345\202\250\350\277\207\347\250\213\347\232\204\344\274\240\345\217\202\357\274\210\351\242\204\344\271\240\357\274\211.md" delete mode 100644 "04 \346\235\216\346\230\216\345\201\245/20230926 Check\347\272\246\346\235\237\344\270\216\350\247\206\345\233\276.md" delete mode 100644 "05 \350\260\242\351\223\226\346\265\251/20230910.md" delete mode 100644 "05 \350\260\242\351\223\226\346\265\251/20230912\344\275\234\344\270\232.md" delete mode 100644 "05 \350\260\242\351\223\226\346\265\251/20230914\344\275\234\344\270\232.md" delete mode 100644 "05 \350\260\242\351\223\226\346\265\251/20230917.md" delete mode 100644 "05 \350\260\242\351\223\226\346\265\251/20230922.md" delete mode 100644 "05 \350\260\242\351\223\226\346\265\251/20230925\351\242\204\344\271\240.md" delete mode 100644 "05 \350\260\242\351\223\226\346\265\251/20230926.md" delete mode 100644 "05 \350\260\242\351\223\226\346\265\251/9.20.md" delete mode 100644 "05 \350\260\242\351\223\226\346\265\251/SKU\344\275\234\344\270\232.md" delete mode 100644 "05 \350\260\242\351\223\226\346\265\251/\345\233\276\344\271\246\351\246\206\344\275\234\344\270\232.md" delete mode 100644 "05 \350\260\242\351\223\226\346\265\251/\347\254\254\344\270\200\346\254\241\347\254\224\350\256\260.md" delete mode 100644 "05 \350\260\242\351\223\226\346\265\251/\347\254\254\344\270\211\346\254\241\347\254\224\350\256\260.md" delete mode 100644 "05 \350\260\242\351\223\226\346\265\251/\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.md" delete mode 100644 "06 \351\231\210\345\277\227\344\274\237/20230905.md" delete mode 100644 "06 \351\231\210\345\277\227\344\274\237/20230906.md" delete mode 100644 "06 \351\231\210\345\277\227\344\274\237/20230907.md" delete mode 100644 "06 \351\231\210\345\277\227\344\274\237/20230908.md" delete mode 100644 "06 \351\231\210\345\277\227\344\274\237/20230912.md" delete mode 100644 "06 \351\231\210\345\277\227\344\274\237/20230913.md" delete mode 100644 "06 \351\231\210\345\277\227\344\274\237/20230914.md" delete mode 100644 "06 \351\231\210\345\277\227\344\274\237/20230915.md" delete mode 100644 "06 \351\231\210\345\277\227\344\274\237/20230919.md" delete mode 100644 "06 \351\231\210\345\277\227\344\274\237/20230920.md" delete mode 100644 "06 \351\231\210\345\277\227\344\274\237/20230921.md" delete mode 100644 "06 \351\231\210\345\277\227\344\274\237/20230922.md" delete mode 100644 "06 \351\231\210\345\277\227\344\274\237/\346\215\225\350\216\267.PNG" delete mode 100644 "07 \345\210\230\346\226\207\351\224\213/20230905\347\254\224\350\256\260\344\270\200.md" delete mode 100644 "07 \345\210\230\346\226\207\351\224\213/20230906\347\254\224\350\256\260\344\272\214.md" delete mode 100644 "07 \345\210\230\346\226\207\351\224\213/20230907\347\254\224\350\256\260\344\270\211.md" delete mode 100644 "07 \345\210\230\346\226\207\351\224\213/20230908 powerdesigner.md" delete mode 100644 "07 \345\210\230\346\226\207\351\224\213/20230910\347\254\224\350\256\260\345\233\233.md" delete mode 100644 "07 \345\210\230\346\226\207\351\224\213/20230912\347\224\265\345\275\261\347\256\241\347\220\206.md" delete mode 100644 "07 \345\210\230\346\226\207\351\224\213/20230913\345\214\273\347\224\237\350\215\257\345\223\201\347\227\205\344\272\272.md" delete mode 100644 "07 \345\210\230\346\226\207\351\224\213/20230917\351\224\200\345\224\256\346\261\275\350\275\246\351\241\276\345\256\242.md" delete mode 100644 "07 \345\210\230\346\226\207\351\224\213/20230919MySQL\345\244\215\344\271\240.md" delete mode 100644 "07 \345\210\230\346\226\207\351\224\213/20230920RBAC.md" delete mode 100644 "07 \345\210\230\346\226\207\351\224\213/20230921 \351\201\245\351\201\245\351\242\206\345\205\210.md" delete mode 100644 "07 \345\210\230\346\226\207\351\224\213/20230924\345\244\215\344\271\240.md" delete mode 100644 "07 \345\210\230\346\226\207\351\224\213/20230927\350\247\206\345\233\276.md" delete mode 100644 "08 \345\256\230\346\226\207\350\257\232/20230905 \345\274\200\345\255\246\347\254\254\344\270\200\350\257\276.md" delete mode 100644 "08 \345\256\230\346\226\207\350\257\232/20230906 \346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" delete mode 100644 "08 \345\256\230\346\226\207\350\257\232/20230907 \346\225\260\346\215\256\345\272\223\350\214\203\345\274\217.md" delete mode 100644 "08 \345\256\230\346\226\207\350\257\232/20230910 \345\233\276\344\271\246\351\246\206.md" delete mode 100644 "08 \345\256\230\346\226\207\350\257\232/20230912 \347\224\265\345\275\261\344\275\234\344\270\232.md" delete mode 100644 "08 \345\256\230\346\226\207\350\257\232/20230913 \345\214\273\347\224\237\344\275\234\344\270\232.md" delete mode 100644 "08 \345\256\230\346\226\207\350\257\232/20230915 mysql\345\244\215\344\271\240.md" delete mode 100644 "08 \345\256\230\346\226\207\350\257\232/20230917 \345\260\217\346\265\213.md" delete mode 100644 "08 \345\256\230\346\226\207\350\257\232/20230919 \345\244\215\344\271\240 .md" delete mode 100644 "08 \345\256\230\346\226\207\350\257\232/20230920 \347\254\224\350\256\260.md" delete mode 100644 "08 \345\256\230\346\226\207\350\257\232/20230921 \344\275\234\344\270\232.md" delete mode 100644 "08 \345\256\230\346\226\207\350\257\232/20230924 \351\242\204\344\271\240.md" delete mode 100644 "08 \345\256\230\346\226\207\350\257\232/20230927 \350\247\206\345\233\276.md" delete mode 100644 "09 \346\233\271\346\255\243\346\263\242/20230905 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" delete mode 100644 "09 \346\233\271\346\255\243\346\263\242/20230906 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" delete mode 100644 "09 \346\233\271\346\255\243\346\263\242/20230907 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" delete mode 100644 "09 \346\233\271\346\255\243\346\263\242/20230908 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" delete mode 100644 "09 \346\233\271\346\255\243\346\263\242/20230912 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" delete mode 100644 "09 \346\233\271\346\255\243\346\263\242/20230913 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" delete mode 100644 "09 \346\233\271\346\255\243\346\263\242/20230914 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" delete mode 100644 "09 \346\233\271\346\255\243\346\263\242/20230915 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" delete mode 100644 "09 \346\233\271\346\255\243\346\263\242/20230919 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" delete mode 100644 "09 \346\233\271\346\255\243\346\263\242/20230920 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" delete mode 100644 "09 \346\233\271\346\255\243\346\263\242/20230921 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" delete mode 100644 "09 \346\233\271\346\255\243\346\263\242/20230922 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" delete mode 100644 "09 \346\233\271\346\255\243\346\263\242/20230926 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" delete mode 100644 "0906\346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\344\275\234\344\270\232.md" delete mode 100644 "10 \346\270\251\350\264\265\351\233\257/20230905 \347\254\254\344\270\200\350\257\276\347\254\224\350\256\260.md" delete mode 100644 "10 \346\270\251\350\264\265\351\233\257/20230907\350\241\250\344\271\213\351\227\264\347\232\204\345\205\263\347\263\273.md" delete mode 100644 "10 \346\270\251\350\264\265\351\233\257/20230908 \346\225\260\346\215\256\345\272\223\350\214\203\345\274\217.md" delete mode 100644 "10 \346\270\251\350\264\265\351\233\257/20230910 \345\233\276\344\271\246\351\246\206\351\207\214\347\263\273\347\273\237.md" delete mode 100644 "10 \346\270\251\350\264\265\351\233\257/20230912 \347\224\265\345\275\261\347\275\221\347\253\231\350\256\276\350\256\241.md" delete mode 100644 "10 \346\270\251\350\264\265\351\233\257/20230913 \345\214\273\351\231\242\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" delete mode 100644 "10 \346\270\251\350\264\265\351\233\257/20230915 \346\261\275\350\275\246\351\224\200\345\224\256\347\256\241\347\220\206.md" delete mode 100644 "10 \346\270\251\350\264\265\351\233\257/20230919 \346\237\245\350\257\242\345\244\215\344\271\240\347\273\203\344\271\240.md" delete mode 100644 "10 \346\270\251\350\264\265\351\233\257/20230920 RBAC\347\254\224\350\256\260.md" delete mode 100644 "10 \346\270\251\350\264\265\351\233\257/20230921 sku.md" delete mode 100644 "10 \346\270\251\350\264\265\351\233\257/20230921 \347\254\224\350\256\260.md" delete mode 100644 "10 \346\270\251\350\264\265\351\233\257/20230924 \347\254\224\350\256\260.md" delete mode 100644 "10 \346\270\251\350\264\265\351\233\257/20230926 \350\247\206\345\233\276.md" delete mode 100644 "10 \346\270\251\350\264\265\351\233\257/\345\233\276\347\211\207/32e38aa3f50dcd0bac0c70ecfeb41f5.png" delete mode 100644 "10 \346\270\251\350\264\265\351\233\257/\345\233\276\347\211\207/\345\276\256\344\277\241\345\233\276\347\211\207_20230913121457.png" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/1.PNG" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/2.PNG" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/20239.24.md" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/3.PNG" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/9.10\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/9.10\347\254\224\350\256\260 .md" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/9.15\347\254\224\350\256\260.md" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/9.20\345\244\215\344\271\240.md" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/9.21\344\275\234\344\270\232\347\254\224\350\256\260.md" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/9.21\347\254\224\350\256\260 .md" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/9.27\344\275\234\344\270\232.txt" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/9.7\347\254\224\350\256\260.md" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/9.7\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.md" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/9.8\347\254\224\350\256\260.md" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/\345\214\273\351\231\242.md" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/\346\261\275\350\275\246\346\237\245\350\257\242.md" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/\347\224\265\345\275\261.PNG" delete mode 100644 "11 \351\202\271\344\272\250\344\274\237/\347\224\265\345\275\261.md" delete mode 100644 "12\346\236\227\344\277\212\344\274\237/0905\347\254\254\344\270\200\346\254\241\347\254\224\350\256\260.md" delete mode 100644 "12\346\236\227\344\277\212\344\274\237/0906\347\254\254\344\272\214\346\254\241\347\254\224\350\256\260.md" delete mode 100644 "12\346\236\227\344\277\212\344\274\237/0907\347\254\254\344\270\211\346\254\241\347\254\224\350\256\260.md" delete mode 100644 "12\346\236\227\344\277\212\344\274\237/0908\344\275\234\344\270\232.md" delete mode 100644 "12\346\236\227\344\277\212\344\274\237/0912\347\224\265\345\275\261\344\275\234\344\270\232.md" delete mode 100644 "12\346\236\227\344\277\212\344\274\237/0913\345\274\200\350\215\257.md" delete mode 100644 "12\346\236\227\344\277\212\344\274\237/0914\345\214\273\351\231\242.md" delete mode 100644 "12\346\236\227\344\277\212\344\274\237/0915\344\271\260\350\275\246.md" delete mode 100644 "12\346\236\227\344\277\212\344\274\237/0919\344\275\234\344\270\232.md" delete mode 100644 "12\346\236\227\344\277\212\344\274\237/0920\346\235\203\351\231\220.md" delete mode 100644 "12\346\236\227\344\277\212\344\274\237/0921\345\225\206\345\223\201.md" delete mode 100644 "12\346\236\227\344\277\212\344\274\237/0922\351\242\204\344\271\240\347\254\224\350\256\260.md" delete mode 100644 "12\346\236\227\344\277\212\344\274\237/0926\350\247\206\345\233\276\344\275\234\344\270\232.md" delete mode 100644 "13 \350\224\241\345\230\211\344\271\220/0914\347\254\224\350\256\260\345\212\240\344\275\234\344\270\232.md" delete mode 100644 "13 \350\224\241\345\230\211\344\271\220/0920\347\254\224\350\256\260.md" delete mode 100644 "13 \350\224\241\345\230\211\344\271\220/0922\347\254\224\350\256\260.md" delete mode 100644 "13 \350\224\241\345\230\211\344\271\220/0927\347\254\224\350\256\260.md" delete mode 100644 "13 \350\224\241\345\230\211\344\271\220/20230907\346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\347\254\224\350\256\260.md" delete mode 100644 "13 \350\224\241\345\230\211\344\271\220/20230908\347\254\224\350\256\260\344\275\234\344\270\232.md" delete mode 100644 "13 \350\224\241\345\230\211\344\271\220/9.21\347\254\224\350\256\260.md" delete mode 100644 "13 \350\224\241\345\230\211\344\271\220/9.5\347\254\254\344\270\200\350\212\202\350\257\276md.md" delete mode 100644 "13 \350\224\241\345\230\211\344\271\220/9.6\347\254\254\344\272\214\350\212\202\350\257\276.md" delete mode 100644 "13 \350\224\241\345\230\211\344\271\220/9\346\234\21019\344\275\234\344\270\232.md" delete mode 100644 "13 \350\224\241\345\230\211\344\271\220/b9f15c44a08aadf90bd62e92666ccdd.png" delete mode 100644 "13 \350\224\241\345\230\211\344\271\220/crebas.sql" delete mode 100644 "13 \350\224\241\345\230\211\344\271\220/hosp.sql" delete mode 100644 "13 \350\224\241\345\230\211\344\271\220/\346\261\275\350\275\246\351\224\200\345\224\256\347\263\273\347\273\237.md" delete mode 100644 "14 \346\235\216\344\277\212\345\205\264/20230905 \345\244\247\344\272\214\345\255\246\344\271\240\347\233\256\346\240\207.md" delete mode 100644 "14 \346\235\216\344\277\212\345\205\264/20230906 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\347\254\254\344\270\200\350\212\202\350\257\276 E-R\345\233\276.md" delete mode 100644 "14 \346\235\216\344\277\212\345\205\264/20230907 \346\225\260\346\215\256\345\272\223\350\214\203\345\274\217.md" delete mode 100644 "14 \346\235\216\344\277\212\345\205\264/20230908 \345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" delete mode 100644 "14 \346\235\216\344\277\212\345\205\264/20230912 \347\224\265\345\275\261\346\236\266\346\236\204\345\233\276.md" delete mode 100644 "14 \346\235\216\344\277\212\345\205\264/20230913 \345\214\273\351\231\242\347\256\241\347\220\206.md" delete mode 100644 "14 \346\235\216\344\277\212\345\205\264/20230914 \346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" delete mode 100644 "14 \346\235\216\344\277\212\345\205\264/20230916 \346\261\275\350\275\246\345\224\256\345\215\226\347\263\273\347\273\237.md" delete mode 100644 "14 \346\235\216\344\277\212\345\205\264/20230926 \350\247\206\345\233\276.md" delete mode 100644 "14 \346\235\216\344\277\212\345\205\264/image-20230907093523576.png" delete mode 100644 "16 \351\230\231\350\213\217\346\226\207/20230913\345\214\273\351\231\242\347\263\273\347\273\237.md" delete mode 100644 "16 \351\230\231\350\213\217\346\226\207/20230922\344\275\234\344\270\232.md" delete mode 100644 "16 \351\230\231\350\213\217\346\226\207/RBAC.md" delete mode 100644 "16 \351\230\231\350\213\217\346\226\207/sku\344\275\234\344\270\232.md" delete mode 100644 "16 \351\230\231\350\213\217\346\226\207/\345\260\217\346\265\213.md" delete mode 100644 "16 \351\230\231\350\213\217\346\226\207/\346\225\260\346\215\256\345\272\223\350\214\203\345\274\217.md" delete mode 100644 "16 \351\230\231\350\213\217\346\226\207/\346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\351\242\204\344\271\240.md" delete mode 100644 "16 \351\230\231\350\213\217\346\226\207/\347\254\254\344\272\214\346\254\241\347\254\224\350\256\260\345\222\214\344\275\234\344\270\232.md" delete mode 100644 "16 \351\230\231\350\213\217\346\226\207/\347\272\246\346\235\237\345\222\214\350\247\206\345\233\276.md" delete mode 100644 "16 \351\230\231\350\213\217\346\226\207/\347\273\203\344\271\240.md" delete mode 100644 "17 \345\221\250\345\257\214/20230905\347\254\254\344\270\200\345\244\251\347\254\224\350\256\260.md" delete mode 100644 "17 \345\221\250\345\257\214/20230905\347\254\254\344\272\214\345\244\251\347\254\224\350\256\260.md" delete mode 100644 "17 \345\221\250\345\257\214/20230906\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.md" delete mode 100644 "17 \345\221\250\345\257\214/20230907\347\254\254\344\270\211\345\244\251\347\254\224\350\256\260.md" delete mode 100644 "17 \345\221\250\345\257\214/20230910\347\254\254\345\233\233\345\244\251\347\254\224\350\256\260.md" delete mode 100644 "17 \345\221\250\345\257\214/20230911\345\233\276\344\271\246\351\246\206.md" delete mode 100644 "17 \345\221\250\345\257\214/20230917\346\261\275\350\275\246\344\275\234\344\270\232.md" delete mode 100644 "17 \345\221\250\345\257\214/20230922\351\242\204\344\271\240.md" delete mode 100644 "17 \345\221\250\345\257\214/20230926\350\247\206\345\233\276\347\254\224\350\256\260.md" delete mode 100644 "17 \345\221\250\345\257\214/RBAC\347\254\224\350\256\260.md" delete mode 100644 "17 \345\221\250\345\257\214/SKU\344\275\234\344\270\232\347\254\224\350\256\260.md" delete mode 100644 "17 \345\221\250\345\257\214/mysql\345\244\215\344\271\240.md" delete mode 100644 "17 \345\221\250\345\257\214/\345\214\273\351\231\242.md" delete mode 100644 "17 \345\221\250\345\257\214/\347\224\265\345\275\261\346\225\260\346\215\256\345\272\223.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230905\347\254\224\350\256\260.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230906\347\254\224\350\256\260.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230907\344\275\234\344\270\232.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230907\347\254\224\350\256\260.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230911\344\275\234\344\270\232.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230911\347\254\224\350\256\260.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230912\344\275\234\344\270\232.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230913\344\275\234\344\270\232.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230913\347\254\224\350\256\260.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230917\344\275\234\344\270\232.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230919\344\275\234\344\270\232.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230920\344\275\234\344\270\232.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230920\347\254\224\350\256\260.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230921\344\275\234\344\270\232.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230921\347\254\224\350\256\260.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230922\347\254\224\350\256\260.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230926\344\275\234\344\270\232.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/20230926\347\254\224\350\256\260.md" delete mode 100644 "18 \345\276\220\346\260\270\346\267\263/\346\227\240\346\240\207\351\242\230.png" delete mode 100644 "19\345\275\255\345\213\207\346\226\214/\347\254\224\350\256\260/RBAC\347\254\224\350\256\260.md" delete mode 100644 "19\345\275\255\345\213\207\346\226\214/\347\254\224\350\256\260/SKU\345\222\214SPU\347\232\204\347\254\224\350\256\260.md" delete mode 100644 "19\345\275\255\345\213\207\346\226\214/\347\254\224\350\256\260/mysql\345\244\215\344\271\240.md" delete mode 100644 "19\345\275\255\345\213\207\346\226\214/\347\254\224\350\256\260/\344\275\234\344\270\232.md" delete mode 100644 "19\345\275\255\345\213\207\346\226\214/\347\254\224\350\256\260/\345\214\273\351\231\242.md" delete mode 100644 "19\345\275\255\345\213\207\346\226\214/\347\254\224\350\256\260/\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" delete mode 100644 "19\345\275\255\345\213\207\346\226\214/\347\254\224\350\256\260/\345\244\247\344\272\214\345\255\246\345\271\264\350\247\204\345\210\222.md" delete mode 100644 "19\345\275\255\345\213\207\346\226\214/\347\254\224\350\256\260/\346\225\260\346\215\256\345\272\223\347\232\204\350\214\203\345\274\217.md" delete mode 100644 "19\345\275\255\345\213\207\346\226\214/\347\254\224\350\256\260/\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" delete mode 100644 "19\345\275\255\345\213\207\346\226\214/\347\254\224\350\256\260/\346\225\260\346\215\256\345\272\223\351\242\204\344\271\240.md" delete mode 100644 "19\345\275\255\345\213\207\346\226\214/\347\254\224\350\256\260/\346\261\275\350\275\246\351\224\200\345\224\256.md" delete mode 100644 "19\345\275\255\345\213\207\346\226\214/\347\254\224\350\256\260/\350\261\206\347\223\243\347\224\265\345\275\261.md" delete mode 100644 "20 \347\237\263\350\211\257\346\266\233/20230905MySQL\351\253\230\347\272\247\347\254\254\344\270\200\346\254\241\347\254\224\350\256\260.md" delete mode 100644 "20 \347\237\263\350\211\257\346\266\233/20230906MySQL\351\253\230\347\272\247\347\254\254\344\272\214\346\254\241\347\254\224\350\256\260.md" delete mode 100644 "20 \347\237\263\350\211\257\346\266\233/20230907 \346\225\260\346\215\256\345\272\223\345\205\263\347\263\273.md" delete mode 100644 "20 \347\237\263\350\211\257\346\266\233/20230907 \346\225\260\346\215\256\345\272\223\350\214\203\345\274\217.md" delete mode 100644 "20 \347\237\263\350\211\257\346\266\233/20230908\347\273\223\346\236\204.md" delete mode 100644 "20 \347\237\263\350\211\257\346\266\233/20230912 \347\224\265\345\275\261\346\236\266\346\236\204\345\233\276.md" delete mode 100644 "20 \347\237\263\350\211\257\346\266\233/20230913 \345\214\273\351\231\242\346\225\260\346\215\256\345\272\223.md" delete mode 100644 "20 \347\237\263\350\211\257\346\266\233/20230915 \346\261\275\350\275\246\345\224\256\345\215\226\347\263\273\347\273\237.md" delete mode 100644 "20 \347\237\263\350\211\257\346\266\233/20230919 \346\237\245\350\257\242\345\244\215\344\271\240\351\242\230.md" delete mode 100644 "20 \347\237\263\350\211\257\346\266\233/20230920 RBAC\347\254\224\350\256\260.md" delete mode 100644 "20 \347\237\263\350\211\257\346\266\233/20230921 SKU\347\254\224\350\256\260.md" delete mode 100644 "20 \347\237\263\350\211\257\346\266\233/20230924 \345\255\230\345\202\250\350\277\207\347\250\213\347\232\204\344\274\240\345\217\202.md" delete mode 100644 "20 \347\237\263\350\211\257\346\266\233/20230926 Check\347\272\246\346\235\237\344\270\216\350\247\206\345\233\276.md" delete mode 100644 "21 \345\215\242\344\272\250\350\200\200/MySQL\347\252\227\345\217\243\345\207\275\346\225\260\347\232\204\344\275\277\347\224\250\345\222\214\350\257\264\346\230\216.md" delete mode 100644 "21 \345\215\242\344\272\250\350\200\200/MySQL\351\253\230\347\272\247\345\207\275\346\225\260\347\232\204\350\256\244\350\257\206\345\222\214\344\275\277\347\224\250.md" delete mode 100644 "21 \345\215\242\344\272\250\350\200\200/SKU.md" delete mode 100644 "21 \345\215\242\344\272\250\350\200\200/er\345\233\276\347\232\204\344\275\277\347\224\250.md" delete mode 100644 "21 \345\215\242\344\272\250\350\200\200/er\347\273\230\345\233\276.jpg" delete mode 100644 "21 \345\215\242\344\272\250\350\200\200/rbac\350\256\276\350\256\241.md" delete mode 100644 "21 \345\215\242\344\272\250\350\200\200/\345\214\273\351\231\242.markdown" delete mode 100644 "21 \345\215\242\344\272\250\350\200\200/\345\233\276\344\271\246\351\246\206.markdown" delete mode 100644 "21 \345\215\242\344\272\250\350\200\200/\345\244\247\344\272\214\345\255\246\344\271\240\347\233\256\346\240\207.md" delete mode 100644 "21 \345\215\242\344\272\250\350\200\200/\345\244\247\347\273\203\344\271\240.md" delete mode 100644 "21 \345\215\242\344\272\250\350\200\200/\346\261\275\350\275\246\351\224\200\345\224\256\344\277\241\346\201\257.markdown" delete mode 100644 "21 \345\215\242\344\272\250\350\200\200/\347\224\265\345\275\261\347\275\221\347\253\231\346\225\260\346\215\256\345\272\223.markdown" delete mode 100644 "22 \350\202\226\351\222\237\345\207\257\351\237\251/20230906 \345\274\200\345\255\246\347\254\254\344\270\200\350\257\276.md" delete mode 100644 "22 \350\202\226\351\222\237\345\207\257\351\237\251/20230906 \346\225\260\346\215\256\345\272\223\350\256\276\350\256\241 E-R\345\233\276.md" delete mode 100644 "22 \350\202\226\351\222\237\345\207\257\351\237\251/20230907 \346\225\260\346\215\256\345\272\223\347\232\204\350\214\203\345\274\217.md" delete mode 100644 "22 \350\202\226\351\222\237\345\207\257\351\237\251/20230908 \346\225\260\346\215\256\343\200\201\351\200\273\350\276\221\343\200\201\347\211\251\347\220\206\346\250\241\345\236\213.md" delete mode 100644 "22 \350\202\226\351\222\237\345\207\257\351\237\251/20230912 \347\224\265\345\275\261\344\277\241\346\201\257.md" delete mode 100644 "22 \350\202\226\351\222\237\345\207\257\351\237\251/20230914.md" delete mode 100644 "22 \350\202\226\351\222\237\345\207\257\351\237\251/20230915 MySQL\345\244\215\344\271\240.md" delete mode 100644 "22 \350\202\226\351\222\237\345\207\257\351\237\251/20230917 \346\261\275\350\275\246\351\224\200\345\224\256.md" delete mode 100644 "22 \350\202\226\351\222\237\345\207\257\351\237\251/20230920 RBAC.md" delete mode 100644 "22 \350\202\226\351\222\237\345\207\257\351\237\251/20230920 mysql\345\244\215\344\271\240.md" delete mode 100644 "22 \350\202\226\351\222\237\345\207\257\351\237\251/20230921 sku.md" delete mode 100644 "22 \350\202\226\351\222\237\345\207\257\351\237\251/20230924 .md" delete mode 100644 "22 \350\202\226\351\222\237\345\207\257\351\237\251/20230925 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\351\242\204\344\271\240.md" delete mode 100644 "22 \350\202\226\351\222\237\345\207\257\351\237\251/20230926 \350\247\206\345\233\276.md" rename "16 \351\230\231\350\213\217\346\226\207/\347\254\254\344\270\200\346\254\241\347\254\224\350\256\260 .md" => "23 \345\220\264\345\277\227\347\277\224/20230905\347\254\224\350\256\260.md" (38%) rename "03 \350\265\226\345\277\203\345\246\215/20230906 \346\225\260\346\215\256\345\272\223\345\205\263\347\263\273.md" => "23 \345\220\264\345\277\227\347\277\224/20230906\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" (58%) create mode 100644 "23 \345\220\264\345\277\227\347\277\224/20230907\350\214\203\345\274\217.md" rename "16 \351\230\231\350\213\217\346\226\207/\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" => "23 \345\220\264\345\277\227\347\277\224/20230908\346\246\202\345\277\265\345\233\276.md" (91%) rename "16 \351\230\231\350\213\217\346\226\207/20230912\347\224\265\345\275\261\347\263\273\347\273\237er\345\233\276.md" => "23 \345\220\264\345\277\227\347\277\224/20230912\347\224\265\345\275\261.md" (94%) rename "03 \350\265\226\345\277\203\345\246\215/20230913 \345\214\273\351\231\242.md" => "23 \345\220\264\345\277\227\347\277\224/20230913\345\214\273\351\231\242.md" (98%) rename "03 \350\265\226\345\277\203\345\246\215/20230915 \346\261\275\350\275\246\351\224\200\345\224\256.md" => "23 \345\220\264\345\277\227\347\277\224/20230915\346\261\275\350\275\246.md" (98%) rename "14 \346\235\216\344\277\212\345\205\264/20230919 Mysql\345\244\215\344\271\240.md" => "23 \345\220\264\345\277\227\347\277\224/20230919\345\244\215\344\271\240.md" (99%) rename "14 \346\235\216\344\277\212\345\205\264/20230920 RBAC\346\225\260\346\215\256\346\250\241\345\236\213.md" => "23 \345\220\264\345\277\227\347\277\224/20230920RABC.md" (92%) rename "14 \346\235\216\344\277\212\345\205\264/20230921 STUSKU.md" => "23 \345\220\264\345\277\227\347\277\224/20230921SKU.md" (91%) rename "14 \346\235\216\344\277\212\345\205\264/20230924 \351\242\204\344\271\240.md" => "23 \345\220\264\345\277\227\347\277\224/20230922\346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\351\242\204\344\271\240.md" (77%) rename "03 \350\265\226\345\277\203\345\246\215/20230926 \350\247\206\345\233\276.md" => "23 \345\220\264\345\277\227\347\277\224/20230926\350\247\206\345\233\276.md" (99%) rename "54 \345\217\266\345\255\220\350\261\252/9.26\344\275\234\344\270\232.md" => "23 \345\220\264\345\277\227\347\277\224/20230927\347\254\224\350\256\260\345\207\275\346\225\260.md" (91%) delete mode 100644 "25\351\231\210\344\275\263\347\202\234/9.13 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" delete mode 100644 "25\351\231\210\344\275\263\347\202\234/9.17\344\275\234\344\270\232.md" delete mode 100644 "25\351\231\210\344\275\263\347\202\234/9.18\347\273\203\344\271\240.md" delete mode 100644 "25\351\231\210\344\275\263\347\202\234/9.21\347\273\203\344\271\240.md" delete mode 100644 "25\351\231\210\344\275\263\347\202\234/9.22\344\275\234\344\270\232\347\273\203\344\271\240.md" delete mode 100644 "25\351\231\210\344\275\263\347\202\234/9.22\347\254\224\350\256\260.md" delete mode 100644 "25\351\231\210\344\275\263\347\202\234/9.26\344\275\234\344\270\232.md" delete mode 100644 "25\351\231\210\344\275\263\347\202\234/9.6\345\274\200\345\255\246\347\254\224\350\256\260.md" delete mode 100644 "25\351\231\210\344\275\263\347\202\234/9.7\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232\347\254\224\350\256\260.md" delete mode 100644 "25\351\231\210\344\275\263\347\202\234/9.7\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.md" delete mode 100644 "25\351\231\210\344\275\263\347\202\234/9\346\234\21012\346\227\245\344\275\234\344\270\232.md" delete mode 100644 "25\351\231\210\344\275\263\347\202\234/\344\271\235\346\234\210\344\272\214\345\215\201\344\270\200\344\275\234\344\270\232.md" delete mode 100644 "25\351\231\210\344\275\263\347\202\234/\345\233\276\344\271\246\351\246\206\346\225\260\346\215\256\345\272\223.md" delete mode 100644 "27 \346\235\250\346\242\205/MySQL\347\232\204\345\244\215\344\271\240.txt" delete mode 100644 "27 \346\235\250\346\242\205/RBAC.txt" delete mode 100644 "27 \346\235\250\346\242\205/sku\346\211\213\346\234\272.md" delete mode 100644 "27 \346\235\250\346\242\205/\345\214\273\351\231\242.md." delete mode 100644 "27 \346\235\250\346\242\205/\345\233\276\344\271\246\351\246\206\347\256\241\347\220\206\347\263\273\347\273\237.txt" delete mode 100644 "27 \346\235\250\346\242\205/\345\255\246\346\240\241\347\263\273\347\273\237.md" delete mode 100644 "27 \346\235\250\346\242\205/\345\275\261\350\247\206\347\256\241\347\220\206\347\263\273\347\273\237.md" delete mode 100644 "27 \346\235\250\346\242\205/\346\261\275\350\275\246\351\224\200\345\224\256.md" delete mode 100644 "27 \346\235\250\346\242\205/\347\224\265\345\275\261\344\277\241\346\201\257\347\256\241\347\220\206\357\274\210pdm\357\274\211.jpg" delete mode 100644 "27 \346\235\250\346\242\205/\347\224\265\345\275\261\347\256\241\347\220\206\344\277\241\346\201\257\350\241\250.jpg" delete mode 100644 "27 \346\235\250\346\242\205/\347\224\265\345\275\261\347\256\241\347\220\206\347\263\273\347\273\237\357\274\210ldm\357\274\211.jpg" delete mode 100644 "27 \346\235\250\346\242\205/\347\254\254\344\272\214\350\212\202\350\257\276\347\254\224\350\256\260.md" delete mode 100644 "27 \346\235\250\346\242\205/\350\247\206\345\233\276.md" delete mode 100644 "27 \346\235\250\346\242\205/\350\264\251\345\215\226\346\260\264\346\235\257.md" delete mode 100644 "29 \350\267\257\347\216\262/20230905 \345\274\200\345\255\246\347\254\254\344\270\200\350\257\276.md" delete mode 100644 "29 \350\267\257\347\216\262/20230906 \345\244\264\350\204\221\351\243\216\346\232\264.md" delete mode 100644 "29 \350\267\257\347\216\262/20230907 \345\244\264\350\204\221\351\243\216\346\232\264\346\234\200\347\273\210\347\211\210.md" delete mode 100644 "29 \350\267\257\347\216\262/20230908 \345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" delete mode 100644 "29 \350\267\257\347\216\262/20230912 \347\224\265\345\275\261\347\256\241\347\220\206\347\263\273\347\273\237.md" delete mode 100644 "29 \350\267\257\347\216\262/20230913 \345\214\273\351\231\242.md" delete mode 100644 "29 \350\267\257\347\216\262/20230914 \350\256\262\350\247\243\345\214\273\351\231\242.md" delete mode 100644 "29 \350\267\257\347\216\262/20230915 \346\261\275\350\275\246.md" delete mode 100644 "29 \350\267\257\347\216\262/20230919 \346\237\245\350\257\242\347\273\203\344\271\240.md" delete mode 100644 "29 \350\267\257\347\216\262/20230920 RBAC.md" delete mode 100644 "29 \350\267\257\347\216\262/20230921 sku.md" delete mode 100644 "29 \350\267\257\347\216\262/20230924 \347\254\224\350\256\260.md" delete mode 100644 "29 \350\267\257\347\216\262/20230926 \350\247\206\345\233\276\344\275\234\344\270\232.md" delete mode 100644 "33\351\227\253\347\273\247\345\221\250/20230905\345\244\247\344\272\214\347\254\254\344\270\200\350\212\202\350\257\276\345\255\246\344\271\240\350\247\204\345\210\222.md" delete mode 100644 "33\351\227\253\347\273\247\345\221\250/20230906\344\275\234\344\270\2321.md" delete mode 100644 "33\351\227\253\347\273\247\345\221\250/20230906\347\254\254\344\272\214\350\212\202\350\257\276\350\241\250\347\232\204\345\205\263\347\263\273\345\222\214ER\345\233\276.md" delete mode 100644 "33\351\227\253\347\273\247\345\221\250/20230921\344\275\234\344\270\232\347\254\224\350\256\260.md" delete mode 100644 "33\351\227\253\347\273\247\345\221\250/20230921\347\254\224\350\256\260\344\270\216\344\275\234\344\270\232.md" delete mode 100644 "33\351\227\253\347\273\247\345\221\250/20230922\344\275\234\344\270\232.md" delete mode 100644 "33\351\227\253\347\273\247\345\221\250/20230927\346\243\200\346\237\245\347\272\246\346\235\237\345\222\214\350\247\206\345\233\276.md" delete mode 100644 "33\351\227\253\347\273\247\345\221\250/\344\270\264\346\227\266\347\273\203\344\271\240\344\270\216\344\275\234\344\270\232.md" delete mode 100644 "33\351\227\253\347\273\247\345\221\250/\345\214\273\351\231\242\347\263\273\347\273\237.md" delete mode 100644 "33\351\227\253\347\273\247\345\221\250/\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" delete mode 100644 "33\351\227\253\347\273\247\345\221\250/\346\261\275\350\275\246\351\224\200\345\224\256\347\263\273\347\273\237.md" delete mode 100644 "33\351\227\253\347\273\247\345\221\250/\347\224\265\345\275\261\347\263\273\347\273\237.md" delete mode 100644 "33\351\227\253\347\273\247\345\221\250/\347\254\254\344\270\211\350\212\202\350\257\276\347\254\224\350\256\260.md" delete mode 100644 "33\351\227\253\347\273\247\345\221\250/\347\254\254\345\233\233\350\212\202\350\257\276\347\254\224\350\256\260.md" delete mode 100644 "34 \345\210\230\346\231\272\347\277\224/.keep" delete mode 100644 "34 \345\210\230\346\231\272\347\277\224/20230922 \350\257\276\345\240\202\347\273\203\344\271\240.md" delete mode 100644 "34 \345\210\230\346\231\272\347\277\224/mysql\345\244\215\344\271\240.md" delete mode 100644 "34 \345\210\230\346\231\272\347\277\224/rbac.md" delete mode 100644 "34 \345\210\230\346\231\272\347\277\224/spu,sku.md" delete mode 100644 "34 \345\210\230\346\231\272\347\277\224/\345\214\273\351\231\242.md" delete mode 100644 "34 \345\210\230\346\231\272\347\277\224/\345\233\276\344\271\246\351\246\206.md" delete mode 100644 "34 \345\210\230\346\231\272\347\277\224/\345\233\276\344\271\246\351\246\206\345\256\214\346\225\264.md" delete mode 100644 "34 \345\210\230\346\231\272\347\277\224/\345\233\276\344\274\240\343\200\201CDM.md" delete mode 100644 "34 \345\210\230\346\231\272\347\277\224/\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241\344\275\234\344\270\232\345\222\214\347\254\224\350\256\260.md" delete mode 100644 "34 \345\210\230\346\231\272\347\277\224/\346\261\275\350\275\246.md" delete mode 100644 "34 \345\210\230\346\231\272\347\277\224/\347\254\254\344\270\200\350\257\276.md" delete mode 100644 "34 \345\210\230\346\231\272\347\277\224/\350\214\203\345\274\217.md" delete mode 100644 "34 \345\210\230\346\231\272\347\277\224/\350\247\206\345\233\276.md" delete mode 100644 "37 \346\217\255\351\230\263\344\270\275/20230906 \347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.md" delete mode 100644 "37 \346\217\255\351\230\263\344\270\275/20230907 \345\244\264\350\204\221\351\243\216\346\232\264.txt" delete mode 100644 "37 \346\217\255\351\230\263\344\270\275/20230908 PowerDesigner\347\254\224\350\256\260.txt" delete mode 100644 "37 \346\217\255\351\230\263\344\270\275/20230909 \345\233\276\344\271\246\351\246\206\347\263\273\347\273\237.md" delete mode 100644 "37 \346\217\255\351\230\263\344\270\275/20230912 \347\224\265\345\275\261\347\263\273\347\273\237.md" delete mode 100644 "37 \346\217\255\351\230\263\344\270\275/20230913 \345\214\273\351\231\242\347\256\241\347\220\206\347\263\273\347\273\237.md" delete mode 100644 "37 \346\217\255\351\230\263\344\270\275/20230915 \346\261\275\350\275\246\351\224\200\345\224\256\347\263\273\347\273\237.md" delete mode 100644 "37 \346\217\255\351\230\263\344\270\275/20230919 \346\237\245\350\257\242\347\273\203\344\271\240.md" delete mode 100644 "37 \346\217\255\351\230\263\344\270\275/20230920 RBAC.md" delete mode 100644 "37 \346\217\255\351\230\263\344\270\275/20230921 sku\347\254\224\350\256\260.txt" delete mode 100644 "37 \346\217\255\351\230\263\344\270\275/20230921 spu\345\222\214sku.md" delete mode 100644 "37 \346\217\255\351\230\263\344\270\275/20230922 \351\242\204\344\271\240\344\272\213\345\212\241\345\222\214\350\247\206\345\233\276.txt" delete mode 100644 "37 \346\217\255\351\230\263\344\270\275/20230926 \350\247\206\345\233\276\347\254\224\350\256\260.txt" delete mode 100644 "37 \346\217\255\351\230\263\344\270\275/20230926 \350\247\206\345\233\276\347\273\203\344\271\240.md" delete mode 100644 "39 \351\203\255\346\202\246\350\277\216/20230905 \345\274\200\345\255\246\347\254\254\344\270\200\350\257\276.md" delete mode 100644 "39 \351\203\255\346\202\246\350\277\216/20230906 \346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" delete mode 100644 "39 \351\203\255\346\202\246\350\277\216/20230907 \346\225\260\346\215\256\345\272\223\350\256\276\350\256\2412.md" delete mode 100644 "39 \351\203\255\346\202\246\350\277\216/20230908 \345\233\276\344\271\246\351\246\206\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241\344\275\234\344\270\232.md" delete mode 100644 "39 \351\203\255\346\202\246\350\277\216/20230912 \350\261\206\347\223\243\347\224\265\345\275\261\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241\344\275\234\344\270\232.md" delete mode 100644 "39 \351\203\255\346\202\246\350\277\216/20230913 \345\214\273\351\231\242\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241\344\275\234\344\270\232.md" delete mode 100644 "39 \351\203\255\346\202\246\350\277\216/20230915 \346\261\275\350\275\246\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241\344\275\234\344\270\232.md" delete mode 100644 "39 \351\203\255\346\202\246\350\277\216/20230919 \344\275\234\344\270\232.md" delete mode 100644 "39 \351\203\255\346\202\246\350\277\216/20230920 RBAC.md" delete mode 100644 "39 \351\203\255\346\202\246\350\277\216/20230921 sku\344\272\254\344\270\234\344\275\234\344\270\232.md" delete mode 100644 "39 \351\203\255\346\202\246\350\277\216/20230924 \344\275\234\344\270\232.md" delete mode 100644 "39 \351\203\255\346\202\246\350\277\216/20230926 \350\247\206\345\233\276\344\275\234\344\270\232.md" delete mode 100644 "40 \346\227\266\345\255\246\345\256\211/20230917\346\261\275\350\275\246\344\275\234\344\270\232.md" delete mode 100644 "40 \346\227\266\345\255\246\345\256\211/20230920\347\254\224\350\256\260.md" delete mode 100644 "40 \346\227\266\345\255\246\345\256\211/20230921.md" delete mode 100644 "40 \346\227\266\345\255\246\345\256\211/\344\275\234\344\270\232.md" delete mode 100644 "40 \346\227\266\345\255\246\345\256\211/\345\214\273\351\231\242.md" delete mode 100644 "40 \346\227\266\345\255\246\345\256\211/\345\233\276\344\271\246\351\246\206\344\275\234\344\270\232.md" delete mode 100644 "40 \346\227\266\345\255\246\345\256\211/\345\244\215\344\271\240or\351\242\204\344\271\240.md" delete mode 100644 "40 \346\227\266\345\255\246\345\256\211/\346\237\245\350\257\242.md" delete mode 100644 "40 \346\227\266\345\255\246\345\256\211/\347\224\265\345\275\261\344\277\241\346\201\257.md" delete mode 100644 "40 \346\227\266\345\255\246\345\256\211/\347\254\224\350\256\2601.md" delete mode 100644 "40 \346\227\266\345\255\246\345\256\211/\347\254\224\350\256\2602.md" delete mode 100644 "40 \346\227\266\345\255\246\345\256\211/\347\254\224\350\256\2603.md" delete mode 100644 "40 \346\227\266\345\255\246\345\256\211/\347\254\224\350\256\2604.md" delete mode 100644 "40 \346\227\266\345\255\246\345\256\211/\350\247\206\345\233\276.md" delete mode 100644 "41 \345\221\250\344\272\232\350\276\211/.keep" delete mode 100644 "41 \345\221\250\344\272\232\350\276\211/20230907\346\225\260\346\215\256\345\272\223\350\214\203\345\274\217.md" delete mode 100644 "41 \345\221\250\344\272\232\350\276\211/20230910\345\233\276\344\271\246\351\246\206.md" delete mode 100644 "41 \345\221\250\344\272\232\350\276\211/20230913 \347\224\265\345\275\261\347\256\241\347\220\206.md" delete mode 100644 "41 \345\221\250\344\272\232\350\276\211/20230914\345\214\273\347\224\237\357\274\214\347\227\205\344\272\272\344\270\216\350\215\257\345\223\201.md" delete mode 100644 "41 \345\221\250\344\272\232\350\276\211/20230915\346\261\275\350\275\246.md" delete mode 100644 "41 \345\221\250\344\272\232\350\276\211/20230920mysql\345\244\215\344\271\240.md" delete mode 100644 "41 \345\221\250\344\272\232\350\276\211/20230921squ,sku.md" delete mode 100644 "41 \345\221\250\344\272\232\350\276\211/20230921\346\235\203\351\231\220.md" delete mode 100644 "41 \345\221\250\344\272\232\350\276\211/20230924\350\257\276\345\240\202\347\273\203\344\271\240.md" delete mode 100644 "41 \345\221\250\344\272\232\350\276\211/20230926\350\247\206\345\233\276.md" delete mode 100644 "41 \345\221\250\344\272\232\350\276\211/\345\274\200\345\255\246\347\254\254\344\270\200\350\257\276\345\277\203\345\276\227.md" delete mode 100644 "41 \345\221\250\344\272\232\350\276\211/\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" delete mode 100644 "42 \346\226\271\345\242\236\345\205\264/\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" delete mode 100644 "42 \346\226\271\345\242\236\345\205\264/\346\225\260\346\215\256\345\272\223\350\214\203\345\274\217.md" delete mode 100644 "42 \346\226\271\345\242\236\345\205\264/\346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\347\254\254\344\270\200\350\257\276\347\254\224\350\256\260.md" delete mode 100644 "42 \346\226\271\345\242\236\345\205\264/\346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\347\254\254\344\272\214\350\257\276\347\254\224\350\256\260.md" delete mode 100644 "43 \351\237\251\346\226\207\346\235\260/NB.sql" delete mode 100644 "43 \351\237\251\346\226\207\346\235\260/RBAC(\347\254\224\350\256\260).md" delete mode 100644 "43 \351\237\251\346\226\207\346\235\260/mysql\345\244\215\344\271\240\344\275\234\344\270\232.md" delete mode 100644 "43 \351\237\251\346\226\207\346\235\260/sku\344\275\234\344\270\232.md" delete mode 100644 "43 \351\237\251\346\226\207\346\235\260/sku\357\274\210\350\207\252\350\277\236\346\216\245\357\274\211.md" delete mode 100644 "43 \351\237\251\346\226\207\346\235\260/\345\214\273\351\231\242\347\263\273\347\273\237.md" delete mode 100644 "43 \351\237\251\346\226\207\346\235\260/\345\244\247\344\272\214\347\254\254\344\270\200\350\212\202\344\270\223\344\270\232\350\257\276\345\277\203\345\276\227.md" delete mode 100644 "43 \351\237\251\346\226\207\346\235\260/\345\245\245\347\211\271\346\233\274\346\211\223\346\200\252\345\205\275.md" delete mode 100644 "43 \351\237\251\346\226\207\346\235\260/\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241\346\255\245\351\252\244\347\254\224\350\256\260.md" delete mode 100644 "43 \351\237\251\346\226\207\346\235\260/\346\265\213\350\257\225\357\274\210\346\261\275\350\275\246\357\274\211.md" delete mode 100644 "43 \351\237\251\346\226\207\346\235\260/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.md" delete mode 100644 "43 \351\237\251\346\226\207\346\235\260/\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232\357\274\210\347\224\265\345\275\261\347\263\273\347\273\237\357\274\211.md" delete mode 100644 "43 \351\237\251\346\226\207\346\235\260/\350\247\206\345\233\276\350\257\255\346\263\225\357\274\210\345\242\236\345\210\240\346\224\271\346\237\245\357\274\211.md" delete mode 100644 "44\344\273\243\347\221\236/20230906\345\274\200\345\255\246\347\254\254\344\270\200\350\257\276\347\254\224\350\256\260.md" delete mode 100644 "44\344\273\243\347\221\236/20230907\344\275\234\344\270\232.md" delete mode 100644 "44\344\273\243\347\221\236/20230907\346\227\245\344\275\234\344\270\232.md" delete mode 100644 "44\344\273\243\347\221\236/20230910\344\275\234\344\270\232.md" delete mode 100644 "44\344\273\243\347\221\236/20230912\344\275\234\344\270\232.md" delete mode 100644 "44\344\273\243\347\221\236/20230914\344\275\234\344\270\232.md" delete mode 100644 "44\344\273\243\347\221\236/20230916.md" delete mode 100644 "44\344\273\243\347\221\236/20230917\344\275\234\344\270\232.md" delete mode 100644 "44\344\273\243\347\221\236/20230920\344\275\234\344\270\232.md" delete mode 100644 "44\344\273\243\347\221\236/20230921\344\275\234\344\270\232 (2).md" delete mode 100644 "44\344\273\243\347\221\236/20230921\344\275\234\344\270\232.md" delete mode 100644 "44\344\273\243\347\221\236/20230922\344\275\234\344\270\232.md" delete mode 100644 "44\344\273\243\347\221\236/20230926\350\247\206\345\233\276.md" delete mode 100644 "47 \346\250\212\345\260\217\351\203\255/20230905 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\347\254\254\344\270\200\346\254\241\350\257\276\345\240\202\347\254\224\350\256\260.md" delete mode 100644 "47 \346\250\212\345\260\217\351\203\255/20230906 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\347\254\254\344\272\214\346\254\241\350\257\276\345\240\202\347\254\224\350\256\260.md" delete mode 100644 "47 \346\250\212\345\260\217\351\203\255/20230907 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\347\254\254\344\270\211\346\254\241\350\257\276\345\240\202\347\254\224\350\256\260.md" delete mode 100644 "47 \346\250\212\345\260\217\351\203\255/20230908 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\347\254\254\345\233\233\346\254\241\350\257\276\345\240\202\347\254\224\350\256\260.md" delete mode 100644 "47 \346\250\212\345\260\217\351\203\255/20230912 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\344\275\234\344\270\232.md" delete mode 100644 "47 \346\250\212\345\260\217\351\203\255/20230913 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\344\275\234\344\270\232.md" delete mode 100644 "47 \346\250\212\345\260\217\351\203\255/20230914 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\347\254\254\344\272\224\346\254\241\350\257\276\345\240\202\347\254\224\350\256\260.md" delete mode 100644 "47 \346\250\212\345\260\217\351\203\255/20230915 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\344\275\234\344\270\232.md" delete mode 100644 "47 \346\250\212\345\260\217\351\203\255/20230919 MySQL\345\244\215\344\271\240\351\242\230.md" delete mode 100644 "47 \346\250\212\345\260\217\351\203\255/20230920 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\347\254\254\345\205\255\346\254\241\350\257\276\345\240\202\347\254\224\350\256\260.md" delete mode 100644 "47 \346\250\212\345\260\217\351\203\255/20230921 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\344\275\234\344\270\232\344\270\216\347\254\224\350\256\260.md" delete mode 100644 "47 \346\250\212\345\260\217\351\203\255/20230922 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\351\242\204\344\271\240.md" delete mode 100644 "47 \346\250\212\345\260\217\351\203\255/20230926 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\350\247\206\345\233\276.md" delete mode 100644 "48 \351\251\254\345\256\217\350\276\276/20230913 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" delete mode 100644 "48 \351\251\254\345\256\217\350\276\276/9\346\234\21011\346\227\245.md" delete mode 100644 "48 \351\251\254\345\256\217\350\276\276/9\346\234\2106\346\227\245\344\275\234\344\270\232.md" delete mode 100644 "48 \351\251\254\345\256\217\350\276\276/9\346\234\2107\346\227\245\344\275\234\344\270\232.md" delete mode 100644 "48 \351\251\254\345\256\217\350\276\276/\344\271\235\346\234\21012\346\227\245.md" delete mode 100644 "48 \351\251\254\345\256\217\350\276\276/\344\271\235\346\234\210\344\272\214\345\215\201\344\270\200.md" delete mode 100644 "48 \351\251\254\345\256\217\350\276\276/\344\271\235\346\234\210\344\272\214\345\215\201\345\205\255\344\275\234\344\270\232.md" delete mode 100644 "48 \351\251\254\345\256\217\350\276\276/\344\275\234\344\270\232.md" delete mode 100644 "48 \351\251\254\345\256\217\350\276\276/\346\261\275\350\275\246\345\224\256\345\215\226.md" delete mode 100644 "48 \351\251\254\345\256\217\350\276\276/\347\254\224\350\256\260.md" delete mode 100644 "48 \351\251\254\345\256\217\350\276\276/\347\254\254\344\270\200\346\254\241\347\254\224\350\256\260.md" delete mode 100644 "48 \351\251\254\345\256\217\350\276\276/\347\254\254\344\271\235\346\254\241\344\275\234\344\270\232.md" delete mode 100644 "48 \351\251\254\345\256\217\350\276\276/\351\242\204\344\271\240\344\275\234\344\270\232.md" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.12 \350\261\206\347\223\243\347\224\265\345\275\261.jpg" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.12\350\261\206\347\223\243\347\224\265\345\275\261\346\225\260\346\215\256\345\272\223.md" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.14 \345\214\273\351\231\242\347\227\205\344\272\272.png" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.14\345\214\273\347\224\237\347\227\205\344\272\272\346\225\260\346\215\256\345\272\223.md" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.15 \346\261\275\350\275\246\351\224\200\345\224\256.jpg" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.15\346\261\275\350\275\246\346\225\260\346\215\256\345\272\223.md" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.19mysql\345\244\215\344\271\240.md" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.20RBAC.jpg" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.20RBAC.md" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.21 ksu\345\222\214psu.png" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.21ksu.md" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.22\351\242\204\344\271\240\351\253\230\347\272\247\346\225\260\346\215\256\345\272\223.md" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.26\350\247\206\345\233\276\347\273\203\344\271\240\351\242\230.md" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.5\347\254\254\344\270\200\350\257\276.md" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.6 \346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.7\346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" delete mode 100644 "49 \346\235\216\350\210\222\346\261\266/9.8\345\233\276\344\271\246\351\246\206\346\225\260\346\215\256\345\272\223.md" delete mode 100644 "50 \345\274\240\350\265\267\347\221\236/20230905 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\347\254\254\344\270\200\350\212\202\350\257\276.md" delete mode 100644 "50 \345\274\240\350\265\267\347\221\236/20230906 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\347\254\254\344\272\214\350\212\202\350\257\276 E-R\345\233\276.md" delete mode 100644 "50 \345\274\240\350\265\267\347\221\236/20230907 \346\225\260\346\215\256\345\272\223\350\214\203\345\274\217.md" delete mode 100644 "50 \345\274\240\350\265\267\347\221\236/20230909 \345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" delete mode 100644 "50 \345\274\240\350\265\267\347\221\236/20230913 \345\275\261\350\247\206.md" delete mode 100644 "50 \345\274\240\350\265\267\347\221\236/20230914 \345\214\273\351\231\242\347\256\241\347\220\206.md" delete mode 100644 "50 \345\274\240\350\265\267\347\221\236/20230915 \346\261\275\350\275\246\347\256\241\347\220\206.md" delete mode 100644 "50 \345\274\240\350\265\267\347\221\236/20230919 \346\237\245\350\257\242\347\233\270\345\205\263\344\271\240\351\242\230.md" delete mode 100644 "50 \345\274\240\350\265\267\347\221\236/20230920 RBAC \347\254\254\344\270\200\350\257\276.md" delete mode 100644 "50 \345\274\240\350\265\267\347\221\236/20230921 \346\211\213\346\234\272.md" delete mode 100644 "50 \345\274\240\350\265\267\347\221\236/20230922 \346\225\260\346\215\256\345\272\223\351\242\204\344\271\240.md" delete mode 100644 "50 \345\274\240\350\265\267\347\221\236/20230922 \346\225\260\346\215\256\345\272\223\345\244\215\344\271\240.md" delete mode 100644 "50 \345\274\240\350\265\267\347\221\236/20230926 \350\247\206\345\233\276\344\275\234\344\270\232.md" delete mode 100644 "51 \347\250\213\350\210\234/20230905.md" delete mode 100644 "51 \347\250\213\350\210\234/20230906.md" delete mode 100644 "51 \347\250\213\350\210\234/20230907.md" delete mode 100644 "51 \347\250\213\350\210\234/20230908.md" delete mode 100644 "51 \347\250\213\350\210\234/20230912.md" delete mode 100644 "51 \347\250\213\350\210\234/20230913.md" delete mode 100644 "51 \347\250\213\350\210\234/20230914.md" delete mode 100644 "51 \347\250\213\350\210\234/20230915.md" delete mode 100644 "51 \347\250\213\350\210\234/20230919.md" delete mode 100644 "51 \347\250\213\350\210\234/20230920.md" delete mode 100644 "51 \347\250\213\350\210\234/20230921.md" delete mode 100644 "51 \347\250\213\350\210\234/20230922.md" delete mode 100644 "51 \347\250\213\350\210\234/20230926.md" delete mode 100644 "52\345\217\267 \347\250\213\345\270\205\347\277\224/123.sql" delete mode 100644 "52\345\217\267 \347\250\213\345\270\205\347\277\224/9.19.md" delete mode 100644 "52\345\217\267 \347\250\213\345\270\205\347\277\224/9.20.md" delete mode 100644 "52\345\217\267 \347\250\213\345\270\205\347\277\224/9\346\234\21012\346\227\245\344\275\234\344\270\232.md" delete mode 100644 "52\345\217\267 \347\250\213\345\270\205\347\277\224/9\346\234\21013\346\227\245\344\275\234\344\270\232.md" delete mode 100644 "52\345\217\267 \347\250\213\345\270\205\347\277\224/9\346\234\21015\346\227\245\344\275\234\344\270\232.md" delete mode 100644 "52\345\217\267 \347\250\213\345\270\205\347\277\224/9\346\234\21021\346\227\245\344\275\234\344\270\232.md" delete mode 100644 "52\345\217\267 \347\250\213\345\270\205\347\277\224/9\346\234\21022\346\227\245\344\275\234\344\270\232.md" delete mode 100644 "52\345\217\267 \347\250\213\345\270\205\347\277\224/9\346\234\21026\346\227\245\344\275\234\344\270\232.md" delete mode 100644 "52\345\217\267 \347\250\213\345\270\205\347\277\224/crebas.sql" delete mode 100644 "52\345\217\267 \347\250\213\345\270\205\347\277\224/\344\275\234\344\270\2321.md" delete mode 100644 "52\345\217\267 \347\250\213\345\270\205\347\277\224/\344\275\234\344\270\2324.md" delete mode 100644 "52\345\217\267 \347\250\213\345\270\205\347\277\224/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.md" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230905 \347\254\254\344\270\200\346\254\241\344\275\234\344\270\232 \346\226\260\345\255\246\346\234\237\345\277\203\345\276\227/2023-9-5 \347\254\254\344\270\200\346\254\241\344\275\234\344\270\232 \346\226\260\345\255\246\346\234\237\345\277\203\345\276\227.md" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230906 \347\254\254\344\272\214\346\254\241\344\275\234\344\270\232 \345\205\263\347\263\273\345\236\213\345\233\276 \345\244\264\350\204\221\351\243\216\346\232\264 \351\231\242\347\263\273-\344\270\223\344\270\232/2023-9-6 \347\254\254\344\272\214\346\254\241\344\275\234\344\270\232 \345\205\263\347\263\273\345\236\213\345\233\276 \345\244\264\350\204\221\351\243\216\346\232\264 \351\231\242\347\263\273-\344\270\223\344\270\232....md" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230906 \347\254\254\344\272\214\346\254\241\344\275\234\344\270\232 \345\205\263\347\263\273\345\236\213\345\233\276 \345\244\264\350\204\221\351\243\216\346\232\264 \351\231\242\347\263\273-\344\270\223\344\270\232/\345\267\245\344\275\234\347\260\2771.xlsx" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230906 \347\254\254\344\272\214\346\254\241\344\275\234\344\270\232 \345\205\263\347\263\273\345\236\213\345\233\276 \345\244\264\350\204\221\351\243\216\346\232\264 \351\231\242\347\263\273-\344\270\223\344\270\232/\347\273\230\345\233\2761.pdf" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230907 \347\254\254\344\270\211\346\254\241\347\273\204\344\275\234\344\270\232 \344\270\211\345\244\247\350\214\203\345\274\217/\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232 \344\270\211\345\244\247\350\214\203\345\274\217.md" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230908 \347\254\254\345\233\233\346\254\241\344\275\234\344\270\232 \344\275\277\347\224\250PowerDesigner \350\256\276\350\256\241\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237/code.sql" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230908 \347\254\254\345\233\233\346\254\241\344\275\234\344\270\232 \344\275\277\347\224\250PowerDesigner \350\256\276\350\256\241\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237/\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.cdm" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230908 \347\254\254\345\233\233\346\254\241\344\275\234\344\270\232 \344\275\277\347\224\250PowerDesigner \350\256\276\350\256\241\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237/\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230908 \347\254\254\345\233\233\346\254\241\344\275\234\344\270\232 \344\275\277\347\224\250PowerDesigner \350\256\276\350\256\241\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237/\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.pdf" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230912 \347\254\254\344\272\224\346\254\241\344\275\234\344\270\232 \350\261\206\347\223\243\347\224\265\345\275\261_DB/\350\261\206\347\223\243\347\224\265\345\275\261.md" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230912 \347\254\254\344\272\224\346\254\241\344\275\234\344\270\232 \350\261\206\347\223\243\347\224\265\345\275\261_DB/\350\261\206\347\223\243\347\224\265\345\275\261.pdf" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230912 \347\254\254\344\272\224\346\254\241\344\275\234\344\270\232 \350\261\206\347\223\243\347\224\265\345\275\261_DB/\350\261\206\347\223\243\347\224\265\345\275\261.png" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230912 \347\254\254\344\272\224\346\254\241\344\275\234\344\270\232 \350\261\206\347\223\243\347\224\265\345\275\261_DB/\350\261\206\347\223\243\347\224\265\345\275\261.sql" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230913 \347\254\254\345\205\255\346\254\241\344\275\234\344\270\232 \345\214\273\347\224\237\346\225\260\346\215\256\345\272\223/Doctor.png" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230913 \347\254\254\345\205\255\346\254\241\344\275\234\344\270\232 \345\214\273\347\224\237\346\225\260\346\215\256\345\272\223/\345\214\273\347\224\237.sql" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230913 \347\254\254\345\205\255\346\254\241\344\275\234\344\270\232 \345\214\273\347\224\237\346\225\260\346\215\256\345\272\223/\345\214\273\347\224\237\346\225\260\346\215\256\345\272\223.md" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230915 \347\254\254\344\270\203\346\254\241\344\275\234\344\270\232 \346\261\275\350\275\246\345\225\206\345\272\227/1.png" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230915 \347\254\254\344\270\203\346\254\241\344\275\234\344\270\232 \346\261\275\350\275\246\345\225\206\345\272\227/ConceptualDataModel_1.cdm" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230915 \347\254\254\344\270\203\346\254\241\344\275\234\344\270\232 \346\261\275\350\275\246\345\225\206\345\272\227/ConceptualDataModel_1.ldm" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230915 \347\254\254\344\270\203\346\254\241\344\275\234\344\270\232 \346\261\275\350\275\246\345\225\206\345\272\227/ConceptualDataModel_1.pdm" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230915 \347\254\254\344\270\203\346\254\241\344\275\234\344\270\232 \346\261\275\350\275\246\345\225\206\345\272\227/\346\261\275\350\275\246\345\225\206\345\272\227.md" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230915 \347\254\254\344\270\203\346\254\241\344\275\234\344\270\232 \346\261\275\350\275\246\345\225\206\345\272\227/\346\261\275\350\275\246\345\225\206\345\272\227.txt" delete mode 160000 "53 \345\221\250\345\216\232\350\276\260/20230919 \347\254\254\345\205\253\346\254\241\344\275\234\344\270\232 \345\244\215\344\271\240SQL\350\257\255\345\217\245/tesxt010000333" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230919 \347\254\254\345\205\253\346\254\241\344\275\234\344\270\232 \345\244\215\344\271\240SQL\350\257\255\345\217\245/\347\255\224\346\241\210.md" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230920 \347\254\254\344\271\235\346\254\241\344\275\234\344\270\232 RABC/2023\345\271\2649\346\234\21020\346\227\245 RBAC.md" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230921 \347\254\254\345\215\201\346\254\241\344\275\234\344\270\232 SKU/SKU.md" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230922 \347\254\254\345\215\201\344\270\200\346\254\241\344\275\234\344\270\232 CF\346\225\260\346\215\256\345\272\223/CF.md" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230922 \347\254\254\345\215\201\344\270\200\346\254\241\344\275\234\344\270\232 CF\346\225\260\346\215\256\345\272\223/CF.png" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230922 \347\254\254\345\215\201\344\270\200\346\254\241\344\275\234\344\270\232 CF\346\225\260\346\215\256\345\272\223/CF\357\274\232\347\251\277\350\266\212\347\201\253\347\272\277.sql" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230922 \347\254\254\345\215\201\344\270\200\346\254\241\344\275\234\344\270\232 CF\346\225\260\346\215\256\345\272\223/ConceptualDataModel_1.ldm" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230922 \347\254\254\345\215\201\344\270\200\346\254\241\344\275\234\344\270\232 CF\346\225\260\346\215\256\345\272\223/ConceptualDataModel_1.pdm" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230923 \347\254\254\345\215\201\344\272\214\346\254\241\344\275\234\344\270\232 \351\242\204\344\271\240/\350\247\206\345\233\276\344\270\216\345\207\275\346\225\260.md" delete mode 100644 "53 \345\221\250\345\216\232\350\276\260/20230926 \347\254\254\345\215\201\344\270\211\346\254\241\344\275\234\344\270\232 \350\247\206\345\233\276/\350\247\206\345\233\276.md" delete mode 100644 "54 \345\217\266\345\255\220\350\261\252/9.12\344\275\234\344\270\232.md" delete mode 100644 "54 \345\217\266\345\255\220\350\261\252/9.13\344\275\234\344\270\232.md" delete mode 100644 "54 \345\217\266\345\255\220\350\261\252/9.15\344\275\234\344\270\232.md" delete mode 100644 "54 \345\217\266\345\255\220\350\261\252/9.19\344\275\234\344\270\232.md" delete mode 100644 "54 \345\217\266\345\255\220\350\261\252/9.21\344\275\234\344\270\232.md" delete mode 100644 "54 \345\217\266\345\255\220\350\261\252/9.6\344\275\234\344\270\232.md" delete mode 100644 "54 \345\217\266\345\255\220\350\261\252/9.8\344\275\234\344\270\232 .md" delete mode 100644 "54 \345\217\266\345\255\220\350\261\252/\347\254\224\350\256\260 (2).md" delete mode 100644 "54 \345\217\266\345\255\220\350\261\252/\347\254\224\350\256\260 (3).md" delete mode 100644 "54 \345\217\266\345\255\220\350\261\252/\347\254\224\350\256\260.md" delete mode 100644 "54 \345\217\266\345\255\220\350\261\252/\347\254\254\344\270\200\345\244\251\347\254\224\350\256\260.md" delete mode 100644 "54 \345\217\266\345\255\220\350\261\252/\347\254\254\344\270\211\345\244\251\347\254\224\350\256\260.md" delete mode 100644 "54 \345\217\266\345\255\220\350\261\252/\347\254\254\344\272\214\345\244\251\347\254\224\350\256\260.md" delete mode 100644 "54 \345\217\266\345\255\220\350\261\252/\347\254\254\345\205\255\345\244\251\347\254\224\350\256\260.md" delete mode 100644 "54 \345\217\266\345\255\220\350\261\252/\347\254\254\345\233\233\345\244\251\347\254\224\350\256\260.md" delete mode 100644 "56 \350\265\265\346\225\217/20230905 \346\225\260\346\215\256\345\272\223.md" delete mode 100644 "56 \350\265\265\346\225\217/20230905\347\254\224\350\256\260.md" delete mode 100644 "56 \350\265\265\346\225\217/20230906 \346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" delete mode 100644 "56 \350\265\265\346\225\217/20230907 \346\225\260\346\215\256\345\272\223\350\214\203\345\274\217.md" delete mode 100644 "56 \350\265\265\346\225\217/20230910 \345\233\276\344\271\246\351\246\206/20230910 \345\233\276\344\271\246\351\246\206.md" delete mode 100644 "56 \350\265\265\346\225\217/20230910 \345\233\276\344\271\246\351\246\206/ConceptualDataModel_2.ldm" delete mode 100644 "56 \350\265\265\346\225\217/20230914\345\214\273\351\231\242.md" delete mode 100644 "56 \350\265\265\346\225\217/20230917 \350\275\246.md" delete mode 100644 "56 \350\265\265\346\225\217/20230919 \346\237\245\350\257\242.md" delete mode 100644 "56 \350\265\265\346\225\217/20230924 \347\254\224\350\256\260.md" delete mode 100644 "56 \350\265\265\346\225\217/20230926 \350\247\206\345\233\276.md" delete mode 100644 "56 \350\265\265\346\225\217/20290913 \347\224\265\345\275\261.md" delete mode 100644 "56 \350\265\265\346\225\217/RBAC\347\254\224\350\256\260.md" delete mode 100644 "56 \350\265\265\346\225\217/mysql\345\244\215\344\271\240.md" delete mode 100644 "57 \351\273\204\346\265\201\346\266\233/20230905 \345\244\247\344\272\214\350\256\241\345\210\222.md" delete mode 100644 "57 \351\273\204\346\265\201\346\266\233/20230906 \346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" delete mode 100644 "57 \351\273\204\346\265\201\346\266\233/20230907 \346\225\260\346\215\256\345\272\223\350\214\203\345\274\217.md" delete mode 100644 "57 \351\273\204\346\265\201\346\266\233/20230910 \345\233\276\344\271\246\351\246\206\346\225\260\346\215\256\345\272\223.md" delete mode 100644 "57 \351\273\204\346\265\201\346\266\233/20230912 \347\224\265\345\275\261\346\225\260\346\215\256\345\272\223.md" delete mode 100644 "57 \351\273\204\346\265\201\346\266\233/20230913 \345\214\273\351\231\242\346\225\260\346\215\256\345\272\223.md" delete mode 100644 "57 \351\273\204\346\265\201\346\266\233/20230917 \346\261\275\350\275\246\346\225\260\346\215\256\345\272\223.md" delete mode 100644 "57 \351\273\204\346\265\201\346\266\233/20230919 MySQL\345\244\215\344\271\240.md" delete mode 100644 "57 \351\273\204\346\265\201\346\266\233/20230920 RBAC.md" delete mode 100644 "57 \351\273\204\346\265\201\346\266\233/20230921 SKU.md" delete mode 100644 "57 \351\273\204\346\265\201\346\266\233/20230922 SKU\345\244\215\344\271\240\347\214\252\347\214\252.md" delete mode 100644 "57 \351\273\204\346\265\201\346\266\233/20230924 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\351\242\204\344\271\240.md" delete mode 100644 "57 \351\273\204\346\265\201\346\266\233/20230926 check\347\272\246\346\235\237\344\270\216\350\247\206\345\233\276.md" delete mode 100644 "58 \351\231\210\350\203\234\346\235\260/2023-09-05.md" delete mode 100644 "58 \351\231\210\350\203\234\346\235\260/2023-09-06.md" delete mode 100644 "58 \351\231\210\350\203\234\346\235\260/2023-09-07.md" delete mode 100644 "58 \351\231\210\350\203\234\346\235\260/2023-09-08.md" delete mode 100644 "58 \351\231\210\350\203\234\346\235\260/2023-09-12.md" delete mode 100644 "58 \351\231\210\350\203\234\346\235\260/2023-09-13.md" delete mode 100644 "58 \351\231\210\350\203\234\346\235\260/2023-09-14.md" delete mode 100644 "58 \351\231\210\350\203\234\346\235\260/2023-09-15.md" delete mode 100644 "58 \351\231\210\350\203\234\346\235\260/2023-09-19.md" delete mode 100644 "58 \351\231\210\350\203\234\346\235\260/2023-09-20.md" delete mode 100644 "58 \351\231\210\350\203\234\346\235\260/2023-09-21.md" delete mode 100644 "58 \351\231\210\350\203\234\346\235\260/2023-09-22.md" delete mode 100644 "58 \351\231\210\350\203\234\346\235\260/2023-09-26.md" delete mode 100644 "59 \346\236\227\345\263\260/9\346\234\21012\346\227\245.md" delete mode 100644 "59 \346\236\227\345\263\260/9\346\234\21013\346\227\245.md" delete mode 100644 "59 \346\236\227\345\263\260/9\346\234\21014\346\227\245.md" delete mode 100644 "59 \346\236\227\345\263\260/9\346\234\21015\345\217\267.md" delete mode 100644 "59 \346\236\227\345\263\260/9\346\234\21019\346\227\245.md" delete mode 100644 "59 \346\236\227\345\263\260/9\346\234\21020.md" delete mode 100644 "59 \346\236\227\345\263\260/9\346\234\21021\346\227\245.md" delete mode 100644 "59 \346\236\227\345\263\260/9\346\234\21022\346\227\245.md" delete mode 100644 "59 \346\236\227\345\263\260/9\346\234\21026\346\227\245.md" delete mode 100644 "59 \346\236\227\345\263\260/9\346\234\2105\346\227\245.md" delete mode 100644 "59 \346\236\227\345\263\260/9\346\234\2106\346\227\245.md" delete mode 100644 "59 \346\236\227\345\263\260/9\346\234\2107\346\227\245\347\254\224\350\256\260.md" delete mode 100644 "59 \346\236\227\345\263\260/9\346\234\2108\346\227\245\344\275\234\344\270\232.md" delete mode 100644 README.md delete mode 100644 image-20230910234344708.png delete mode 100644 "\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237\346\234\200\347\273\210\347\211\210.md" diff --git "a/01 \351\231\210\346\242\246\346\242\246/20230905.md" "b/01 \351\231\210\346\242\246\346\242\246/20230905.md" deleted file mode 100644 index 1c7ffd7..0000000 --- "a/01 \351\231\210\346\242\246\346\242\246/20230905.md" +++ /dev/null @@ -1,9 +0,0 @@ -2023年09月1日 - -今天是开学的第一天,和往年一样进行了课前演讲。 - -课前演讲结束后,老师大概和我们讲解了这学期要学什么,给我了一点方向,至少不会像之前那样子迷茫。 - -自己给了自己一点小计划,想弄个csdn,因为之前也找学姐了解过这方面。然后计划学习一下阿里云服务器。 - -这大概就是今天的收获吧 \ No newline at end of file diff --git "a/01 \351\231\210\346\242\246\346\242\246/20230906.md" "b/01 \351\231\210\346\242\246\346\242\246/20230906.md" deleted file mode 100644 index 44a07e9..0000000 --- "a/01 \351\231\210\346\242\246\346\242\246/20230906.md" +++ /dev/null @@ -1,103 +0,0 @@ -2023年09月06日 - - - -现在专业课好多,每天都有,已经开始感觉到以后的学习压力了 - -今天学了数据库的设计 - - - -#### 表与表的关系 - -##### 1.多对多 - -这种情况就要引入第三张表(关系表),将前面两个表的主键当作该表的外键 - -##### 2.一对多 - -将一的主键放到多的当外键 - -##### 3.一对一 - -其中任一表中的主键放到另外一个表当外键 - - - -### 数据库设计分析 - -**需求分析**,**概念结构设计**,**逻辑结构设计**,**物理结构设计**,**数据库实施**,**数据库运行和维护**。 - -## 作业 - -```mysql --- 删除数据库 -drop database if exists rj ; - --- 创建 软件工程学院 数据库 -create database if not exists rj charset utf8 ; --- 选中数据库 -use rj ; - --- 创建老师表 -create table teacher ( - - t_id int primary key auto_increment, -- 老师编号 - t_name varchar(10) , -- 老师名字 - t_post varchar(10) -- 岗位 - -); - --- 创建班级表 -create table class ( - - c_id int primary key auto_increment , -- 班级编号 - c_direction varchar(10) , -- 方向 - c_name varchar(10) , -- 班级名称 - t_id int , -- 外键 辅导员编号 - foreign key (t_id) references teacher(t_id) -- 连接老师表 - -); - --- 创建课程表 -create table syllabus ( - - s_count varchar(10) , -- 节次 - s_id int primary key auto_increment , -- 课程编号 - s_time time , -- 时间 - s_week varchar(10) , -- 星期 - s_name varchar(10) , -- 课程名称 - t_id int , -- 外键 课任老师编号 - c_id int , -- 外键 班级编号 - foreign key (t_id) references teacher(t_id) , -- 连接老师表 - foreign key (c_id) references class(c_id) -- 连接班级表 - -); - --- 创建学生表 -create table student ( - - s_id int primary key auto_increment , -- 学生编号 - s_name varchar(10) , -- 学生姓名 - c_id int , -- 外键 班级编号 - foreign key (c_id) references class(c_id) -- 连接班级表 - -); - --- 创建成绩表 -create table score ( - - s_num int , -- 分数 - st_id int , -- 外键 学生编号 - sy_id int , -- 外键 课程编号 - foreign key (sy_id) references syllabus(s_id) ,-- 连接课程表 - foreign key (st_id) references student(s_id) -- 连接学生表 - -); -``` - - - -# 感想 - -今天上课还是犯困了,每次听课都会想睡觉,不知道为什么,那个表格设计还是没有完全设计好,感觉哪里出问题,后来问老师才发现问题的出错地方,今天还是很有收获的!作业有点烦,因为那个软件要钱,我自己下载一个晚上弄不好 \ No newline at end of file diff --git "a/01 \351\231\210\346\242\246\346\242\246/20230906\344\275\234\344\270\232.vsdx" "b/01 \351\231\210\346\242\246\346\242\246/20230906\344\275\234\344\270\232.vsdx" deleted file mode 100644 index 62c535a7a8d5ab9cac5a0e069b05290d2aebe70f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52253 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 diff --git "a/01 \351\231\210\346\242\246\346\242\246/20230907.md" "b/01 \351\231\210\346\242\246\346\242\246/20230907.md" deleted file mode 100644 index 21f61b6..0000000 --- "a/01 \351\231\210\346\242\246\346\242\246/20230907.md" +++ /dev/null @@ -1,103 +0,0 @@ -2023年09月07日 - -#### 数据库的范式 - -##### 1.第一范式:要求字段的内容不可再分割,为的是保证数据的原子性 - -##### 2.第二范式:要求在满足第一范式的基础上,要求非主键字段完全依赖主键(非主键要依赖整个联合主键)而不能只依赖部分 - -##### 3.第三范式:满足第二范式的前提上,要求非主键属性要直接依赖于主键 - -```mysql -drop database if exists mxdx; -create database mxdx charset utf8; -use mxdx; - -#院系表 -create table college ( -col_id int primary key auto_increment, -col_name char(10) -); - -#专业表 -create table major ( -m_id int primary key auto_increment, -m_name char(10), -col_id int, -foreign key (col_id) references college (col_id) -); - -#班级表 -create table clazz ( -cl_id int primary key auto_increment, -cl_name char(10), -m_id int, -foreign key (m_id) references major (m_id) -); - -#课程信息 -create table course ( -cou_id int primary key auto_increment, -cou_name char(10) -); - - - -#教室 -create table classroom ( -cr_id int primary key auto_increment, -cr_address char(10) -); - - - -#课程表 -create table timetable ( -tt_id int primary key auto_increment, -tt_time char(3), -tt_order char(3), -cou_id int, -foreign key (cou_id) references course (cou_id), -cr_id int, -foreign key (cr_id) references classroom (cr_id) -); - - -#教师表 -create table teacher ( -te_id int primary key auto_increment, -te_name char(3), -te_sex char(1), -cou_id int, -foreign key (cou_id) references course (cou_id) -); - - - -#学生表 -create table student ( -st_id int primary key auto_increment, -st_name char(10), -st_sex char(1), -cl_id int, -foreign key (cl_id) references clazz (cl_id), -tt_id int, -foreign key (tt_id) references timetable (tt_id) -); - - -#选修表 -create table choose( -ch_id int primary key auto_increment, -ch_socre char(3), -tt_id int, -foreign key (tt_id) references timetable (tt_id), -st_id int, -foreign key (st_id) references student (st_id) -); - - - - -``` - diff --git "a/01 \351\231\210\346\242\246\346\242\246/20230908.md" "b/01 \351\231\210\346\242\246\346\242\246/20230908.md" deleted file mode 100644 index 4b47fa1..0000000 --- "a/01 \351\231\210\346\242\246\346\242\246/20230908.md" +++ /dev/null @@ -1,242 +0,0 @@ -2023 年09月08日 - - 今天上课进行了本周的专业课复习 - -主要复习了三个方面 - -### 1.表与表的关系 - -1.一对一 - -将任一表的主键放入另外一个表当外键 - -2.一对多 - -将一的主键当多的外键 - -3.多对多 - -引入第三张表(关系表)将前面两个表的主键当该表的外键 - -### 2.E_R图(实体关系图) - -实体、属性、关系 - -### 3.范式 - -1.第一范式 - -要求字段的内容,不可再分割,为的是保证数据的原子性 - -2.第二范式 - -要求在第一范式的基础上,要求非主键字段属性完全依赖主键(非主键要依赖整个联合主键)而不是只依赖部分(联合主键) - -完全函数依赖 -定义:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。 - -比如通过学号->姓名 - -部分函数依赖 -定义:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。 - -需要借用知乎刘慰教师的例子用一下,自己也理解了很长时间。 - -![img](https://img-blog.csdnimg.cn/img_convert/0099ee963b99b2a08f78af70bbcab552.png) - -https://img-blog.csdnimg.cn/img_convert/0099ee963b99b2a08f78af70bbcab552.png - -码用(学号+课程),为什么要加课程呢?因为不同课程成绩是通过学号查不出来的。 - -不过用(学号+课程)当作码是不是有些问题? - -(学号+课程)->姓名,但是学号->姓名 - -(学号+课程)->系名,但是学号->系名 - -(学号+课程)->系主任,但是学号->系主任 - -这个就是部分依赖,说实话我看定义一脸懵逼。 - -要是上面那张表符合第二范式。需要将表拆分为两张表。 - -一张是 学号、课程、分数表 - -另外一张是 学号、姓名、系名、系主任表 - -![img](https://img-blog.csdnimg.cn/img_convert/94a4230520a842bf949eb83d490ec24e.png) - -https://img-blog.csdnimg.cn/img_convert/94a4230520a842bf949eb83d490ec24e.png - -3.第三范式 - -满足第二范式的前提下,要求非主键属性要直接依赖于主键(不能出现传递性依赖,被依赖可单独弄个表) - -传递函数依赖 -设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。 - -https://blog.csdn.net/rl529014/article/details/48391465 - -采用这位大佬的例子 -在关系R(学号 ,宿舍, 费用)中,(学号)->(宿舍),宿舍!=学号,(宿舍)->(费用),费用!=宿舍,所以符合传递函数的要求 - -第三范式 -满足第二范式的条件下不存在传递函数依赖。 - -要满足第三范式,在分成两张表的时候第二张表还是有问题? - -学号->系名,系名->系主任 传递依赖。 - -需要将系名和系主任另外新建一张表。 - -![img](https://img-blog.csdnimg.cn/img_convert/dfe5d8f3dcb41d4e1c7eebd4ee8f3335.png) - -https://img-blog.csdnimg.cn/img_convert/dfe5d8f3dcb41d4e1c7eebd4ee8f3335.png - -总结: -第一范式:简单说 列不能再分 - -第二范式:简单说 建立在第一范式基础上,消除部分依赖 - -第三范式:简单说 建立在第二范式基础上,消除传递依赖。 -———————————————— -版权声明:本文为CSDN博主「萝卜头LJW」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 -原文链接:https://blog.csdn.net/u013164931/article/details/79692402 - - - -### 概念模型 - -常见单词意思: - -seral 自增 - -Charachers 字符串 - -cocle字段名英文 - -integer 数字 - -variable char 可变长度 - -decimal 小数 - -float 整数 - -number 数字 - -#### 概念模型 - -##### 1.创建概念模型(类似ER图) - -以用户为角度(CDM) - -记得弄关系,关系表可以不弄,会自动生成 - -##### 2.转换成逻辑模型 - -以计算机的角度(LDM) - -在CDM中点tools,下一步点GLDM - -##### 3.转换物理模型 - -以数据库角度(PDM) - -tools,下一步点GPDM - -##### 4.生成DDL - -database+generation(记得改成对应mysql的版本,否则报错) - -```mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-11 20:34:27 */ -/*==============================================================*/ - - -drop table if exists Relationship_1; - -drop table if exists book; - -drop table if exists librarian; - -drop table if exists library; - -drop table if exists reader; - -/*==============================================================*/ -/* Table: Relationship_1 */ -/*==============================================================*/ -create table Relationship_1 -( - re_id int not null, - book_id int not null, - primary key (re_id, book_id) -); - -/*==============================================================*/ -/* Table: book */ -/*==============================================================*/ -create table book -( - book_id int not null, - li_id int not null, - book_name char(15) not null, - press char(10) not null, - time national varchar(15) not null, - primary key (book_id) -); - -/*==============================================================*/ -/* Table: librarian */ -/*==============================================================*/ -create table librarian -( - id int not null, - li_id int not null, - name char(5) not null, - primary key (id) -); - -/*==============================================================*/ -/* Table: library */ -/*==============================================================*/ -create table library -( - li_id int not null, - id int not null, - li_name char(10) not null, - li_address char(10) not null, - primary key (li_id) -); - -/*==============================================================*/ -/* Table: reader */ -/*==============================================================*/ -create table reader -( - re_id int not null, - re_name char(4) not null, - primary key (re_id) -); - -alter table Relationship_1 add constraint FK_Relationship_1 foreign key (re_id) - references reader (re_id) on delete restrict on update restrict; - -alter table Relationship_1 add constraint FK_Relationship_2 foreign key (book_id) - references book (book_id) on delete restrict on update restrict; - -alter table book add constraint FK_Relationship_5 foreign key (li_id) - references library (li_id) on delete restrict on update restrict; - -alter table librarian add constraint FK_Relationship_3 foreign key (li_id) - references library (li_id) on delete restrict on update restrict; - -alter table library add constraint FK_Relationship_4 foreign key (id) - references librarian (id) on delete restrict on update restrict; - - -``` - diff --git "a/01 \351\231\210\346\242\246\346\242\246/20230912.md" "b/01 \351\231\210\346\242\246\346\242\246/20230912.md" deleted file mode 100644 index b18b4f3..0000000 --- "a/01 \351\231\210\346\242\246\346\242\246/20230912.md" +++ /dev/null @@ -1,239 +0,0 @@ -2023年09月12日 - -今天复习了一下图书管理系统,但是犯困还是没听见怎么写,然后老师布置了新作业,不知道是不是老师给了一点思路,感觉这个图很快就做出来了。至少不会像图书管理那个一样一塌糊涂,但是还有很多不会的。比如表格关联,数据如何插入,希望明天可以解决今天的问题,那个艺人的表格真的不会插!!!! - - - -后续: - -研究出来了,但是太多了 ,想睡觉,来不及写,这是思路 - -### ![6302eb986871b6640c8e7e7d62277a6](C:\Users\陈梦梦\AppData\Local\Temp\WeChat Files\6302eb986871b6640c8e7e7d62277a6.jpg) - -er图 - -![er](E:\高级数据库\04\er.png) - -~~~mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-12 11:26:47 */ -/*==============================================================*/ -drop database if exists zy; -create database zy charset utf8; -use zy; - -drop table if exists artist; - -drop table if exists country; - -drop table if exists director; - -drop table if exists language; - -drop table if exists movie; - -drop table if exists protagonist; - -drop table if exists rating; - -drop table if exists review; - -drop table if exists scriptwriter; - -drop table if exists type; - -drop table if exists user; - -/*==============================================================*/ -/* Table: artist */ -/*==============================================================*/ -create table artist -( - art_id int not null, - movie_id int not null, - pro_id int not null, - dir_id int not null, - scr_id int not null, - art_name char(10) not null, - art_work char(10) not null, - primary key (art_id) -); - -/*==============================================================*/ -/* Table: country */ -/*==============================================================*/ -create table country -( - cou_id int not null, - movie_id int not null, - cou_name char(20) not null, - primary key (cou_id) -); - - -insert into country values -(1,1,"美国,韩国"); -/*==============================================================*/ -/* Table: director */ -/*==============================================================*/ -create table director -( - dir_id int not null, - dir_name char(10) not null, - primary key (dir_id) -); - -insert into director values -(1,'席琳·宋'); -/*==============================================================*/ -/* Table: language */ -/*==============================================================*/ -create table `language` -( - lang_id int not null, - movie_id int not null, - lang char(10) not null, - primary key (lang_id) -); -insert into `language` values -(1,1,'英语,韩语'); - -/*==============================================================*/ -/* Table: movie */ -/*==============================================================*/ -create table movie -( - movie_id int not null, - movie_name char(20) not null, - release_date date not null, - length int not null, - primary key (movie_id) -); -insert into movie values -(1,'过往人生','2023-01-21',160); - -/*==============================================================*/ -/* Table: protagonist */ -/*==============================================================*/ -create table protagonist -( - pro_id int not null, - pro_name char(10) not null, - primary key (pro_id) -); -insert into protagonist values -(1,' 格蕾塔·李'), -(2,' 刘台午'), -(3,' 约翰·马加罗'), -(4,'文胜雅'), -(5,'尹智慧 '); - -/*==============================================================*/ -/* Table: rating */ -/*==============================================================*/ -create table rating -( - movie_id int not null, - user_id int not null, - user_rating char(10) not null, - primary key (movie_id, user_id) -); - -insert into rating values -(1,1,'90分'); - -/*==============================================================*/ -/* Table: review */ -/*==============================================================*/ -create table review -( - re_id int not null, - user_id int not null, - movie_id int not null, - re_name char(20) not null, - re_text char(100) not null, - re_appraise int not null, - primary key (re_id) -); -insert into review values -(1,1,1,'男人总是留守过去,女人总是面向未来','在柏林的映后采访中,一个记者提了这样一个问题:为什么在这部电影里,男人总是承受、感性、饱含爱的那一方,而女人则冷静、选择活在当下、坚持走在自己的路上',5); - - -/*==============================================================*/ -/* Table: scriptwriter */ -/*==============================================================*/ -create table scriptwriter -( - scr_id int not null, - scr_name char(10) not null, - primary key (scr_id) -); -insert into scriptwriter values -(1,'席琳·宋'); - - -/*==============================================================*/ -/* Table: type */ -/*==============================================================*/ -create table type -( - type_id int not null, - movie_id int not null, - type_name char(10) not null, - primary key (type_id) -); -insert into type values -(1,1,'剧情 / 爱情'); - - -/*==============================================================*/ -/* Table: user */ -/*==============================================================*/ -create table `user` -( - user_id int not null, - user_name char(10) not null, - primary key (user_id) -); -insert into `user` values -(1,'陈梦梦'); - -alter table artist add constraint FK_Relationship_4 foreign key (movie_id) - references movie (movie_id) on delete restrict on update restrict; - -alter table artist add constraint FK_Relationship_5 foreign key (pro_id) - references protagonist (pro_id) on delete restrict on update restrict; - -alter table artist add constraint FK_Relationship_6 foreign key (dir_id) - references director (dir_id) on delete restrict on update restrict; - -alter table artist add constraint FK_Relationship_7 foreign key (scr_id) - references scriptwriter (scr_id) on delete restrict on update restrict; - -alter table country add constraint FK_Relationship_3 foreign key (movie_id) - references movie (movie_id) on delete restrict on update restrict; - -alter table language add constraint FK_Relationship_2 foreign key (movie_id) - references movie (movie_id) on delete restrict on update restrict; - -alter table rating add constraint FK_Relationship_11 foreign key (movie_id) - references movie (movie_id) on delete restrict on update restrict; - -alter table rating add constraint FK_Relationship_12 foreign key (user_id) - references user (user_id) on delete restrict on update restrict; - -alter table review add constraint FK_Relationship_10 foreign key (movie_id) - references movie (movie_id) on delete restrict on update restrict; - -alter table review add constraint FK_Relationship_9 foreign key (user_id) - references user (user_id) on delete restrict on update restrict; - -alter table type add constraint FK_Relationship_1 foreign key (movie_id) - references movie (movie_id) on delete restrict on update restrict; - - -~~~ - - - diff --git "a/01 \351\231\210\346\242\246\346\242\246/20230913.md" "b/01 \351\231\210\346\242\246\346\242\246/20230913.md" deleted file mode 100644 index e704575..0000000 --- "a/01 \351\231\210\346\242\246\346\242\246/20230913.md" +++ /dev/null @@ -1,129 +0,0 @@ -```mysql -drop table if exists docter; - -drop table if exists drug; - -drop table if exists nurse; - -drop table if exists patient; - -drop table if exists shoushushi_id; - -drop table if exists sickbed; - -drop table if exists sickperson; - -/*==============================================================*/ -/* Table: docter */ -/*==============================================================*/ -create table docter -( - docter_id int not null auto_increment, - docter_name varchar(10) not null, - docter_sex char(1) not null, - docter_degree varchar(15) not null, - docter_tel numeric(8,0) not null, - primary key (docter_id) -); - -/*==============================================================*/ -/* Table: drug */ -/*==============================================================*/ -create table drug -( - drug_id int not null auto_increment, - drug_name varchar(20) not null, - drug_medication varchar(50) not null, - drug_price int not null, - primary key (drug_id) -); - -/*==============================================================*/ -/* Table: nurse */ -/*==============================================================*/ -create table nurse -( - nurse_id int not null auto_increment, - nurse_name varchar(10) not null, - primary key (nurse_id) -); - -/*==============================================================*/ -/* Table: patient */ -/*==============================================================*/ -create table patient -( - patient_id int not null auto_increment, - patient_name varchar(10) not null, - patient_address varchar(20) not null, - patient_tel numeric(20,0) not null, - primary key (patient_id) -); - -/*==============================================================*/ -/* Table: shoushushi_id */ -/*==============================================================*/ -create table shoushushi_id -( - shoushushi_id_id int not null auto_increment, - sickbed_id int not null, - sic_sickperson_id int not null, - patient_id int not null, - docter_id int not null, - shoushushi_idname varchar(10) not null, - sickperson_id int not null, - primary key (shoushushi_id_id) -); - -/*==============================================================*/ -/* Table: sickbed */ -/*==============================================================*/ -create table sickbed -( - sickbed_id int not null, - nurse_id int not null, - primary key (sickbed_id) -); - -/*==============================================================*/ -/* Table: sickperson */ -/*==============================================================*/ -create table sickperson -( - sickperson_id int not null, - patient_id int not null, - docter_id int not null, - drug_id int not null, - shoushushi_id_id int not null, - allergy char(1) not null, - sympton varchar(50) not null, - primary key (sickperson_id, patient_id, docter_id) -); - -alter table shoushushi_id add constraint FK_inhospital foreign key (sickbed_id) - references sickbed (sickbed_id) on delete restrict on update restrict; - -alter table shoushushi_id add constraint FK_operation foreign key (sic_sickperson_id, patient_id, docter_id) - references sickperson (sickperson_id, patient_id, docter_id) on delete restrict on update restrict; - -alter table sickbed add constraint FK_nursing foreign key (nurse_id) - references nurse (nurse_id) on delete restrict on update restrict; - -alter table sickperson add constraint FK_booking foreign key (patient_id) - references patient (patient_id) on delete restrict on update restrict; - -alter table sickperson add constraint FK_operation2 foreign key (shoushushi_id_id) - references shoushushi_id (shoushushi_id_id) on delete restrict on update restrict; - -alter table sickperson add constraint FK_see foreign key (docter_id) - references docter (docter_id) on delete restrict on update restrict; - -alter table sickperson add constraint FK_takedrug foreign key (drug_id) - references drug (drug_id) on delete restrict on update restrict; - -``` - -``` -![2e14b2d498fac95d7a02c2cd3d014a9.png](https://s2.loli.net/2023/09/14/PoB1vy2ENardRG5.png) -``` - diff --git "a/01 \351\231\210\346\242\246\346\242\246/20230914.md" "b/01 \351\231\210\346\242\246\346\242\246/20230914.md" deleted file mode 100644 index d1d1c0f..0000000 --- "a/01 \351\231\210\346\242\246\346\242\246/20230914.md" +++ /dev/null @@ -1,132 +0,0 @@ -```mysql -drop table if exists docter; - -drop table if exists drug; - -drop table if exists nurse; - -drop table if exists patient; - -drop table if exists shoushushi_id; - -drop table if exists sickbed; - -drop table if exists sickperson; - -/*==============================================================*/ -/* Table: docter */ -/*==============================================================*/ -create table docter -( - docter_id int not null auto_increment, - docter_name varchar(10) not null, - docter_sex char(1) not null, - docter_degree varchar(15) not null, - docter_tel numeric(8,0) not null, - primary key (docter_id) -); - -/*==============================================================*/ -/* Table: drug */ -/*==============================================================*/ -create table drug -( - drug_id int not null auto_increment, - drug_name varchar(20) not null, - drug_medication varchar(50) not null, - drug_price int not null, - primary key (drug_id) -); - -/*==============================================================*/ -/* Table: nurse */ -/*==============================================================*/ -create table nurse -( - nurse_id int not null auto_increment, - nurse_name varchar(10) not null, - primary key (nurse_id) -); - -/*==============================================================*/ -/* Table: patient */ -/*==============================================================*/ -create table patient -( - patient_id int not null auto_increment, - patient_name varchar(10) not null, - patient_address varchar(20) not null, - patient_tel numeric(20,0) not null, - primary key (patient_id) -); - -/*==============================================================*/ -/* Table: shoushushi_id */ -/*==============================================================*/ -create table shoushushi_id -( - shoushushi_id_id int not null auto_increment, - sickbed_id int not null, - sic_sickperson_id int not null, - patient_id int not null, - docter_id int not null, - shoushushi_idname varchar(10) not null, - sickperson_id int not null, - primary key (shoushushi_id_id) -); - -/*==============================================================*/ -/* Table: sickbed */ -/*==============================================================*/ -create table sickbed -( - sickbed_id int not null, - nurse_id int not null, - primary key (sickbed_id) -); - -/*==============================================================*/ -/* Table: sickperson */ -/*==============================================================*/ -create table sickperson -( - sickperson_id int not null, - patient_id int not null, - docter_id int not null, - drug_id int not null, - shoushushi_id_id int not null, - allergy char(1) not null, - sympton varchar(50) not null, - primary key (sickperson_id, patient_id, docter_id) -); - -alter table shoushushi_id add constraint FK_inhospital foreign key (sickbed_id) - references sickbed (sickbed_id) on delete restrict on update restrict; - -alter table shoushushi_id add constraint FK_operation foreign key (sic_sickperson_id, patient_id, docter_id) - references sickperson (sickperson_id, patient_id, docter_id) on delete restrict on update restrict; - -alter table sickbed add constraint FK_nursing foreign key (nurse_id) - references nurse (nurse_id) on delete restrict on update restrict; - -alter table sickperson add constraint FK_booking foreign key (patient_id) - references patient (patient_id) on delete restrict on update restrict; - -alter table sickperson add constraint FK_operation2 foreign key (shoushushi_id_id) - references shoushushi_id (shoushushi_id_id) on delete restrict on update restrict; - -alter table sickperson add constraint FK_see foreign key (docter_id) - references docter (docter_id) on delete restrict on update restrict; - -alter table sickperson add constraint FK_takedrug foreign key (drug_id) - references drug (drug_id) on delete restrict on update restrict; - -``` - -``` - -``` - -``` -https://s2.loli.net/2023/09/14/PoB1vy2ENardRG5.png -``` diff --git "a/01 \351\231\210\346\242\246\346\242\246/20230917.md" "b/01 \351\231\210\346\242\246\346\242\246/20230917.md" deleted file mode 100644 index ffdb558..0000000 --- "a/01 \351\231\210\346\242\246\346\242\246/20230917.md" +++ /dev/null @@ -1,147 +0,0 @@ -建表代码 - -```mysql - -DROP DATABASe if EXISTS store ; -CREATE DATABASE store charset utf8; -use store; - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for buymessage --- ---------------------------- -DROP TABLE IF EXISTS `buymessage`; -CREATE TABLE `buymessage` ( - `buymessage_id` int NOT NULL AUTO_INCREMENT, - `customer_id` int NOT NULL, - `salesman_id` int NOT NULL, - `car_id` int NULL DEFAULT NULL, - `buymessage_time` date NOT NULL, - PRIMARY KEY (`buymessage_id`) USING BTREE, - INDEX `FK_Relationship_1`(`customer_id` ASC) USING BTREE, - INDEX `FK_Relationship_2`(`salesman_id` ASC) USING BTREE, - INDEX `FK_Relationship_3`(`car_id` ASC) USING BTREE, - CONSTRAINT `FK_Relationship_1` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `FK_Relationship_2` FOREIGN KEY (`salesman_id`) REFERENCES `salesman` (`salesman_id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `FK_Relationship_3` FOREIGN KEY (`car_id`) REFERENCES `car` (`car_id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of buymessage --- ---------------------------- -INSERT INTO `buymessage` VALUES (1, 2, 3, 5, '2023-06-12'); -INSERT INTO `buymessage` VALUES (2, 2, 4, 4, '2023-09-12'); -INSERT INTO `buymessage` VALUES (3, 1, 3, 4, '2023-09-14'); -INSERT INTO `buymessage` VALUES (4, 4, 1, 3, '2023-09-14'); -INSERT INTO `buymessage` VALUES (5, 5, 3, 1, '2023-09-26'); - --- ---------------------------- --- Table structure for car --- ---------------------------- -DROP TABLE IF EXISTS `car`; -CREATE TABLE `car` ( - `car_id` int NOT NULL AUTO_INCREMENT, - `car_name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - `car_color` varchar(5) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - `car_suv` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - `car_oil` char(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - `car_price` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - PRIMARY KEY (`car_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of car --- ---------------------------- -INSERT INTO `car` VALUES (1, '奥迪Q7', '蓝色', '中大型SUV', '汽油', '52.61'); -INSERT INTO `car` VALUES (2, '埃尔法', '白色', '中大型MPV', '油电', '83.9'); -INSERT INTO `car` VALUES (3, '迈巴赫S级\r\n', '蓝色', '大型车', '轻混', '682.79'); -INSERT INTO `car` VALUES (4, '红旗H5', '银白色', '中型车', '油电', '19.58'); -INSERT INTO `car` VALUES (5, '宝马5系', '蓝色', '中大型车', '汽油', '45.55'); - --- ---------------------------- --- Table structure for customer --- ---------------------------- -DROP TABLE IF EXISTS `customer`; -CREATE TABLE `customer` ( - `customer_id` int NOT NULL AUTO_INCREMENT, - `customer_name` varchar(5) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - `customer_sex` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - `customer_tel` int NOT NULL, - `customer_address` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - PRIMARY KEY (`customer_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of customer --- ---------------------------- -INSERT INTO `customer` VALUES (1, '陈梦梦', '女', 10086, '地球村'); -INSERT INTO `customer` VALUES (2, '郭悦迎', '女', 123456, '深圳湾'); -INSERT INTO `customer` VALUES (3, '马云', '男', 147852, '汤臣一品'); -INSERT INTO `customer` VALUES (4, '小敏', '女', 369852, '闽西职业技术学院'); -INSERT INTO `customer` VALUES (5, '张一鸣', '男', 987456, '龙岩'); - --- ---------------------------- --- Table structure for salesman --- ---------------------------- -DROP TABLE IF EXISTS `salesman`; -CREATE TABLE `salesman` ( - `salesman_id` int NOT NULL AUTO_INCREMENT, - `salesman_name` varchar(5) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - `salesman_sex` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - `salesman_tel` int NOT NULL, - PRIMARY KEY (`salesman_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of salesman --- ---------------------------- -INSERT INTO `salesman` VALUES (1, '陈销售', '男', 456285); -INSERT INTO `salesman` VALUES (2, '李销售', '女', 132644); -INSERT INTO `salesman` VALUES (3, '张销售', '男', 365415); -INSERT INTO `salesman` VALUES (4, '王销售', '男', 147258); - -SET FOREIGN_KEY_CHECKS = 1; - -``` - - - -查询代码 - -```mysql --- 1.查询特定陈销售的销售记录 -select * from salesman; -select * from buymessage; -select * from salesman s left join buymessage b on s.salesman_id=b.salesman_id where b.salesman_id=(select salesman_id from salesman where salesman_name='陈销售'); - - -- 2.查找销售记录中销售价格最高的汽车 - select * from car; - select * from buymessage; - select car_name 汽车名称,car_price 汽车价格 from buymessage b left join car c on b.car_id=c.car_id order by car_price desc limit 0,1; - - -- 3.统计张销售的销售总额 - select * from buymessage; - select salesman_id from salesman where salesman_name='张销售'; - select sum(car_price) from buymessage b left join car c on b.car_id=c.car_id where salesman_id=(select salesman_id from salesman where salesman_name='张销售'); - - - -- 4.根据客户信息查询其购买过的汽车 - select * from customer; - select customer_name 顾客姓名,car_name 购买过的车子 from customer c left join buymessage b on c.customer_id=b.buymessage_id left join car a on b.car_id=a.car_id; - - -- 5.分析特定品牌汽车的销售情况,统计每个品牌的销售数量和总销售额 - - select c.car_name 车辆名称,count(c.car_name) 销售数量,sum(car_price) 总销售额 from buymessage b left join car c on b.car_id=c.car_id group by c.car_name,car_price; - - -- 6.检索特定日期范围内的销售了哪些汽车 - select * from buymessage a left join car c on a.salesman_id = c.car_id where buymessage_time between 2023-09-10 and 2023-09-15; - -- 7.查找某车型的销售历史。 - select * from car c left join buymessage b on c.car_id=b.car_id where car_name='奥迪Q7'; - -- 8.统计每个销售员的销售数量 - select salesman_name 销售员,count(salesman_name)销售数量 from salesman s left join buymessage a on s.salesman_id = a.salesman_id group by salesman_name; - -``` - -https://sm.ms/image/b7pCQUkIO9N41zX \ No newline at end of file diff --git "a/01 \351\231\210\346\242\246\346\242\246/20230920.md" "b/01 \351\231\210\346\242\246\346\242\246/20230920.md" deleted file mode 100644 index 824e683..0000000 --- "a/01 \351\231\210\346\242\246\346\242\246/20230920.md" +++ /dev/null @@ -1,715 +0,0 @@ -```mysql -#第03章_基本的select语句的课后练习 - -# 1.查询所有员工12个月的工资总和,并起别名为工资总和 - -#理解1:计算12月的基本工资 - -select - sum( salary * 12 ) 工资总和 -from - employees; - -#select sum(salary*12) as 工资总和 from employees; - -#理解2:计算12月的基本工资和奖金 - -# ifnull(原值,新值) 判断一个原值是否为null,如果原值是null,就用一个新值代替 - -select - ifnull( commission_pct, 0 )* salary * 12 奖金, - salary * 12 基本工资 -from - employees; - -# 2.查询employees表中去除重复的job_id以后的数据 - -#去除重复 distinct - -select distinct - job_id -from - employees; - -# 3.查询工资大于12000的员工姓名和工资 - -select - last_name 姓名, - salary 工资 -from - employees -where - salary > 12000; -# 4.查询员工号为176的员工的姓名和部门号 - -select - first_name 姓名, - department_id 部门号 -from - employees -where - employee_id = 176; - -# 5.显示表 departments 的结构,并查询其中的全部数据 - -desc departments; -select - * -from - departments; -# 第04章_运算符课后练习 - -# 1.选择工资不在5000到12000的员工的姓名和工资 - -select - last_name 姓名, - salary 工资 -from - employees -where - salary < 5000 or salary > 12000; - - #2.选择在20或50号部门工作的员工姓名和部门号 - -select - last_name, - department_id -from - employees -where - department_id in ( 20, 50 ); -select - last_name, - department_id -from - employees -where - department_id = 20 - or department_id = 50; - - # 3.选择公司中没有管理者的员工姓名及job_id - -select - last_name, - job_id -from - employees -where - manager_id is null; - - # 4.选择公司中有奖金的员工姓名,工资和奖金级别 - -select last_name, salary, commission_pct -from employees -where commission_pct is not null; - -;# 5.选择员工姓名的第三个字是 尔 的员工姓名 - -select - last_name -from - employees -where - last_name like '__尔%'; - - # 6.选择姓名中有 特 字和 尔 字的员工姓名 - -select - * -from - employees -where - last_name like '%特%' - or last_name like '%尔%'; - - # 7.显示出表 employees 表中 first_name 以 '尔'结尾的员工信息 - -select - * -from - employees -where - first_name like '%尔'; - - # 8.显示出表 employees 部门编号在 80-100 之间的姓名、工种 - -select - first_name, - job_id -from - employees -where - department_id between 80 - and 100; - - # 9.显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、工资、管理者id - -select - last_name, - salary, - manager_id -from - employees -where - manager_id in ( 100, 101, 110 ); - - #第05章_排序与分页的课后练习 - - -#1. 查询员工的姓名和部门号和年薪,按年薪降序显示 --- order by 年薪 asc/desc - -select - first_name, - department_id, - salary * 12 nianxin -from - employees -order by - nianxin desc; - -#2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据 - -select - first_name, - salary -from - employees -where - salary < 8000 or salary > 17000 -order by - salary desc - limit 20,20; - - #3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序 - -select - * -from - employees -where - email like '%e%' -order by - length( email ) desc, - department_id asc; - - # 第06章_多表查询的课后练习 - -# 1.显示所有员工的姓名,部门号和部门名称。 - -select - last_name, - e.department_id, - d.department_name -from - employees e - left join departments d on e.department_id = d.department_id; - - # 2.查询90号部门员工的job_id和90号部门的location_id - -select - * -from - locations; -select - * -from - employees; -select - * -from - departments; -select - job_id, - location_id -from - employees e - join locations l on e.department_id = department_id -where - department_id = 90; - - # 3.选择所有 有奖金的员工 的 last_name , department_name , location_id , city - -select - last_name, - department_name, - d.location_id, - city -from - employees e, - departments d, - locations l -where - e.department_id = d.department_id - and d.location_id = l.location_id - and commission_pct is not null; -select - last_name, - d.department_name, - l.location_id, - city -from - employees e - left join departments d on e.department_id = d.department_id - left join locations l on d.location_id = l.location_id -where - commission_pct is not null; - - # 4.选择city在 多伦多 工作的员工的 last_name , job_id , department_id , department_name - -select - last_name, - job_id, - e.department_id, - city -from - employees e, - departments d, - locations l -where - e.department_id = d.department_id - and city = '多伦多'; - - #sql92语法(自然连接): - -# 5.查询行政部门员工的部门名称、部门地址、姓名、工作、工资 - -select - department_name, - street_address, - last_name, - salary -from - employees e, - departments d, - locations l -where - e.department_id = d.department_id - and d.location_id = l.location_id; - - # 6.显示所有员工的姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式 --- 员工姓名 员工编号 上级姓名 上级的员工编号 --- 德哈恩 102 金 100 - -select - e.first_name, - e.department_id, - e.last_name, - e.employee_id -from - employees e - inner join employees s on e.employee_id = s.employee_id; - - # 7.查询哪些部门没有员工 -select - department_name -from - departments d - left join employees e on e.department_id = e.department_id -where - d.manager_id is null; - - # 8. 查询哪个城市没有部门 -select - city -from - locations l - left join departments d on l.location_id = d.location_id -where - d.location_id is null; - - # 9. 查询部门名为 销售部 或 信息技术部 的员工信息 -select - * -from - employees e - left join departments d on e.department_id = d.department_id -where - d.department_name = '销售部' - or d.department_name = '信息技术部'; - - # 第08章_聚合函数的课后练习 - -#2.查询公司员工工资的最大值,最小值,平均值,总和 - -select - max( salary ), - min( salary ), - avg( salary ), - sum( salary ) -from - employees; - - #3.查询各job_id的员工工资的最大值,最小值,平均值,总和 - -select - job_id, - max( salary ), - min( salary ), - avg( salary ), - sum( salary ) -from - employees -group by - job_id; - - #4.选择各个job_id的员工人数 -select - job_id, - count(*) -from - employees -group by - job_id; - - # 5.查询员工最高工资和最低工资的差距 -select - ( - max( salary )- min( salary )) 最高工资和最低工资的差距 -from - employees; - - # 6.查询各个管理者 手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内 - -select - min( salary ) -from - employees -group by - manager_id -having - min( salary ) > 6000 - and manager_id is not null; -select - manager_id, - min( salary ) -from - employees -where - manager_id is not null -group by - manager_id -having - min( salary ) > 6000; - - # 7.查询所有部门的名字,location_id,员工数量和平均工资,并按平均工资降序 -select - department_name, - location_id, - count( employee_id ), - avg( salary ) -from - employees e - right join departments d on e.department_id = d.department_id -group by - department_name, - location_id -order by - avg( salary ) desc; - - # 8.查询每个工种、每个部门的部门名、工种名和最低工资 - - -# 第09章_子查询的课后练习 - - -#1.查询和 兹洛特基 相同部门的员工姓名和工资 - -select - last_name, - salary -from - employees -where - department_id = ( select department_id from employees where last_name = '兹洛特基' ) - - - #2.查询工资比公司平均工资高的员工的员工号,姓名和工资。 - - -select - employee_id, - last_name, - salary -from - employees -where - salary > ( select avg( salary ) from employees ) - - - #3.选择工资大于所有job_id = 'sa_man'的员工的工资的员工的last_name, job_id, salary - -select - last_name, - salary -from - employees -where - salary > ( select max( salary ) from employees where job_id = 'sa_man' ) - - #4.查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名 -select - employee_id, - last_name -from - employees -where - department_id = any ( select distinct department_id from employees where last_name like '%u%' ) - - #5.查询部门的location_id为1700的部门的工作的员工的员工号 -select - employee_id -from - employees -where - department_id in ( select department_id from departments where location_id = 1700 ) - - #6.查询管理者是 金 的员工姓名和工资 -select - last_name, - salary -from - employees -where - manager_id in ( select employee_id from employees where last_name = '金' ) #7.查询工资最低的员工信息: last_name, salary -select - last_name, - salary -from - employees -where - salary = ( select min( salary ) from employees );#8.查询平均工资最低的部门信息 -#方式1: -# 部门最低工资=全司最低 -select - * -from - departments -where - department_id = ( - select - department_id - from - employees - group by - department_id - having - avg( salary ) = ( select min( dept_avgsal ) from ( select avg( salary ) dept_avgsal from employees group by department_id ) avg_sal ) - ); - - #方式2: -# 部门平均<= 公司所有平均 -select - d.*,( - select - avg( salary ) - from - employees - where - department_id = d.department_id - ) -from - departments d -where - department_id = ( - select - department_id - from - employees - group by - department_id - having - avg( salary ) = ( select min( dept_avgsal ) from ( select avg( salary ) dept_avgsal from employees group by department_id ) avg_sal ) - ); - - #9.查询平均工资最低的部门信息和该部门的平均工资(相关子查询) -#方式:先查最低平均工资的部门,再根据其id去select中再子查询 -select - d.*,( - select - avg( salary ) - from - employees - where - department_id = d.department_id - ) -from - departments d -where - department_id = ( - select - department_id - from - employees - group by - department_id - having - avg( salary ) = ( select min( dept_avgsal ) from ( select avg( salary ) dept_avgsal from employees group by department_id ) avg_sal ) - ); - - #10.查询平均工资最高的 job 信息 -#方式1:平均工资=最大 -#方式2:平均工资>=所有平均工资 -select - * -from - jobs -where - job_id = ( - select - job_id - from - employees - group by - job_id - having - avg( salary ) = ( select max( avg_sal ) from ( select avg( salary ) avg_sal from employees group by job_id ) job_avgsal ) - ); - - #11.查询平均工资高于公司平均工资的部门有哪些? -select - department_id -from - employees -where - department_id is not null -group by - department_id -having - avg( salary ) > ( select avg( salary ) from employees ); - - #12.查询出公司中所有 manager 的详细信息 - -#方式1:自连接 自己连自己 -#方式2:子查询 -#员工编号=(管理员编号有哪些) -select - employee_id, - last_name, - salary -from - employees -where - employee_id in ( select distinct manager_id from employees ); - - #13.各个部门中 最高工资中 最低的那个部门的 最低工资是多少? -#方式: -select - min( salary ) -from - employees -where - department_id = ( - select - department_id - from - employees - group by - department_id - having - max( salary ) = ( select min( dept_maxsal ) from ( select max( salary ) dept_maxsal from employees group by department_id ) max_sal ) - ); - - #14.查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary -#方式1: -select - employee_id, - last_name, - department_id, - email, - salary -from - employees -where - employee_id in ( - select distinct - manager_id - from - employees - where - department_id = ( - select - department_id - from - employees - group by - department_id - having - avg( salary ) = ( select max( avg_sal ) from ( select avg( salary ) avg_sal from employees group by department_id ) dept_sal ) - ) - ); - #方式二 -select - employee_id, - last_name, - department_id, - email, - salary -from - employees -where - employee_id in ( - select distinct - manager_id - from - employees - where - department_id = ( select department_id from employees e group by department_id having avg( salary )>= all ( select avg( salary ) from employees group by department_id ) ) - ); - #15. 查询部门的部门号,其中不包括job_id是"st_clerk"的部门号 -#方式1: - -#16. 选择所有没有管理者的员工的last_name - -#17.查询员工号、姓名、雇用时间、工资,其中员工的管理者为 'de haan' - -#方式1: -#方式2: - - - -#18.查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资(相关子查询) -#方式1:使用相关子查询 -#方式2:在from中声明子查询 - - -#19.查询每个部门下的部门人数大于 5 的部门名称(相关子查询) -select - department_name -from - employees e, - departments d -where - d.department_id = e.department_id -group by - department_name -having - count( 1 )> 5;#20.查询每个国家下的部门个数大于 2 的国家编号(相关子查询) -select - country_id, - count( 1 ) -from - ( - select distinct - country_id, - d.department_id - from - departments d, - employees e, - locations l - where - d.manager_id = e.manager_id - and l.location_id = d.location_id - ) a -group by - country_id; -/* -子查询的编写技巧(或步骤):① 从里往外写 ② 从外往里写 - -如何选择? -① 如果子查询相对较简单,建议从外往里写。一旦子查询结构较复杂,则建议从里往外写 -② 如果是相关子查询的话,通常都是从外往里写。 - -*/ -``` - diff --git "a/01 \351\231\210\346\242\246\346\242\246/20230921.md" "b/01 \351\231\210\346\242\246\346\242\246/20230921.md" deleted file mode 100644 index e61c154..0000000 --- "a/01 \351\231\210\346\242\246\346\242\246/20230921.md" +++ /dev/null @@ -1,201 +0,0 @@ -## RBAC(基于角色的权限访问控制)——主流设计模型(套路) - - - -#### 用于权限之间产生角色 - -1.数据库能存什么? - -业务数据表:用户商品 - -功能资源表:菜单信息表,页面代码表 - -2.权限的使用情景 - -网页不一样: - -1.菜单权限 - -2.按钮权限 - -3.数据权限 - -4.操作权限 - -RBAC角色是核心,设计权限表 - -sku预习 - -sku(属性) 可由多个属性组成 - -spu 一组属性的组合 - -```mysql -/* - Navicat Premium Data Transfer - - Source Server : 1 - Source Server Type : MySQL - Source Server Version : 80034 - Source Host : localhost:3306 - Source Schema : zy - - Target Server Type : MySQL - Target Server Version : 80034 - File Encoding : 65001 - - Date: 20/09/2023 17:41:43 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for power --- ---------------------------- -DROP TABLE IF EXISTS `power`; -CREATE TABLE `power` ( - `power_id` int NOT NULL AUTO_INCREMENT, - `power_name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - PRIMARY KEY (`power_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of power --- ---------------------------- -INSERT INTO `power` VALUES (1, '医生信息'); -INSERT INTO `power` VALUES (2, '护士信息'); -INSERT INTO `power` VALUES (3, '病人信息'); -INSERT INTO `power` VALUES (4, '新增病人'); -INSERT INTO `power` VALUES (5, '保洁信息'); -INSERT INTO `power` VALUES (6, '新增医生'); -INSERT INTO `power` VALUES (7, '新增护士'); -INSERT INTO `power` VALUES (8, '新增保洁'); -INSERT INTO `power` VALUES (9, '医生工资'); -INSERT INTO `power` VALUES (10, '护士工资'); -INSERT INTO `power` VALUES (11, '保洁工资'); - --- ---------------------------- --- Table structure for role --- ---------------------------- -DROP TABLE IF EXISTS `role`; -CREATE TABLE `role` ( - `role_id` int NOT NULL AUTO_INCREMENT, - `role_name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - PRIMARY KEY (`role_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of role --- ---------------------------- -INSERT INTO `role` VALUES (1, '院长'); -INSERT INTO `role` VALUES (2, '医生'); -INSERT INTO `role` VALUES (3, '护士'); -INSERT INTO `role` VALUES (4, '病人'); -INSERT INTO `role` VALUES (5, '保洁'); - --- ---------------------------- --- Table structure for role_power --- ---------------------------- -DROP TABLE IF EXISTS `role_power`; -CREATE TABLE `role_power` ( - `power_id` int NOT NULL, - `role_id` int NOT NULL, - PRIMARY KEY (`power_id`, `role_id`) USING BTREE, - INDEX `FK_role_power2`(`role_id` ASC) USING BTREE, - CONSTRAINT `FK_role_power` FOREIGN KEY (`power_id`) REFERENCES `power` (`power_id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `FK_role_power2` FOREIGN KEY (`role_id`) REFERENCES `role` (`role_id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of role_power --- ---------------------------- -INSERT INTO `role_power` VALUES (1, 1); -INSERT INTO `role_power` VALUES (2, 1); -INSERT INTO `role_power` VALUES (3, 1); -INSERT INTO `role_power` VALUES (4, 1); -INSERT INTO `role_power` VALUES (5, 1); -INSERT INTO `role_power` VALUES (6, 1); -INSERT INTO `role_power` VALUES (7, 1); -INSERT INTO `role_power` VALUES (8, 1); -INSERT INTO `role_power` VALUES (9, 1); -INSERT INTO `role_power` VALUES (10, 1); -INSERT INTO `role_power` VALUES (11, 1); -INSERT INTO `role_power` VALUES (1, 2); -INSERT INTO `role_power` VALUES (2, 2); -INSERT INTO `role_power` VALUES (3, 2); -INSERT INTO `role_power` VALUES (4, 2); -INSERT INTO `role_power` VALUES (2, 3); -INSERT INTO `role_power` VALUES (3, 3); -INSERT INTO `role_power` VALUES (3, 4); -INSERT INTO `role_power` VALUES (5, 5); - --- ---------------------------- --- Table structure for user --- ---------------------------- -DROP TABLE IF EXISTS `user`; -CREATE TABLE `user` ( - `user_id` int NOT NULL AUTO_INCREMENT, - `user_name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - `user_pwd` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - PRIMARY KEY (`user_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of user --- ---------------------------- -INSERT INTO `user` VALUES (1, '张三', '123456'); -INSERT INTO `user` VALUES (2, '李四', '666666'); -INSERT INTO `user` VALUES (3, '王五', '888888'); -INSERT INTO `user` VALUES (4, '樊小郭', '147258'); -INSERT INTO `user` VALUES (5, '郭悦迎', '333333'); -INSERT INTO `user` VALUES (6, '陈梦梦', '111111'); -INSERT INTO `user` VALUES (7, '画大饼', '777777'); - --- ---------------------------- --- Table structure for user_role --- ---------------------------- -DROP TABLE IF EXISTS `user_role`; -CREATE TABLE `user_role` ( - `role_id` int NOT NULL, - `user_id` int NOT NULL, - PRIMARY KEY (`role_id`, `user_id`) USING BTREE, - INDEX `FK_user_role2`(`user_id` ASC) USING BTREE, - CONSTRAINT `FK_user_role` FOREIGN KEY (`role_id`) REFERENCES `role` (`role_id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `FK_user_role2` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of user_role --- ---------------------------- -INSERT INTO `user_role` VALUES (4, 1); -INSERT INTO `user_role` VALUES (4, 2); -INSERT INTO `user_role` VALUES (4, 3); -INSERT INTO `user_role` VALUES (2, 4); -INSERT INTO `user_role` VALUES (2, 5); -INSERT INTO `user_role` VALUES (1, 6); -INSERT INTO `user_role` VALUES (5, 7); - -SET FOREIGN_KEY_CHECKS = 1; - -``` - -```mysql -select -user_name,role_name,power_name -from - `user` u, - user_role ur, - role r, - role_power rp, - power p - where - u.user_id=ur.user_id - and - ur.role_id=r.role_id - and - r.role_id=rp.role_id - and - rp.power_id=p.power_id; -``` - diff --git "a/01 \351\231\210\346\242\246\346\242\246/20230921sku.md" "b/01 \351\231\210\346\242\246\346\242\246/20230921sku.md" deleted file mode 100644 index 6185d5b..0000000 --- "a/01 \351\231\210\346\242\246\346\242\246/20230921sku.md" +++ /dev/null @@ -1,105 +0,0 @@ -建表 - -```mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-21 16:41:07 */ -/*==============================================================*/ -create database zy charset utf8; -use zy; - -drop table if exists attributes; - -drop table if exists attributes_value; - -drop table if exists relation; - -drop table if exists sku; - -drop table if exists spu; - -/*==============================================================*/ -/* Table: attributes */ -/*==============================================================*/ -create table attributes -( - attributes_id int not null auto_increment, - attributes_name varchar(50) not null, - primary key (attributes_id) -); - -/*==============================================================*/ -/* Table: attributes_value */ -/*==============================================================*/ -create table attributes_value -( - value_id int not null auto_increment, - value_content varchar(50) not null, - primary key (value_id) -); - -/*==============================================================*/ -/* Table: relation */ -/*==============================================================*/ -create table relation -( - relation_id int not null auto_increment, - sku_id int, - attributes_id int, - value_id int, - primary key (relation_id) -); - -/*==============================================================*/ -/* Table: sku */ -/*==============================================================*/ -create table sku -( - sku_id int not null auto_increment, - spu_id int, - sku_name varchar(50) not null, - sku_price decimal(9,2) not null, - sku_kc int not null, - primary key (sku_id) -); - -/*==============================================================*/ -/* Table: spu */ -/*==============================================================*/ -create table spu -( - spu_id int not null auto_increment, - spu_name varchar(50) not null, - spu_content varchar(50) not null, - primary key (spu_id) -); - -alter table relation add constraint FK_Relationship_2 foreign key (sku_id) - references sku (sku_id) on delete restrict on update restrict; - -alter table relation add constraint FK_Relationship_3 foreign key (attributes_id) - references attributes (attributes_id) on delete restrict on update restrict; - -alter table relation add constraint FK_Relationship_4 foreign key (value_id) - references attributes_value (value_id) on delete restrict on update restrict; - -alter table sku add constraint FK_Relationship_1 foreign key (spu_id) - references spu (spu_id) on delete restrict on update restrict; - - -``` - - - -查询 - -```mysql -select * from spu,sku,relation re,attributes_value av,attributes ab where spu.spu_id=sku.spu_id and sku.sku_id=re.sku_id and re.value_id=av.value_id and re.attributes_id=ab.attributes_id; - - -select a.sku_id,a.sku_name,a.sku_price,a.value_content,b.value_content from -(select sku.sku_id,sku_name,sku_price,value_content from spu,sku,relation re,attributes_value av,attributes ab where spu.spu_id=sku.spu_id and sku.sku_id=re.sku_id and re.value_id=av.value_id and re.attributes_id=ab.attributes_id and value_content='白色') as a, - -(select sku.sku_id,sku_name,sku_price,value_content from spu,sku,relation re,attributes_value av,attributes ab where spu.spu_id=sku.spu_id and sku.sku_id=re.sku_id and re.value_id=av.value_id and re.attributes_id=ab.attributes_id and value_content='512g') as b where a.sku_id=b.sku_id; -``` - diff --git "a/01 \351\231\210\346\242\246\346\242\246/20230924.md" "b/01 \351\231\210\346\242\246\346\242\246/20230924.md" deleted file mode 100644 index 474021e..0000000 --- "a/01 \351\231\210\346\242\246\346\242\246/20230924.md" +++ /dev/null @@ -1,256 +0,0 @@ -## 数据库高级部分预习 - -## 一、函数 - -### 1.创建自定义函数 - - (1)DELIMITER $$ 定义结束符。MySQL默认的结束符是分号,但是函数体中可能用到分号。为了避免冲突,需要另外定义结束符。 - - (2)DROP FUNCTION IF EXISTS genPerson$$ 如果函数genPerson已经存在了,就删除掉。 - - (3)CREATE FUNCTION 创建函数genPerson,函数的参数是name,返回值是varchar(50)。 - - (4)函数体放在BEGIN 与 END之间。 - - (5)DECLARE 声明变量,str类型是varchar(50),默认值是空。 - - (6)CONCAT连接多个字符串。 - - (7)RETURN 返回拼接后的字符串str。 - - - - -### 2.执行 - -select 函数名('字段名') - - - -## 二、视图 - -## 视图是虚拟表,本身不存储数据,而是按照指定的方式进行查询 - -创建视图 - -```mysql -CREATE VIEW 视图名(列1,列2...) AS SELECT (列1,列2...) FROM ...; -``` - -使用视图 - -```mysql -当成表使用就好 -``` - - - -修改视图 - -```mysql -CREATE OR REPLACE VIEW 视图名 AS SELECT [...] FROM [...]; -``` - - - -查看数据库已有视图 - -```mysql ->SHOW TABLES [like...];(可以使用模糊查找) -``` - - - -查看视图详情 - -```mysql -DESC 视图名或者SHOW FIELDS FROM 视图名 -``` - - - -视图条件限制 - -```mysql -[WITH CHECK OPTION] -``` - -#### 插入数据 -1. 视图不是表,不直接存储数据,是一张虚拟的表; -2. 一般情况下,在创建有条件限制的视图时,加上“WITH CHECK OPTION”命令*) - -1.通过视图插入数据 - -```mysql ->INSERT INTO v_order(pid,pname,price) VALUES('p010','柴油','34'); -``` - -2.不可以跨表插入数据 - -```mysql -可以通过视图插入数据,但是只能基于一个基础表进行插入,不能跨表更新数据。 -``` - -3.WITH CHECK OPTION -如果在创建视图的时候制定了“WITH CHECK OPTION”,那么更新数据时不能插入或更新不符合视图限制条件的记录。 - -通过视图修改,可能导致数据无故消失,因此: - -> 没有特殊的理由,建议加上“WITH CHECK OPTION”命令。 - -# 百度标准理解 - -#### 1.事务 - -- 原子性:事务包含的这一系列操作,要么全部成功,要么全部失败。(由DBMS的事务管理子系统来实现); -- 一致性:事务完成之后,不会将非法的数据写入数据库。(由DBMS的完整性子系统执行测试任务); -- 隔离性:多个事务可以在一定程度上并发执行。(由DBMS的[并发](https://so.csdn.net/so/search?q=并发&spm=1001.2101.3001.7020)控制子系统实现); - -隔离级别 - -读未提交:一个事务可以读取到另外一个事务尚未提交的数据。该隔离级别可能会产生“脏读”、“不可重复读取”和“幻影读取”问题。 - -读已提交:一个事务只能读取到另外一个事务已经提交的数据。该隔离级别解决了“脏读”问题,但是仍然可能会发生“不可重复读取”和“幻影读取”问题。 - - -可重复读取:在同一个事务当中,多次读取同一份数据,结果一样。该隔离级别解决了“脏读”和“不可重复读取”问题,但是仍然有可能会产生“幻影读取问题”(虚读)。 - -序列化:多个同务只能排队执行,即只有一个事务结束之后,另外一个事务才能开始执行。该隔离级别解决了“脏读”,“不可重复读取”和“幻影读取”问题,但是程序性能会下降。所以只有必要的时候(比如在银行系统里面)才会使用。 - -总结: - - 隔离级别从低到高依次是"读未提交"、“读已提交”、“可重复读取”和“序列化”,隔离级别越高,性能越低。mysql数据库默认隔离级别是“可重复读取”,oracle是“读已提交”。数据库底层使用的“加锁”的机制来实现不同的隔离级别,包括对整个表加锁,对表中的行加锁。 - - mysql数据库开始事务、提交事务、回滚事务 - -```MYSQL -begin; -commit; -rollback; -``` - - mysql数据库必须将数据库引擎设置为"innodb"才能支持事务。 - - - -- 持久性:事务完成之后,数据要永久保存(一般会保存在硬盘上)(由DBMS的恢复管理子系统实现的); - - - -#### 2.视图 - -创建视图 - - create view 视图名 as select(注:可以对单表或者多表进行查询,数据库会将视图的定义保存下来。) - -删除视图 - - drop view 视图名 - -例子 - -```mysql -create table t_emp( - id int primary key auto_increment, - name varchar(50), - salary int, - age int -); - -create view v_emp as select * from t_emp; -create view v_emp2(name,salary) as select name,salary from t_emp; - -insert into v_emp2 values('Jhon',3000); - -create table t_dept( - id int primary key, - name varchar(50), - addr varchar(100) -); -insert into t_dept values(100,'财务部','北京'); -insert into t_dept values(200,'开发部','上海'); - -create table t_staff( - id int primary key auto_increment, - name varchar(30), - age int, - dept_id int -); -insert into t_staff values(null,'张三',33,100); -insert into t_staff values(null,'李四',23,100); -insert into t_staff values(null,'王五',43,200); - -create view v_staff_dept(sname,dname,addr) -as -select s.name sname,d.name dname,d.addr from t_staff s -join t_dept d on s.dept_id = d.id; - -drop view v_emp; - - -``` - -#### 3.索引 - -创建索引 - - create index 索引名 on 表名(字段列表) - -—— 为了提高查询的速度而在数据库端创建的一种排序的数据结构。 - - 注:索引类似于一本书的目录 - -应该将经常作为查询条件的字段加索引,除此以外,还要在分组、过滤、排序及联合查询的字段上加索引 - -删除索引 - - drop index 索引名 on 表名 - -联合索引 - - 所谓联合索引(复合索引),指的是索引字段是多个 - -#### 4.存储过程 - - 存储在数据库端的一组为了完成特定功能的sql语句 - - create procedure 存储过程名([参数]) - - 参数格式 (参数类型 参数名 数据类型) - - 参数类型有三种: - - IN: 输入参数,该参数的值必须在调用该存储过程时指定,在存储过程内部使用, 不能返回。 - - 缺省值是IN。 - - OUT:输出参数,该参数值的值可以在存储过程内部修改,并可返回。 - - INOUT:输入输出参数,该参数需要在调用时指定,并且可以返回。 - -#### 5.约束 - -是一种限制,通过对表的行或者列的数据做出限制来确保数据的完整性和一致性。 - - - -主键:相当于唯一性约束 + 非空约束的组合。 - - 注:一张表只能一个主键,数据库会为主键添加主键索引 - - 外键:用于确保两个表之间的参照完整性。 - -插入记录时,要先插入主表中的记录。 -删除记录时,要先删除从表中的记录。 - - 非空: not null - - 唯一性:unique - - 检查(了解): - - 注:检查约束跟数据库版本有关系,mysql8.0.16之后才支持。 - - - -#### 6.Case表达式 \ No newline at end of file diff --git "a/01 \351\231\210\346\242\246\346\242\246/20230925.md" "b/01 \351\231\210\346\242\246\346\242\246/20230925.md" deleted file mode 100644 index a7bde0d..0000000 --- "a/01 \351\231\210\346\242\246\346\242\246/20230925.md" +++ /dev/null @@ -1,384 +0,0 @@ - - -## 笔记: - -2023年9月27日 - -#### 1.check约束 - -检查某个字段的值是否符合要求,一般指的是值的范围 - -```mysql -age int age>0; -``` - -##### 语法 - -check (表达式); - -```mysql -gender char(1), -check (gender in('男','女')) -``` - -#### 2.视图 - -##### 创建视图 - -```mysql -create view 视图的名称 as select语句; -create view 视图的字段 as select语句(字段数要与select语句结果的字段一致); -``` - -##### 查询视图 - -```mysql -select * from 视图名称; -select 字段名 from 视图名称; -``` - -##### 修改视图 - -```mysql -alter view 视图名称 as select语句;//前提是被修改的视图要存在 - -create or replace view 视图名称 as select语句;//视图存在就修改,无则自动创建 -``` - - - -##### 删除视图 - -```mysql -drop view if exists 视图名称; -``` - - - -### 答案 - -```mysql - -#第14章_视图的课后练习 - -#练习1: -#1. 使用表emps创建视图employee_vu, -#其中包括姓名(LAST_NAME),员工号(EMPLOYEE_ID),部门号(DEPARTMENT_ID) -drop view if exists employee_vu; -create view employee_vu -as -select last_name 姓名,employee_id 员工号,department_id 部门号 from employees; - - - -#2. 显示视图的结构 -desc employee_vu; - - -#3. 查询视图中的全部内容 -select * from employee_vu; - - -#4. 将视图中的数据限定在部门号是80的范围内 - -create or replace view employee_vu - -as - -select last_name 姓名,employee_id 员工号,department_id 部门号 from -employees where department_id=80; - -select * from employee_vu; - -#练习2: - - -#1. 创建视图emp_v1,要求查询电话号码以‘011’开头的员工姓名和工资、邮箱 -drop view if exists emp_v1; -create view emp_v1 -as -select last_name 姓名,salary 工资,email 邮箱 from employees where phone_number like '011%'; - - - -#2. 要求将视图 emp_v1 修改为查询电话号码以‘011’开头的并且邮箱中包含 e 字符 -#的员工姓名和邮箱、电话号码,工资 - -alter view emp_v1 -as -select last_name 姓名,salary 工资,email 邮箱,phone_number 电话号码 from employees where phone_number like '011%' and email like '%e%'; -select * from emp_v1; - -#3. 向 emp_v1 插入一条记录,是否可以? - -insert into emp_v1 values('cmm',10000.00,'ggggggg','147258369');#插入失败,不可以插入数据,视图不是一个表 - - - - - -#4. 修改emp_v1中员工的工资,每人涨薪1000 - -update emp_v1 -set 工资=工资+1000; - -#5. 删除emp_v1中姓名为Olsen的员工 - - -delete from emp_v1 -where 姓名='Olsen'; -#6. 创建视图emp_v2,要求查询部门的最高工资高于 12000 的部门id和其最高工资 -select * from employees; - -drop view if exists emp_v2; -create view emp_v2 -as -select max(salary), department_id from employees group by department_id having max(salary)>12000 ; - -select * from emp_v2 ; - - -#7. 向 emp_v2 中插入一条记录,是否可以? - - -#不可以 - -#8. 删除刚才的emp_v2 和 emp_v1 -drop view if exists emp_v2 ; -drop view if exists emp_v1 ; -``` - -### 题目 - -```mysql -/* -SQLyog Ultimate v12.08 (64 bit) -MySQL - 5.7.28-log : Database - view_db -********************************************************************* -*/ - - -/*!40101 SET NAMES utf8 */; - -/*!40101 SET SQL_MODE=''*/; - -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -CREATE DATABASE /*!32312 IF NOT EXISTS*/`view_db` /*!40100 DEFAULT CHARACTER SET utf8 */; - -USE `view_db`; - -/*Table structure for table `countries` */ - -DROP TABLE IF EXISTS `countries`; - -CREATE TABLE `countries` ( - `country_id` char(2) NOT NULL, - `country_name` varchar(40) DEFAULT NULL, - `region_id` int(11) DEFAULT NULL, - PRIMARY KEY (`country_id`), - KEY `countr_reg_fk` (`region_id`), - CONSTRAINT `countr_reg_fk` FOREIGN KEY (`region_id`) REFERENCES `regions` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `countries` */ - -insert into `countries`(`country_id`,`country_name`,`region_id`) values ('AR','Argentina',2),('AU','Australia',3),('BE','Belgium',1),('BR','Brazil',2),('CA','Canada',2),('CH','Switzerland',1),('CN','China',3),('DE','Germany',1),('DK','Denmark',1),('EG','Egypt',4),('FR','France',1),('HK','HongKong',3),('IL','Israel',4),('IN','India',3),('IT','Italy',1),('JP','Japan',3),('KW','Kuwait',4),('MX','Mexico',2),('NG','Nigeria',4),('NL','Netherlands',1),('SG','Singapore',3),('UK','United Kingdom',1),('US','United States of America',2),('ZM','Zambia',4),('ZW','Zimbabwe',4); - -/*Table structure for table `departments` */ - -DROP TABLE IF EXISTS `departments`; - -CREATE TABLE `departments` ( - `department_id` int(4) NOT NULL DEFAULT '0', - `department_name` varchar(30) NOT NULL, - `manager_id` int(6) DEFAULT NULL, - `location_id` int(4) DEFAULT NULL, - PRIMARY KEY (`department_id`), - UNIQUE KEY `dept_id_pk` (`department_id`), - KEY `dept_loc_fk` (`location_id`), - KEY `dept_mgr_fk` (`manager_id`), - CONSTRAINT `dept_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`location_id`), - CONSTRAINT `dept_mgr_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `departments` */ - -insert into `departments`(`department_id`,`department_name`,`manager_id`,`location_id`) values (10,'Administration',200,1700),(20,'Marketing',201,1800),(30,'Purchasing',114,1700),(40,'Human Resources',203,2400),(50,'Shipping',121,1500),(60,'IT',103,1400),(70,'Public Relations',204,2700),(80,'Sales',145,2500),(90,'Executive',100,1700),(100,'Finance',108,1700),(110,'Accounting',205,1700),(120,'Treasury',NULL,1700),(130,'Corporate Tax',NULL,1700),(140,'Control And Credit',NULL,1700),(150,'Shareholder Services',NULL,1700),(160,'Benefits',NULL,1700),(170,'Manufacturing',NULL,1700),(180,'Construction',NULL,1700),(190,'Contracting',NULL,1700),(200,'Operations',NULL,1700),(210,'IT Support',NULL,1700),(220,'NOC',NULL,1700),(230,'IT Helpdesk',NULL,1700),(240,'Government Sales',NULL,1700),(250,'Retail Sales',NULL,1700),(260,'Recruiting',NULL,1700),(270,'Payroll',NULL,1700); - -/*Table structure for table `employees` */ - -DROP TABLE IF EXISTS `employees`; - -CREATE TABLE `employees` ( - `employee_id` int(6) NOT NULL DEFAULT '0', - `first_name` varchar(20) DEFAULT NULL, - `last_name` varchar(25) NOT NULL, - `email` varchar(25) NOT NULL, - `phone_number` varchar(20) DEFAULT NULL, - `hire_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `salary` double(8,2) DEFAULT NULL, - `commission_pct` double(2,2) DEFAULT NULL, - `manager_id` int(6) DEFAULT NULL, - `department_id` int(4) DEFAULT NULL, - PRIMARY KEY (`employee_id`), - UNIQUE KEY `emp_email_uk` (`email`), - UNIQUE KEY `emp_emp_id_pk` (`employee_id`), - KEY `emp_dept_fk` (`department_id`), - KEY `emp_job_fk` (`job_id`), - KEY `emp_manager_fk` (`manager_id`), - CONSTRAINT `emp_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `emp_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`), - CONSTRAINT `emp_manager_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `employees` */ - -insert into `employees`(`employee_id`,`first_name`,`last_name`,`email`,`phone_number`,`hire_date`,`job_id`,`salary`,`commission_pct`,`manager_id`,`department_id`) values (100,'Steven','King','SKING','515.123.4567','1987-06-17','AD_PRES',24000.00,NULL,NULL,90),(101,'Neena','Kochhar','NKOCHHAR','515.123.4568','1989-09-21','AD_VP',17000.00,NULL,100,90),(102,'Lex','De Haan','LDEHAAN','515.123.4569','1993-01-13','AD_VP',17000.00,NULL,100,90),(103,'Alexander','Hunold','AHUNOLD','590.423.4567','1990-01-03','IT_PROG',9000.00,NULL,102,60),(104,'Bruce','Ernst','BERNST','590.423.4568','1991-05-21','IT_PROG',6000.00,NULL,103,60),(105,'David','Austin','DAUSTIN','590.423.4569','1997-06-25','IT_PROG',4800.00,NULL,103,60),(106,'Valli','Pataballa','VPATABAL','590.423.4560','1998-02-05','IT_PROG',4800.00,NULL,103,60),(107,'Diana','Lorentz','DLORENTZ','590.423.5567','1999-02-07','IT_PROG',4200.00,NULL,103,60),(108,'Nancy','Greenberg','NGREENBE','515.124.4569','1994-08-17','FI_MGR',12000.00,NULL,101,100),(109,'Daniel','Faviet','DFAVIET','515.124.4169','1994-08-16','FI_ACCOUNT',9000.00,NULL,108,100),(110,'John','Chen','JCHEN','515.124.4269','1997-09-28','FI_ACCOUNT',8200.00,NULL,108,100),(111,'Ismael','Sciarra','ISCIARRA','515.124.4369','1997-09-30','FI_ACCOUNT',7700.00,NULL,108,100),(112,'Jose Manuel','Urman','JMURMAN','515.124.4469','1998-03-07','FI_ACCOUNT',7800.00,NULL,108,100),(113,'Luis','Popp','LPOPP','515.124.4567','1999-12-07','FI_ACCOUNT',6900.00,NULL,108,100),(114,'Den','Raphaely','DRAPHEAL','515.127.4561','1994-12-07','PU_MAN',11000.00,NULL,100,30),(115,'Alexander','Khoo','AKHOO','515.127.4562','1995-05-18','PU_CLERK',3100.00,NULL,114,30),(116,'Shelli','Baida','SBAIDA','515.127.4563','1997-12-24','PU_CLERK',2900.00,NULL,114,30),(117,'Sigal','Tobias','STOBIAS','515.127.4564','1997-07-24','PU_CLERK',2800.00,NULL,114,30),(118,'Guy','Himuro','GHIMURO','515.127.4565','1998-11-15','PU_CLERK',2600.00,NULL,114,30),(119,'Karen','Colmenares','KCOLMENA','515.127.4566','1999-08-10','PU_CLERK',2500.00,NULL,114,30),(120,'Matthew','Weiss','MWEISS','650.123.1234','1996-07-18','ST_MAN',8000.00,NULL,100,50),(121,'Adam','Fripp','AFRIPP','650.123.2234','1997-04-10','ST_MAN',8200.00,NULL,100,50),(122,'Payam','Kaufling','PKAUFLIN','650.123.3234','1995-05-01','ST_MAN',7900.00,NULL,100,50),(123,'Shanta','Vollman','SVOLLMAN','650.123.4234','1997-10-10','ST_MAN',6500.00,NULL,100,50),(124,'Kevin','Mourgos','KMOURGOS','650.123.5234','1999-11-16','ST_MAN',5800.00,NULL,100,50),(125,'Julia','Nayer','JNAYER','650.124.1214','1997-07-16','ST_CLERK',3200.00,NULL,120,50),(126,'Irene','Mikkilineni','IMIKKILI','650.124.1224','1998-09-28','ST_CLERK',2700.00,NULL,120,50),(127,'James','Landry','JLANDRY','650.124.1334','1999-01-14','ST_CLERK',2400.00,NULL,120,50),(128,'Steven','Markle','SMARKLE','650.124.1434','2000-03-08','ST_CLERK',2200.00,NULL,120,50),(129,'Laura','Bissot','LBISSOT','650.124.5234','1997-08-20','ST_CLERK',3300.00,NULL,121,50),(130,'Mozhe','Atkinson','MATKINSO','650.124.6234','1997-10-30','ST_CLERK',2800.00,NULL,121,50),(131,'James','Marlow','JAMRLOW','650.124.7234','1997-02-16','ST_CLERK',2500.00,NULL,121,50),(132,'TJ','Olson','TJOLSON','650.124.8234','1999-04-10','ST_CLERK',2100.00,NULL,121,50),(133,'Jason','Mallin','JMALLIN','650.127.1934','1996-06-14','ST_CLERK',3300.00,NULL,122,50),(134,'Michael','Rogers','MROGERS','650.127.1834','1998-08-26','ST_CLERK',2900.00,NULL,122,50),(135,'Ki','Gee','KGEE','650.127.1734','1999-12-12','ST_CLERK',2400.00,NULL,122,50),(136,'Hazel','Philtanker','HPHILTAN','650.127.1634','2000-02-06','ST_CLERK',2200.00,NULL,122,50),(137,'Renske','Ladwig','RLADWIG','650.121.1234','1995-07-14','ST_CLERK',3600.00,NULL,123,50),(138,'Stephen','Stiles','SSTILES','650.121.2034','1997-10-26','ST_CLERK',3200.00,NULL,123,50),(139,'John','Seo','JSEO','650.121.2019','1998-02-12','ST_CLERK',2700.00,NULL,123,50),(140,'Joshua','Patel','JPATEL','650.121.1834','1998-04-06','ST_CLERK',2500.00,NULL,123,50),(141,'Trenna','Rajs','TRAJS','650.121.8009','1995-10-17','ST_CLERK',3500.00,NULL,124,50),(142,'Curtis','Davies','CDAVIES','650.121.2994','1997-01-29','ST_CLERK',3100.00,NULL,124,50),(143,'Randall','Matos','RMATOS','650.121.2874','1998-03-15','ST_CLERK',2600.00,NULL,124,50),(144,'Peter','Vargas','PVARGAS','650.121.2004','1998-07-09','ST_CLERK',2500.00,NULL,124,50),(145,'John','Russell','JRUSSEL','011.44.1344.429268','1996-10-01','SA_MAN',14000.00,0.40,100,80),(146,'Karen','Partners','KPARTNER','011.44.1344.467268','1997-01-05','SA_MAN',13500.00,0.30,100,80),(147,'Alberto','Errazuriz','AERRAZUR','011.44.1344.429278','1997-03-10','SA_MAN',12000.00,0.30,100,80),(148,'Gerald','Cambrault','GCAMBRAU','011.44.1344.619268','1999-10-15','SA_MAN',11000.00,0.30,100,80),(149,'Eleni','Zlotkey','EZLOTKEY','011.44.1344.429018','2000-01-29','SA_MAN',10500.00,0.20,100,80),(150,'Peter','Tucker','PTUCKER','011.44.1344.129268','1997-01-30','SA_REP',10000.00,0.30,145,80),(151,'David','Bernstein','DBERNSTE','011.44.1344.345268','1997-03-24','SA_REP',9500.00,0.25,145,80),(152,'Peter','Hall','PHALL','011.44.1344.478968','1997-08-20','SA_REP',9000.00,0.25,145,80),(153,'Christopher','Olsen','COLSEN','011.44.1344.498718','1998-03-30','SA_REP',8000.00,0.20,145,80),(154,'Nanette','Cambrault','NCAMBRAU','011.44.1344.987668','1998-12-09','SA_REP',7500.00,0.20,145,80),(155,'Oliver','Tuvault','OTUVAULT','011.44.1344.486508','1999-11-23','SA_REP',7000.00,0.15,145,80),(156,'Janette','King','JKING','011.44.1345.429268','1996-01-30','SA_REP',10000.00,0.35,146,80),(157,'Patrick','Sully','PSULLY','011.44.1345.929268','1996-03-04','SA_REP',9500.00,0.35,146,80),(158,'Allan','McEwen','AMCEWEN','011.44.1345.829268','1996-08-01','SA_REP',9000.00,0.35,146,80),(159,'Lindsey','Smith','LSMITH','011.44.1345.729268','1997-03-10','SA_REP',8000.00,0.30,146,80),(160,'Louise','Doran','LDORAN','011.44.1345.629268','1997-12-15','SA_REP',7500.00,0.30,146,80),(161,'Sarath','Sewall','SSEWALL','011.44.1345.529268','1998-11-03','SA_REP',7000.00,0.25,146,80),(162,'Clara','Vishney','CVISHNEY','011.44.1346.129268','1997-11-11','SA_REP',10500.00,0.25,147,80),(163,'Danielle','Greene','DGREENE','011.44.1346.229268','1999-03-19','SA_REP',9500.00,0.15,147,80),(164,'Mattea','Marvins','MMARVINS','011.44.1346.329268','2000-01-24','SA_REP',7200.00,0.10,147,80),(165,'David','Lee','DLEE','011.44.1346.529268','2000-02-23','SA_REP',6800.00,0.10,147,80),(166,'Sundar','Ande','SANDE','011.44.1346.629268','2000-03-24','SA_REP',6400.00,0.10,147,80),(167,'Amit','Banda','ABANDA','011.44.1346.729268','2000-04-21','SA_REP',6200.00,0.10,147,80),(168,'Lisa','Ozer','LOZER','011.44.1343.929268','1997-03-11','SA_REP',11500.00,0.25,148,80),(169,'Harrison','Bloom','HBLOOM','011.44.1343.829268','1998-03-23','SA_REP',10000.00,0.20,148,80),(170,'Tayler','Fox','TFOX','011.44.1343.729268','1998-01-24','SA_REP',9600.00,0.20,148,80),(171,'William','Smith','WSMITH','011.44.1343.629268','1999-02-23','SA_REP',7400.00,0.15,148,80),(172,'Elizabeth','Bates','EBATES','011.44.1343.529268','1999-03-24','SA_REP',7300.00,0.15,148,80),(173,'Sundita','Kumar','SKUMAR','011.44.1343.329268','2000-04-21','SA_REP',6100.00,0.10,148,80),(174,'Ellen','Abel','EABEL','011.44.1644.429267','1996-05-11','SA_REP',11000.00,0.30,149,80),(175,'Alyssa','Hutton','AHUTTON','011.44.1644.429266','1997-03-19','SA_REP',8800.00,0.25,149,80),(176,'Jonathon','Taylor','JTAYLOR','011.44.1644.429265','1998-03-24','SA_REP',8600.00,0.20,149,80),(177,'Jack','Livingston','JLIVINGS','011.44.1644.429264','1998-04-23','SA_REP',8400.00,0.20,149,80),(178,'Kimberely','Grant','KGRANT','011.44.1644.429263','1999-05-24','SA_REP',7000.00,0.15,149,NULL),(179,'Charles','Johnson','CJOHNSON','011.44.1644.429262','2000-01-04','SA_REP',6200.00,0.10,149,80),(180,'Winston','Taylor','WTAYLOR','650.507.9876','1998-01-24','SH_CLERK',3200.00,NULL,120,50),(181,'Jean','Fleaur','JFLEAUR','650.507.9877','1998-02-23','SH_CLERK',3100.00,NULL,120,50),(182,'Martha','Sullivan','MSULLIVA','650.507.9878','1999-06-21','SH_CLERK',2500.00,NULL,120,50),(183,'Girard','Geoni','GGEONI','650.507.9879','2000-02-03','SH_CLERK',2800.00,NULL,120,50),(184,'Nandita','Sarchand','NSARCHAN','650.509.1876','1996-01-27','SH_CLERK',4200.00,NULL,121,50),(185,'Alexis','Bull','ABULL','650.509.2876','1997-02-20','SH_CLERK',4100.00,NULL,121,50),(186,'Julia','Dellinger','JDELLING','650.509.3876','1998-06-24','SH_CLERK',3400.00,NULL,121,50),(187,'Anthony','Cabrio','ACABRIO','650.509.4876','1999-02-07','SH_CLERK',3000.00,NULL,121,50),(188,'Kelly','Chung','KCHUNG','650.505.1876','1997-06-14','SH_CLERK',3800.00,NULL,122,50),(189,'Jennifer','Dilly','JDILLY','650.505.2876','1997-08-13','SH_CLERK',3600.00,NULL,122,50),(190,'Timothy','Gates','TGATES','650.505.3876','1998-07-11','SH_CLERK',2900.00,NULL,122,50),(191,'Randall','Perkins','RPERKINS','650.505.4876','1999-12-19','SH_CLERK',2500.00,NULL,122,50),(192,'Sarah','Bell','SBELL','650.501.1876','1996-02-04','SH_CLERK',4000.00,NULL,123,50),(193,'Britney','Everett','BEVERETT','650.501.2876','1997-03-03','SH_CLERK',3900.00,NULL,123,50),(194,'Samuel','McCain','SMCCAIN','650.501.3876','1998-07-01','SH_CLERK',3200.00,NULL,123,50),(195,'Vance','Jones','VJONES','650.501.4876','1999-03-17','SH_CLERK',2800.00,NULL,123,50),(196,'Alana','Walsh','AWALSH','650.507.9811','1998-04-24','SH_CLERK',3100.00,NULL,124,50),(197,'Kevin','Feeney','KFEENEY','650.507.9822','1998-05-23','SH_CLERK',3000.00,NULL,124,50),(198,'Donald','OConnell','DOCONNEL','650.507.9833','1999-06-21','SH_CLERK',2600.00,NULL,124,50),(199,'Douglas','Grant','DGRANT','650.507.9844','2000-01-13','SH_CLERK',2600.00,NULL,124,50),(200,'Jennifer','Whalen','JWHALEN','515.123.4444','1987-09-17','AD_ASST',4400.00,NULL,101,10),(201,'Michael','Hartstein','MHARTSTE','515.123.5555','1996-02-17','MK_MAN',13000.00,NULL,100,20),(202,'Pat','Fay','PFAY','603.123.6666','1997-08-17','MK_REP',6000.00,NULL,201,20),(203,'Susan','Mavris','SMAVRIS','515.123.7777','1994-06-07','HR_REP',6500.00,NULL,101,40),(204,'Hermann','Baer','HBAER','515.123.8888','1994-06-07','PR_REP',10000.00,NULL,101,70),(205,'Shelley','Higgins','SHIGGINS','515.123.8080','1994-06-07','AC_MGR',12000.00,NULL,101,110),(206,'William','Gietz','WGIETZ','515.123.8181','1994-06-07','AC_ACCOUNT',8300.00,NULL,205,110); - -/*Table structure for table `job_grades` */ - -DROP TABLE IF EXISTS `job_grades`; - -CREATE TABLE `job_grades` ( - `grade_level` varchar(3) DEFAULT NULL, - `lowest_sal` int(11) DEFAULT NULL, - `highest_sal` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `job_grades` */ - -insert into `job_grades`(`grade_level`,`lowest_sal`,`highest_sal`) values ('A',1000,2999),('B',3000,5999),('C',6000,9999),('D',10000,14999),('E',15000,24999),('F',25000,40000); - -/*Table structure for table `job_history` */ - -DROP TABLE IF EXISTS `job_history`; - -CREATE TABLE `job_history` ( - `employee_id` int(6) NOT NULL, - `start_date` date NOT NULL, - `end_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `department_id` int(4) DEFAULT NULL, - PRIMARY KEY (`employee_id`,`start_date`), - UNIQUE KEY `jhist_emp_id_st_date_pk` (`employee_id`,`start_date`), - KEY `jhist_job_fk` (`job_id`), - KEY `jhist_dept_fk` (`department_id`), - CONSTRAINT `jhist_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `jhist_emp_fk` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`employee_id`), - CONSTRAINT `jhist_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `job_history` */ - -insert into `job_history`(`employee_id`,`start_date`,`end_date`,`job_id`,`department_id`) values (101,'1989-09-21','1993-10-27','AC_ACCOUNT',110),(101,'1993-10-28','1997-03-15','AC_MGR',110),(102,'1993-01-13','1998-07-24','IT_PROG',60),(114,'1998-03-24','1999-12-31','ST_CLERK',50),(122,'1999-01-01','1999-12-31','ST_CLERK',50),(176,'1998-03-24','1998-12-31','SA_REP',80),(176,'1999-01-01','1999-12-31','SA_MAN',80),(200,'1987-09-17','1993-06-17','AD_ASST',90),(200,'1994-07-01','1998-12-31','AC_ACCOUNT',90),(201,'1996-02-17','1999-12-19','MK_REP',20); - -/*Table structure for table `jobs` */ - -DROP TABLE IF EXISTS `jobs`; - -CREATE TABLE `jobs` ( - `job_id` varchar(10) NOT NULL DEFAULT '', - `job_title` varchar(35) NOT NULL, - `min_salary` int(6) DEFAULT NULL, - `max_salary` int(6) DEFAULT NULL, - PRIMARY KEY (`job_id`), - UNIQUE KEY `job_id_pk` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `jobs` */ - -insert into `jobs`(`job_id`,`job_title`,`min_salary`,`max_salary`) values ('AC_ACCOUNT','Public Accountant',4200,9000),('AC_MGR','Accounting Manager',8200,16000),('AD_ASST','Administration Assistant',3000,6000),('AD_PRES','President',20000,40000),('AD_VP','Administration Vice President',15000,30000),('FI_ACCOUNT','Accountant',4200,9000),('FI_MGR','Finance Manager',8200,16000),('HR_REP','Human Resources Representative',4000,9000),('IT_PROG','Programmer',4000,10000),('MK_MAN','Marketing Manager',9000,15000),('MK_REP','Marketing Representative',4000,9000),('PR_REP','Public Relations Representative',4500,10500),('PU_CLERK','Purchasing Clerk',2500,5500),('PU_MAN','Purchasing Manager',8000,15000),('SA_MAN','Sales Manager',10000,20000),('SA_REP','Sales Representative',6000,12000),('SH_CLERK','Shipping Clerk',2500,5500),('ST_CLERK','Stock Clerk',2000,5000),('ST_MAN','Stock Manager',5500,8500); - -/*Table structure for table `locations` */ - -DROP TABLE IF EXISTS `locations`; - -CREATE TABLE `locations` ( - `location_id` int(4) NOT NULL DEFAULT '0', - `street_address` varchar(40) DEFAULT NULL, - `postal_code` varchar(12) DEFAULT NULL, - `city` varchar(30) NOT NULL, - `state_province` varchar(25) DEFAULT NULL, - `country_id` char(2) DEFAULT NULL, - PRIMARY KEY (`location_id`), - UNIQUE KEY `loc_id_pk` (`location_id`), - KEY `loc_c_id_fk` (`country_id`), - CONSTRAINT `loc_c_id_fk` FOREIGN KEY (`country_id`) REFERENCES `countries` (`country_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `locations` */ - -insert into `locations`(`location_id`,`street_address`,`postal_code`,`city`,`state_province`,`country_id`) values (1000,'1297 Via Cola di Rie','00989','Roma',NULL,'IT'),(1100,'93091 Calle della Testa','10934','Venice',NULL,'IT'),(1200,'2017 Shinjuku-ku','1689','Tokyo','Tokyo Prefecture','JP'),(1300,'9450 Kamiya-cho','6823','Hiroshima',NULL,'JP'),(1400,'2014 Jabberwocky Rd','26192','Southlake','Texas','US'),(1500,'2011 Interiors Blvd','99236','South San Francisco','California','US'),(1600,'2007 Zagora St','50090','South Brunswick','New Jersey','US'),(1700,'2004 Charade Rd','98199','Seattle','Washington','US'),(1800,'147 Spadina Ave','M5V 2L7','Toronto','Ontario','CA'),(1900,'6092 Boxwood St','YSW 9T2','Whitehorse','Yukon','CA'),(2000,'40-5-12 Laogianggen','190518','Beijing',NULL,'CN'),(2100,'1298 Vileparle (E)','490231','Bombay','Maharashtra','IN'),(2200,'12-98 Victoria Street','2901','Sydney','New South Wales','AU'),(2300,'198 Clementi North','540198','Singapore',NULL,'SG'),(2400,'8204 Arthur St',NULL,'London',NULL,'UK'),(2500,'Magdalen Centre, The Oxford Science Park','OX9 9ZB','Oxford','Oxford','UK'),(2600,'9702 Chester Road','09629850293','Stretford','Manchester','UK'),(2700,'Schwanthalerstr. 7031','80925','Munich','Bavaria','DE'),(2800,'Rua Frei Caneca 1360 ','01307-002','Sao Paulo','Sao Paulo','BR'),(2900,'20 Rue des Corps-Saints','1730','Geneva','Geneve','CH'),(3000,'Murtenstrasse 921','3095','Bern','BE','CH'),(3100,'Pieter Breughelstraat 837','3029SK','Utrecht','Utrecht','NL'),(3200,'Mariano Escobedo 9991','11932','Mexico City','Distrito Federal,','MX'); - -/*Table structure for table `order` */ - -DROP TABLE IF EXISTS `order`; - -CREATE TABLE `order` ( - `order_id` int(11) DEFAULT NULL, - `order_name` varchar(15) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `order` */ - -insert into `order`(`order_id`,`order_name`) values (1,'shkstart'),(2,'tomcat'),(3,'dubbo'); - -/*Table structure for table `regions` */ - -DROP TABLE IF EXISTS `regions`; - -CREATE TABLE `regions` ( - `region_id` int(11) NOT NULL, - `region_name` varchar(25) DEFAULT NULL, - PRIMARY KEY (`region_id`), - UNIQUE KEY `reg_id_pk` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `regions` */ - -insert into `regions`(`region_id`,`region_name`) values (1,'Europe'),(2,'Americas'),(3,'Asia'),(4,'Middle East and Africa'); - -/*Table structure for table `emp_details_view` */ - -DROP TABLE IF EXISTS `emp_details_view`; - -/*!50001 DROP VIEW IF EXISTS `emp_details_view` */; -/*!50001 DROP TABLE IF EXISTS `emp_details_view` */; - -/*!50001 CREATE TABLE `emp_details_view`( - `employee_id` int(6) , - `job_id` varchar(10) , - `manager_id` int(6) , - `department_id` int(4) , - `location_id` int(4) , - `country_id` char(2) , - `first_name` varchar(20) , - `last_name` varchar(25) , - `salary` double(8,2) , - `commission_pct` double(2,2) , - `department_name` varchar(30) , - `job_title` varchar(35) , - `city` varchar(30) , - `state_province` varchar(25) , - `country_name` varchar(40) , - `region_name` varchar(25) -)*/; - -/*View structure for view emp_details_view */ - -/*!50001 DROP TABLE IF EXISTS `emp_details_view` */; -/*!50001 DROP VIEW IF EXISTS `emp_details_view` */; - -/*!50001 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `emp_details_view` AS select `e`.`employee_id` AS `employee_id`,`e`.`job_id` AS `job_id`,`e`.`manager_id` AS `manager_id`,`e`.`department_id` AS `department_id`,`d`.`location_id` AS `location_id`,`l`.`country_id` AS `country_id`,`e`.`first_name` AS `first_name`,`e`.`last_name` AS `last_name`,`e`.`salary` AS `salary`,`e`.`commission_pct` AS `commission_pct`,`d`.`department_name` AS `department_name`,`j`.`job_title` AS `job_title`,`l`.`city` AS `city`,`l`.`state_province` AS `state_province`,`c`.`country_name` AS `country_name`,`r`.`region_name` AS `region_name` from (((((`employees` `e` join `departments` `d`) join `jobs` `j`) join `locations` `l`) join `countries` `c`) join `regions` `r`) where ((`e`.`department_id` = `d`.`department_id`) and (`d`.`location_id` = `l`.`location_id`) and (`l`.`country_id` = `c`.`country_id`) and (`c`.`region_id` = `r`.`region_id`) and (`j`.`job_id` = `e`.`job_id`)) */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - -``` - diff --git "a/02 \351\231\210\346\230\216\345\207\275/.keep" "b/02 \351\231\210\346\230\216\345\207\275/.keep" deleted file mode 100644 index e69de29..0000000 diff --git "a/02 \351\231\210\346\230\216\345\207\275/9.5\347\254\224\350\256\260.md" "b/02 \351\231\210\346\230\216\345\207\275/9.5\347\254\224\350\256\260.md" deleted file mode 100644 index 5641859..0000000 --- "a/02 \351\231\210\346\230\216\345\207\275/9.5\347\254\224\350\256\260.md" +++ /dev/null @@ -1,9 +0,0 @@ -``` -1.一对一关系:将其中一个表的主键放到另一个表当外键。 -2.一对多关系(or 多对一关系):将一个所在表的主键放在另一个表当外键。 -3.多对多关系:引入第三张表,前两张表的主键当第三张表的外键。 -E-R1的三要素:实体(表),字段(属性),关系。 -``` - - - diff --git "a/02 \351\231\210\346\230\216\345\207\275/9.5\347\254\224\350\256\2602.md" "b/02 \351\231\210\346\230\216\345\207\275/9.5\347\254\224\350\256\2602.md" deleted file mode 100644 index 5e700fa..0000000 --- "a/02 \351\231\210\346\230\216\345\207\275/9.5\347\254\224\350\256\2602.md" +++ /dev/null @@ -1,10 +0,0 @@ - - -1. 学业规划:大二是大学生活的关键一年,要注重学习。制定一个合理的课程表,合理安排每天的学习和复习时间。积极参与课堂讨论和实践活动,提高自己的学习成绩。 -2. 提升技能:除了学业,可以考虑培养一些实用的技能。例如,参加一些与专业相关的实习或工作,参加一些职业培训课程,提升自己的就业竞争力。 -3. 社会实践:参加社团或学生组织,积极参与校园活动。这有助于培养团队合作能力和领导才能。也可以考虑参加志愿者活动,为社区服务,锻炼社会责任感。 -4. 健康管理:保持良好的健康习惯,定期锻炼身体,保证充足的睡眠和良好的饮食。这有助于提高身体和精神的健康状况,提高学习和生活质量。 -5. 拓展人际关系:大二是广交朋友的好时机。多参加校园活动,结识不同背景的人,扩大自己的人际圈子。与同学和老师建立良好的关系,这对未来的学习和职业发展都有好处。 -6. 实习或实践机会:大二可以找一些与专业相关的实习或实践机会,锻炼实际操作能力,增加实践经验。这对提升职业竞争力和将来找工作非常有帮助。 -7. 目标设定:大二开学是一个可以反思和设定目标的时刻。回顾过去一年的学习和生活,思考自己的优势和不足,并设定明确的目标。制定长期和短期目标,并制定计划和行动步骤,以实现这些目标。 - diff --git "a/02 \351\231\210\346\230\216\345\207\275/9.6.md" "b/02 \351\231\210\346\230\216\345\207\275/9.6.md" deleted file mode 100644 index 9ea9aec..0000000 --- "a/02 \351\231\210\346\230\216\345\207\275/9.6.md" +++ /dev/null @@ -1,110 +0,0 @@ -```mysql -create database school charset utf8; - -use school; - --- 院系表 -create table department( - d_id int primary key, - d_name varchar(10), - d_address varchar(10) -); -insert into department values -(123,'软件工程学院','望云楼'), -(456,'信息工程学院','辛耕楼'), -(789,'建筑工程学院','万源楼'); - --- 专业表 -create table speciality( - s_id int primary key, - s_name varchar(10), - d_id int, - foreign key (d_id) references department(d_id) -); -insert into speciality values -(11,'软件技术与开发',123), -(22,'信息技术',456), -(33,'建筑设计',789); - --- 教室表 -create table classroom( -r_id int PRIMARY KEY, -r_name varchar(10) -); -insert into classroom values -(1,'实训一'), -(2,'实训二'), -(3,'实训三'); - --- 班级表 -create table class( - c_id int primary key, - c_name varchar(10), - s_id int, - foreign key (s_id) references speciality(s_id) -); -insert into class values -(1,'软件技术1班',11), -(2,'软件技术2班',11), -(3,'软件技术3班',11); - --- 课程表 -CREATE TABLE course( - couseId int PRIMARY key, - courseName varchar(10), - c_id int, - r_id int, - foreign key (c_id) references class(c_id), - foreign key (r_id) references classroom(r_id) -); -insert into course VALUES -(1,'java',1,2), -(2,'html',2,3), -(3,'mysql',3,1); - --- 教师表 -create table teacher( - t_id int primary key, - t_name varchar(10), - couseId int, - foreign key (couseId) references course(couseId) -); -insert into teacher values -(1,'张三',1), -(2,'张四',2), -(3,'张五',3); - --- 选修表 -create table `select` ( - selectId int primary key, - couseId int, - time varchar(20), - t_id int, - r_id int, - foreign key (couseId) references course(couseId), - foreign key (t_id) references teacher(t_id), - foreign key (r_id) references classroom(r_id) -); -insert into `select` values -(1,1,'周一上午',2,3), -(2,2,'周二下午',1,2), -(3,3,'周三上午',3,1); - --- 学生表 -create table student ( - id int primary key, - name varchar(10), - sex varchar(5), - age int, - address varchar(20), - c_id int, - selectId int, - foreign key (c_id) references class(c_id), - foreign key (selectId) references `select`(selectId) -); -insert into student values -(11111,'小明','男',18,'团结里1',1,1), -(22222,'小花','女',118,'团结里2',2,2), -(33333,'小王','男',1118,'团结里3',3,3); -``` - diff --git "a/02 \351\231\210\346\230\216\345\207\275/9.7\347\254\224\350\256\260.md" "b/02 \351\231\210\346\230\216\345\207\275/9.7\347\254\224\350\256\260.md" deleted file mode 100644 index 47fb3e0..0000000 --- "a/02 \351\231\210\346\230\216\345\207\275/9.7\347\254\224\350\256\260.md" +++ /dev/null @@ -1,7 +0,0 @@ -数据库的范式 - -1第一范式:要求字段范围的内容不可再分隔,为的是数据的原子性 - -2第二范式:要求在满足第一范式的基础上,非主键字段要完全主键 - -3第三范式:满足第二范式的前提下,非主键属性要依赖主键 \ No newline at end of file diff --git "a/02 \351\231\210\346\230\216\345\207\275/9.8\347\254\224\350\256\260.md" "b/02 \351\231\210\346\230\216\345\207\275/9.8\347\254\224\350\256\260.md" deleted file mode 100644 index aeca3e6..0000000 --- "a/02 \351\231\210\346\230\216\345\207\275/9.8\347\254\224\350\256\260.md" +++ /dev/null @@ -1,9 +0,0 @@ -power designer - -第一步:创建概念模型(类似E-R图)CDM - -第二步:转换成逻辑模型 LDM - -第三步:转换成物理模型 PDM - -第四步:生成DDL \ No newline at end of file diff --git "a/02 \351\231\210\346\230\216\345\207\275/912.md" "b/02 \351\231\210\346\230\216\345\207\275/912.md" deleted file mode 100644 index 148eb45..0000000 --- "a/02 \351\231\210\346\230\216\345\207\275/912.md" +++ /dev/null @@ -1,169 +0,0 @@ -![](https://i.niupic.com/images/2023/09/12/bEaF.png) - - ```mysql - /* - Navicat Premium Data Transfer - - Source Server : qiqi - Source Server Type : MySQL - Source Server Version : 50741 - Source Host : localhost:3306 - Source Schema : tushu - - Target Server Type : MySQL - Target Server Version : 50741 - File Encoding : 65001 - - Date: 12/09/2023 13:20:37 - */ - drop DATABASE tushu; - CREATE DATABASE tushu charset utf8; - use tushu; - - - SET NAMES utf8mb4; - SET FOREIGN_KEY_CHECKS = 0; - - -- ---------------------------- - -- Table structure for actors - -- ---------------------------- - DROP TABLE IF EXISTS `actors`; - CREATE TABLE `actors` ( - `fm_id` int(11) NOT NULL, - `m_id` varchar(14) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - `zhiwu` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`fm_id`, `m_id`) USING BTREE, - INDEX `FK_actors2`(`m_id`) USING BTREE, - CONSTRAINT `FK_actors` FOREIGN KEY (`fm_id`) REFERENCES `filmmaker` (`fm_id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `FK_actors2` FOREIGN KEY (`m_id`) REFERENCES `movie` (`m_id`) ON DELETE RESTRICT ON UPDATE RESTRICT - ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; - - -- ---------------------------- - -- Records of actors - -- ---------------------------- - - -- ---------------------------- - -- Table structure for comment - -- ---------------------------- - DROP TABLE IF EXISTS `comment`; - CREATE TABLE `comment` ( - `cm_id` int(11) NOT NULL AUTO_INCREMENT, - `u_idd` int(11) NULL DEFAULT NULL, - `m_id` varchar(14) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `c_disagree` int(11) NULL DEFAULT NULL, - `c_date` datetime NULL DEFAULT NULL, - `c_agree` int(11) NULL DEFAULT NULL, - PRIMARY KEY (`cm_id`) USING BTREE, - INDEX `FK_Relationship_1`(`u_idd`) USING BTREE, - INDEX `FK_Relationship_4`(`m_id`) USING BTREE, - CONSTRAINT `FK_Relationship_1` FOREIGN KEY (`u_idd`) REFERENCES `user` (`u_idd`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `FK_Relationship_4` FOREIGN KEY (`m_id`) REFERENCES `movie` (`m_id`) ON DELETE RESTRICT ON UPDATE RESTRICT - ) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; - - -- ---------------------------- - -- Records of comment - -- ---------------------------- - INSERT INTO `comment` VALUES (1, 1, '1', 0, '2023-09-20 13:19:35', 1); - INSERT INTO `comment` VALUES (2, 3, '1', 0, '2023-09-15 13:20:06', 1); - - -- ---------------------------- - -- Table structure for country - -- ---------------------------- - DROP TABLE IF EXISTS `country`; - CREATE TABLE `country` ( - `country_id` int(10) NOT NULL AUTO_INCREMENT, - `country_name` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `language` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`country_id`) USING BTREE - ) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; - - -- ---------------------------- - -- Records of country - -- ---------------------------- - INSERT INTO `country` VALUES (1, '美国', '英语'); - INSERT INTO `country` VALUES (2, '韩国', '韩语'); - - -- ---------------------------- - -- Table structure for filmmaker - -- ---------------------------- - DROP TABLE IF EXISTS `filmmaker`; - CREATE TABLE `filmmaker` ( - `fm_id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `sex` varchar(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `age` int(11) NULL DEFAULT NULL, - `master_work` varchar(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `contact` varchar(18) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`fm_id`) USING BTREE - ) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; - - -- ---------------------------- - -- Records of filmmaker - -- ---------------------------- - INSERT INTO `filmmaker` VALUES (1, '席琳·宋', '女', 11, '导演,编剧', '1222'); - INSERT INTO `filmmaker` VALUES (2, ' 格蕾塔·李', '男', 22, '主演', '100'); - INSERT INTO `filmmaker` VALUES (3, '刘台午', '男', 33, '主演', '2222'); - INSERT INTO `filmmaker` VALUES (4, ' 约翰·马加罗', '女', 44, '主演', '4444'); - INSERT INTO `filmmaker` VALUES (5, ' 文胜雅', '男', 55, '主演', '5555'); - INSERT INTO `filmmaker` VALUES (6, '尹智慧', '女', 66, '主演', '6666'); - - -- ---------------------------- - -- Table structure for movie - -- ---------------------------- - DROP TABLE IF EXISTS `movie`; - CREATE TABLE `movie` ( - `m_id` varchar(14) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - `type_id` int(11) NULL DEFAULT NULL, - `country_id` int(11) NULL DEFAULT NULL, - `m_name` varchar(15) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - `m_award` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - `m_length` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - `m_intro` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - PRIMARY KEY (`m_id`) USING BTREE, - INDEX `FK_Relationship_3`(`type_id`) USING BTREE, - INDEX `FK_Relationship_6`(`country_id`) USING BTREE, - CONSTRAINT `FK_Relationship_3` FOREIGN KEY (`type_id`) REFERENCES `movietype` (`type_id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `FK_Relationship_6` FOREIGN KEY (`country_id`) REFERENCES `country` (`country_id`) ON DELETE RESTRICT ON UPDATE RESTRICT - ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; - - -- ---------------------------- - -- Records of movie - -- ---------------------------- - INSERT INTO `movie` VALUES ('1', 1, 1, '过往人生', '第73届柏林国际电影节', '106', 'Nora(Greta Lee 饰)自小便因家庭因素搬离首尔移居加拿大。她与青梅竹马 Hae Sung(刘台午 饰)的关系最终停留在稚幼的凝视不语。而在二十年后,命运令两人于纽约重逢。可此时 Nora已拥有新的身份,甚至已和Arthur(John Magaro 饰)建立家庭。和Hae Sung 分开二十年后的重逢,也令她重新思索生活中的真正渴望。'); - - -- ---------------------------- - -- Table structure for movietype - -- ---------------------------- - DROP TABLE IF EXISTS `movietype`; - CREATE TABLE `movietype` ( - `type_id` int(10) NOT NULL AUTO_INCREMENT, - `type_name` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - PRIMARY KEY (`type_id`) USING BTREE - ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; - - -- ---------------------------- - -- Records of movietype - -- ---------------------------- - INSERT INTO `movietype` VALUES (1, '爱情'); - - -- ---------------------------- - -- Table structure for user - -- ---------------------------- - DROP TABLE IF EXISTS `user`; - CREATE TABLE `user` ( - `u_idd` int(11) NOT NULL AUTO_INCREMENT, - `u_id` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - `u_IP` varchar(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `u_name` varchar(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`u_idd`) USING BTREE - ) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; - - -- ---------------------------- - -- Records of user - -- ---------------------------- - INSERT INTO `user` VALUES (1, '2', '美国', 'Seb’s '); - INSERT INTO `user` VALUES (3, '4', '法国', 'DeadVolcano '); - - SET FOREIGN_KEY_CHECKS = 1; - ``` - diff --git "a/02 \351\231\210\346\230\216\345\207\275/912\347\254\224\350\256\260.md" "b/02 \351\231\210\346\230\216\345\207\275/912\347\254\224\350\256\260.md" deleted file mode 100644 index 7854fcf..0000000 --- "a/02 \351\231\210\346\230\216\345\207\275/912\347\254\224\350\256\260.md" +++ /dev/null @@ -1 +0,0 @@ -笔记就是图传 \ No newline at end of file diff --git "a/02 \351\231\210\346\230\216\345\207\275/915\344\275\234\344\270\232.md" "b/02 \351\231\210\346\230\216\345\207\275/915\344\275\234\344\270\232.md" deleted file mode 100644 index cd8c259..0000000 --- "a/02 \351\231\210\346\230\216\345\207\275/915\344\275\234\344\270\232.md" +++ /dev/null @@ -1,110 +0,0 @@ -````mysql -作业 - -以汽车,用户,销售为题制表 - -```mysql -/* - Navicat Premium Data Transfer - - Source Server : kjin - Source Server Type : MySQL - Source Server Version : 80034 - Source Host : localhost:3306 - Source Schema : car - - Target Server Type : MySQL - Target Server Version : 80034 - File Encoding : 65001 - - Date: 15/09/2023 17:26:52 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for car --- ---------------------------- -DROP TABLE IF EXISTS `car`; -CREATE TABLE `car` ( - `c_id` int NOT NULL AUTO_INCREMENT, - `c_brand` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - `c_model` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`c_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of car --- ---------------------------- -INSERT INTO `car` VALUES (1, '火力赛车f1', '奥迪双钻'); -INSERT INTO `car` VALUES (2, '火力赛车f1二代', '奥迪双钻'); -INSERT INTO `car` VALUES (3, '摇摇车', '山寨贴牌'); - --- ---------------------------- --- Table structure for client --- ---------------------------- -DROP TABLE IF EXISTS `client`; -CREATE TABLE `client` ( - `k_id` int NOT NULL AUTO_INCREMENT, - `k_name` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - `k_sex` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, - `k_call` varchar(11) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`k_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of client --- ---------------------------- -INSERT INTO `client` VALUES (1, '小黎', '男', '114514'); -INSERT INTO `client` VALUES (2, '小韩', '男', '119110'); - --- ---------------------------- --- Table structure for record --- ---------------------------- -DROP TABLE IF EXISTS `record`; -CREATE TABLE `record` ( - `rec_id` int NOT NULL AUTO_INCREMENT, - `k_id` int NOT NULL, - `s_id` int NOT NULL, - `c_id` int NULL DEFAULT NULL, - `r_price` int NULL DEFAULT NULL, - `date` date NULL DEFAULT NULL, - PRIMARY KEY (`rec_id`) USING BTREE, - INDEX `AK_Identifier_1`(`rec_id` ASC, `k_id` ASC, `s_id` ASC) USING BTREE, - INDEX `FK_Relationship_4`(`c_id` ASC) USING BTREE, - INDEX `FK_record`(`k_id` ASC) USING BTREE, - INDEX `FK_record2`(`s_id` ASC) USING BTREE, - CONSTRAINT `FK_record` FOREIGN KEY (`k_id`) REFERENCES `client` (`k_id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `FK_record2` FOREIGN KEY (`s_id`) REFERENCES `salesman` (`s_id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `FK_Relationship_4` FOREIGN KEY (`c_id`) REFERENCES `car` (`c_id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of record --- ---------------------------- -INSERT INTO `record` VALUES (1, 1, 1, 1, 20, '2023-09-15'); -INSERT INTO `record` VALUES (2, 2, 1, 2, 80, '2023-09-15'); -INSERT INTO `record` VALUES (3, 2, 2, 3, 100, '2023-09-15'); - --- ---------------------------- --- Table structure for salesman --- ---------------------------- -DROP TABLE IF EXISTS `salesman`; -CREATE TABLE `salesman` ( - `s_id` int NOT NULL AUTO_INCREMENT, - `s_name` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - `s_sex` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`s_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of salesman --- ---------------------------- -INSERT INTO `salesman` VALUES (1, '小王', '男'); -INSERT INTO `salesman` VALUES (2, '小八', '男'); - -SET FOREIGN_KEY_CHECKS = 1; -``` -```` - diff --git "a/02 \351\231\210\346\230\216\345\207\275/919\344\275\234\344\270\232.md" "b/02 \351\231\210\346\230\216\345\207\275/919\344\275\234\344\270\232.md" deleted file mode 100644 index e78121c..0000000 --- "a/02 \351\231\210\346\230\216\345\207\275/919\344\275\234\344\270\232.md" +++ /dev/null @@ -1,265 +0,0 @@ -```mysql -#第03章_基本的SELECT语句的课后练习 - -# 1.查询所有员工12个月的工资总和,并起别名为工资总和 -SELECT SUM(salary+(salary*IFNULL(commission_pct,1)))*12 工资总和 FROM employees; -#理解1:计算12月的基本工资 -#SELECT sum(salary*12) as 工资总和 FROM employees; -#理解2:计算12月的基本工资和奖金 -# ifnull(原值,新值) 判断一个原值是否为null,如果原值是null,就用一个新值代替 - - - -# 2.查询employees表中去除重复的 job_id 以后的数据 -#去除重复 distinct -SELECT DISTINCT job_id FROM employees; - - -# 3.查询工资大于12000的员工姓名和工资 -SELECT first_name,last_name,salary FROM employees WHERE salary>12000; - -# 4.查询员工号为176的员工的姓名和部门号 -SELECT first_name,last_name,job_id FROM employees WHERE employee_id=176; - -#; - -# 5.显示表 departments 的结构,并查询其中的全部数据 -DESC departments; -SELECT * FROM departments; - -# 第04章_运算符课后练习 - -# 1.选择工资不在5000到12000的员工的姓名和工资 -SELECT * FROM employees WHERE salary NOT in (5000,12000); - - -# 2.选择在20或50号部门工作的员工姓名和部门号 -SELECT * FROM employees WHERE department_id=20 OR department_id=50; - -# 3.选择公司中没有管理者的员工姓名及job_id -SELECT first_name,last_name,job_id FROM employees WHERE manager_id IS NULL; - - -# 4.选择公司中有奖金的员工姓名,工资和奖金级别 -SELECT first_name,last_name,salary,commission_pct FROM employees WHERE commission_pct IS NOT NULL; - - - -# 5.选择员工姓名的第三个字是 尔 的员工姓名 -SELECT * FROM employees WHERE last_name like '__尔%'; - - -# 6.选择姓名中有 特 字和 尔 字的员工姓名 -SELECT * FROM employees WHERE last_name like '%尔%' or '%特%'; - -# 7.显示出表 employees 表中 first_name 以 '尔'结尾的员工信息 -SELECT * FROM employees WHERE last_name like '%尔'; - -# 8.显示出表 employees 部门编号在 80-100 之间的姓名、工种 -SELECT * FROM employees WHERE department_id BETWEEN 80 AND 100; - -# 9.显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、工资、管理者id -SELECT * FROM employees WHERE department_id in(100,101,110); - -#第05章_排序与分页的课后练习 - - -#1. 查询员工的姓名和部门号和年薪,按年薪降序显示 --- order by 年薪 asc/desc -SELECT * FROM employees ORDER BY salary DESC; - -#2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据 -SELECT * FROM employees WHERE salary not BETWEEN 8000 AND 17000 ORDER BY salary DESC LIMIT 20,20; - - -#3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序 -SELECT * FROM employees WHERE email LIKE '%e%' ORDER BY LENGTH(email) DESC , department_id; - - -# 第06章_多表查询的课后练习 - - -# 1.显示所有员工的姓名,部门号和部门名称。 -SELECT e.first_name,e.last_name,e.department_id,d.department_name FROM employees e INNER JOIN departments d ON e.department_id=d.department_id; - -# 2.查询90号部门员工的 job_id 和90号部门的location_id -SELECT e.job_id,e.department_id,d.location_id FROM employees e INNER JOIN departments d ON e.department_id=d.department_id WHERE e.department_id=90; - - - -# 3.选择所有 有奖金的员工 的 last_name , department_name , location_id , city -SELECT e.last_name,d.department_name,d.location_id,l.city -FROM - employees e - INNER JOIN departments d -on - e.department_id = d.department_id - INNER JOIN locations l ON d.location_id = l.location_id -WHERE - e.commission_pct IS NOT NULL; - -# 4.选择city在 多伦多 工作的员工的 last_name , job_id , department_id , department_name -SELECT e.last_name,e.job_id,e.department_id,d.department_name from employees e INNER JOIN departments d on e.department_id=d.department_id where d.location_id= -(SELECT location_id FROM locations WHERE city='多伦多'); - - -#sql92语法(自然连接) - -# 5.查询 行政部 门员工的部门名称、部门地址、姓名、工作、工资 -SELECT d.department_name,l.city,e.last_name,j.job_title,e.salary from departments d INNER JOIN locations l on d.location_id=l.location_id INNER JOIN employees e on d.department_id=e.department_id INNER JOIN jobs j on e.job_id=j.job_id WHERE d.department_name='行政部'; - - -# 6.显示所有员工的姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式 --- 员工姓名 员工编号 上级姓名 上级的员工编号 --- 德哈恩 102 金 100 -SELECT e1.last_name,e1.employee_id,e2.last_name,e2.employee_id from employees e1 INNER JOIN employees e2 on e1.manager_id=e2.employee_id; - -# 7.查询哪些部门没有员工 -SELECT d.department_name from employees e RIGHT JOIN departments d on e.department_id=d.department_id WHERE e.employee_id IS null; -# 8. 查询哪个城市没有部门 -SELECT city from departments d RIGHT JOIN locations l on d.location_id=l.location_id where department_id IS NULL; - -# 9. 查询部门名为 销售部 或 信息技术部 的员工信息 -SELECT e.* FROM employees e INNER JOIN departments d on e.department_id=d.department_id where d.department_name='销售部'or '信息技术部'; -# 第08章_聚合函数的课后练习 - - -#2.查询公司员工工资的最大值,最小值,平均值,总和 -SELECT MAX(salary),MIN(salary),AVG(salary),SUM(salary) FROM employees; - -#3.查询各 job_id 的员工工资的最大值,最小值,平均值,总和 -SELECT job_id,MAX(salary),MIN(salary),AVG(salary),SUM(salary) FROM employees GROUP BY job_id; - -#4.选择各个job_id的员工人数 -SELECT job_id,COUNT(job_id) from employees GROUP BY job_id; - -# 5.查询员工最高工资和最低工资的差距 -SELECT MAX(salary)-MIN(salary) FROM employees; - -# 6.查询各个管理者 手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内 -SELECT manager_id,MIN(salary) FROM employees WHERE manager_id IS NOT NULL GROUP BY manager_id HAVING MIN(salary)>6000; - -# 7.查询所有部门的名字,location_id,员工数量 和 平均工资,并按平均工资降序 -SELECT d.department_name,location_id,e1.`员工数量`,e1.`平均工资` FROM departments d INNER JOIN ( -SELECT e.department_id,COUNT(e.salary) 员工数量,AVG(e.salary) 平均工资 FROM employees e GROUP BY e.department_id) e1 on d.department_id=e1.department_id ORDER BY e1.`平均工资` DESC; - -# 8.查询每个工种、每个部门的部门名、工种名和最低工资 -SELECT e.job_id,d.department_name,MIN(e.salary) FROM jobs j INNER JOIN employees e ON j.job_id=e.job_id INNER JOIN departments d on d.department_id=e.department_id GROUP BY e.job_id,d.department_name; - - -# 第09章_子查询的课后练习 - -#1.查询和 兹洛特基 相同部门的员工姓名和工资 -SELECT last_name,salary from employees WHERE department_id= -(SELECT department_id FROM employees WHERE last_name='兹洛特基') AND last_name != '兹洛特基'; - -#2.查询工资比公司平均工资高的员工的员工号,姓名和工资。 -SELECT employee_id,last_name,salary FROM employees WHERE salary>( -SELECT AVG(salary) FROM employees); - -#3.选择工资大于所有JOB_ID = 'SA_MAN'的员工的工资的员工的last_name, job_id, salary -SELECT last_name,job_id,salary FROM employees WHERE salary>( -SELECT MAX(salary) from employees WHERE job_id='SA_MAN'); - -#4.查询和姓名中包含 尔 的员工在相同部门的员工的员工号和姓名 -SELECT employee_id,last_name from employees WHERE department_id IN( -SELECT DISTINCT department_id FROM employees WHERE last_name LIKE '%尔%') AND last_name NOT LIKE '%尔%'; - -#5.查询部门的location_id为1700的部门的工作的员工的员工号 -SELECT e.employee_id FROM employees e INNER JOIN departments d ON e.department_id=d.department_id where d.location_id=1700; - -#6.查询管理者是 金 的员工姓名和工资 -SELECT e1.last_name,e1.salary FROM employees e1 INNER JOIN employees e2 on e1.manager_id=e2.employee_id where e2.last_name='金'; - -#7.查询工资最低的员工信息: last_name, salary -SELECT last_name,salary FROM employees WHERE salary=( -SELECT MIN(salary) FROM employees); -#8.查询平均工资最低的部门信息 -SELECT * FROM departments d INNER JOIN -(SELECT department_id,AVG(salary) as a FROM employees WHERE department_id IS NOT NULL GROUP BY department_id) e ON d.department_id=e.department_id where e.a=( -SELECT MIN(e.a) FROM departments d INNER JOIN -(SELECT department_id,AVG(salary) as a FROM employees WHERE department_id IS NOT NULL GROUP BY department_id) e ON d.department_id=e.department_id); -#方式1 -# 部门最低工资=全司最低 -#方式2: -# 部门平均<= 公司所有平均 - - -#9.查询平均工资最低的部门信息和该部门的平均工资(相关子查询) -#方式:先查最低平均工资的部门,再根据其id去select中再子查询 -SELECT * FROM departments d INNER JOIN -(SELECT department_id,AVG(salary) as a FROM employees WHERE department_id IS NOT NULL GROUP BY department_id) e ON d.department_id=e.department_id where e.a=( -SELECT MIN(e.a) FROM departments d INNER JOIN -(SELECT department_id,AVG(salary) as a FROM employees WHERE department_id IS NOT NULL GROUP BY department_id) e ON d.department_id=e.department_id); - -#10.查询平均工资最高的 job 信息 -SELECT job_id,AVG(salary) a1 FROM employees GROUP BY job_id HAVING a1= -(SELECT max(e.a) FROM( -SELECT job_id,AVG(salary) a FROM employees GROUP BY job_id) as e); - -#方式1:平均工资=最大 - -#方式2:平均工资>=所有平均工资 - - -#11.查询平均工资高于公司平均工资的部门有哪些? -SELECT department_id,AVG(salary) a FROM employees GROUP BY department_id HAVING a>( -(SELECT AVG(salary) FROM employees)); - -#12.查询出公司中所有 manager 的详细信息 -SELECT * FROM employees WHERE employee_id in ( -SELECT manager_id FROM employees); -#方式1:自连接 自己连自己 - -#方式2:子查询 -#员工编号=(管理员编号有哪些) - - -#13.各个部门中 最高工资中 最低的那个部门的 最低工资是多少? -#方式: -SELECT MIN(salary) FROM employees WHERE department_id=( -SELECT department_id FROM employees GROUP BY department_id HAVING MAX(salary)=( -SELECT MIN(a.m) FROM (SELECT department_id,MAX(salary) m FROM employees GROUP BY department_id ) a)); - - -#14.查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary -#方式1: -SELECT last_name,department_id,email,salary FROM employees WHERE department_id=( -SELECT department_id from employees GROUP BY department_id ORDER BY AVG(salary) LIMIT 1); - -#15. 查询部门的部门号,其中不包括job_id是" ST_CLERK "的部门号 -#方式1: - -SELECT DISTINCT department_id FROM employees WHERE job_id != 'ST_CLERK' - -#16. 选择所有没有管理者的员工的last_name -SELECT last_name FROM employees WHERE manager_id IS NULL; -#17.查询员工号、姓名、雇用时间、工资,其中员工的管理者为 金 -SELECT employee_id,last_name,hire_date,salary FROM employees WHERE manager_id in( -SELECT employee_id FROM employees WHERE last_name='金'); - - -#18.查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资(相关子查询) -SELECT - e1.employee_id,e1.last_name,e1.salary,e2.a -FROM - employees e1 - INNER JOIN ( SELECT department_id, AVG( salary ) a FROM employees GROUP BY department_id ) e2 - ON e1.department_id=e2.department_id HAVING e1.salary>e2.a; - -#19.查询每个部门下的部门人数大于 5 的部门名称(相关子查询) -SELECT d.department_name FROM departments d INNER JOIN ( -SELECT department_id,COUNT(department_id) FROM employees GROUP BY department_id HAVING COUNT(department_id)>5) d2 on d.department_id=d2.department_id; -#20.查询每个国家下的部门个数大于 2 的国家编号(相关子查询) - -SELECT country_id FROM locations l INNER JOIN departments d on l.location_id=d.location_id GROUP BY country_id HAVING COUNT(department_id)>2; -/* -子查询的编写技巧(或步骤):① 从里往外写 ② 从外往里写 - -如何选择? -① 如果子查询相对较简单,建议从外往里写。一旦子查询结构较复杂,则建议从里往外写 -② 如果是相关子查询的话,通常都是从外往里写。 - -*/ -``` - diff --git "a/02 \351\231\210\346\230\216\345\207\275/920\344\275\234\344\270\232.md" "b/02 \351\231\210\346\230\216\345\207\275/920\344\275\234\344\270\232.md" deleted file mode 100644 index 9453103..0000000 --- "a/02 \351\231\210\346\230\216\345\207\275/920\344\275\234\344\270\232.md" +++ /dev/null @@ -1,146 +0,0 @@ -````mysql -## 作业 - -```mysql -/* - Navicat Premium Data Transfer - - Source Server : dsa - Source Server Type : MySQL - Source Server Version : 80034 - Source Host : localhost:3306 - Source Schema : ren - - Target Server Type : MySQL - Target Server Version : 80034 - File Encoding : 65001 - - Date: 19/09/2023 17:27:01 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for menu --- ---------------------------- -DROP TABLE IF EXISTS `menu`; -CREATE TABLE `menu` ( - `menu_id` int NOT NULL AUTO_INCREMENT, - `menu_name1` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - PRIMARY KEY (`menu_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 104 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of menu --- ---------------------------- -INSERT INTO `menu` VALUES (100, '出场臭鸡蛋特效'); -INSERT INTO `menu` VALUES (101, '出场五个舍友抬轿子特效'); -INSERT INTO `menu` VALUES (102, '出场御龙传说特效'); -INSERT INTO `menu` VALUES (103, '出场三星瑞兹召唤10个窈窕淑女特效'); - --- ---------------------------- --- Table structure for role --- ---------------------------- -DROP TABLE IF EXISTS `role`; -CREATE TABLE `role` ( - `role_id` int NOT NULL AUTO_INCREMENT, - `role_name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - `role_tel` char(11) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - PRIMARY KEY (`role_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 41 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of role --- ---------------------------- -INSERT INTO `role` VALUES (10, '渣渣辉', '12345679811'); -INSERT INTO `role` VALUES (20, '贫民玩家', '12345679812'); -INSERT INTO `role` VALUES (30, '氪金大大佬', '12345679813'); -INSERT INTO `role` VALUES (40, '科技不要脸玩家', '12345679814'); - --- ---------------------------- --- Table structure for role_menu --- ---------------------------- -DROP TABLE IF EXISTS `role_menu`; -CREATE TABLE `role_menu` ( - `rm_id` int NOT NULL AUTO_INCREMENT, - `role_id` int NULL DEFAULT NULL, - `menu_id` int NULL DEFAULT NULL, - PRIMARY KEY (`rm_id`) USING BTREE, - INDEX `role_id`(`role_id` ASC) USING BTREE, - INDEX `menu_id`(`menu_id` ASC) USING BTREE, - CONSTRAINT `role_menu_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `role` (`role_id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `role_menu_ibfk_2` FOREIGN KEY (`menu_id`) REFERENCES `menu` (`menu_id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 51 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of role_menu --- ---------------------------- -INSERT INTO `role_menu` VALUES (1, 10, 100); -INSERT INTO `role_menu` VALUES (2, 20, 100); -INSERT INTO `role_menu` VALUES (3, 20, 101); -INSERT INTO `role_menu` VALUES (4, 30, 100); -INSERT INTO `role_menu` VALUES (5, 30, 101); -INSERT INTO `role_menu` VALUES (6, 30, 102); -INSERT INTO `role_menu` VALUES (7, 40, 100); -INSERT INTO `role_menu` VALUES (8, 40, 101); -INSERT INTO `role_menu` VALUES (9, 40, 102); -INSERT INTO `role_menu` VALUES (10, 40, 103); - --- ---------------------------- --- Table structure for user --- ---------------------------- -DROP TABLE IF EXISTS `user`; -CREATE TABLE `user` ( - `user_id` int NOT NULL AUTO_INCREMENT, - `user_name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - `user_tel` char(11) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - PRIMARY KEY (`user_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of user --- ---------------------------- -INSERT INTO `user` VALUES (1, '凯撒大帝', '12346578911'); -INSERT INTO `user` VALUES (2, '凯尔大帝', '12346578912'); -INSERT INTO `user` VALUES (3, '凯皇大帝', '12346578913'); -INSERT INTO `user` VALUES (4, '普洱大帝', '12346578914'); -INSERT INTO `user` VALUES (5, '盖伦大帝', '12346578915'); -INSERT INTO `user` VALUES (6, '刀妹大帝', '12346578916'); -INSERT INTO `user` VALUES (7, '旭旭大帝', '12346578917'); -INSERT INTO `user` VALUES (8, '丘丘大帝', '12346578918'); -INSERT INTO `user` VALUES (9, '宝宝大帝', '12346578919'); - --- ---------------------------- --- Table structure for user_role --- ---------------------------- -DROP TABLE IF EXISTS `user_role`; -CREATE TABLE `user_role` ( - `ur_id` int NOT NULL AUTO_INCREMENT, - `user_id` int NULL DEFAULT NULL, - `role_id` int NULL DEFAULT NULL, - PRIMARY KEY (`ur_id`) USING BTREE, - INDEX `user_id`(`user_id` ASC) USING BTREE, - INDEX `role_id`(`role_id` ASC) USING BTREE, - CONSTRAINT `user_role_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `user_role_ibfk_2` FOREIGN KEY (`role_id`) REFERENCES `role` (`role_id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of user_role --- ---------------------------- -INSERT INTO `user_role` VALUES (1, 1, 10); -INSERT INTO `user_role` VALUES (2, 2, 20); -INSERT INTO `user_role` VALUES (3, 3, 30); -INSERT INTO `user_role` VALUES (4, 4, 40); -INSERT INTO `user_role` VALUES (5, 5, 10); -INSERT INTO `user_role` VALUES (6, 6, 20); -INSERT INTO `user_role` VALUES (7, 7, 30); -INSERT INTO `user_role` VALUES (8, 8, 40); -INSERT INTO `user_role` VALUES (9, 9, 10); - -SET FOREIGN_KEY_CHECKS = 1; -``` -\ No newline at end of file -```` - diff --git "a/02 \351\231\210\346\230\216\345\207\275/\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" "b/02 \351\231\210\346\230\216\345\207\275/\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" deleted file mode 100644 index f622b75..0000000 --- "a/02 \351\231\210\346\230\216\345\207\275/\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" +++ /dev/null @@ -1,262 +0,0 @@ -```mysql -if exists(select 1 from sys.sysforeignkey where role='FK_BORROW2_BORROW_LIBRARY') then - alter table Borrow2 - delete foreign key FK_BORROW2_BORROW_LIBRARY -end if; - -if exists(select 1 from sys.sysforeignkey where role='FK_BORROW2_BORROW2_BORROW') then - alter table Borrow2 - delete foreign key FK_BORROW2_BORROW2_BORROW -end if; - -if exists(select 1 from sys.sysforeignkey where role='FK_MANAGE_MANAGE_LIBRARY') then - alter table manage - delete foreign key FK_MANAGE_MANAGE_LIBRARY -end if; - -if exists(select 1 from sys.sysforeignkey where role='FK_MANAGE_MANAGE2_WORKING') then - alter table manage - delete foreign key FK_MANAGE_MANAGE2_WORKING -end if; - -if exists(select 1 from sys.sysforeignkey where role='FK_SERVE_SERVE_WORKING') then - alter table serve - delete foreign key FK_SERVE_SERVE_WORKING -end if; - -if exists(select 1 from sys.sysforeignkey where role='FK_SERVE_SERVE2_BORROW') then - alter table serve - delete foreign key FK_SERVE_SERVE2_BORROW -end if; - -drop index if exists Borrow.Borrow_PK; - -drop table if exists Borrow; - -drop index if exists Borrow2.Borrow2_FK; - -drop index if exists Borrow2.Borrow_FK; - -drop index if exists Borrow2.Borrow2_PK; - -drop table if exists Borrow2; - -drop index if exists library.library_PK; - -drop table if exists library; - -drop index if exists manage.manage2_FK; - -drop index if exists manage.manage_FK; - -drop index if exists manage.manage_PK; - -drop table if exists manage; - -drop index if exists serve.serve_FK; - -drop index if exists serve.serve2_FK; - -drop index if exists serve.serve_PK; - -drop table if exists serve; - -drop index if exists "working personnel"."working personnel_PK"; - -drop table if exists "working personnel"; - -/*==============================================================*/ -/* Table: Borrow */ -/*==============================================================*/ -create table Borrow -( - Bor_id integer not null, - Bor_name varchar(10) not null, - Bor_level integer not null, - Bor_blacklist varchar(10) not null, - constraint PK_BORROW primary key (Bor_id) -); - -/*==============================================================*/ -/* Index: Borrow_PK */ -/*==============================================================*/ -create unique index Borrow_PK on Borrow ( -Bor_id ASC -); - -/*==============================================================*/ -/* Table: Borrow2 */ -/*==============================================================*/ -create table Borrow2 -( - lib_id integer not null, - Bor_id integer not null, - situation char(4) not null, - constraint PK_BORROW2 primary key (lib_id, Bor_id) -); - -/*==============================================================*/ -/* Index: Borrow2_PK */ -/*==============================================================*/ -create unique index Borrow2_PK on Borrow2 ( -lib_id ASC, -Bor_id ASC -); - -/*==============================================================*/ -/* Index: Borrow_FK */ -/*==============================================================*/ -create index Borrow_FK on Borrow2 ( -lib_id ASC -); - -/*==============================================================*/ -/* Index: Borrow2_FK */ -/*==============================================================*/ -create index Borrow2_FK on Borrow2 ( -Bor_id ASC -); - -/*==============================================================*/ -/* Table: library */ -/*==============================================================*/ -create table library -( - lib_id integer not null, - lib_name varchar(20) not null, - lib_state varchar(3) not null, - lib_author varchar(10) not null, - lib_publish varchar(20) not null, - lib_classes integer not null, - constraint PK_LIBRARY primary key (lib_id) -); - -/*==============================================================*/ -/* Index: library_PK */ -/*==============================================================*/ -create unique index library_PK on library ( -lib_id ASC -); - -/*==============================================================*/ -/* Table: manage */ -/*==============================================================*/ -create table manage -( - lib_id integer not null, - wor_id integer not null, - lib_state varchar(2) not null, - constraint PK_MANAGE primary key (lib_id, wor_id) -); - -/*==============================================================*/ -/* Index: manage_PK */ -/*==============================================================*/ -create unique index manage_PK on manage ( -lib_id ASC, -wor_id ASC -); - -/*==============================================================*/ -/* Index: manage_FK */ -/*==============================================================*/ -create index manage_FK on manage ( -lib_id ASC -); - -/*==============================================================*/ -/* Index: manage2_FK */ -/*==============================================================*/ -create index manage2_FK on manage ( -wor_id ASC -); - -/*==============================================================*/ -/* Table: serve */ -/*==============================================================*/ -create table serve -( - wor_id integer not null, - Bor_id integer not null, - constraint PK_SERVE primary key (wor_id, Bor_id) -); - -/*==============================================================*/ -/* Index: serve_PK */ -/*==============================================================*/ -create unique index serve_PK on serve ( -wor_id ASC, -Bor_id ASC -); - -/*==============================================================*/ -/* Index: serve2_FK */ -/*==============================================================*/ -create index serve2_FK on serve ( -Bor_id ASC -); - -/*==============================================================*/ -/* Index: serve_FK */ -/*==============================================================*/ -create index serve_FK on serve ( -wor_id ASC -); - -/*==============================================================*/ -/* Table: "working personnel" */ -/*==============================================================*/ -create table "working personnel" -( - wor_id integer not null, - wor_name varchar(4) not null, - wor_position varchar(10) not null, - wor_range varchar(20) not null, - wor_state varchar(4) not null, - constraint "PK_WORKING PERSONNEL" primary key (wor_id) -); - -/*==============================================================*/ -/* Index: "working personnel_PK" */ -/*==============================================================*/ -create unique index "working personnel_PK" on "working personnel" ( -wor_id ASC -); - -alter table Borrow2 - add constraint FK_BORROW2_BORROW_LIBRARY foreign key (lib_id) - references library (lib_id) - on update restrict - on delete restrict; - -alter table Borrow2 - add constraint FK_BORROW2_BORROW2_BORROW foreign key (Bor_id) - references Borrow (Bor_id) - on update restrict - on delete restrict; - -alter table manage - add constraint FK_MANAGE_MANAGE_LIBRARY foreign key (lib_id) - references library (lib_id) - on update restrict - on delete restrict; - -alter table manage - add constraint FK_MANAGE_MANAGE2_WORKING foreign key (wor_id) - references "working personnel" (wor_id) - on update restrict - on delete restrict; - -alter table serve - add constraint FK_SERVE_SERVE_WORKING foreign key (wor_id) - references "working personnel" (wor_id) - on update restrict - on delete restrict; - -alter table serve - add constraint FK_SERVE_SERVE2_BORROW foreign key (Bor_id) - references Borrow (Bor_id) - on update restrict - on delete restrict; -``` - diff --git "a/02 \351\231\210\346\230\216\345\207\275/\347\254\224\350\256\260.md" "b/02 \351\231\210\346\230\216\345\207\275/\347\254\224\350\256\260.md" deleted file mode 100644 index a07fefa..0000000 --- "a/02 \351\231\210\346\230\216\345\207\275/\347\254\224\350\256\260.md" +++ /dev/null @@ -1,259 +0,0 @@ -````mysql -## 数据库高级部分预习 - -## 一、函数 - -### 1.创建自定义函数 - - (1)DELIMITER $$ 定义结束符。MySQL默认的结束符是分号,但是函数体中可能用到分号。为了避免冲突,需要另外定义结束符。 - - (2)DROP FUNCTION IF EXISTS genPerson$$ 如果函数genPerson已经存在了,就删除掉。 - - (3)CREATE FUNCTION 创建函数genPerson,函数的参数是name,返回值是varchar(50)。 - - (4)函数体放在BEGIN 与 END之间。 - - (5)DECLARE 声明变量,str类型是varchar(50),默认值是空。 - - (6)CONCAT连接多个字符串。 - - (7)RETURN 返回拼接后的字符串str。 - - - - -### 2.执行 - -select 函数名('字段名') - - - -## 二、视图 - -## 视图是虚拟表,本身不存储数据,而是按照指定的方式进行查询 - -创建视图 - -```mysql -CREATE VIEW 视图名(列1,列2...) AS SELECT (列1,列2...) FROM ...; -``` - -使用视图 - -```mysql -当成表使用就好 -``` - - - -修改视图 - -```mysql -CREATE OR REPLACE VIEW 视图名 AS SELECT [...] FROM [...]; -``` - - - -查看数据库已有视图 - -```mysql ->SHOW TABLES [like...];(可以使用模糊查找) -``` - - - -查看视图详情 - -```mysql -DESC 视图名或者SHOW FIELDS FROM 视图名 -``` - - - -视图条件限制 - -```mysql -[WITH CHECK OPTION] -``` - -#### 插入数据 -1. 视图不是表,不直接存储数据,是一张虚拟的表; -2. 一般情况下,在创建有条件限制的视图时,加上“WITH CHECK OPTION”命令*) - -1.通过视图插入数据 - -```mysql ->INSERT INTO v_order(pid,pname,price) VALUES('p010','柴油','34'); -``` - -2.不可以跨表插入数据 - -```mysql -可以通过视图插入数据,但是只能基于一个基础表进行插入,不能跨表更新数据。 -``` - -3.WITH CHECK OPTION -如果在创建视图的时候制定了“WITH CHECK OPTION”,那么更新数据时不能插入或更新不符合视图限制条件的记录。 - -通过视图修改,可能导致数据无故消失,因此: - -> 没有特殊的理由,建议加上“WITH CHECK OPTION”命令。 - -# 百度标准理解 - -#### 1.事务 - -- 原子性:事务包含的这一系列操作,要么全部成功,要么全部失败。(由DBMS的事务管理子系统来实现); -- 一致性:事务完成之后,不会将非法的数据写入数据库。(由DBMS的完整性子系统执行测试任务); -- 隔离性:多个事务可以在一定程度上并发执行。(由DBMS的[并发](https://so.csdn.net/so/search?q=并发&spm=1001.2101.3001.7020)控制子系统实现); - -隔离级别 - -读未提交:一个事务可以读取到另外一个事务尚未提交的数据。该隔离级别可能会产生“脏读”、“不可重复读取”和“幻影读取”问题。 - -读已提交:一个事务只能读取到另外一个事务已经提交的数据。该隔离级别解决了“脏读”问题,但是仍然可能会发生“不可重复读取”和“幻影读取”问题。 - - -可重复读取:在同一个事务当中,多次读取同一份数据,结果一样。该隔离级别解决了“脏读”和“不可重复读取”问题,但是仍然有可能会产生“幻影读取问题”(虚读)。 - -序列化:多个同务只能排队执行,即只有一个事务结束之后,另外一个事务才能开始执行。该隔离级别解决了“脏读”,“不可重复读取”和“幻影读取”问题,但是程序性能会下降。所以只有必要的时候(比如在银行系统里面)才会使用。 - -总结: - - 隔离级别从低到高依次是"读未提交"、“读已提交”、“可重复读取”和“序列化”,隔离级别越高,性能越低。mysql数据库默认隔离级别是“可重复读取”,oracle是“读已提交”。数据库底层使用的“加锁”的机制来实现不同的隔离级别,包括对整个表加锁,对表中的行加锁。 - - mysql数据库开始事务、提交事务、回滚事务 - -```MYSQL -begin; -commit; -rollback; -``` - - mysql数据库必须将数据库引擎设置为"innodb"才能支持事务。 - - - -- 持久性:事务完成之后,数据要永久保存(一般会保存在硬盘上)(由DBMS的恢复管理子系统实现的); - - - -#### 2.视图 - -创建视图 - - create view 视图名 as select(注:可以对单表或者多表进行查询,数据库会将视图的定义保存下来。) - -删除视图 - - drop view 视图名 - -例子 - -```mysql -create table t_emp( - id int primary key auto_increment, - name varchar(50), - salary int, - age int -); - -create view v_emp as select * from t_emp; -create view v_emp2(name,salary) as select name,salary from t_emp; - -insert into v_emp2 values('Jhon',3000); - -create table t_dept( - id int primary key, - name varchar(50), - addr varchar(100) -); -insert into t_dept values(100,'财务部','北京'); -insert into t_dept values(200,'开发部','上海'); - -create table t_staff( - id int primary key auto_increment, - name varchar(30), - age int, - dept_id int -); -insert into t_staff values(null,'张三',33,100); -insert into t_staff values(null,'李四',23,100); -insert into t_staff values(null,'王五',43,200); - -create view v_staff_dept(sname,dname,addr) -as -select s.name sname,d.name dname,d.addr from t_staff s -join t_dept d on s.dept_id = d.id; - -drop view v_emp; - - -``` - -#### 3.索引 - -创建索引 - - create index 索引名 on 表名(字段列表) - -—— 为了提高查询的速度而在数据库端创建的一种排序的数据结构。 - - 注:索引类似于一本书的目录 - -应该将经常作为查询条件的字段加索引,除此以外,还要在分组、过滤、排序及联合查询的字段上加索引 - -删除索引 - - drop index 索引名 on 表名 - -联合索引 - - 所谓联合索引(复合索引),指的是索引字段是多个 - -#### 4.存储过程 - - 存储在数据库端的一组为了完成特定功能的sql语句 - - create procedure 存储过程名([参数]) - - 参数格式 (参数类型 参数名 数据类型) - - 参数类型有三种: - - IN: 输入参数,该参数的值必须在调用该存储过程时指定,在存储过程内部使用, 不能返回。 - - 缺省值是IN。 - - OUT:输出参数,该参数值的值可以在存储过程内部修改,并可返回。 - - INOUT:输入输出参数,该参数需要在调用时指定,并且可以返回。 - -#### 5.约束 - -是一种限制,通过对表的行或者列的数据做出限制来确保数据的完整性和一致性。 - - - -主键:相当于唯一性约束 + 非空约束的组合。 - - 注:一张表只能一个主键,数据库会为主键添加主键索引 - - 外键:用于确保两个表之间的参照完整性。 - -插入记录时,要先插入主表中的记录。 -删除记录时,要先删除从表中的记录。 - - 非空: not null - - 唯一性:unique - - 检查(了解): - - 注:检查约束跟数据库版本有关系,mysql8.0.16之后才支持。 - - - -#### 6.Case表达式 -```` - diff --git "a/02 \351\231\210\346\230\216\345\207\275/\350\247\206\345\233\276.md" "b/02 \351\231\210\346\230\216\345\207\275/\350\247\206\345\233\276.md" deleted file mode 100644 index c8d2b49..0000000 --- "a/02 \351\231\210\346\230\216\345\207\275/\350\247\206\345\233\276.md" +++ /dev/null @@ -1,68 +0,0 @@ -````mysql -#第14章_视图的课后练习 - -USE view_db; -#练习1: -#1. 使用表emps创建视图employee_vu, -#其中包括姓名(LAST_NAME),员工号(EMPLOYEE_ID),部门号(DEPARTMENT_ID) - -CREATE VIEW employee_vu as -SELECT * from employees; - -#2. 显示视图的结构 -desc employee_vu; - -#3. 查询视图中的全部内容 -SELECT * from employee_vu; - -#4. 将视图中的数据限定在部门号是80的范围内 -CREATE or replace VIEW employee_vu as -SELECT * from employees WHERE department_id=80; - -#练习2: - - -#1. 创建视图emp_v1,要求查询电话号码以‘011’开头的员工姓名和工资、邮箱 - -CREATE view emp_v1(姓名,工资,邮箱) as -SELECT CONCAT(first_name,last_name),salary,email from employees WHERE phone_number like '011%'; - - -#2. 要求将视图 emp_v1 修改为查询电话号码以‘011’开头的并且邮箱中包含 e 字符 -#的员工姓名和邮箱、电话号码 -CREATE or replace view emp_v1(姓名,邮箱,电话号码) as -SELECT CONCAT(first_name,last_name),email,phone_number from employees WHERE phone_number like '011%' and email like '%e%'; - - -#3. 向 emp_v1 插入一条记录,是否可以? -insert into emp_v1 VALUES -('jojo','maia','110110'); -不可以; - - - - - -#4. 修改emp_v1中员工的工资,每人涨薪1000 -UPDATE employees set salary=salary+1000 WHERE email in (SELECT * from (SELECT 邮箱 from emp_v1) as a); - -#5. 删除emp_v1中姓名为Olsen的员工 -DELETE from emp_v1 WHERE 姓名 like '%Olsen'; - -#6. 创建视图emp_v2,要求查询部门的最高工资高于 12000 的部门id和其最高工资 -CREATE view emp_v2 as -SELECT department_id,max(salary) msa from employees GROUP BY department_id HAVING msa>12000; - - - - - -#7. 向 emp_v2 中插入一条记录,是否可以? -不可以; - - - -#8. 删除刚才的emp_v2 和 emp_v1 -drop view emp_v2,emp_v1; -```` - diff --git "a/03 \350\265\226\345\277\203\345\246\215/20230905 \345\274\200\345\255\246\347\254\254\344\270\200\350\257\276.md" "b/03 \350\265\226\345\277\203\345\246\215/20230905 \345\274\200\345\255\246\347\254\254\344\270\200\350\257\276.md" deleted file mode 100644 index 408ef39..0000000 --- "a/03 \350\265\226\345\277\203\345\246\215/20230905 \345\274\200\345\255\246\347\254\254\344\270\200\350\257\276.md" +++ /dev/null @@ -1,43 +0,0 @@ -## 大二会学习到的课程: - -### 数据库高级应用 - -数据控制语言DCL - -### JavaScript 编程基础(JavaScript 和 jQuery) - -### WEB 程序设计高级应用(MVC技术) - -MVC指MVC模式的某种框架,它强制性地使应用程序的输入、处理和输出分开 - -使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式 - -### JavaScript 高级编程(Nodejs) - -Node.js 主要是用 C/C++ 编写的。作为一个运行 Web 服务器的程序,Node.js 需要不断地与设备的操作系统进行交互 - -使用像 C 这样的低级语言构建 Node.js 使软件可以轻松访问操作系统的资源并使用它们来执行指令 - -但是 Node.js 的工作方式涉及更多的复杂问题。Node.js 运行快速高效的 Web 服务器,但它究竟是如何做到的呢?本节介绍 Node.js 用于实现其效率的过程 - -### 网页设计高级应用(Vue技术和应用) - -Vue (发音为 /vjuː/,类似 **view**) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面 - -### 企业级架构技术应用(WebApi 技术) - -WebAPI是一个简单的构建HTTP服务的新框架,用于对接各种客户端(浏览器,移动设备),在.Net平台上,WebAPI是一个开源的、理想的、构建REST-ful服务的技术 - -### Linux 操作系统基础应用 - - - -## 学习专业知识的网站: - -gitee - -github - -csdn - -bilibili \ No newline at end of file diff --git "a/03 \350\265\226\345\277\203\345\246\215/20230907 \346\225\260\346\215\256\345\272\223\344\270\211\345\244\247\350\214\203\345\274\217.md" "b/03 \350\265\226\345\277\203\345\246\215/20230907 \346\225\260\346\215\256\345\272\223\344\270\211\345\244\247\350\214\203\345\274\217.md" deleted file mode 100644 index b8c84c6..0000000 --- "a/03 \350\265\226\345\277\203\345\246\215/20230907 \346\225\260\346\215\256\345\272\223\344\270\211\345\244\247\350\214\203\345\274\217.md" +++ /dev/null @@ -1,138 +0,0 @@ -## 数据库三大范式(规则) - -### 第一范式 - -要求字段内容不可再分割,为保证数据原子性 - -例如地址信息表,一个地址可以拆分为省、市、区、街道和详细地址 - -### 第二范式 - -要求在满足第一范式的基础上,要求非主键字段要完全依赖主键(非主键要依赖整个联合主键)而不能只依赖部分 - -例如成绩表,学生学号和课程编号在成绩表中缺一不可 - -| 学号 | 姓名 | 年龄 | 课程名称 | 成绩 | 学分 | -| ---- | ---- | ---- | -------- | ---- | ---- | -| | | | | | | - -1. 假设学号是表中的唯一主键,那由学号就可以确定姓名和年龄了,但是却不能确定课程名称和成绩 - -2. 假设课程名称是表中的唯一主键,那由课程名称就可以确定学分了,但是却不能确定姓名、年龄和成绩 - -3. 虽然通过学号和课程名称的联合主键,可以确定除联合主键外的所有的非主键值,但是基于上述两个假设,也不符合第二范式的要求 - -所以把表拆分开才会符合第二范式的要求 - -学生表 - 学号做主键 - -课程表 - 课程名称做主键 - -成绩表 - 学号和课程名称做联合主键 - -### 第三范式 - -满足第二范式的前提,要求非主键属性要直接依赖于主键 - -| 学号 | 姓名 | 班级 | 班主任 | -| ---- | ---- | ---- | ------ | -| | | | | - -这个表中,学号是主键,它可以唯一确定姓名、班级、班主任,符合了第二范式,但是在非主键字段中,我们也可以通过班级推导出该班级的班主任,所以它是不符合第三范式的 - -学生表 - -| 学号 | 姓名 | 班级 | -| ---- | ---- | ---- | -| | | | - -班级表 - -| 班级 | 班主任 | -| ---- | ------ | -| | | - -通过把班级与班主任的映射关系另外做成一张映射表,我们就成功地消除了表中的传递依赖了 - -```mysql -create database school charset utf8; - -use school; - -# 院系 -create table department( - de_id int primary key auto_increment, - de_name varchar(10) -); - -# 专业 -create table major( - ma_id int primary key auto_increment, - ma_name varchar(10), - de_id int, - foreign key (de_id) references department(de_id) -); - -# 班级 -create table clazz( - cla_id int primary key auto_increment, - cla_name varchar(10), - ma_id int, - foreign key (ma_id) references major(ma_id) -); - -# 学生 -create table student( - st_id int primary key auto_increment, - st_name varchar(10), - st_sex char(1), - cla_id int, - foreign key (cla_id) references clazz(cla_id) -); - -# 课程 -create table course( - cou_id int primary key auto_increment, - cou_name varchar(10), - t_id int, - foreign key (t_id) references teacher (t_id) -); - -# 学生+课程 -create table performance( - id int primary key auto_increment, - st_id int, - foreign key (st_id) references student(st_id), - cou_id int, - foreign key (cou_id) references course(cou_id), - score int -); - -# 教师 -create table teacher( - t_id int primary key auto_increment, - t_name varchar(10) -); - -# 教室 -create table classroom( - r_id int primary key auto_increment, - r_nsme varchar(10) -); - -# 班级+课程+教室+教室 -create table timetable( - time_id int primary key auto_increment, - time varchar(255), - cla_id int, - foreign key (cla_id) references clazz(cla_id), - cou_id int, - foreign key (cou_id) references course(cou_id), - t_id int, - foreign key (t_id) references teacher (t_id), - r_id int , - foreign key (r_id) references classroom (r_id) -); - -``` - diff --git "a/03 \350\265\226\345\277\203\345\246\215/20230908 powerdesigner.md" "b/03 \350\265\226\345\277\203\345\246\215/20230908 powerdesigner.md" deleted file mode 100644 index 5efb452..0000000 --- "a/03 \350\265\226\345\277\203\345\246\215/20230908 powerdesigner.md" +++ /dev/null @@ -1,130 +0,0 @@ -## powerdesigner - -第一步:创建概念模型图(CDM)以用户角度 - -第二步:转换逻辑模型图(LDM)以计算机角度 - -第三步:转换物理模型图(PDM)以数据角度 - -第四步:生成DDL - -表与表的关系:一个表里的几条记录对应另一个表的几条记录 - -数据库范式在实际中不会完全按照范式,根据需求实际操作 - -## 题目:图书管理系统 - -```mysql -create database lib charset utf8; - -use lib; - -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/10 18:25:47 */ -/*==============================================================*/ - - -drop table if exists administrator; - -drop table if exists book; - -drop table if exists reader; - -drop table if exists stacks; - -drop table if exists system; - -drop table if exists type; - -/*==============================================================*/ -/* Table: administrator */ -/*==============================================================*/ -create table administrator -( - a_id char(10) not null, - a_name char(5) not null, - primary key (a_id) -); - -/*==============================================================*/ -/* Table: book */ -/*==============================================================*/ -create table book -( - b_id int not null auto_increment, - b_name varchar(10) not null, - author varchar(5) not null, - publication varchar(10) not null, - b_num int not null, - primary key (b_id) -); - -/*==============================================================*/ -/* Table: reader */ -/*==============================================================*/ -create table reader -( - r_id int not null auto_increment, - r_name char(5) not null, - r_sex char(1) not null, - r_age int not null, - primary key (r_id) -); - -/*==============================================================*/ -/* Table: stacks */ -/*==============================================================*/ -create table stacks -( - s_id int not null auto_increment, - b_id int not null, - s_name varchar(5) not null, - s_address varchar(5) not null, - primary key (s_id) -); - -/*==============================================================*/ -/* Table: system */ -/*==============================================================*/ -create table system -( - date_id int not null auto_increment, - b_id int not null, - r_id int not null, - a_id char(10) not null, - borrow date not null, - `return` date not null, - actual date, - primary key (date_id) -); - -/*==============================================================*/ -/* Table: type */ -/*==============================================================*/ -create table type -( - type_id int not null auto_increment, - b_id int not null, - type_name varchar(3) not null, - primary key (type_id) -); - -alter table stacks add constraint FK_deposit foreign key (b_id) - references book (b_id) on delete restrict on update restrict; - -alter table system add constraint FK_Relationship_3 foreign key (b_id) - references book (b_id) on delete restrict on update restrict; - -alter table system add constraint FK_Relationship_4 foreign key (r_id) - references reader (r_id) on delete restrict on update restrict; - -alter table system add constraint FK_manage foreign key (a_id) - references administrator (a_id) on delete restrict on update restrict; - -alter table type add constraint FK_categorize foreign key (b_id) - references book (b_id) on delete restrict on update restrict; - - -``` - diff --git "a/03 \350\265\226\345\277\203\345\246\215/20230912 \350\261\206\347\223\243\347\224\265\345\275\261.jpg" "b/03 \350\265\226\345\277\203\345\246\215/20230912 \350\261\206\347\223\243\347\224\265\345\275\261.jpg" deleted file mode 100644 index 2e8e540d7b6145888c74421a4fdcae69456ba584..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148577 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%0DC1hDs!Cl} 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

d9EhS?EhfN+^6`Ky0Zi?Ve4? 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 A1ONa4 diff --git "a/03 \350\265\226\345\277\203\345\246\215/20230919 mysql\345\244\215\344\271\240.md" "b/03 \350\265\226\345\277\203\345\246\215/20230919 mysql\345\244\215\344\271\240.md" deleted file mode 100644 index a677174..0000000 --- "a/03 \350\265\226\345\277\203\345\246\215/20230919 mysql\345\244\215\344\271\240.md" +++ /dev/null @@ -1,765 +0,0 @@ -## mysql复习 - -如果值是null,那么所有null参与运算,返回的结果也都是null - -所以遇上null,却又必须让它参与运算,就使用 ifnull (原值,新值) - -这个函数的作用,如果原值是null,就用新值代替,如果原值不null,就保持原值 - -limit 起始数,显示数 - -desc 库名:显示表结构 - -length(email):email的字节长度 - -#### 自然连接 - -表,表 where 字段=字段 and 字段=字段 - -#### 联表区间 - -表 left join 表 on 表.字段 between 表.字段 and 表.字段(不支持别名) - -#### 自连接 - -inner join - -not in(条件,条件) - -!(between 20 and 50) - -### 建库建表 - -```mysql -create database db1 charset utf8; - -use db1; -/* - Navicat Premium Data Transfer - - Source Server : local - Source Server Type : MySQL - Source Server Version : 80034 (8.0.34) - Source Host : localhost:3306 - Source Schema : mxdxdb - - Target Server Type : MySQL - Target Server Version : 80034 (8.0.34) - File Encoding : 65001 - - Date: 17/09/2023 22:21:02 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for countries --- ---------------------------- -DROP TABLE IF EXISTS `countries`; -CREATE TABLE `countries` ( - `country_id` char(2) NOT NULL, - `country_name` varchar(40) DEFAULT NULL, - `region_id` int DEFAULT NULL, - PRIMARY KEY (`country_id`), - KEY `countr_reg_fk` (`region_id`), - CONSTRAINT `countr_reg_fk` FOREIGN KEY (`region_id`) REFERENCES `regions` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of countries --- ---------------------------- -BEGIN; -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('AR', '阿根廷', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('AU', '澳大利亚', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('BE', '比利时', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('BR', '巴西', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CA', '加拿大', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CH', '瑞士', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CN', '中国', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('DE', '德国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('DK', '丹麦', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('EG', '埃及', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('FR', '法国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('HK', '香港', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IL', '以色列', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IN', '印度', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IT', '意大利', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('JP', '日本', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('KW', '科威特', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('MX', '墨西哥', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('NG', '尼日利亚', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('NL', '荷兰', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('SG', '新加坡', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('UK', '英国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('US', '美国', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('ZM', '赞比亚', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('ZW', '津巴布韦', 4); -COMMIT; - --- ---------------------------- --- Table structure for departments --- ---------------------------- -DROP TABLE IF EXISTS `departments`; -CREATE TABLE `departments` ( - `department_id` int NOT NULL DEFAULT '0', - `department_name` varchar(30) NOT NULL, - `manager_id` int DEFAULT NULL, - `location_id` int DEFAULT NULL, - PRIMARY KEY (`department_id`), - UNIQUE KEY `dept_id_pk` (`department_id`), - KEY `dept_loc_fk` (`location_id`), - KEY `dept_mgr_fk` (`manager_id`), - CONSTRAINT `dept_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`location_id`), - CONSTRAINT `dept_mgr_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of departments --- ---------------------------- -BEGIN; -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (10, '行政部', 200, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (20, '营销部', 201, 1800); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (30, '采购部', 114, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (40, '人力资源部', 203, 2400); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (50, '物流部', 121, 1500); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (60, '信息技术部', 103, 1400); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (70, '公共关系部', 204, 2700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (80, '销售部', 145, 2500); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (90, '执行部门', 100, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (100, '财务部', 108, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (110, '会计部', 205, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (120, '财务部门1', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (130, '企业税务部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (140, '控制和信用部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (150, '股东服务部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (160, '员工福利部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (170, '制造部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (180, '建筑部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (190, '承包部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (200, '运营部', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (210, '信息技术支持部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (220, '网络运营中心', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (230, '信息技术帮助台', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (240, '政府销售部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (250, '零售销售部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (260, '招聘部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (270, '工资单部门', NULL, 1700); -COMMIT; - --- ---------------------------- --- Table structure for employees --- ---------------------------- -DROP TABLE IF EXISTS `employees`; -CREATE TABLE `employees` ( - `employee_id` int NOT NULL DEFAULT '0', - `first_name` varchar(20) DEFAULT NULL, - `last_name` varchar(25) NOT NULL, - `email` varchar(25) NOT NULL, - `phone_number` varchar(20) DEFAULT NULL, - `hire_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `salary` double(8,2) DEFAULT NULL, - `commission_pct` double(2,2) DEFAULT NULL, - `manager_id` int DEFAULT NULL, - `department_id` int DEFAULT NULL, - PRIMARY KEY (`employee_id`), - UNIQUE KEY `emp_email_uk` (`email`), - UNIQUE KEY `emp_emp_id_pk` (`employee_id`), - KEY `emp_dept_fk` (`department_id`), - KEY `emp_job_fk` (`job_id`), - KEY `emp_manager_fk` (`manager_id`), - CONSTRAINT `emp_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `emp_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`), - CONSTRAINT `emp_manager_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of employees --- ---------------------------- -BEGIN; -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (100, '史蒂文', '金', 'SKING', '515.123.4567', '1987-06-17', 'AD_PRES', 24000.00, NULL, NULL, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (101, '尼娜', '科查尔', 'NKOCHHAR', '515.123.4568', '1989-09-21', 'AD_VP', 17000.00, NULL, 100, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (102, '雷克斯', '德哈恩', 'LDEHAAN', '515.123.4569', '1993-01-13', 'AD_VP', 17000.00, NULL, 100, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (103, '亚历山大', '胡诺尔德', 'AHUNOLD', '590.423.4567', '1990-01-03', 'IT_PROG', 9000.00, NULL, 102, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (104, '布鲁斯', '恩斯特', 'BERNST', '590.423.4568', '1991-05-21', 'IT_PROG', 6000.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (105, '大卫', '奥斯汀', 'DAUSTIN', '590.423.4569', '1997-06-25', 'IT_PROG', 4800.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (106, '瓦利', '帕塔巴拉', 'VPATABAL', '590.423.4560', '1998-02-05', 'IT_PROG', 4800.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (107, '黛安娜', '洛伦茨', 'DLORENTZ', '590.423.5567', '1999-02-07', 'IT_PROG', 4200.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (108, '南希', '格林伯格', 'NGREENBE', '515.124.4569', '1994-08-17', 'FI_MGR', 12000.00, NULL, 101, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (109, '丹尼尔', '法维特', 'DFAVIET', '515.124.4169', '1994-08-16', 'FI_ACCOUNT', 9000.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (110, '约翰', '陈', 'JCHEN', '515.124.4269', '1997-09-28', 'FI_ACCOUNT', 8200.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (111, '伊斯梅尔', '斯基亚拉', 'ISCIARRA', '515.124.4369', '1997-09-30', 'FI_ACCOUNT', 7700.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (112, '何塞·曼努埃尔', '乌尔曼', 'JMURMAN', '515.124.4469', '1998-03-07', 'FI_ACCOUNT', 7800.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (113, '路易斯', '波普', 'LPOPP', '515.124.4567', '1999-12-07', 'FI_ACCOUNT', 6900.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (114, '丹', '拉法艾利', 'DRAPHEAL', '515.127.4561', '1994-12-07', 'PU_MAN', 11000.00, NULL, 100, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (115, '亚历山大', '胡', 'AKHOO', '515.127.4562', '1995-05-18', 'PU_CLERK', 3100.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (116, '雪莉', '拜达', 'SBAIDA', '515.127.4563', '1997-12-24', 'PU_CLERK', 2900.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (117, '西加尔', '托比亚斯', 'STOBIAS', '515.127.4564', '1997-07-24', 'PU_CLERK', 2800.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (118, '盖伊', '火室', 'GHIMURO', '515.127.4565', '1998-11-15', 'PU_CLERK', 2600.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (119, '卡伦', '科尔门纳雷斯', 'KCOLMENA', '515.127.4566', '1999-08-10', 'PU_CLERK', 2500.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (120, '马修', '韦斯', 'MWEISS', '650.123.1234', '1996-07-18', 'ST_MAN', 8000.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (121, '亚当', '弗里普', 'AFRIPP', '650.123.2234', '1997-04-10', 'ST_MAN', 8200.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (122, '帕亚姆', '考夫林', 'PKAUFLIN', '650.123.3234', '1995-05-01', 'ST_MAN', 7900.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (123, '珊塔', '沃尔曼', 'SVOLLMAN', '650.123.4234', '1997-10-10', 'ST_MAN', 6500.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (124, '凯文', '莫尔戈斯', 'KMOURGOS', '650.123.5234', '1999-11-16', 'ST_MAN', 5800.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (125, '朱莉娅', '内耶尔', 'JNAYER', '650.124.1214', '1997-07-16', 'ST_CLERK', 3200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (126, '艾琳', '米基利内尼', 'IMIKKILI', '650.124.1224', '1998-09-28', 'ST_CLERK', 2700.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (127, '詹姆斯', '兰德里', 'JLANDRY', '650.124.1334', '1999-01-14', 'ST_CLERK', 2400.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (128, '史蒂文', '马克尔', 'SMARKLE', '650.124.1434', '2000-03-08', 'ST_CLERK', 2200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (129, '劳拉', '比索特', 'LBISSOT', '650.124.5234', '1997-08-20', 'ST_CLERK', 3300.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (130, '莫兹', '阿特金森', 'MATKINSO', '650.124.6234', '1997-10-30', 'ST_CLERK', 2800.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (131, '詹姆斯', '马洛', 'JAMRLOW', '650.124.7234', '1997-02-16', 'ST_CLERK', 2500.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (132, 'TJ', '奥尔森', 'TJOLSON', '650.124.8234', '1999-04-10', 'ST_CLERK', 2100.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (133, '贾森', '马林', 'JMALLIN', '650.127.1934', '1996-06-14', 'ST_CLERK', 3300.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (134, '迈克尔', '罗杰斯', 'MROGERS', '650.127.1834', '1998-08-26', 'ST_CLERK', 2900.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (135, '基', '吉', 'KGEE', '650.127.1734', '1999-12-12', 'ST_CLERK', 2400.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (136, '海泽尔', '菲尔坦克', 'HPHILTAN', '650.127.1634', '2000-02-06', 'ST_CLERK', 2200.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (137, '伦斯克', '拉德维格', 'RLADWIG', '650.121.1234', '1995-07-14', 'ST_CLERK', 3600.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (138, '斯蒂芬', '斯泰尔斯', 'SSTILES', '650.121.2034', '1997-10-26', 'ST_CLERK', 3200.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (139, '约翰', '西奥', 'JSEO', '650.121.2019', '1998-02-12', 'ST_CLERK', 2700.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (140, '乔舒亚', '帕特尔', 'JPATEL', '650.121.1834', '1998-04-06', 'ST_CLERK', 2500.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (141, '特蕾娜', '拉杰斯', 'TRAJS', '650.121.8009', '1995-10-17', 'ST_CLERK', 3500.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (142, '柯蒂斯', '戴维斯', 'CDAVIES', '650.121.2994', '1997-01-29', 'ST_CLERK', 3100.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (143, '兰德尔', '马托斯', 'RMATOS', '650.121.2874', '1998-03-15', 'ST_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (144, '彼得', '瓦加斯', 'PVARGAS', '650.121.2004', '1998-07-09', 'ST_CLERK', 2500.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (145, '约翰', '罗素', 'JRUSSEL', '011.44.1344.429268', '1996-10-01', 'SA_MAN', 14000.00, 0.40, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (146, '卡伦', '帕特纳斯', 'KPARTNER', '011.44.1344.467268', '1997-01-05', 'SA_MAN', 13500.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (147, '阿尔贝托', '埃拉苏里斯', 'AERRAZUR', '011.44.1344.429278', '1997-03-10', 'SA_MAN', 12000.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (148, '杰拉德', '坎布劳特', 'GCAMBRAU', '011.44.1344.619268', '1999-10-15', 'SA_MAN', 11000.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (149, '埃莱妮', '兹洛特基', 'EZLOTKEY', '011.44.1344.429018', '2000-01-29', 'SA_MAN', 10500.00, 0.20, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (150, '彼得', '塔克', 'PTUCKER', '011.44.1344.129268', '1997-01-30', 'SA_REP', 10000.00, 0.30, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (151, '大卫', '伯恩斯坦', 'DBERNSTE', '011.44.1344.345268', '1997-03-24', 'SA_REP', 9500.00, 0.25, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (152, '彼得', '霍尔', 'PHALL', '011.44.1344.478968', '1997-08-20', 'SA_REP', 9000.00, 0.25, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (153, '克里斯托弗', '奥尔森', 'COLSEN', '011.44.1344.498718', '1998-03-30', 'SA_REP', 8000.00, 0.20, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (154, '娜妮特', '坎布劳特', 'NCAMBRAU', '011.44.1344.987668', '1998-12-09', 'SA_REP', 7500.00, 0.20, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (155, '奥利弗', '图沃尔特', 'OTUVAULT', '011.44.1344.486508', '1999-11-23', 'SA_REP', 7000.00, 0.15, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (156, '詹妮特', '金', 'JKING', '011.44.1345.429268', '1996-01-30', 'SA_REP', 10000.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (157, '帕特里克', '萨利', 'PSULLY', '011.44.1345.929268', '1996-03-04', 'SA_REP', 9500.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (158, '艾伦', '麦克尤恩', 'AMCEWEN', '011.44.1345.829268', '1996-08-01', 'SA_REP', 9000.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (159, '林赛', '史密斯', 'LSMITH', '011.44.1345.729268', '1997-03-10', 'SA_REP', 8000.00, 0.30, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (160, '路易斯', '多兰', 'LDORAN', '011.44.1345.629268', '1997-12-15', 'SA_REP', 7500.00, 0.30, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (161, '萨拉特', '肖尔', 'SSEWALL', '011.44.1345.529268', '1998-11-03', 'SA_REP', 7000.00, 0.25, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (162, '克拉拉', '维什尼', 'CVISHNEY', '011.44.1346.129268', '1997-11-11', 'SA_REP', 10500.00, 0.25, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (163, '丹妮尔', '格林', 'DGREENE', '011.44.1346.229268', '1999-03-19', 'SA_REP', 9500.00, 0.15, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (164, '玛蒂亚', '马文斯', 'MMARVINS', '011.44.1346.329268', '2000-01-24', 'SA_REP', 7200.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (165, '大卫', '李', 'DLEE', '011.44.1346.529268', '2000-02-23', 'SA_REP', 6800.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (166, '桑达尔', '安迪', 'SANDE', '011.44.1346.629268', '2000-03-24', 'SA_REP', 6400.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (167, '阿米特', '班达', 'ABANDA', '011.44.1346.729268', '2000-04-21', 'SA_REP', 6200.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (168, '丽莎', '奥泽尔', 'LOZER', '011.44.1343.929268', '1997-03-11', 'SA_REP', 11500.00, 0.25, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (169, '哈里森', '布鲁姆', 'HBLOOM', '011.44.1343.829268', '1998-03-23', 'SA_REP', 10000.00, 0.20, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (170, '泰勒', '福克斯', 'TFOX', '011.44.1343.729268', '1998-01-24', 'SA_REP', 9600.00, 0.20, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (171, '威廉', '史密斯', 'WSMITH', '011.44.1343.629268', '1999-02-23', 'SA_REP', 7400.00, 0.15, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (172, '伊丽莎白', '贝茨', 'EBATES', '011.44.1343.529268', '1999-03-24', 'SA_REP', 7300.00, 0.15, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (173, '桑迪塔', '库马尔', 'SKUMAR', '011.44.1343.329268', '2000-04-21', 'SA_REP', 6100.00, 0.10, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (174, '艾伦', '阿贝尔', 'EABEL', '011.44.1644.429267', '1996-05-11', 'SA_REP', 11000.00, 0.30, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (175, '阿莉莎', '哈顿', 'AHUTTON', '011.44.1644.429266', '1997-03-19', 'SA_REP', 8800.00, 0.25, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (176, '乔纳森', '泰勒', 'JTAYLOR', '011.44.1644.429265', '1998-03-24', 'SA_REP', 8600.00, 0.20, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (177, '杰克', '利文斯顿', 'JLIVINGS', '011.44.1644.429264', '1998-04-23', 'SA_REP', 8400.00, 0.20, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (178, '金柏莉', '格兰特', 'KGRANT', '011.44.1644.429263', '1999-05-24', 'SA_REP', 7000.00, 0.15, 149, NULL); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (179, '查尔斯', '约翰逊', 'CJOHNSON', '011.44.1644.429262', '2000-01-04', 'SA_REP', 6200.00, 0.10, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (180, '温斯顿', '泰勒', 'WTAYLOR', '650.507.9876', '1998-01-24', 'SH_CLERK', 3200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (181, '简', '弗勒尔', 'JFLEAUR', '650.507.9877', '1998-02-23', 'SH_CLERK', 3100.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (182, '玛莎', '沙利文', 'MSULLIVA', '650.507.9878', '1999-06-21', 'SH_CLERK', 2500.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (183, '吉拉德', '格奥尼', 'GGEONI', '650.507.9879', '2000-02-03', 'SH_CLERK', 2800.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (184, '南迪塔', '萨尔钦德', 'NSARCHAN', '650.509.1876', '1996-01-27', 'SH_CLERK', 4200.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (185, '亚历克西斯', '布尔', 'ABULL', '650.509.2876', '1997-02-20', 'SH_CLERK', 4100.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (186, '朱莉娅', '戴林格', 'JDELLING', '650.509.3876', '1998-06-24', 'SH_CLERK', 3400.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (187, '安东尼', '卡布里奥', 'ACABRIO', '650.509.4876', '1999-02-07', 'SH_CLERK', 3000.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (188, '凯莉', '钟', 'KCHUNG', '650.505.1876', '1997-06-14', 'SH_CLERK', 3800.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (189, '詹妮弗', '迪利', 'JDILLY', '650.505.2876', '1997-08-13', 'SH_CLERK', 3600.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (190, '蒂莫西', '盖茨', 'TGATES', '650.505.3876', '1998-07-11', 'SH_CLERK', 2900.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (191, '兰达尔', '珀金斯', 'RPERKINS', '650.505.4876', '1999-12-19', 'SH_CLERK', 2500.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (192, '萨拉', '贝尔', 'SBELL', '650.501.1876', '1996-02-04', 'SH_CLERK', 4000.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (193, '布里特尼', '埃弗雷特', 'BEVERETT', '650.501.2876', '1997-03-03', 'SH_CLERK', 3900.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (194, '塞缪尔', '麦凯恩', 'SMCCAIN', '650.501.3876', '1998-07-01', 'SH_CLERK', 3200.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (195, '范斯', '琼斯', 'VJONES', '650.501.4876', '1999-03-17', 'SH_CLERK', 2800.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (196, '阿兰娜', '沃尔什', 'AWALSH', '650.507.9811', '1998-04-24', 'SH_CLERK', 3100.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (197, '凯文', '费尼', 'KFEENEY', '650.507.9822', '1998-05-23', 'SH_CLERK', 3000.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (198, '唐纳德', '奥康奈尔', 'DOCONNEL', '650.507.9833', '1999-06-21', 'SH_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (199, '道格拉斯', '格兰特', 'DGRANT', '650.507.9844', '2000-01-13', 'SH_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (200, '詹妮弗', '韦伦', 'JWHALEN', '515.123.4444', '1987-09-17', 'AD_ASST', 4400.00, NULL, 101, 10); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (201, '迈克尔', '哈滕斯坦', 'MHARTSTE', '515.123.5555', '1996-02-17', 'MK_MAN', 13000.00, NULL, 100, 20); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (202, '帕特', '费伊', 'PFAY', '603.123.6666', '1997-08-17', 'MK_REP', 6000.00, NULL, 201, 20); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (203, '苏珊', '马夫里斯', 'SMAVRIS', '515.123.7777', '1994-06-07', 'HR_REP', 6500.00, NULL, 101, 40); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (204, '赫尔曼', '拜尔', 'HBAER', '515.123.8888', '1994-06-07', 'PR_REP', 10000.00, NULL, 101, 70); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (205, '谢莉', '希金斯', 'SHIGGINS', '515.123.8080', '1994-06-07', 'AC_MGR', 12000.00, NULL, 101, 110); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (206, '威廉', '吉茨', 'WGIETZ', '515.123.8181', '1994-06-07', 'AC_ACCOUNT', 8300.00, NULL, 205, 110); -COMMIT; - --- ---------------------------- --- Table structure for job_grades --- ---------------------------- -DROP TABLE IF EXISTS `job_grades`; -CREATE TABLE `job_grades` ( - `grade_level` varchar(3) DEFAULT NULL, - `lowest_sal` int DEFAULT NULL, - `highest_sal` int DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of job_grades --- ---------------------------- -BEGIN; -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('A', 1000, 2999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('B', 3000, 5999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('C', 6000, 9999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('D', 10000, 14999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('E', 15000, 24999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('F', 25000, 40000); -COMMIT; - --- ---------------------------- --- Table structure for job_history --- ---------------------------- -DROP TABLE IF EXISTS `job_history`; -CREATE TABLE `job_history` ( - `employee_id` int NOT NULL, - `start_date` date NOT NULL, - `end_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `department_id` int DEFAULT NULL, - PRIMARY KEY (`employee_id`,`start_date`), - UNIQUE KEY `jhist_emp_id_st_date_pk` (`employee_id`,`start_date`), - KEY `jhist_job_fk` (`job_id`), - KEY `jhist_dept_fk` (`department_id`), - CONSTRAINT `jhist_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `jhist_emp_fk` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`employee_id`), - CONSTRAINT `jhist_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of job_history --- ---------------------------- -BEGIN; -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (101, '1989-09-21', '1993-10-27', 'AC_ACCOUNT', 110); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (101, '1993-10-28', '1997-03-15', 'AC_MGR', 110); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (102, '1993-01-13', '1998-07-24', 'IT_PROG', 60); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (114, '1998-03-24', '1999-12-31', 'ST_CLERK', 50); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (122, '1999-01-01', '1999-12-31', 'ST_CLERK', 50); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (176, '1998-03-24', '1998-12-31', 'SA_REP', 80); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (176, '1999-01-01', '1999-12-31', 'SA_MAN', 80); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (200, '1987-09-17', '1993-06-17', 'AD_ASST', 90); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (200, '1994-07-01', '1998-12-31', 'AC_ACCOUNT', 90); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (201, '1996-02-17', '1999-12-19', 'MK_REP', 20); -COMMIT; - --- ---------------------------- --- Table structure for jobs --- ---------------------------- -DROP TABLE IF EXISTS `jobs`; -CREATE TABLE `jobs` ( - `job_id` varchar(10) NOT NULL DEFAULT '', - `job_title` varchar(35) NOT NULL, - `min_salary` int DEFAULT NULL, - `max_salary` int DEFAULT NULL, - PRIMARY KEY (`job_id`), - UNIQUE KEY `job_id_pk` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of jobs --- ---------------------------- -BEGIN; -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AC_ACCOUNT', '公共会计师', 4200, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AC_MGR', '会计经理', 8200, 16000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_ASST', '行政助理', 3000, 6000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_PRES', '总裁', 20000, 40000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_VP', '行政副总裁', 15000, 30000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('FI_ACCOUNT', '会计', 4200, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('FI_MGR', '财务经理', 8200, 16000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('HR_REP', '人力资源代表', 4000, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('IT_PROG', '程序员', 4000, 10000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('MK_MAN', '市场营销经理', 9000, 15000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('MK_REP', '市场营销代表', 4000, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PR_REP', '公共关系代表', 4500, 10500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PU_CLERK', '采购文员', 2500, 5500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PU_MAN', '采购经理', 8000, 15000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SA_MAN', '销售经理', 10000, 20000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SA_REP', '销售代表', 6000, 12000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SH_CLERK', '发货文员', 2500, 5500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('ST_CLERK', '库存文员', 2000, 5000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('ST_MAN', '库存经理', 5500, 8500); -COMMIT; - --- ---------------------------- --- Table structure for locations --- ---------------------------- -DROP TABLE IF EXISTS `locations`; -CREATE TABLE `locations` ( - `location_id` int NOT NULL DEFAULT '0', - `street_address` varchar(40) DEFAULT NULL, - `postal_code` varchar(12) DEFAULT NULL, - `city` varchar(30) NOT NULL, - `state_province` varchar(25) DEFAULT NULL, - `country_id` char(2) DEFAULT NULL, - PRIMARY KEY (`location_id`), - UNIQUE KEY `loc_id_pk` (`location_id`), - KEY `loc_c_id_fk` (`country_id`), - CONSTRAINT `loc_c_id_fk` FOREIGN KEY (`country_id`) REFERENCES `countries` (`country_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of locations --- ---------------------------- -BEGIN; -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1000, '1297 Via Cola di Rie', '00989', '罗马', NULL, 'IT'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1100, '93091 Calle della Testa', '10934', '威尼斯', NULL, 'IT'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1200, '2017 Shinjuku-ku', '1689', '东京', '东京都', 'JP'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1300, '9450 Kamiya-cho', '6823', '广岛', NULL, 'JP'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1400, '2014 Jabberwocky Rd', '26192', '南湖', '德克萨斯', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1500, '2011 Interiors Blvd', '99236', '南旧金山', '加利福尼亚', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1600, '2007 Zagora St', '50090', '南布朗斯维克', '新泽西', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1700, '2004 Charade Rd', '98199', '西雅图', '华盛顿', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1800, '147 Spadina Ave', 'M5V 2L7', '多伦多', '安大略', 'CA'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1900, '6092 Boxwood St', 'YSW 9T2', '怀特霍斯', '育空', 'CA'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2000, '40-5-12 Laogianggen', '190518', '北京', NULL, 'CN'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2100, '1298 Vileparle (E)', '490231', '孟买', '马哈拉施特拉邦', 'IN'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2200, '12-98 Victoria Street', '2901', '悉尼', '新南威尔士', 'AU'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2300, '198 Clementi North', '540198', '新加坡', NULL, 'SG'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2400, '8204 Arthur St', NULL, '伦敦', NULL, 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2500, 'Magdalen Centre, The Oxford Science Park', 'OX9 9ZB', '牛津', '牛津', 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2600, '9702 Chester Road', '09629850293', '斯特雷福德', '曼彻斯特', 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2700, 'Schwanthalerstr. 7031', '80925', '慕尼黑', '巴伐利亚', 'DE'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2800, 'Rua Frei Caneca 1360 ', '01307-002', '圣保罗', '圣保罗', 'BR'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2900, '20 Rue des Corps-Saints', '1730', '日内瓦', '日内瓦', 'CH'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3000, 'Murtenstrasse 921', '3095', '伯尔尼', 'BE', 'CH'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3100, 'Pieter Breughelstraat 837', '3029SK', '乌得勒支', '乌得勒支', 'NL'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3200, 'Mariano Escobedo 9991', '11932', '墨西哥城', '联邦区', 'MX'); -COMMIT; - --- ---------------------------- --- Table structure for order --- ---------------------------- -DROP TABLE IF EXISTS `order`; -CREATE TABLE `order` ( - `order_id` int DEFAULT NULL, - `order_name` varchar(15) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of order --- ---------------------------- -BEGIN; -INSERT INTO `order` (`order_id`, `order_name`) VALUES (1, 'shkstart'); -INSERT INTO `order` (`order_id`, `order_name`) VALUES (2, 'tomcat'); -INSERT INTO `order` (`order_id`, `order_name`) VALUES (3, 'dubbo'); -COMMIT; - --- ---------------------------- --- Table structure for regions --- ---------------------------- -DROP TABLE IF EXISTS `regions`; -CREATE TABLE `regions` ( - `region_id` int NOT NULL, - `region_name` varchar(25) DEFAULT NULL, - PRIMARY KEY (`region_id`), - UNIQUE KEY `reg_id_pk` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of regions --- ---------------------------- -BEGIN; -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (1, '欧洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (2, '美洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (3, '亚洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (4, '中东和非洲'); -COMMIT; - --- ---------------------------- --- View structure for emp_details_view --- ---------------------------- -DROP VIEW IF EXISTS `emp_details_view`; -CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `emp_details_view` AS select `e`.`employee_id` AS `employee_id`,`e`.`job_id` AS `job_id`,`e`.`manager_id` AS `manager_id`,`e`.`department_id` AS `department_id`,`d`.`location_id` AS `location_id`,`l`.`country_id` AS `country_id`,`e`.`first_name` AS `first_name`,`e`.`last_name` AS `last_name`,`e`.`salary` AS `salary`,`e`.`commission_pct` AS `commission_pct`,`d`.`department_name` AS `department_name`,`j`.`job_title` AS `job_title`,`l`.`city` AS `city`,`l`.`state_province` AS `state_province`,`c`.`country_name` AS `country_name`,`r`.`region_name` AS `region_name` from (((((`employees` `e` join `departments` `d`) join `jobs` `j`) join `locations` `l`) join `countries` `c`) join `regions` `r`) where ((`e`.`department_id` = `d`.`department_id`) and (`d`.`location_id` = `l`.`location_id`) and (`l`.`country_id` = `c`.`country_id`) and (`c`.`region_id` = `r`.`region_id`) and (`j`.`job_id` = `e`.`job_id`)); - -SET FOREIGN_KEY_CHECKS = 1; -``` - -### 查询语句 - -```mysql -#第03章_基本的SELECT语句的课后练习 - -# 1.查询所有员工12个月的工资总和,并起别名为工资总和 - -#理解1:计算12月的基本工资 - -#SELECT sum(salary*12) as 工资总和 FROM employees; - -select sum(12*salary) from employees; - -#理解2:计算12月的基本工资和奖金 -# ifnull(原值,新值) 判断一个原值是否为null,如果原值是null,就用一个新值代替 - -select sum(salary*12+ifnull(salary*commission_pct*12,0)) from employees; - -# 2.查询employees表中去除重复的job_id以后的数据 -#去除重复 distinct - -select distinct job_id from employees; - -# 3.查询工资大于12000的员工姓名和工资 - -select first_name,salary from employees where salary>12000; - -# 4.查询员工号为176的员工的姓名和部门号 - -select first_name,department_id from employees where employee_id=176; - -# 5.显示表 departments 的结构,并查询其中的全部数据 - -desc departments; -select * from departments; - -# 第04章_运算符课后练习 - -# 1.选择工资不在5000到12000的员工的姓名和工资 - -select first_name,salary from employees where salary not between 5000 and 12000; - -# 2.选择在20或50号部门工作的员工姓名和部门号 - -select first_name,department_id from employees where department_id in (20,50); - -# 3.选择公司中没有管理者的员工姓名及job_id - -select first_name,job_id from employees where manager_id is null; - -# 4.选择公司中有奖金的员工姓名,工资和奖金级别 - -select employee_id,salary,grade_level from employees e left join job_grades j on e.salary between j.lowest_sal and j.highest_sal where commission_pct is not null; - -# 5.选择员工姓名的第三个字是 尔 的员工姓名 - -select * from employees where first_name like '__尔'; - -# 6.选择姓名中有 特 字和 尔 字的员工姓名 - -select * from employees where last_name like '%特%' and last_name like '%尔%'; - -# 7.显示出表 employees 表中 first_name 以 '尔'结尾的员工信息 - -select * from employees where first_name like '%尔'; - -# 8.显示出表 employees 部门编号在 80-100 之间的姓名、工种 - -select e.first_name,j.job_title from employees e left join jobs j on e.job_id=j.job_id where department_id between 80 and 100; - -# 9.显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、工资、管理者id - -select first_name,salary,manager_id from employees where manager_id in (100,101,110); - -#第05章_排序与分页的课后练习 - -#1. 查询员工的姓名和部门号和年薪,按年薪降序显示 --- order by 年薪 asc/desc - -select first_name,department_id,salary*12 from employees order by salary*12 desc; - -#2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据 - -select first_name,salary from employees where salary not between 8000 and 17000 order by salary desc limit 20,20; - -#3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序 - -select * from employees where email like '%e%' order by length(email) desc,department_id asc; - -# 第06章_多表查询的课后练习 - -# 1.显示所有员工的姓名,部门号和部门名称。 - -select first_name,e.department_id,department_name from employees e left join departments d on e.department_id=d.department_id; - -# 2.查询90号部门员工的job_id和90号部门的location_id - -select e.job_id,d.location_id from employees e left join departments d on e.department_id=d.department_id where e.department_id=90; - -# 3.选择所有 有奖金的员工 的 last_name , department_name , location_id , city - -select e.last_name,d.department_name,d.location_id,l.city from employees e left join departments d on e.department_id=d.department_id left join locations l on d.location_id=l.location_id where commission_pct is not null; - -# 4.选择city在 多伦多 工作的员工的 last_name , job_id , department_id , department_name - -select e.last_name,e.job_id,d.department_id,d.department_name from employees e left join departments d on e.department_id=d.department_id left join locations l on d.location_id=l.location_id where l.city='多伦多'; - -#sql92语法(自然连接): - -# 5.查询行政部门员工的部门名称、部门地址、姓名、工作、工资 - -select department_name,street_address,first_name,job_title,salary from jobs j,employees e,departments d,locations l where j.job_id=e.job_id and e.department_id=d.department_id and d.location_id=l.location_id and department_name='行政部'; - -# 6.显示所有员工的姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式 --- 员工姓名 员工编号 上级姓名 上级的员工编号 --- 德哈恩 102 金 100 - -select e.first_name,e.employee_id,s.last_name,s.employee_id from employees e inner join employees s on e.employee_id=s.employee_id; - -# 7.查询哪些部门没有员工 - -select department_name from departments d left join employees e on d.department_id=e.department_id where employee_id is null; - -# 8. 查询哪个城市没有部门 - -select city from departments d right join locations l on d.location_id=l.location_id where department_id is null; - -# 9. 查询部门名为 销售部 或 信息技术部 的员工信息 - -select e.* from departments d,employees e where d.department_id=e.department_id and d.department_name='销售部' or d.department_name='信息技术部'; - -# 第08章_聚合函数的课后练习 - -#2.查询公司员工工资的最大值,最小值,平均值,总和 - -select max(salary),min(salary),avg(salary),sum(salary) from employees; - -#3.查询各job_id的员工工资的最大值,最小值,平均值,总和 - -select job_id,max(salary),min(salary),avg(salary),sum(salary) from employees group by job_id; - -#4.选择各个job_id的员工人数 - -select job_id,count(employee_id) from employees group by job_id; - -# 5.查询员工最高工资和最低工资的差距 - -select max(salary)-min(salary) from employees; - -# 6.查询各个管理者 手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内 - -select manager_id,min(salary) from employees where manager_id is not null group by manager_id having min(salary)>6000; - -# 7.查询所有部门的名字,location_id,员工数量和平均工资,并按平均工资降序 - -select d.department_name,d.location_id,count(employee_id),avg(salary) from departments d left join employees e on d.department_id=e.department_id group by d.department_id order by avg(salary) desc; - -# 8.查询每个工种、每个部门的部门名、工种名和最低工资 - -select j.job_title,min(salary),department_name from jobs j left join employees e on j.job_id=e.job_id left join departments d on e.department_id=d.department_id group by j.job_id,d.department_id; - -# 第09章_子查询的课后练习 - -#1.查询和 兹洛特基 相同部门的员工姓名和工资 - -select * from employees where department_id =(select department_id from employees where last_name='兹洛特基') and salary=(select salary from employees where last_name='兹洛特基'); - -#2.查询工资比公司平均工资高的员工的员工号,姓名和工资。 - -select employee_id,first_name,salary from employees where salary>(select avg(salary) from employees); - -#3.选择工资大于所有JOB_ID = 'SA_MAN'的员工的工资的员工的last_name, job_id, salary - -select last_name,job_id,salary from employees where salary>(select max(salary) from employees where JOB_ID = 'SA_MAN'); - -#4.查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名 - -select employee_id,last_name from employees where department_id=(select department_id from employees where last_name like '%u%'); - -#5.查询部门的location_id为1700的部门的工作的员工的员工号 - -select first_name,employee_id from employees where department_id in (select department_id from departments where location_id=1700); - -#6.查询管理者是 金 的员工姓名和工资 - -select first_name,salary from employees where manager_id in (select manager_id from employees where last_name='金'); - -#7.查询工资最低的员工信息: last_name, salary - -select last_name,salary from employees where salary=(select min(salary) from employees); - -#8.查询平均工资最低的部门信息 - -#方式1: -# 部门最低工资=全司最低 - -select * from departments where department_id =(select department_id from employees group by department_id having avg(salary)=(select min(s) from (select avg(salary) s from employees group by department_id) a)); - -#方式2: -# 部门平均<= 公司所有平均 - -select * from departments where department_id=(select department_id from employees group by department_id having avg(salary)<=all(select avg(salary) from employees group by department_id)); - -#9.查询平均工资最低的部门信息和该部门的平均工资(相关子查询) -#方式:先查最低平均工资的部门,再根据其id去select中再子查询 - -select d.*,(select avg(salary) from employees where department_id=d.department_id) from departments d where department_id =(select department_id from employees group by department_id having avg(salary)=(select min(s) from (select avg(salary) s from employees group by department_id) a)); - -#10.查询平均工资最高的 job 信息 - -#方式1:平均工资=最大 - -select * from jobs where job_id=(select job_id from employees group by job_id having avg(salary)=(select max(s) from (select avg(salary) s from employees group by job_id) a)); - -#方式2:平均工资>=所有平均工资 - -select * from jobs where job_id=(select job_id from employees group by job_id having avg(salary)>=all(select avg(salary) from employees group by job_id)); - -#11.查询平均工资高于公司平均工资的部门有哪些? - -select department_id from employees where department_id is not null group by department_id having avg(salary)>(select avg(salary) from employees); - -#12.查询出公司中所有 manager 的详细信息 - -#方式1:自连接 自己连自己 - -select e.* from employees e inner join employees s on e.employee_id=s.manager_id; - -#方式2:子查询 -#员工编号=(管理员编号有哪些) - -select * from employees where employee_id=any(select distinct manager_id from employees); - -#13.各个部门中 最高工资中 最低的那个部门的 最低工资是多少? - -select min(salary) from employees group by department_id having max(salary)<=all(select max(salary) from employees group by department_id); - -#14.查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary - -select last_name,department_id,email,salary from employees where department_id = (select department_id from employees group by department_id having avg(salary)>=all(select avg(salary) from employees group by department_id)); - -#15. 查询部门的部门号,其中不包括job_id是"ST_CLERK"的部门号 - -select department_id from departments where department_id !=all(select department_id from employees where job_id='ST_CLERK'); - -#16. 选择所有没有管理者的员工的last_name - -select last_name from employees where manager_id is null; - -#17.查询员工号、姓名、雇用时间、工资,其中员工的管理者为 'De Haan' -#方式1: - -select employee_id,first_name,hire_date,salary from employees e where e.manager_id=(select employee_id from employees where first_name = 'De Haan'); - -#方式2: - -select employee_id, last_name, hire_date, salary from employees e where exists(select * from employees s where e.employee_id=s.manager_id and s.first_name='De Haan'); - -#18.查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资(相关子查询) - -#方式1:使用相关子查询 - -select employee_id,last_name,salary from employees e1 where salary > (select avg(salary) from employees e2 where e2.department_id = e1.department_id); - -#方式2:在FROM中声明子查询 - -select employee_id,last_name,salary from employees e1,(select department_id,AVG(salary) s from employees e2 group by department_id) a where e1.department_id = a.department_id and e1.salary > a.s; - -#19.查询每个部门下的部门人数大于 5 的部门名称(相关子查询) - -select department_name,department_id from departments d where 5 < (select count(*) from employees e where d.department_id = e.department_id); - -#20.查询每个国家下的部门个数大于 2 的国家编号(相关子查询) - -select country_id from locations l where 2 < (select count(*) from departments d where l.location_id=d.location_id); - -/* -子查询的编写技巧(或步骤):① 从里往外写 ② 从外往里写 - -如何选择? -① 如果子查询相对较简单,建议从外往里写。一旦子查询结构较复杂,则建议从里往外写 -② 如果是相关子查询的话,通常都是从外往里写。 - -*/ - -``` - diff --git "a/03 \350\265\226\345\277\203\345\246\215/20230920 RBAC.jpg" "b/03 \350\265\226\345\277\203\345\246\215/20230920 RBAC.jpg" deleted file mode 100644 index 9c6f26de7fa38642c729a1cf3a50365abcd3da61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33450 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 L{}1ixzoz~hN6j(E diff --git "a/03 \350\265\226\345\277\203\345\246\215/20230920 RBAC.md" "b/03 \350\265\226\345\277\203\345\246\215/20230920 RBAC.md" deleted file mode 100644 index 2da60fe..0000000 --- "a/03 \350\265\226\345\277\203\345\246\215/20230920 RBAC.md" +++ /dev/null @@ -1,157 +0,0 @@ -## RBAC(Role-Based Access Control) - -一种数据库设计思想,基于角色的访问权限管制模型,目前权限的主流方案,核心为角色 - -在 RBAC 模型里面,有3个基础组成部分,分别是:用户、角色和权限 - -- User(用户):每个用户都有唯一的UID识别,并被授予不同的角色 -- Role(角色):不同角色具有不同的权限 -- Permission(权限):访问权限 -- 用户-角色映射:用户和角色之间的映射关系 -- 角色-权限映射:角色和权限之间的映射 - -管理员和普通用户被授予不同的权限,普通用户只能去修改和查看个人信息,而不能创建用户和冻结用户,而管理员由于被授予所有权限,所以可以做所有操作 - -## 预习 SKU - -SKU 英文全称为Stock Keeping Unit,简称 SKU ,是产品入库后一种编码归类方法,也是库存控制的最小单位。一款商品,每个颜色,每个尺码,每一型号等都有出现一个 sku ,便于电商品牌识别商品。 - -既然 sku 被定义为最小存货单元,商家就可以选择自己设定 sku,一般来说是以件、盒、个、托盘等为单位。 - -- 大厂的 sku 就可以是一箱, -- 超市的 sku 就可以是一盒, -- 零售商的 sku 可以是一个。 - -## RBAC练习 - -```mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-20 15:30:32 */ -/*==============================================================*/ -create database school charset utf8; - -use school; - -drop table if exists management; - -drop table if exists role; - -drop table if exists role_management; - -drop table if exists user; - -drop table if exists user_role; - -/*==============================================================*/ -/* Table: management */ -/*==============================================================*/ -create table management -( - management_id int not null auto_increment, - management_name varchar(10) not null, - managemen_comment varchar(50) not null, - management_type char(10) not null, - primary key (management_id) -); - -/*==============================================================*/ -/* Table: role */ -/*==============================================================*/ -create table role -( - role_id int not null auto_increment, - role_name varchar(3) not null, - role_comment char(10) not null, - primary key (role_id) -); - -/*==============================================================*/ -/* Table: role_management */ -/*==============================================================*/ -create table role_management -( - management_id int not null, - role_id int not null, - primary key (management_id, role_id) -); - -/*==============================================================*/ -/* Table: user */ -/*==============================================================*/ -create table user -( - user_id int not null auto_increment, - user_name varchar(5) not null, - user_pwd char(6) not null, - primary key (user_id) -); - -/*==============================================================*/ -/* Table: user_role */ -/*==============================================================*/ -create table user_role -( - role_id int not null, - user_id int not null, - primary key (role_id, user_id) -); - -alter table role_management add constraint FK_role_management foreign key (management_id) - references management (management_id) on delete restrict on update restrict; - -alter table role_management add constraint FK_role_management2 foreign key (role_id) - references role (role_id) on delete restrict on update restrict; - -alter table user_role add constraint FK_user_role foreign key (role_id) - references role (role_id) on delete restrict on update restrict; - -alter table user_role add constraint FK_user_role2 foreign key (user_id) - references user (user_id) on delete restrict on update restrict; - - - --- ---------------------------- --- Records of management --- ---------------------------- -INSERT INTO `management` VALUES (1, '学生信息'); -INSERT INTO `management` VALUES (2, '教师信息'); -INSERT INTO `management` VALUES (3, '工资信息'); -INSERT INTO `management` VALUES (4, '首页'); - --- ---------------------------- --- Records of role --- ---------------------------- -INSERT INTO `role` VALUES (1, '校长'); -INSERT INTO `role` VALUES (2, '教师'); -INSERT INTO `role` VALUES (3, '学生'); - --- ---------------------------- --- Records of role_management --- ---------------------------- -INSERT INTO `role_management` VALUES (1, 1); -INSERT INTO `role_management` VALUES (2, 1); -INSERT INTO `role_management` VALUES (3, 1); -INSERT INTO `role_management` VALUES (4, 1); -INSERT INTO `role_management` VALUES (1, 2); -INSERT INTO `role_management` VALUES (2, 2); -INSERT INTO `role_management` VALUES (4, 2); -INSERT INTO `role_management` VALUES (1, 3); -INSERT INTO `role_management` VALUES (4, 3); --- ---------------------------- --- Records of user --- ---------------------------- -INSERT INTO `user` VALUES (1, '一一', '123456'); -INSERT INTO `user` VALUES (2, '二二', '123456'); -INSERT INTO `user` VALUES (3, '三三', '123456'); -INSERT INTO `user` VALUES (4, '四四', '123456'); - --- ---------------------------- --- Records of user_role --- ---------------------------- -INSERT INTO `user_role` VALUES (1, 1); -INSERT INTO `user_role` VALUES (2, 2); -INSERT INTO `user_role` VALUES (2, 3); -INSERT INTO `user_role` VALUES (3, 4); -``` - diff --git "a/03 \350\265\226\345\277\203\345\246\215/20230921 SKU \344\270\216 SPU.md" "b/03 \350\265\226\345\277\203\345\246\215/20230921 SKU \344\270\216 SPU.md" deleted file mode 100644 index f002f0d..0000000 --- "a/03 \350\265\226\345\277\203\345\246\215/20230921 SKU \344\270\216 SPU.md" +++ /dev/null @@ -1,144 +0,0 @@ -## SKU - -SKU是指一款商品,每款都有出现一个SKU。一款商品多色,则是有多个SKU, - -例:一件衣服,有红色、白色、蓝色。 - -对一种商品而言,当其品牌、型号、配置、等级、花色、包装容量、单位、生产日期、保质期、用途、价格、产地等属性与其他商品存在不同时,可称为一个单品。 - -## SPU与SKU的区别 - -一般SPU 与SKU 是一对一,或者一对多的关系;如果一对多的话就是不同的规格 - -例子:SPU就是商品的“款”;SKU就是商品的“件” - -SPU指一个商品集合,一般来说就是一个集合链。一个服装的集合链会包括相似款式和不同的尺码,SKU则是最小品类单元,同一个款式的衣服不同的尺码也算不同的SKU。SKU多见于前台的商品编号,SPU多见于后台的商品管理 - -```mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-21 16:31:44 */ -/*==============================================================*/ -create database goods charset utf8; - -use goods; - -drop table if exists type; - -drop table if exists sku; - -drop table if exists sku_type_value; - -drop table if exists spu; - -drop table if exists `value`; - -/*==============================================================*/ -/* Table: attribute */ -/*==============================================================*/ -create table type -( - type_id int not null auto_increment, - type_name varchar(10) not null, - primary key (type_id) -); - -/*==============================================================*/ -/* Table: sku */ -/*==============================================================*/ -create table sku -( - sku_id int not null auto_increment, - spu_id int not null, - sku_caption varchar(40) not null, - sku_price numeric(4,0) not null, - sku_num int not null, - primary key (sku_id) -); - -/*==============================================================*/ -/* Table: sku_attribute_value */ -/*==============================================================*/ -create table sku_type_value -( - relevance_id int not null auto_increment, - sku_id int not null, - value_id int not null, - type_id int not null, - primary key (relevance_id) -); - -/*==============================================================*/ -/* Table: spu */ -/*==============================================================*/ -create table spu -( - spu_id int not null auto_increment, - spu_name varchar(50) not null, - spu_comment varchar(50) not null, - primary key (spu_id) -); - -/*==============================================================*/ -/* Table: value */ -/*==============================================================*/ -create table `value` -( - value_id int not null auto_increment, - value_name varchar(10) not null, - primary key (value_id) -); - -alter table sku add constraint FK_Relationship_1 foreign key (spu_id) - references spu (spu_id) on delete restrict on update restrict; - -alter table sku_type_value add constraint FK_Relationship_2 foreign key (sku_id) - references sku (sku_id) on delete restrict on update restrict; - -alter table sku_type_value add constraint FK_Relationship_3 foreign key (value_id) - references value (value_id) on delete restrict on update restrict; - -alter table sku_type_value add constraint FK_Relationship_4 foreign key (type_id) - references attribute (type_id) on delete restrict on update restrict; - - - -INSERT INTO `spu` VALUES (1, '华为 Mate 60 Pro', '同心聚力 美学新生'); - -INSERT INTO `type` VALUES (1, '颜色'); -INSERT INTO `type` VALUES (2, '容量'); - -INSERT INTO `value` VALUES (1, '雅川青'); -INSERT INTO `value` VALUES (2, '雅丹黑'); -INSERT INTO `value` VALUES (3, '南糯紫'); -INSERT INTO `value` VALUES (4, '白沙银'); -INSERT INTO `value` VALUES (5, '12GB+512GB'); -INSERT INTO `value` VALUES (6, '12GB+1TB'); - -INSERT INTO `sku` VALUES (1, 1, '华为(HUAWEI)旗舰手机 Mate 60 Pro 12GB+1TB 雅丹黑', 7999, 10); -INSERT INTO `sku` VALUES (2, 1, '华为(HUAWEI)旗舰手机 Mate 60 Pro 12GB+1TB 雅川青', 7999, 10); -INSERT INTO `sku` VALUES (3, 1, '华为(HUAWEI)旗舰手机 Mate 60 Pro 12GB+1TB 南糯紫', 7999, 10); -INSERT INTO `sku` VALUES (4, 1, '华为(HUAWEI)旗舰手机 Mate 60 Pro 12GB+1TB 白沙银', 7999, 10); -INSERT INTO `sku` VALUES (5, 1, '华为(HUAWEI)旗舰手机 Mate 60 Pro 12GB+512TB 雅丹黑', 6999, 10); -INSERT INTO `sku` VALUES (6, 1, '华为(HUAWEI)旗舰手机 Mate 60 Pro 12GB+512TB 雅川青', 6999, 10); -INSERT INTO `sku` VALUES (7, 1, '华为(HUAWEI)旗舰手机 Mate 60 Pro 12GB+512TB 南糯紫', 6999, 10); -INSERT INTO `sku` VALUES (8, 1, '华为(HUAWEI)旗舰手机 Mate 60 Pro 12GB+512TB 白沙银', 6999, 10); - -INSERT INTO `sku_type_value` VALUES (1, 2, 1, 2); -INSERT INTO `sku_type_value` VALUES (2, 2, 2, 6); -INSERT INTO `sku_type_value` VALUES (3, 1, 1, 1); -INSERT INTO `sku_type_value` VALUES (4, 1, 2, 6); -INSERT INTO `sku_type_value` VALUES (5, 3, 1, 3); -INSERT INTO `sku_type_value` VALUES (6, 3, 2, 6); -INSERT INTO `sku_type_value` VALUES (7, 4, 1, 4); -INSERT INTO `sku_type_value` VALUES (8, 4, 2, 6); -INSERT INTO `sku_type_value` VALUES (9, 5, 1, 2); -INSERT INTO `sku_type_value` VALUES (10, 5, 2, 5); -INSERT INTO `sku_type_value` VALUES (11, 6, 1, 1); -INSERT INTO `sku_type_value` VALUES (12, 6, 2, 5); -INSERT INTO `sku_type_value` VALUES (13, 7, 1, 3); -INSERT INTO `sku_type_value` VALUES (14, 7, 2, 5); -INSERT INTO `sku_type_value` VALUES (15, 8, 1, 4); -INSERT INTO `sku_type_value` VALUES (16, 8, 2, 5); -``` - diff --git "a/03 \350\265\226\345\277\203\345\246\215/20230921 SKU \344\270\216 SPU.png" "b/03 \350\265\226\345\277\203\345\246\215/20230921 SKU \344\270\216 SPU.png" deleted file mode 100644 index c64680f7fa21cf7029f75e743197ff4905075595..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53699 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 diff --git "a/03 \350\265\226\345\277\203\345\246\215/20230922 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\351\242\204\344\271\240.md" "b/03 \350\265\226\345\277\203\345\246\215/20230922 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\351\242\204\344\271\240.md" deleted file mode 100644 index 7bd61c3..0000000 --- "a/03 \350\265\226\345\277\203\345\246\215/20230922 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\351\242\204\344\271\240.md" +++ /dev/null @@ -1,130 +0,0 @@ -## 数据库高级预习 - -当数据库复杂需要多条 SQL 语句查询时,可以使用存储过程去完成这个需求。 - -### 创建存储过程语法 - -使用 create procedure 语句创建存储过程 - -#### 声明语句结束符 - -```mysql -delimiter $$ - -delimiter // -``` - -#### 创建 mysql 存储过程、存储函数 - -```mysql -create procedure 存储过程名(参数) -``` - -#### 存储过程体 - -```mysql -create function 存储函数名(参数) -``` - -#### 参数类型有三种: - -```mysql -IN: 输入参数,该参数的值必须在调用该存储过程时指定,在存储过程内部使用, 不能返回。 - -缺省值是IN。 - -OUT:输出参数,该参数值的值可以在存储过程内部修改,并可返回。 - -INOUT:输入输出参数,该参数需要在调用时指定,并且可以返回。 -``` - -### 事务 - - 为了完成某个业务而对数据库进行一系列操作,这些操作要么全部成功,要么全部失败。 - -#### 事务的四个特性 - -原子性:事务包含的这一系列操作,要么全部成功,要么全部失败(由DBMS的事务管理子系统来实现)。 - -一致性:事务完成之后,不会将非法的数据写入数据库(由DBMS的完整性子系统执行测试任务)。 - -隔离性:多个事务可以在一定程度上并发执行(由DBMS的并发控制子系统实现)。 - -持久性:事务完成之后,数据要永久保存(一般会保存在硬盘上)(由DBMS的恢复管理子系统实现的)。 - -#### 隔离级别 - - 隔离级别从低到高依次是"读未提交"、“读已提交”、“可重复读取”和“序列化”,隔离级别越高,性能越低。mysql 数据库默认隔离级别是“可重复读取”,oracle是“读已提交”。数据库底层使用的“加锁”的机制来实现不同的隔离级别,包括对整个表加锁,对表中的行加锁。 - -### 视图 - -在已有的表或者视图上创建的虚拟表。 - -#### 创建视图 - -```mysql -create view 视图名 as select -``` - -注:可以对单表或者多表进行查询,数据库会将视图的定义保存下来。 - -可以对(单表)视图进行一些增删改查操作,这些操作会影响到原始的表。 - -#### 删除视图 - -```mysql -drop view 视图名 -``` - -### 索引 - - 为了提高查询的速度而在数据库端创建的一种排序的数据结构。 - - 注:索引类似于一本书的目录 - -#### 创建索引 - -```mysql -create index 索引名 on 表名(字段列表) -``` - -在经常作为查询条件的字段加索引,除此以外,还要在分组、过滤、排序及联合查询的字段上加索引。 - -#### 删除索引 - -```mysql -drop index 索引名 on 表名 -``` - -### 锁 - -共享锁(S锁,读锁)和排他锁(X锁,写锁)——行锁 - -``` -共享锁:若事务A 对某行数据加S锁,此时允许其他事务对该行数据加S锁,即可以有多个事务共同读取改行数 据,但是不允许其他事务对该数据加X锁 - -排他锁(X锁,写锁,独占锁):若事务A对某行数据加X锁,此时不允许其他事务对该行数据加任何锁 -``` - -数据库中 - -1. 数据库中进行增,删,改操作时,会自动给行添加排他锁,行数据添加上了排他锁,不允许其他事务对该行数据加任何锁 -2. 数据库中进行查(select)操作时,对数据不加任何锁 - -1. 给行数据手动添加共享锁: - - ```mysql - select ..from..lock in share mode - select..from .. for share - ``` - -2. 添加排他锁: - - ```mysql - select...from...for update - ``` - - - - - diff --git "a/04 \346\235\216\346\230\216\345\201\245/20230905 \345\244\247\344\272\214java\345\255\246\344\271\240\350\267\257\347\272\277.md" "b/04 \346\235\216\346\230\216\345\201\245/20230905 \345\244\247\344\272\214java\345\255\246\344\271\240\350\267\257\347\272\277.md" deleted file mode 100644 index b3f9a24..0000000 --- "a/04 \346\235\216\346\230\216\345\201\245/20230905 \345\244\247\344\272\214java\345\255\246\344\271\240\350\267\257\347\272\277.md" +++ /dev/null @@ -1,33 +0,0 @@ -## 大二学习路线 - -### 大二上学期 - -#### 1. MySQL进阶(存储引擎、索引、SQL优化、存储过程、锁) - -#### 2. JavaScript (Ajax) - -#### 3. MVC框架(Maven,Spring,SpringMVC,MyBatis) - -### 大二下学期 - -#### 4. Node.js - -#### 5. Vue.js - -#### 6. SpringBoot (Redis,WebAPI) - -### 实训 - -#### 1.Linux 服务器 - -#### 2.中间件(项目中可能实现的技术) - -#### 3.小程序 ,uniapp移动端开发 - -### 技术栈: - -​ **一个项目需要用什么技术实现,可以称为技术栈。** - -### 技能数: - -​ **一个人具备的技能,称为技能树。** \ No newline at end of file diff --git "a/04 \346\235\216\346\230\216\345\201\245/20230907 \346\225\260\346\215\256\345\272\223\345\205\263\347\263\273.md" "b/04 \346\235\216\346\230\216\345\201\245/20230907 \346\225\260\346\215\256\345\272\223\345\205\263\347\263\273.md" deleted file mode 100644 index 7bb78fd..0000000 --- "a/04 \346\235\216\346\230\216\345\201\245/20230907 \346\225\260\346\215\256\345\272\223\345\205\263\347\263\273.md" +++ /dev/null @@ -1,150 +0,0 @@ -### 数据库关系 - -#### 1.关系是相互的 - -​ 比如,一个学生,可以选多个课程;一个课程可以被多个学生选,必须引用第三张表 - -#### 2.表之间的关系 - -1. 一对一:将其中任一表中的主键,放到另一张表当外键 -2. 一对多:将一所在的表的主键,放在多的表当外键 -3. 多对多:必须有第三张表,将前面两个表的主键放进来当外键 - -#### 3.ER图 - -​ ER图:实体关系图,简称E-R,用于显示实体集之间的关系。它提供了一种表示实体类型、属性、联系的方法。 - -​ ER图三要素:实体、属性、联系 - -#### 作业 - -~~~ mysql -# 创建学生数据库 -create database student charset utf8; -use student; - -# 创建院系表 -create table college( - co_id int primary key, - co_name varchar(50) not null -); -# 插入数据 -insert into college values -(1,"软件工程学院"), -(2,"财经商贸学院"), -(3,"信息工程学院"), -(4,"智能制造学院"); - -# 创建专业表 -create table major( - m_id int primary key, - m_name varchar(20) not null, - co_id int, - foreign key(co_id) references college(co_id) -); -# 插入数据 -insert into major values -(1,"前端开发",1), -(2,"后端开发",1), -(3,"人力财务管理",2), -(4,"大数据技术",3), -(5,"电气自动化技术",4); - -# 创建班级表 -create table class( - c_id int primary key, - c_name varchar(20) not null, - m_id int, - foreign key(m_id) references major(m_id) -); -# 插入数据 -insert into class values -(1,"软件技术2班",2), -(2,"软件技术7班",1), -(3,"人力财务管理1班",3), -(4,"大数据技术4班",4), -(5,"电气自动化技术3班",5); - -# 创建学生表 -create table student( - s_id int primary key, - s_name varchar(10) not null, - sex varchar(2) not null, - c_id int, - foreign key(c_id) references class(c_id) -); -# 插入数据 -insert into student values -(1,"卢亨耀","男",1), -(2,"李堔义","男",2), -(3,"王小丽","女",3), -(4,"孙泽傲","男",4), -(5,"方蔼雅","男",5); - -# 创建课程信息表 -create table course_inf( - c_id int primary key, - c_name varchar(10) not null -); -# 插入数据 -insert into course_inf values -(1,"MySQL高级"), -(2,"javaScript"), -(3,"财务管理"), -(4,"大数据"), -(5,"电气自动化"); - -# 创建教室表 -create table classroom( - cr_id int primary key, - address varchar(20) not null -); -# 插入数据 -insert into classroom values -(1,"望云楼实训室8"), -(2,"望云楼实训室6"), -(3,"岩声楼305"), -(4,"辛耕楼204"), -(5,"辛耕楼105"); - - -# 创建教师表 -create table teacher( - t_id int primary key, - t_name varchar(5) not null, - sex varchar(2) not null, - co_id int, - foreign key(co_id) references college(co_id) -); -# 插入数据 -insert into teacher values -(001,"丘老师","男",1), -(002,"王老师","男",1), -(003,"黄老师","女",2), -(004,"徐老师","男",3), -(005,"李老师","女",4); - -# 创建课程表(中间表) -create table course( - c_id int, - cr_id int, - t_id int, - s_id int, - foreign key(c_id) references course_inf(c_id), - foreign key(cr_id) references classroom(cr_id), - foreign key(t_id) references teacher(t_id), - foreign key(s_id) references student(s_id) -); -# 插入数据 -insert into course values -(1,1,1,1), -(2,2,2,2), -(3,3,3,3), -(4,4,4,4), -(5,5,5,5); - -# 查询 -select * from college co,major m,class cl,student s ,course c,course_inf ci,classroom cr,teacher t where co.co_id=m.co_id and m.m_id=cl.m_id and cl.c_id=s.c_id and s.s_id=c.s_id and ci.c_id=c.c_id and cr.cr_id=c.cr_id and t.t_id=c.t_id; - -~~~ - diff --git "a/04 \346\235\216\346\230\216\345\201\245/20230907 \346\225\260\346\215\256\345\272\223\347\232\204\350\214\203\345\274\217.md" "b/04 \346\235\216\346\230\216\345\201\245/20230907 \346\225\260\346\215\256\345\272\223\347\232\204\350\214\203\345\274\217.md" deleted file mode 100644 index 08a2b0a..0000000 --- "a/04 \346\235\216\346\230\216\345\201\245/20230907 \346\225\260\346\215\256\345\272\223\347\232\204\350\214\203\345\274\217.md" +++ /dev/null @@ -1,19 +0,0 @@ -### 数据库的范式 - -#### 1.第一范式: - -​ 要求字段的内容,不可再分割,为的是保证数据的原子性 - -​ 例:姓名,省份、城市、区具、地址址 - -#### 2.第二范式: - -​ 要求在满足第一范式的基础上,要求非主键字投要完全依赖主健(非主键雪完全依赖整个联合主键,而不只很赖部分) - -​ 例:小明的存在,必须要依靠父亲和母亲的存在 - -#### 3.第三范式: - -​ 满足第二范式的前提下,要求非主键属性要有接依赖于主键 - -​ 例:儿子依赖爸爸,爸爸依赖爷爷。其中儿子与爷爷属于间接依赖,则不属于第三范式,学生表中建议不要写专业,院级系,将他们分开写,否则将很难修改,还占内存 \ No newline at end of file diff --git "a/04 \346\235\216\346\230\216\345\201\245/20230910 \345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" "b/04 \346\235\216\346\230\216\345\201\245/20230910 \345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" deleted file mode 100644 index 7c7e920..0000000 --- "a/04 \346\235\216\346\230\216\345\201\245/20230910 \345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" +++ /dev/null @@ -1,111 +0,0 @@ -### 软件:PowerDesigner使用 - -#### 第一步:创建概念模型(类似ER图),以用户的角度。简称 CDM - -#### 第二步:将转概念模型换成逻辑模型,以计算机的角度。简称 LDM - -#### 第三步:将逻辑模型转换成物理模型,以数据库的角度。简称 PDM - -#### 第四步:生成DDL(生成数据库代码) - -![](https://s2.loli.net/2023/09/13/LalRAohJB6PNysQ.png) - -### 图书管理系统 - -~~~ mysql -#创建数据库并选择 -create database lib charset utf8; -use lib; - -#创建书架表 -create table bookshelf( - bs_id int primary key, - bs_type varchar(5) -); -#插入数据 -insert into bookshelf values -(1,"文学类"), -(2,"数理类"), -(3,"人文科学类"); - -#创建图书信息表 -create table book_info( - book_id varchar(3) primary key, - book_name varchar(15) not null, - bs_id int, - foreign key (bs_id) references bookshelf(bs_id) -); -#插入数据 -insert into book_info values -(101,"朝花夕拾",1), -(102,"高等数学",2), -(103,"MySQL从入门到起飞",2), -(104,"红楼梦",1), -(105,"物种起源",3); - -#创建图书管理员表 -create table librarian( - lr_id varchar(3) primary key, - lr_name varchar(5) not null, - bs_id int, - foreign key (bs_id) references bookshelf(bs_id) -); -#插入数据 -insert into librarian values -(001,"张三",1), -(002,"李四",2), -(003,"王五",3); - -#创建学生信息表 -create table student( - stu_id varchar(10) primary key, - stu_name varchar(5) not null, - sex varchar(1) not null, - college varchar(10) not null -); -#插入数据 -insert into student values -("2244310201","田霜笑","女","软件工程学院"), -("2244310202","丰博嘉","男","软件工程学院"), -("2244310203","阳文康","男","软件工程学院"), -("2244310204","孙曼蓉","女","软件工程学院"); - -#创建借阅表 -create table borrow( - bo_time varchar(10) not null, #借阅时间 - re_time varchar(10) not null, #需归还时间 - book_id varchar(3), #图书编号 - foreign key (book_id) references book_info(book_id), - stu_id varchar(10) not null, #学号 - foreign key (stu_id) references student(stu_id) -); -#插入数据 -insert into borrow values -("2023-09-08","2023-10-08",101,"2244310201"), -("2023-08-15","2023-09-15",103,"2244310201"), -("2023-09-20","2023-10-20",102,"2244310202"), -("2023-09-11","2023-10-11",105,"2244310203"), -("2023-09-11","2023-10-11",104,"2244310204"); - -#创建借阅表 -create table `return`( - bo_time varchar(10) not null, #借阅时间 - re_time varchar(10) not null, #归还时间 - book_id varchar(3), #图书编号 - foreign key (book_id) references book_info(book_id), - stu_id varchar(10) not null, #学号 - foreign key (stu_id) references student(stu_id) -); -#插入数据 -insert into `return` values -("2023-09-08","2023-10-02",101,"2244310201"), -("2023-08-15","2023-09-16",103,"2244310201"), -("2023-09-20","2023-10-10",102,"2244310202"), -("2023-09-11","2023-10-15",105,"2244310203"), -("2023-09-11","2023-10-01",104,"2244310204"); - -#查询 -select * from student s,borrow br,bookshelf bs,book_info bi where s.stu_id=br.stu_id and bi.book_id=br.book_id and bs.bs_id=bi.bs_id; - -~~~ - diff --git "a/04 \346\235\216\346\230\216\345\201\245/20230912 \347\224\265\345\275\261\347\275\221\347\253\231\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" "b/04 \346\235\216\346\230\216\345\201\245/20230912 \347\224\265\345\275\261\347\275\221\347\253\231\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" deleted file mode 100644 index 556680f..0000000 --- "a/04 \346\235\216\346\230\216\345\201\245/20230912 \347\224\265\345\275\261\347\275\221\347\253\231\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" +++ /dev/null @@ -1,171 +0,0 @@ -### 电影网站数据库设计 - -![](https://s2.loli.net/2023/09/13/maG8pxAFCMfSowJ.png) - -~~~ mysql -create database movie_web charset utf8; -use movie_web; - -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/13 8:49:46 */ -/*==============================================================*/ - - -drop table if exists actor_info; - -drop table if exists film_review; - -drop table if exists movie_director; - -drop table if exists movie_info; - -drop table if exists movie_protagonist; - -drop table if exists movie_scriptwriter; - -drop table if exists type; - -drop table if exists user; - -drop table if exists website; - -/*==============================================================*/ -/* Table: 演员信息表 */ -/*==============================================================*/ -create table actor_info -( - actor_id int not null auto_increment, - actor_name varchar(10) not null, - sex char(1) not null, - birth_time date not null, - birthplace varchar(10) not null, - occupation varchar(10) not null, - primary key (actor_id) -); - -/*==============================================================*/ -/* Table: 影评 */ -/*==============================================================*/ -create table film_review -( - fr_id int not null auto_increment, - website_id int, - fr_score int, - fr_content varchar(100), - primary key (fr_id) -); - -/*==============================================================*/ -/* Table: 导演 */ -/*==============================================================*/ -create table movie_director -( - movie_id int not null, - actor_id int not null, - primary key (movie_id, actor_id) -); - -/*==============================================================*/ -/* Table: 电影信息表 */ -/*==============================================================*/ -create table movie_info -( - movie_id int not null auto_increment, - website_id int, - movie_name varchar(20) not null, - director_id int not null, - scriptwriter_id int not null, - protagonist_id int not null, - movie_time int not null, - region varchar(10) not null, - primary key (movie_id) -); - -/*==============================================================*/ -/* Table: 主演 */ -/*==============================================================*/ -create table movie_protagonist -( - movie_id int not null, - actor_id int not null, - primary key (movie_id, actor_id) -); - -/*==============================================================*/ -/* Table: 编剧 */ -/*==============================================================*/ -create table movie_scriptwriter -( - movie_id int not null, - actor_id int not null, - primary key (movie_id, actor_id) -); - -/*==============================================================*/ -/* Table: 类型 */ -/*==============================================================*/ -create table type -( - type_id int not null auto_increment, - movie_id int not null, - type_name varchar(5) not null, - primary key (type_id) -); - -/*==============================================================*/ -/* Table: 用户 */ -/*==============================================================*/ -create table user -( - user_id int not null auto_increment, - website_id int, - user_name varchar(10) not null, - primary key (user_id) -); - -/*==============================================================*/ -/* Table: 网站 */ -/*==============================================================*/ -create table website -( - website_id int not null auto_increment, - website_address varchar(50) not null, - movie_id int not null, - primary key (website_id) -); - -alter table film_review add constraint FK_review_website foreign key (website_id) - references website (website_id) on delete restrict on update restrict; - -alter table movie_director add constraint FK_movie_director foreign key (movie_id) - references movie_info (movie_id) on delete restrict on update restrict; - -alter table movie_director add constraint FK_movie_director2 foreign key (actor_id) - references actor_info (actor_id) on delete restrict on update restrict; - -alter table movie_info add constraint FK_movie_website foreign key (website_id) - references website (website_id) on delete restrict on update restrict; - -alter table movie_protagonist add constraint FK_movie_protagonist foreign key (movie_id) - references movie_info (movie_id) on delete restrict on update restrict; - -alter table movie_protagonist add constraint FK_movie_protagonist2 foreign key (actor_id) - references actor_info (actor_id) on delete restrict on update restrict; - -alter table movie_scriptwriter add constraint FK_movie_scriptwriter foreign key (movie_id) - references movie_info (movie_id) on delete restrict on update restrict; - -alter table movie_scriptwriter add constraint FK_movie_scriptwriter2 foreign key (actor_id) - references actor_info (actor_id) on delete restrict on update restrict; - -alter table type add constraint FK_Relationship_7 foreign key (movie_id) - references movie_info (movie_id) on delete restrict on update restrict; - -alter table user add constraint FK_user_website foreign key (website_id) - references website (website_id) on delete restrict on update restrict; - - - -~~~ - diff --git "a/04 \346\235\216\346\230\216\345\201\245/20230914 \345\214\273\351\231\242\347\256\241\347\220\206\347\263\273\347\273\237.md" "b/04 \346\235\216\346\230\216\345\201\245/20230914 \345\214\273\351\231\242\347\256\241\347\220\206\347\263\273\347\273\237.md" deleted file mode 100644 index e43d3a6..0000000 --- "a/04 \346\235\216\346\230\216\345\201\245/20230914 \345\214\273\351\231\242\347\256\241\347\220\206\347\263\273\347\273\237.md" +++ /dev/null @@ -1,247 +0,0 @@ -### 笔记 - -1.如果一个主体的属性有多个值,那么这个属性就可以拆成一个新的主体。 - -2.当三张表都是多对多关系时,新建一个中间表,将三张表以一对多的形式连接到中间表,并产生关系。 - -### 医院管理系统 - -医院:科室,患者,门诊药房,病房 - -科室:医生,护士 - -患者:挂号,住院 - -门诊药房:药品,处方单,缴费方式 - -#### LDM - -![LDM](https://s2.loli.net/2023/09/14/1tHg2PB3skdrF7A.png) - -~~~ mysql -create database hospital charset utf8; -use hospital; - -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/14 12:08:12 */ -/*==============================================================*/ - -drop table if exists administrative_office; - -drop table if exists bill_of_payment; - -drop table if exists doctor; - -drop table if exists drug; - -drop table if exists hospital; - -drop table if exists huli; - -drop table if exists inpatient_ward; - -drop table if exists nurse; - -drop table if exists patient; - -drop table if exists payment_method; - -drop table if exists pharmacy; - -drop table if exists prescription; - -/*==============================================================*/ -/* Table:科室 */ -/*==============================================================*/ -create table administrative_office -( - ao_id int not null auto_increment, - hospital_id int, - nurse_id int, - ao_name varchar(10) not null, - ao_address varchar(10) not null, - primary key (ao_id) -); - -/*==============================================================*/ -/* Table: 缴费单 */ -/*==============================================================*/ -create table bill_of_payment -( - bop_id int not null auto_increment, - patient_id int, - pharmacy_id int, - pm_id int, - bop_money int not null, - bop_time time not null, - primary key (bop_id) -); - -/*==============================================================*/ -/* Table: 医生 */ -/*==============================================================*/ -create table doctor -( - doctor_id int not null auto_increment, - ao_id int, - doctor_name varchar(5) not null, - doctor_sex char(1) not null, - doctor_age int not null, - primary key (doctor_id) -); - -/*==============================================================*/ -/* Table: 药品 */ -/*==============================================================*/ -create table drug -( - drug_id int not null auto_increment, - pharmacy_id int, - drug_name varchar(10) not null, - drug_type varchar(5) not null, - primary key (drug_id) -); - -/*==============================================================*/ -/* Table: 医院 */ -/*==============================================================*/ -create table hospital -( - hospital_id int not null auto_increment, - hospital_name varchar(15) not null, - hospital_address varchar(20) not null, - hospital_tel varchar(11) not null, - primary key (hospital_id) -); - -/*==============================================================*/ -/* Table: 护理 */ -/*==============================================================*/ -create table huli -( - patient_id int not null, - nurse_id int not null, - primary key (patient_id, nurse_id) -); - -/*==============================================================*/ -/* Table: 病房 */ -/*==============================================================*/ -create table inpatient_ward -( - iw_id int not null auto_increment, - hospital_id int, - iw_name varchar(10) not null, - iw_address varchar(20) not null, - primary key (iw_id) -); - -/*==============================================================*/ -/* Table: 护士 */ -/*==============================================================*/ -create table nurse -( - nurse_id int not null auto_increment, - nurse_name varchar(5) not null, - nurse_sex char(1) not null, - nurse_age int not null, - primary key (nurse_id) -); - -/*==============================================================*/ -/* Table: 患者 */ -/*==============================================================*/ -create table patient -( - patient_id int not null auto_increment, - hospital_id int, - hos_hospital_id int, - patient_name varchar(5) not null, - patient_sex char(1) not null, - patient_tel varchar(11) not null, - primary key (patient_id) -); - -/*==============================================================*/ -/* Table: 缴费方式 */ -/*==============================================================*/ -create table payment_method -( - pm_id int not null auto_increment, - pm_name varchar(10) not null, - primary key (pm_id) -); - -/*==============================================================*/ -/* Table: 门诊药房 */ -/*==============================================================*/ -create table pharmacy -( - pharmacy_id int not null auto_increment, - hospital_id int, - prescription_id int, - pharmacy_name varchar(10) not null, - pharmacy_address varchar(20) not null, - primary key (pharmacy_id) -); - -/*==============================================================*/ -/* Table: 处方单 */ -/*==============================================================*/ -create table prescription -( - prescription_id int not null auto_increment, - doctor_id int, - prescription_time time not null, - primary key (prescription_id) -); - -alter table administrative_office add constraint FK_possess foreign key (hospital_id) - references hospital (hospital_id) on delete restrict on update restrict; - -alter table administrative_office add constraint FK_shuyu foreign key (nurse_id) - references nurse (nurse_id) on delete restrict on update restrict; - -alter table bill_of_payment add constraint FK_pay foreign key (patient_id) - references patient (patient_id) on delete restrict on update restrict; - -alter table bill_of_payment add constraint FK_pay2 foreign key (pharmacy_id) - references pharmacy (pharmacy_id) on delete restrict on update restrict; - -alter table bill_of_payment add constraint FK_use foreign key (pm_id) - references payment_method (pm_id) on delete restrict on update restrict; - -alter table doctor add constraint FK_belong_to foreign key (ao_id) - references administrative_office (ao_id) on delete restrict on update restrict; - -alter table drug add constraint FK_stockpile foreign key (pharmacy_id) - references pharmacy (pharmacy_id) on delete restrict on update restrict; - -alter table huli add constraint FK_huli foreign key (patient_id) - references patient (patient_id) on delete restrict on update restrict; - -alter table huli add constraint FK_huli2 foreign key (nurse_id) - references nurse (nurse_id) on delete restrict on update restrict; - -alter table inpatient_ward add constraint FK_belong2 foreign key (hospital_id) - references hospital (hospital_id) on delete restrict on update restrict; - -alter table patient add constraint FK_be_hospitalized foreign key (hos_hospital_id) - references hospital (hospital_id) on delete restrict on update restrict; - -alter table patient add constraint FK_registration foreign key (hospital_id) - references hospital (hospital_id) on delete restrict on update restrict; - -alter table pharmacy add constraint FK_get_the_medicine foreign key (prescription_id) - references prescription (prescription_id) on delete restrict on update restrict; - -alter table pharmacy add constraint FK_have foreign key (hospital_id) - references hospital (hospital_id) on delete restrict on update restrict; - -alter table prescription add constraint FK_open foreign key (doctor_id) - references doctor (doctor_id) on delete restrict on update restrict; - - -~~~ - diff --git "a/04 \346\235\216\346\230\216\345\201\245/20230914 \347\254\224\350\256\260\350\241\245\344\272\244.md" "b/04 \346\235\216\346\230\216\345\201\245/20230914 \347\254\224\350\256\260\350\241\245\344\272\244.md" deleted file mode 100644 index 7ac922f..0000000 --- "a/04 \346\235\216\346\230\216\345\201\245/20230914 \347\254\224\350\256\260\350\241\245\344\272\244.md" +++ /dev/null @@ -1,121 +0,0 @@ -## 视图 - -#### 视图介绍: - -​ 视图(view)是一个虚拟表,为其命名后,用户使用时只需查此虚拟表即可获取结果集,并可以将其当作表来使用。此虚拟表的数据,来源于原表当中。 - -#### 视图的作用: - -​ 简化代码,可以把重复使用的查询封装成视图重复使用,同时可以使复杂的查询易于理解和使用。 - -​ 安全原因,如果一张表中有很多数据不希望让人看到,此时可以使用视图。 - -#### 创建视图语句 - -~~~ mysql -create or replace view 视图名 -as -select name,age from student; -# 查看表和视图 -show full tables; -~~~ - -#### 修改视图语句 - -~~~ mysql -alter view 视图名 as 新的查询语句 -~~~ - - #### 更新视图: - -​ 因为视图表是根据原表数据来的,所有对视图表进行增、删、改操作,也就相当于对原表进行操作。即,有一定的操作是会执行失败的。 - -​ ==所有,一般情况下,最好将视图作为查询数据的虚拟表,而不是通过视图更新数据。== - -#### 重命名视图 - -~~~ mysql -rename table 视图名 to 新视图名; -~~~ - -#### 删除视图 - -~~~ MySQL -drop view if exists 视图名; -~~~ - - - -## 存储过程 - - #### 简单理解:就是将sql语句分装成一个函数(方法) - -#### 创建存储过程格式 - -~~~ mysql -delimiter $$ # 设置$$为语句结尾标识 -create procedure proc01() # 创建存储过程,并命名 -begin - select * from student; # 要执行的sql语句 -end $$ # $$ 到这表示语句结尾 -delimiter ; # 将语句结尾标识设回 ; - -# 调用存储过程 -call proc01() -~~~ - -#### 变量定义 - -1.局部变量:用户自定义,==在begin与end块中有效== - -~~~ mysql -delimiter $$ -create procedure proc02() -begin - declare var_name varchar(5) default '张三'; # 定义变量,默认值为‘张三’ - set var_name = '李四'; # 改变该变量的值 - select var_name; # 李四 -end $$ - -# 调用存储过程 -call proc02(); -~~~ - -2.用户变量:用户自定义,==当前会话(连接)有效==,类似java的成员变量 - -~~~ mysql -delimiter $$ -create procedure proc03() -begin - set var_name = '李四'; # 设置变量值为‘李四’ -end $$ - -# 调用存储过程 -call proc03(); # 运行成功,设置了变量的值 -select var_name; # 李四 -~~~ - -3.系统变量-全局变量:由系统提供,==在整个数据库有效== - -~~~ mysql -# 查看所有全局变量 -show global variables; -# 查看指定的全局变量 -select @@global.全局变量名; -# 修改全局变量值 -set global 全局变量名 = 要修改的值; -set @@global.全局变量名 = 要修改的值; -~~~ - -4.系统变量 - 会话变量:由系统提供,==当前会话(连接)有效== - -~~~ mysql -# 查看所有全局变量 -show session variables; -# 查看指定的全局变量 -select @@session.全局变量名; -# 修改全局变量值 -set session 全局变量名 = 要修改的值; -set @@session.全局变量名 = 要修改的值; -~~~ - diff --git "a/04 \346\235\216\346\230\216\345\201\245/20230916 \346\261\275\350\275\246\345\224\256\345\215\226\347\263\273\347\273\237.md" "b/04 \346\235\216\346\230\216\345\201\245/20230916 \346\261\275\350\275\246\345\224\256\345\215\226\347\263\273\347\273\237.md" deleted file mode 100644 index 1979a89..0000000 --- "a/04 \346\235\216\346\230\216\345\201\245/20230916 \346\261\275\350\275\246\345\224\256\345\215\226\347\263\273\347\273\237.md" +++ /dev/null @@ -1,154 +0,0 @@ -![](https://s2.loli.net/2023/09/16/bYhJlVZ3SKnGOH7.png) - -~~~ mysql -create database buy_car charset utf8; -use buy_car; - -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/16 16:12:55 */ -/*==============================================================*/ - - -drop table if exists car; - -drop table if exists car_brand; - -drop table if exists customer; - -drop table if exists sales_record; - -drop table if exists salesperson; - -/*==============================================================*/ -/* Table: car */ -/*==============================================================*/ -create table car -( - car_id int not null auto_increment, - cb_id int, - car_name varchar(10) not null, - car_price decimal(4,2) not null, - primary key (car_id) -); -insert into car values -(null,1,'奥迪A6L',42.79), -(null,1,'奥迪A8L',82.98), -(null,1,'奥迪A4L',32.18), -(null,2,'奔驰S400L',86.26), -(null,2,'奔驰GLA',28.78), -(null,2,'奔驰E级',50.25), -(null,3,'宝马X3',63.69), -(null,3,'宝马2系',41.98), -(null,3,'宝马X5',71.99); - -/*==============================================================*/ -/* Table: car_brand */ -/*==============================================================*/ -create table car_brand -( - cb_id int not null auto_increment, - cb_name varchar(10) not null, - primary key (cb_id) -); -insert into car_brand values -(null,'奥迪'), -(null,'奔驰'), -(null,'宝马'); - -/*==============================================================*/ -/* Table: customer */ -/*==============================================================*/ -create table customer -( - customer_id int not null auto_increment, - customer_name varchar(5) not null, - customer_sex char(1) not null, - customer_tel varchar(11) not null, - customer_address varchar(20) not null, - primary key (customer_id) -); -insert into customer values -(null,'张三','男','18850625585','福建省南平市'), -(null,'李四','女','16845766554','福建省龙岩市'), -(null,'王五','男','14950028523','福建省泉州市'), -(null,'赵六','女','15650258573','福建省漳州市'), -(null,'田七','女','14589562573','福建省漳州市'); - -/*==============================================================*/ -/* Table: 销售记录 */ -/*==============================================================*/ -create table sales_record -( - sr_id int not null auto_increment, - car_id int, - sp_id int, - customer_id int, - sr_time date not null, - primary key (sr_id) -); -insert into sales_record values -(null,2,1,1,'2023-02-13'), -(null,1,3,1,'2023-05-23'), -(null,3,1,3,'2023-03-19'), -(null,5,2,2,'2023-07-21'), -(null,4,4,5,'2023-06-14'), -(null,6,2,4,'2023-08-15'), -(null,9,3,2,'2023-07-21'); - -/*==============================================================*/ -/* Table: 销售员 */ -/*==============================================================*/ -create table salesperson -( - sp_id int not null auto_increment, - sp_name varchar(5) not null, - sp_sex char(1) not null, - sp_tel varchar(11) not null, - sp_address varchar(20) not null, - primary key (sp_id) -); -insert into salesperson values -(null,'小李','男','14648515156','福建省南平市'), -(null,'小敏','女','18956764856','福建省漳州市'), -(null,'小莉','女','15989525856','福建省龙岩市'), -(null,'小黄','男','15954879156','福建省龙岩市'); - -alter table car add constraint FK_belong_to foreign key (cb_id) - references car_brand (cb_id) on delete restrict on update restrict; - -alter table sales_record add constraint FK_buy foreign key (customer_id) - references customer (customer_id) on delete restrict on update restrict; - -alter table sales_record add constraint FK_sell_a foreign key (sp_id) - references salesperson (sp_id) on delete restrict on update restrict; - -alter table sales_record add constraint FK_sell_b foreign key (car_id) - references car (car_id) on delete restrict on update restrict; - - - - -- 1.查询特定销售员的销售记录(小李) - select * from salesperson s,sales_record sr where s.sp_id = sr.sp_id and sp_name = '小李'; - -- 2.查找销售记录中销售价格最高的汽车 - select * from car where car_price = - (select max(car_price) from car c,sales_record sr where c.car_id = sr.car_id); - -- 3.统计某个销售员的销售总额(小敏) - select sum(car_price) 万元 from car c,sales_record sr where c.car_id = sr.car_id and sp_id =(select sp_id from salesperson where sp_name = '小敏'); - -- 4.根据客户信息查询其购买过的汽车(李四) - select * from car where car_id in - (select car_id from sales_record where customer_id = (select customer_id from customer where customer_name = '李四')); - -- 5.分析特定品牌汽车的销售情况,统计每个品牌的销售数量和总销售额(奔驰) - select cb.cb_name 品牌,count(cb.cb_id) 销售数量,sum(car_price) 总销售额万元 - from car_brand cb,car c,sales_record sr where cb.cb_id = c.cb_id and c.car_id = sr.car_id group by cb.cb_id; - -- 6.检索特定日期范围内的销售了哪些汽车(2023-07-21) - select * from car where car_id in - (select car_id from sales_record where sr_time = '2023-07-21'); - -- 7.查找某车型的销售历史(宝马X3)。 - select * from sales_record where car_id = - (select car_id from car where car_name = '奔驰S400L'); - -- 8.统计每个销售员的销售数量 - select sp_name 销售员,count(sp.sp_id) 销售数量 from salesperson sp , sales_record sr where sp.sp_id = sr.sp_id group by sp.sp_id; - -~~~ - diff --git "a/04 \346\235\216\346\230\216\345\201\245/20230919 \346\237\245\350\257\242\345\244\215\344\271\240\351\242\230.md" "b/04 \346\235\216\346\230\216\345\201\245/20230919 \346\237\245\350\257\242\345\244\215\344\271\240\351\242\230.md" deleted file mode 100644 index 2e527da..0000000 --- "a/04 \346\235\216\346\230\216\345\201\245/20230919 \346\237\245\350\257\242\345\244\215\344\271\240\351\242\230.md" +++ /dev/null @@ -1,776 +0,0 @@ -## mysql复习 - -如果值是null,那么所有null参与运算,返回的结果也都是null - -所以遇上null,却又必须让它参与运算,就使用 ifnull (原值,新值) - -这个函数的作用,如果原值是null,就用新值代替,如果原值不是null,就保持原值 - -limit 起始数,显示数 - -desc 库名:显示表结构 - -length(email):email的字节长度 - -#### 自然连接 - -表,表 where 字段=字段 and 字段=字段 - -#### 联表区间 - -表 left join 表 on 表.字段 between 表.字段 and 表.字段(不支持别名) - -#### 自连接 - -inner join - -not in(条件,条件) - -!(between 20 and 50) - -#### 代码 - -~~~ mysql - -create database text01 charset utf8; -use text01; -/* - Navicat Premium Data Transfer - - Source Server : local - Source Server Type : MySQL - Source Server Version : 80034 (8.0.34) - Source Host : localhost:3306 - Source Schema : mxdxdb - - Target Server Type : MySQL - Target Server Version : 80034 (8.0.34) - File Encoding : 65001 - - Date: 17/09/2023 22:21:02 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for countries --- ---------------------------- -DROP TABLE IF EXISTS `countries`; -CREATE TABLE `countries` ( - `country_id` char(2) NOT NULL, - `country_name` varchar(40) DEFAULT NULL, - `region_id` int DEFAULT NULL, - PRIMARY KEY (`country_id`), - KEY `countr_reg_fk` (`region_id`), - CONSTRAINT `countr_reg_fk` FOREIGN KEY (`region_id`) REFERENCES `regions` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of countries --- ---------------------------- -BEGIN; -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('AR', '阿根廷', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('AU', '澳大利亚', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('BE', '比利时', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('BR', '巴西', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CA', '加拿大', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CH', '瑞士', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CN', '中国', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('DE', '德国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('DK', '丹麦', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('EG', '埃及', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('FR', '法国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('HK', '香港', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IL', '以色列', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IN', '印度', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IT', '意大利', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('JP', '日本', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('KW', '科威特', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('MX', '墨西哥', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('NG', '尼日利亚', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('NL', '荷兰', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('SG', '新加坡', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('UK', '英国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('US', '美国', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('ZM', '赞比亚', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('ZW', '津巴布韦', 4); -COMMIT; - --- ---------------------------- --- Table structure for departments --- ---------------------------- -DROP TABLE IF EXISTS `departments`; -CREATE TABLE `departments` ( - `department_id` int NOT NULL DEFAULT '0', - `department_name` varchar(30) NOT NULL, - `manager_id` int DEFAULT NULL, - `location_id` int DEFAULT NULL, - PRIMARY KEY (`department_id`), - UNIQUE KEY `dept_id_pk` (`department_id`), - KEY `dept_loc_fk` (`location_id`), - KEY `dept_mgr_fk` (`manager_id`), - CONSTRAINT `dept_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`location_id`), - CONSTRAINT `dept_mgr_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of departments --- ---------------------------- -BEGIN; -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (10, '行政部', 200, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (20, '营销部', 201, 1800); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (30, '采购部', 114, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (40, '人力资源部', 203, 2400); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (50, '物流部', 121, 1500); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (60, '信息技术部', 103, 1400); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (70, '公共关系部', 204, 2700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (80, '销售部', 145, 2500); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (90, '执行部门', 100, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (100, '财务部', 108, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (110, '会计部', 205, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (120, '财务部门1', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (130, '企业税务部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (140, '控制和信用部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (150, '股东服务部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (160, '员工福利部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (170, '制造部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (180, '建筑部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (190, '承包部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (200, '运营部', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (210, '信息技术支持部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (220, '网络运营中心', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (230, '信息技术帮助台', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (240, '政府销售部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (250, '零售销售部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (260, '招聘部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (270, '工资单部门', NULL, 1700); -COMMIT; - --- ---------------------------- --- Table structure for employees --- ---------------------------- -DROP TABLE IF EXISTS `employees`; -CREATE TABLE `employees` ( - `employee_id` int NOT NULL DEFAULT '0', - `first_name` varchar(20) DEFAULT NULL, - `last_name` varchar(25) NOT NULL, - `email` varchar(25) NOT NULL, - `phone_number` varchar(20) DEFAULT NULL, - `hire_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `salary` double(8,2) DEFAULT NULL, - `commission_pct` double(2,2) DEFAULT NULL, - `manager_id` int DEFAULT NULL, - `department_id` int DEFAULT NULL, - PRIMARY KEY (`employee_id`), - UNIQUE KEY `emp_email_uk` (`email`), - UNIQUE KEY `emp_emp_id_pk` (`employee_id`), - KEY `emp_dept_fk` (`department_id`), - KEY `emp_job_fk` (`job_id`), - KEY `emp_manager_fk` (`manager_id`), - CONSTRAINT `emp_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `emp_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`), - CONSTRAINT `emp_manager_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of employees --- ---------------------------- -BEGIN; -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (100, '史蒂文', '金', 'SKING', '515.123.4567', '1987-06-17', 'AD_PRES', 24000.00, NULL, NULL, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (101, '尼娜', '科查尔', 'NKOCHHAR', '515.123.4568', '1989-09-21', 'AD_VP', 17000.00, NULL, 100, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (102, '雷克斯', '德哈恩', 'LDEHAAN', '515.123.4569', '1993-01-13', 'AD_VP', 17000.00, NULL, 100, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (103, '亚历山大', '胡诺尔德', 'AHUNOLD', '590.423.4567', '1990-01-03', 'IT_PROG', 9000.00, NULL, 102, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (104, '布鲁斯', '恩斯特', 'BERNST', '590.423.4568', '1991-05-21', 'IT_PROG', 6000.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (105, '大卫', '奥斯汀', 'DAUSTIN', '590.423.4569', '1997-06-25', 'IT_PROG', 4800.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (106, '瓦利', '帕塔巴拉', 'VPATABAL', '590.423.4560', '1998-02-05', 'IT_PROG', 4800.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (107, '黛安娜', '洛伦茨', 'DLORENTZ', '590.423.5567', '1999-02-07', 'IT_PROG', 4200.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (108, '南希', '格林伯格', 'NGREENBE', '515.124.4569', '1994-08-17', 'FI_MGR', 12000.00, NULL, 101, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (109, '丹尼尔', '法维特', 'DFAVIET', '515.124.4169', '1994-08-16', 'FI_ACCOUNT', 9000.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (110, '约翰', '陈', 'JCHEN', '515.124.4269', '1997-09-28', 'FI_ACCOUNT', 8200.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (111, '伊斯梅尔', '斯基亚拉', 'ISCIARRA', '515.124.4369', '1997-09-30', 'FI_ACCOUNT', 7700.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (112, '何塞·曼努埃尔', '乌尔曼', 'JMURMAN', '515.124.4469', '1998-03-07', 'FI_ACCOUNT', 7800.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (113, '路易斯', '波普', 'LPOPP', '515.124.4567', '1999-12-07', 'FI_ACCOUNT', 6900.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (114, '丹', '拉法艾利', 'DRAPHEAL', '515.127.4561', '1994-12-07', 'PU_MAN', 11000.00, NULL, 100, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (115, '亚历山大', '胡', 'AKHOO', '515.127.4562', '1995-05-18', 'PU_CLERK', 3100.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (116, '雪莉', '拜达', 'SBAIDA', '515.127.4563', '1997-12-24', 'PU_CLERK', 2900.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (117, '西加尔', '托比亚斯', 'STOBIAS', '515.127.4564', '1997-07-24', 'PU_CLERK', 2800.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (118, '盖伊', '火室', 'GHIMURO', '515.127.4565', '1998-11-15', 'PU_CLERK', 2600.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (119, '卡伦', '科尔门纳雷斯', 'KCOLMENA', '515.127.4566', '1999-08-10', 'PU_CLERK', 2500.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (120, '马修', '韦斯', 'MWEISS', '650.123.1234', '1996-07-18', 'ST_MAN', 8000.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (121, '亚当', '弗里普', 'AFRIPP', '650.123.2234', '1997-04-10', 'ST_MAN', 8200.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (122, '帕亚姆', '考夫林', 'PKAUFLIN', '650.123.3234', '1995-05-01', 'ST_MAN', 7900.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (123, '珊塔', '沃尔曼', 'SVOLLMAN', '650.123.4234', '1997-10-10', 'ST_MAN', 6500.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (124, '凯文', '莫尔戈斯', 'KMOURGOS', '650.123.5234', '1999-11-16', 'ST_MAN', 5800.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (125, '朱莉娅', '内耶尔', 'JNAYER', '650.124.1214', '1997-07-16', 'ST_CLERK', 3200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (126, '艾琳', '米基利内尼', 'IMIKKILI', '650.124.1224', '1998-09-28', 'ST_CLERK', 2700.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (127, '詹姆斯', '兰德里', 'JLANDRY', '650.124.1334', '1999-01-14', 'ST_CLERK', 2400.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (128, '史蒂文', '马克尔', 'SMARKLE', '650.124.1434', '2000-03-08', 'ST_CLERK', 2200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (129, '劳拉', '比索特', 'LBISSOT', '650.124.5234', '1997-08-20', 'ST_CLERK', 3300.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (130, '莫兹', '阿特金森', 'MATKINSO', '650.124.6234', '1997-10-30', 'ST_CLERK', 2800.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (131, '詹姆斯', '马洛', 'JAMRLOW', '650.124.7234', '1997-02-16', 'ST_CLERK', 2500.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (132, 'TJ', '奥尔森', 'TJOLSON', '650.124.8234', '1999-04-10', 'ST_CLERK', 2100.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (133, '贾森', '马林', 'JMALLIN', '650.127.1934', '1996-06-14', 'ST_CLERK', 3300.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (134, '迈克尔', '罗杰斯', 'MROGERS', '650.127.1834', '1998-08-26', 'ST_CLERK', 2900.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (135, '基', '吉', 'KGEE', '650.127.1734', '1999-12-12', 'ST_CLERK', 2400.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (136, '海泽尔', '菲尔坦克', 'HPHILTAN', '650.127.1634', '2000-02-06', 'ST_CLERK', 2200.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (137, '伦斯克', '拉德维格', 'RLADWIG', '650.121.1234', '1995-07-14', 'ST_CLERK', 3600.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (138, '斯蒂芬', '斯泰尔斯', 'SSTILES', '650.121.2034', '1997-10-26', 'ST_CLERK', 3200.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (139, '约翰', '西奥', 'JSEO', '650.121.2019', '1998-02-12', 'ST_CLERK', 2700.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (140, '乔舒亚', '帕特尔', 'JPATEL', '650.121.1834', '1998-04-06', 'ST_CLERK', 2500.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (141, '特蕾娜', '拉杰斯', 'TRAJS', '650.121.8009', '1995-10-17', 'ST_CLERK', 3500.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (142, '柯蒂斯', '戴维斯', 'CDAVIES', '650.121.2994', '1997-01-29', 'ST_CLERK', 3100.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (143, '兰德尔', '马托斯', 'RMATOS', '650.121.2874', '1998-03-15', 'ST_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (144, '彼得', '瓦加斯', 'PVARGAS', '650.121.2004', '1998-07-09', 'ST_CLERK', 2500.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (145, '约翰', '罗素', 'JRUSSEL', '011.44.1344.429268', '1996-10-01', 'SA_MAN', 14000.00, 0.40, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (146, '卡伦', '帕特纳斯', 'KPARTNER', '011.44.1344.467268', '1997-01-05', 'SA_MAN', 13500.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (147, '阿尔贝托', '埃拉苏里斯', 'AERRAZUR', '011.44.1344.429278', '1997-03-10', 'SA_MAN', 12000.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (148, '杰拉德', '坎布劳特', 'GCAMBRAU', '011.44.1344.619268', '1999-10-15', 'SA_MAN', 11000.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (149, '埃莱妮', '兹洛特基', 'EZLOTKEY', '011.44.1344.429018', '2000-01-29', 'SA_MAN', 10500.00, 0.20, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (150, '彼得', '塔克', 'PTUCKER', '011.44.1344.129268', '1997-01-30', 'SA_REP', 10000.00, 0.30, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (151, '大卫', '伯恩斯坦', 'DBERNSTE', '011.44.1344.345268', '1997-03-24', 'SA_REP', 9500.00, 0.25, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (152, '彼得', '霍尔', 'PHALL', '011.44.1344.478968', '1997-08-20', 'SA_REP', 9000.00, 0.25, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (153, '克里斯托弗', '奥尔森', 'COLSEN', '011.44.1344.498718', '1998-03-30', 'SA_REP', 8000.00, 0.20, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (154, '娜妮特', '坎布劳特', 'NCAMBRAU', '011.44.1344.987668', '1998-12-09', 'SA_REP', 7500.00, 0.20, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (155, '奥利弗', '图沃尔特', 'OTUVAULT', '011.44.1344.486508', '1999-11-23', 'SA_REP', 7000.00, 0.15, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (156, '詹妮特', '金', 'JKING', '011.44.1345.429268', '1996-01-30', 'SA_REP', 10000.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (157, '帕特里克', '萨利', 'PSULLY', '011.44.1345.929268', '1996-03-04', 'SA_REP', 9500.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (158, '艾伦', '麦克尤恩', 'AMCEWEN', '011.44.1345.829268', '1996-08-01', 'SA_REP', 9000.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (159, '林赛', '史密斯', 'LSMITH', '011.44.1345.729268', '1997-03-10', 'SA_REP', 8000.00, 0.30, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (160, '路易斯', '多兰', 'LDORAN', '011.44.1345.629268', '1997-12-15', 'SA_REP', 7500.00, 0.30, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (161, '萨拉特', '肖尔', 'SSEWALL', '011.44.1345.529268', '1998-11-03', 'SA_REP', 7000.00, 0.25, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (162, '克拉拉', '维什尼', 'CVISHNEY', '011.44.1346.129268', '1997-11-11', 'SA_REP', 10500.00, 0.25, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (163, '丹妮尔', '格林', 'DGREENE', '011.44.1346.229268', '1999-03-19', 'SA_REP', 9500.00, 0.15, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (164, '玛蒂亚', '马文斯', 'MMARVINS', '011.44.1346.329268', '2000-01-24', 'SA_REP', 7200.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (165, '大卫', '李', 'DLEE', '011.44.1346.529268', '2000-02-23', 'SA_REP', 6800.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (166, '桑达尔', '安迪', 'SANDE', '011.44.1346.629268', '2000-03-24', 'SA_REP', 6400.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (167, '阿米特', '班达', 'ABANDA', '011.44.1346.729268', '2000-04-21', 'SA_REP', 6200.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (168, '丽莎', '奥泽尔', 'LOZER', '011.44.1343.929268', '1997-03-11', 'SA_REP', 11500.00, 0.25, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (169, '哈里森', '布鲁姆', 'HBLOOM', '011.44.1343.829268', '1998-03-23', 'SA_REP', 10000.00, 0.20, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (170, '泰勒', '福克斯', 'TFOX', '011.44.1343.729268', '1998-01-24', 'SA_REP', 9600.00, 0.20, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (171, '威廉', '史密斯', 'WSMITH', '011.44.1343.629268', '1999-02-23', 'SA_REP', 7400.00, 0.15, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (172, '伊丽莎白', '贝茨', 'EBATES', '011.44.1343.529268', '1999-03-24', 'SA_REP', 7300.00, 0.15, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (173, '桑迪塔', '库马尔', 'SKUMAR', '011.44.1343.329268', '2000-04-21', 'SA_REP', 6100.00, 0.10, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (174, '艾伦', '阿贝尔', 'EABEL', '011.44.1644.429267', '1996-05-11', 'SA_REP', 11000.00, 0.30, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (175, '阿莉莎', '哈顿', 'AHUTTON', '011.44.1644.429266', '1997-03-19', 'SA_REP', 8800.00, 0.25, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (176, '乔纳森', '泰勒', 'JTAYLOR', '011.44.1644.429265', '1998-03-24', 'SA_REP', 8600.00, 0.20, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (177, '杰克', '利文斯顿', 'JLIVINGS', '011.44.1644.429264', '1998-04-23', 'SA_REP', 8400.00, 0.20, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (178, '金柏莉', '格兰特', 'KGRANT', '011.44.1644.429263', '1999-05-24', 'SA_REP', 7000.00, 0.15, 149, NULL); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (179, '查尔斯', '约翰逊', 'CJOHNSON', '011.44.1644.429262', '2000-01-04', 'SA_REP', 6200.00, 0.10, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (180, '温斯顿', '泰勒', 'WTAYLOR', '650.507.9876', '1998-01-24', 'SH_CLERK', 3200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (181, '简', '弗勒尔', 'JFLEAUR', '650.507.9877', '1998-02-23', 'SH_CLERK', 3100.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (182, '玛莎', '沙利文', 'MSULLIVA', '650.507.9878', '1999-06-21', 'SH_CLERK', 2500.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (183, '吉拉德', '格奥尼', 'GGEONI', '650.507.9879', '2000-02-03', 'SH_CLERK', 2800.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (184, '南迪塔', '萨尔钦德', 'NSARCHAN', '650.509.1876', '1996-01-27', 'SH_CLERK', 4200.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (185, '亚历克西斯', '布尔', 'ABULL', '650.509.2876', '1997-02-20', 'SH_CLERK', 4100.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (186, '朱莉娅', '戴林格', 'JDELLING', '650.509.3876', '1998-06-24', 'SH_CLERK', 3400.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (187, '安东尼', '卡布里奥', 'ACABRIO', '650.509.4876', '1999-02-07', 'SH_CLERK', 3000.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (188, '凯莉', '钟', 'KCHUNG', '650.505.1876', '1997-06-14', 'SH_CLERK', 3800.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (189, '詹妮弗', '迪利', 'JDILLY', '650.505.2876', '1997-08-13', 'SH_CLERK', 3600.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (190, '蒂莫西', '盖茨', 'TGATES', '650.505.3876', '1998-07-11', 'SH_CLERK', 2900.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (191, '兰达尔', '珀金斯', 'RPERKINS', '650.505.4876', '1999-12-19', 'SH_CLERK', 2500.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (192, '萨拉', '贝尔', 'SBELL', '650.501.1876', '1996-02-04', 'SH_CLERK', 4000.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (193, '布里特尼', '埃弗雷特', 'BEVERETT', '650.501.2876', '1997-03-03', 'SH_CLERK', 3900.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (194, '塞缪尔', '麦凯恩', 'SMCCAIN', '650.501.3876', '1998-07-01', 'SH_CLERK', 3200.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (195, '范斯', '琼斯', 'VJONES', '650.501.4876', '1999-03-17', 'SH_CLERK', 2800.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (196, '阿兰娜', '沃尔什', 'AWALSH', '650.507.9811', '1998-04-24', 'SH_CLERK', 3100.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (197, '凯文', '费尼', 'KFEENEY', '650.507.9822', '1998-05-23', 'SH_CLERK', 3000.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (198, '唐纳德', '奥康奈尔', 'DOCONNEL', '650.507.9833', '1999-06-21', 'SH_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (199, '道格拉斯', '格兰特', 'DGRANT', '650.507.9844', '2000-01-13', 'SH_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (200, '詹妮弗', '韦伦', 'JWHALEN', '515.123.4444', '1987-09-17', 'AD_ASST', 4400.00, NULL, 101, 10); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (201, '迈克尔', '哈滕斯坦', 'MHARTSTE', '515.123.5555', '1996-02-17', 'MK_MAN', 13000.00, NULL, 100, 20); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (202, '帕特', '费伊', 'PFAY', '603.123.6666', '1997-08-17', 'MK_REP', 6000.00, NULL, 201, 20); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (203, '苏珊', '马夫里斯', 'SMAVRIS', '515.123.7777', '1994-06-07', 'HR_REP', 6500.00, NULL, 101, 40); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (204, '赫尔曼', '拜尔', 'HBAER', '515.123.8888', '1994-06-07', 'PR_REP', 10000.00, NULL, 101, 70); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (205, '谢莉', '希金斯', 'SHIGGINS', '515.123.8080', '1994-06-07', 'AC_MGR', 12000.00, NULL, 101, 110); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (206, '威廉', '吉茨', 'WGIETZ', '515.123.8181', '1994-06-07', 'AC_ACCOUNT', 8300.00, NULL, 205, 110); -COMMIT; - --- ---------------------------- --- Table structure for job_grades --- ---------------------------- -DROP TABLE IF EXISTS `job_grades`; -CREATE TABLE `job_grades` ( - `grade_level` varchar(3) DEFAULT NULL, - `lowest_sal` int DEFAULT NULL, - `highest_sal` int DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of job_grades --- ---------------------------- -BEGIN; -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('A', 1000, 2999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('B', 3000, 5999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('C', 6000, 9999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('D', 10000, 14999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('E', 15000, 24999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('F', 25000, 40000); -COMMIT; - --- ---------------------------- --- Table structure for job_history --- ---------------------------- -DROP TABLE IF EXISTS `job_history`; -CREATE TABLE `job_history` ( - `employee_id` int NOT NULL, - `start_date` date NOT NULL, - `end_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `department_id` int DEFAULT NULL, - PRIMARY KEY (`employee_id`,`start_date`), - UNIQUE KEY `jhist_emp_id_st_date_pk` (`employee_id`,`start_date`), - KEY `jhist_job_fk` (`job_id`), - KEY `jhist_dept_fk` (`department_id`), - CONSTRAINT `jhist_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `jhist_emp_fk` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`employee_id`), - CONSTRAINT `jhist_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of job_history --- ---------------------------- -BEGIN; -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (101, '1989-09-21', '1993-10-27', 'AC_ACCOUNT', 110); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (101, '1993-10-28', '1997-03-15', 'AC_MGR', 110); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (102, '1993-01-13', '1998-07-24', 'IT_PROG', 60); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (114, '1998-03-24', '1999-12-31', 'ST_CLERK', 50); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (122, '1999-01-01', '1999-12-31', 'ST_CLERK', 50); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (176, '1998-03-24', '1998-12-31', 'SA_REP', 80); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (176, '1999-01-01', '1999-12-31', 'SA_MAN', 80); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (200, '1987-09-17', '1993-06-17', 'AD_ASST', 90); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (200, '1994-07-01', '1998-12-31', 'AC_ACCOUNT', 90); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (201, '1996-02-17', '1999-12-19', 'MK_REP', 20); -COMMIT; - --- ---------------------------- --- Table structure for jobs --- ---------------------------- -DROP TABLE IF EXISTS `jobs`; -CREATE TABLE `jobs` ( - `job_id` varchar(10) NOT NULL DEFAULT '', - `job_title` varchar(35) NOT NULL, - `min_salary` int DEFAULT NULL, - `max_salary` int DEFAULT NULL, - PRIMARY KEY (`job_id`), - UNIQUE KEY `job_id_pk` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of jobs --- ---------------------------- -BEGIN; -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AC_ACCOUNT', '公共会计师', 4200, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AC_MGR', '会计经理', 8200, 16000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_ASST', '行政助理', 3000, 6000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_PRES', '总裁', 20000, 40000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_VP', '行政副总裁', 15000, 30000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('FI_ACCOUNT', '会计', 4200, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('FI_MGR', '财务经理', 8200, 16000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('HR_REP', '人力资源代表', 4000, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('IT_PROG', '程序员', 4000, 10000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('MK_MAN', '市场营销经理', 9000, 15000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('MK_REP', '市场营销代表', 4000, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PR_REP', '公共关系代表', 4500, 10500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PU_CLERK', '采购文员', 2500, 5500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PU_MAN', '采购经理', 8000, 15000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SA_MAN', '销售经理', 10000, 20000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SA_REP', '销售代表', 6000, 12000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SH_CLERK', '发货文员', 2500, 5500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('ST_CLERK', '库存文员', 2000, 5000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('ST_MAN', '库存经理', 5500, 8500); -COMMIT; - --- ---------------------------- --- Table structure for locations --- ---------------------------- -DROP TABLE IF EXISTS `locations`; -CREATE TABLE `locations` ( - `location_id` int NOT NULL DEFAULT '0', - `street_address` varchar(40) DEFAULT NULL, - `postal_code` varchar(12) DEFAULT NULL, - `city` varchar(30) NOT NULL, - `state_province` varchar(25) DEFAULT NULL, - `country_id` char(2) DEFAULT NULL, - PRIMARY KEY (`location_id`), - UNIQUE KEY `loc_id_pk` (`location_id`), - KEY `loc_c_id_fk` (`country_id`), - CONSTRAINT `loc_c_id_fk` FOREIGN KEY (`country_id`) REFERENCES `countries` (`country_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of locations --- ---------------------------- -BEGIN; -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1000, '1297 Via Cola di Rie', '00989', '罗马', NULL, 'IT'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1100, '93091 Calle della Testa', '10934', '威尼斯', NULL, 'IT'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1200, '2017 Shinjuku-ku', '1689', '东京', '东京都', 'JP'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1300, '9450 Kamiya-cho', '6823', '广岛', NULL, 'JP'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1400, '2014 Jabberwocky Rd', '26192', '南湖', '德克萨斯', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1500, '2011 Interiors Blvd', '99236', '南旧金山', '加利福尼亚', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1600, '2007 Zagora St', '50090', '南布朗斯维克', '新泽西', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1700, '2004 Charade Rd', '98199', '西雅图', '华盛顿', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1800, '147 Spadina Ave', 'M5V 2L7', '多伦多', '安大略', 'CA'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1900, '6092 Boxwood St', 'YSW 9T2', '怀特霍斯', '育空', 'CA'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2000, '40-5-12 Laogianggen', '190518', '北京', NULL, 'CN'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2100, '1298 Vileparle (E)', '490231', '孟买', '马哈拉施特拉邦', 'IN'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2200, '12-98 Victoria Street', '2901', '悉尼', '新南威尔士', 'AU'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2300, '198 Clementi North', '540198', '新加坡', NULL, 'SG'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2400, '8204 Arthur St', NULL, '伦敦', NULL, 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2500, 'Magdalen Centre, The Oxford Science Park', 'OX9 9ZB', '牛津', '牛津', 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2600, '9702 Chester Road', '09629850293', '斯特雷福德', '曼彻斯特', 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2700, 'Schwanthalerstr. 7031', '80925', '慕尼黑', '巴伐利亚', 'DE'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2800, 'Rua Frei Caneca 1360 ', '01307-002', '圣保罗', '圣保罗', 'BR'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2900, '20 Rue des Corps-Saints', '1730', '日内瓦', '日内瓦', 'CH'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3000, 'Murtenstrasse 921', '3095', '伯尔尼', 'BE', 'CH'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3100, 'Pieter Breughelstraat 837', '3029SK', '乌得勒支', '乌得勒支', 'NL'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3200, 'Mariano Escobedo 9991', '11932', '墨西哥城', '联邦区', 'MX'); -COMMIT; - --- ---------------------------- --- Table structure for order --- ---------------------------- -DROP TABLE IF EXISTS `order`; -CREATE TABLE `order` ( - `order_id` int DEFAULT NULL, - `order_name` varchar(15) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of order --- ---------------------------- -BEGIN; -INSERT INTO `order` (`order_id`, `order_name`) VALUES (1, 'shkstart'); -INSERT INTO `order` (`order_id`, `order_name`) VALUES (2, 'tomcat'); -INSERT INTO `order` (`order_id`, `order_name`) VALUES (3, 'dubbo'); -COMMIT; - --- ---------------------------- --- Table structure for regions --- ---------------------------- -DROP TABLE IF EXISTS `regions`; -CREATE TABLE `regions` ( - `region_id` int NOT NULL, - `region_name` varchar(25) DEFAULT NULL, - PRIMARY KEY (`region_id`), - UNIQUE KEY `reg_id_pk` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of regions --- ---------------------------- -BEGIN; -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (1, '欧洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (2, '美洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (3, '亚洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (4, '中东和非洲'); -COMMIT; - --- ---------------------------- --- View structure for emp_details_view --- ---------------------------- -DROP VIEW IF EXISTS `emp_details_view`; -CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `emp_details_view` AS select `e`.`employee_id` AS `employee_id`,`e`.`job_id` AS `job_id`,`e`.`manager_id` AS `manager_id`,`e`.`department_id` AS `department_id`,`d`.`location_id` AS `location_id`,`l`.`country_id` AS `country_id`,`e`.`first_name` AS `first_name`,`e`.`last_name` AS `last_name`,`e`.`salary` AS `salary`,`e`.`commission_pct` AS `commission_pct`,`d`.`department_name` AS `department_name`,`j`.`job_title` AS `job_title`,`l`.`city` AS `city`,`l`.`state_province` AS `state_province`,`c`.`country_name` AS `country_name`,`r`.`region_name` AS `region_name` from (((((`employees` `e` join `departments` `d`) join `jobs` `j`) join `locations` `l`) join `countries` `c`) join `regions` `r`) where ((`e`.`department_id` = `d`.`department_id`) and (`d`.`location_id` = `l`.`location_id`) and (`l`.`country_id` = `c`.`country_id`) and (`c`.`region_id` = `r`.`region_id`) and (`j`.`job_id` = `e`.`job_id`)); - -SET FOREIGN_KEY_CHECKS = 1; - - - - - - -#第03章_基本的SELECT语句的课后练习 - -# 1.查询所有员工12个月的工资总和,并起别名为工资总和 -#理解1:计算12月的基本工资 - select sum(salary * 12) 工资总和 from employees ; - -#理解2:计算12月的基本工资和奖金 -# ifnull(原值,新值) 判断一个原值是否为null,如果原值是null,就用一个新值代替 - select sum(salary * 12) + sum(salary * 12 * commission_pct) 实发工资 from employees; - select sum(salary * 12 + salary * 12 * ifnull(commission_pct,0)) 实发工资 from employees; - -# 2.查询employees表中去除重复的job_id以后的数据 -#去除重复 distinct - select distinct(job_id) from employees; - -# 3.查询工资大于12000的员工姓名和工资 - select first_name 姓名,salary 工资 from employees where salary > 12000; - -# 4.查询员工号为176的员工的姓名和部门号 - select first_name 姓名,department_id 部门号 from employees where employee_id = 176; - -# 5.显示表 departments 的结构,并查询其中的全部数据 - desc departments; - select * from departments; - - - -# 第04章_运算符课后练习 -# 1.选择工资不在5000到12000的员工的姓名和工资 - select first_name 姓名,salary 工资 from employees where salary not between 5000 and 12000; - -# 2.选择在20或50号部门工作的员工姓名和部门号 - select first_name 姓名,department_id 部门号 from employees where department_id in(20,50); - -# 3.选择公司中没有管理者的员工姓名及job_id - select first_name 姓名,job_id from employees where manager_id is null; - -# 4.选择公司中有奖金的员工姓名,奖金和奖金级别 - select first_name 姓名,e.salary*commission_pct 奖金,grade_level 奖金级别 from employees e left join job_grades j on e.salary*commission_pct between j.lowest_sal and j.highest_sal where commission_pct is not null; - -# 5.选择员工姓名的第三个字是 尔 的员工姓名 - select first_name 姓名 from employees where first_name like '__尔'; - -# 6.选择姓名中有 特 字和 尔 字的员工姓名 - select * from employees where last_name like '%特%' and last_name like '%尔%' - -# 7.显示出表 employees 表中 first_name 以 '尔'结尾的员工信息 - select * from employees where first_name like '%尔'; - -# 8.显示出表 employees 部门编号在 80-100 之间的姓名、工种 - select first_name 姓名,job_title 工种 from employees e left join jobs j on e.job_id=j.job_id where department_id between 80 and 100; - -# 9.显示出表 employees 的 manager_id 是 100,101,108 的员工姓名、工资、管理者id - select first_name 员工姓名,salary 工资,manager_id 管理者id from employees where manager_id in(100,101,108) - - - - -#第05章_排序与分页的课后练习 - -#1. 查询员工的姓名和部门号和年薪,按年薪降序显示 --- order by 年薪 asc/desc - select first_name 姓名,department_id 部门号,(salary * 12) 年薪 from employees order by 年薪 desc; - -#2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据 - select * from employees where salary not between 8000 and 17000 order by salary desc limit 21,19; - -#3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序 - select * from employees where email like '%e%' order by char_length(email) desc,department_id; - - - - -# 第06章_多表查询的课后练习 - -# 1.显示所有员工的姓名,部门号和部门名称。 - select first_name 姓名,e.job_id 部门号,job_title 部门名称 from employees e,jobs j where e.job_id=j.job_id - -# 2.查询90号部门员工的job_id和90号部门的location_id - select job_id,location_id from employees e,departments d where e.department_id = d.department_id and e.department_id = 90; - -# 3.选择所有 有奖金的员工 的 last_name , department_name , location_id , city - select last_name ,department_name ,d.location_id ,city - from employees e,departments d,locations l - where e.department_id = d.department_id and d.location_id = l.location_id and commission_pct is not null; - - -# 4.选择city在 多伦多 工作的员工的 last_name , job_id , department_id , department_name - - #子查询 - select last_name ,job_id ,b.department_id ,department_name from employees e, - (select department_id ,department_name from departments where location_id = - (select location_id from locations where city = '多伦多')) b where e.department_id=b.department_id; - - #连表查 - select last_name ,job_id ,d.department_id ,department_name - from locations l ,departments d ,employees e - where l.location_id = d.location_id and d.department_id = e.department_id and city = '多伦多'; - - -#sql92语法(自然连接): - -# 5.查询行政部门员工的部门名称、部门地址、姓名、工作、工资 - #select * from locations join departments join employees where department_name = '行政部'; - select d.department_name 部门名称,l.street_address 部门地址,e.first_name 姓名,j.job_title 工作,e.salary 工资 from locations l - left join departments d on l.location_id = d.location_id - left join employees e on d.department_id = e.department_id - right join jobs j on e.job_id = j.job_id where d.department_name = '行政部'; - -# 6.显示所有员工的姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式 --- 员工姓名 员工编号 上级姓名 上级的员工编号 --- 德哈恩 102 金 100 - select e1.last_name 员工姓名,e1.employee_id 员工编号,e2.last_name 上级姓名,e2.employee_id 上级的员工编号 from employees e1,employees e2 where e1.manager_id =e2.employee_id - -# 7.查询哪些部门没有员工 - select department_name 部门名称 from departments d left join employees e on d.department_id = e.department_id where employee_id is null; - -# 8. 查询哪个城市没有部门 - select city 没有部门的城市 from locations where location_id not in - (select distinct(location_id) from departments); - -# 9. 查询部门名为 销售部 或 信息技术部 的员工信息 - select * from employees where department_id in - (select department_id from departments where department_name in('销售部','信息技术部')); - - - - -# 第08章_聚合函数的课后练习 - -#2.查询公司员工工资的最大值,最小值,平均值,总和 - select max(salary) 最大值,min(salary) 最小值,avg(salary) 平均值,sum(salary) 总和 from employees ; - -#3.查询各job_id的员工工资的最大值,最小值,平均值,总和 - select j.job_id, max(salary) 最大值,min(salary) 最小值,avg(salary) 平均值,sum(salary) 总和 - from jobs j left join employees e on j.job_id = e.job_id group by j.job_id; - -#4.选择各个job_id的员工人数 - select j.job_id,count(j.job_id) from jobs j left join employees e on j.job_id = e.job_id group by j.job_id; - -# 5.查询员工最高工资和最低工资的差距 - select max(salary)-min(salary) 最高工资和最低工资的差距 from employees ; - -# 6.查询各个管理者 手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内 - select e1.manager_id,min(e1.salary) 最低工资 - from employees e1 right join employees e2 on e1.manager_id = e2.employee_id - where e1.salary >6000 group by e1.manager_id - -# 7.查询所有部门的名字,location_id,员工数量和平均工资,并按平均工资降序 - select d.department_name 部门名,d.location_id,count(e.department_id) 员工数量,avg(e.salary) 平均工资 - from employees e right join departments d on e.department_id = d.department_id - group by d.department_id order by 平均工资 desc - -# 8.查询每个工种、每个部门的部门名、工种名和最低工资 - - select d.department_name 部门名,j.job_title 工种名,min(e.salary) 最低工资 from jobs j right join employees e on j.job_id = e.job_id left join departments d on e.department_id = d.department_id group by j.job_id,d.department_id; - - - -# 第09章_子查询的课后练习 - -#1.查询和 兹洛特基 相同部门的员工姓名和工资 - select last_name 员工姓名,salary 工资 from employees where department_id = - (select department_id from employees where last_name = '兹洛特基'); - -#2.查询工资比公司平均工资高的员工的员工号,姓名和工资。 - #select l.location_id, avg(e.salary) 平均工资 from locations l right join departments d on l.location_id = d.location_id left join employees e on d.department_id = e.department_id group by l.location_id; - - select employee_id,first_name,salary from employees where salary>(select avg(salary) from employees); - -#3.选择工资大于所有JOB_ID = 'SA_MAN'的员工的工资的员工的last_name, job_id, salary - select last_name, job_id, salary from employees where salary > - (select max(e.salary) from jobs j left join employees e on j.job_id = e.job_id where j.job_id = 'SA_MAN'); - -#4.查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名 - #select * from employees where last_name like '' -#5.查询部门的location_id为1700的部门的工作的员工的员工号 - select employee_id 员工号 from employees where department_id in - (select department_id from departments where location_id = 1700); - -#6.查询管理者是 金 的员工姓名和工资 - select last_name 姓名,salary 工资 from employees where manager_id in - (select employee_id from employees where last_name = '金'); - -#7.查询工资最低的员工信息: last_name, salary - select last_name,salary from employees where salary = - (select min(salary) from employees); - - - -#8.查询平均工资最低的部门信息 - -#方式1: -# 部门最低工资=全司最低 -#方式2: -# 部门平均<= 公司所有平均 - select d.*,avg(e.salary) 平均工资 from departments d right join employees e on d.department_id = e.department_id group by d.department_id order by 平均工资 limit 0,1; - - -#9.查询平均工资最低的部门信息和该部门的平均工资(相关子查询) -#方式:先查最低平均工资的部门,再根据其id去select中再子查询 - - # 连表查 - select d.*,avg(e.salary) 平均工资 from departments d right join employees e on d.department_id = e.department_id group by d.department_id order by 平均工资 limit 0,1; - # 子查询 - select d.*,a.平均工资 from departments d right join - (select department_id,avg(salary) 平均工资 from employees group by department_id having avg(salary) = - (select avg(salary) 平均工资 from employees group by department_id order by 平均工资 limit 0,1)) a - on d.department_id = a.department_id; - - -#10.查询平均工资最高的 job 信息 - -#方式1:平均工资=最大 -#方式2:平均工资>=所有平均工资 - select j.*,avg(e.salary) 平均工资 - from jobs j right join employees e on j.job_id = e.job_id group by j.job_id order by 平均工资 desc limit 0,1; - -#11.查询平均工资高于公司平均工资的部门有哪些? - select d.department_name 部门名,avg(e.salary) 平均工资 - from departments d right join employees e on d.department_id = e.department_id - group by d.department_id having 平均工资 > (select avg(salary) from employees); - -#12.查询出公司中所有 manager 的详细信息 - -#方式1:自连接 自己连自己 - select * from employees where employee_id in - (select distinct(a.employee_id) from - (select e2.* from employees e1 left join employees e2 on e1.manager_id = e2.employee_id) a); - -#方式2:子查询 -#员工编号=(管理员编号有哪些) - select * from employees where employee_id in - (select distinct manager_id from employees); - -#13.各个部门中 最高工资中 最低的那个部门的 最低工资是多少? - select min(e.salary) 最低工资 from employees e right join - (select department_id,max(salary) 最高工资 from employees group by department_id order by 最高工资 limit 0,1) a - on e.department_id = a.department_id ; - -#14.查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary -#方式1: - select last_name, department_id, email, salary from employees where employee_id = - (select employee_id from employees e right join - (select department_id,avg(salary) 平均工资 from employees group by department_id order by 平均工资 desc limit 0,1) a - on e.department_id = a.department_id limit 0,1); - -#15. 查询部门的部门号,其中不包括job_id是"ST_CLERK"的部门号 -#方式1: - select job_id from jobs where job_id != 'ST_CLERK'; - -#16. 选择所有没有管理者的员工的last_name - select last_name from employees where manager_id is null; - -#17.查询员工号、姓名、雇用时间、工资,其中员工的管理者为 'De Haan' -#方式1: - select * from employees where last_name = 'De Haan' - -#方式2: - -#18.查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资(相关子查询) - -#方式1:使用相关子查询 - select e.employee_id 员工号,e.last_name 姓名,e.salary 工资,a.平均工资 from employees e left join - (select department_id,avg(salary) 平均工资 from employees group by department_id) a - on e.department_id = a.department_id and e.salary > a.平均工资; - -#方式2:在FROM中声明子查询 - -#19.查询每个部门下的部门人数大于 5 的部门名称(相关子查询) - select department_name from departments where department_id in - (select distinct department_id from employees where employee_id in - (select manager_id from employees group by manager_id having count(manager_id)>5)); - - -#20.查询每个国家下的部门个数大于 2 的国家编号(相关子查询) - select country_id from locations where location_id in - (select location_id from departments group by location_id having count(location_id) > 2); - -/* -子查询的编写技巧(或步骤):① 从里往外写 ② 从外往里写 - -如何选择? -① 如果子查询相对较简单,建议从外往里写。一旦子查询结构较复杂,则建议从里往外写 -② 如果是相关子查询的话,通常都是从外往里写。 - -*/ - - - - -~~~ - - \ No newline at end of file diff --git "a/04 \346\235\216\346\230\216\345\201\245/20230920 RBAC\347\254\224\350\256\260.md" "b/04 \346\235\216\346\230\216\345\201\245/20230920 RBAC\347\254\224\350\256\260.md" deleted file mode 100644 index e34e9bd..0000000 --- "a/04 \346\235\216\346\230\216\345\201\245/20230920 RBAC\347\254\224\350\256\260.md" +++ /dev/null @@ -1,174 +0,0 @@ -### RBAC (Role-Based Access Control) - -RBAC : 基于角色访问控制权限,是一种数据库设计思想,一个控制模型 - -==RBAC是主流设计模式== - -#### 数据库能存什么 - -1. 业务数据表:用户、商品 -2. 功能资源表:菜单信息表、页面代码 - -#### 权限使用背景 - -菜单权限: 不同用户登录系统后,展示菜单不同 - -按钮权限:不同用户查看同一个对象时,展示按钮不一样 - -数据权限:可见数据不同 - -操作权限:看得到点不着 例如:腾讯视频VIP你可以看到视频但是不可以播放 - -#### RBAC由三个部分组成 - -1. 用户 -2. 角色:是RBAC是的核心 -3. 权限 - -- User(用户):每个用户都有唯一的UID识别,并被授予不同的角色 -- Role(角色):不同角色具有不同的权限 -- Permission(权限):访问权限 -- 用户-角色映射:用户和角色之间的映射关系 -- 角色-权限映射:角色和权限之间的映射 - -权限关联实现授权,给用户分配应当有的对应权限 - -##### RBAC 的优点: - -简化了用户和权限的关系 - -易扩展,易维护 - -##### 缺点: - -RBAC模型没有提供操作顺序的控制机制,这一缺陷得RBAC模型很难适应那些对操作次序有严格要求的系统 - -###### 练习 - -~~~ mysql -create database text03 charset utf8; -use text03; - -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-20 15:27:53 */ -/*==============================================================*/ - - -drop table if exists menu; - -drop table if exists role; - -drop table if exists role_menu; - -drop table if exists `user`; - -drop table if exists user_role; - -/*==============================================================*/ -/* Table: menu */ -/*==============================================================*/ -create table menu -( - menu_id int not null auto_increment, - menu_name varchar(10) not null, - menu_address varchar(150) not null, - primary key (menu_id) -); -insert into menu values -(null,'首页','http://www.md.com/'), -(null,'查询学生信息','http://www.md.com/student'), -(null,'查询教师信息','http://www.md.com/teacher'), -(null,'查询教师工资','http://www.md.com/salary'); -/*==============================================================*/ -/* Table: role */ -/*==============================================================*/ -create table role -( - role_id int not null auto_increment, - role_name varchar(10) not null, - primary key (role_id) -); -insert into role values -(null,'校长'), -(null,'老师'), -(null,'学生'); - -/*==============================================================*/ -/* Table: role_menu */ -/*==============================================================*/ -create table role_menu -( - menu_id int not null, - role_id int not null, - primary key (menu_id, role_id) -); -insert into role_menu values -(1,1), -(2,1), -(3,1), -(4,1), -(1,2), -(2,2), -(3,2), -(1,3), -(2,3); - -/*==============================================================*/ -/* Table: user */ -/*==============================================================*/ -create table `user` -( - user_id int not null auto_increment, - user_name varchar(10) not null, - user_paw varchar(10) not null, - primary key (user_id) -); -insert into `user` values -(null,'张三','88888888'), -(null,'丘丘','66666666'), -(null,'小明','12345678'), -(null,'小红','12345678'); - -/*==============================================================*/ -/* Table: user_role */ -/*==============================================================*/ -create table user_role -( - role_id int not null, - user_id int not null, - primary key (role_id, user_id) -); -insert into user_role values -(1,1), -(2,2), -(3,3), -(3,4); - -alter table role_menu add constraint FK_role_menu foreign key (menu_id) - references menu (menu_id) on delete restrict on update restrict; - -alter table role_menu add constraint FK_role_menu2 foreign key (role_id) - references role (role_id) on delete restrict on update restrict; - -alter table user_role add constraint FK_user_role foreign key (role_id) - references role (role_id) on delete restrict on update restrict; - -alter table user_role add constraint FK_user_role2 foreign key (user_id) - references user (user_id) on delete restrict on update restrict; - - -delimiter $$ -create procedure proc01(in in_name varchar(5),in in_psw varchar(10)) -begin - select user_name,role_name,menu_name,menu_address - from `user` u,user_role ur,role r,role_menu rm,menu m where u.user_id = ur.user_id and ur.role_id = r.role_id and r.role_id = rm.role_id and rm.menu_id = m.menu_id and u.user_name = in_name and u.user_paw = in_psw; -end $$ -delimiter ; - -call proc01('张三','88888888'); -call proc01('丘丘','66666666'); -call proc01('小明','12345678'); -call proc01('小红','12345678'); -~~~ - diff --git "a/04 \346\235\216\346\230\216\345\201\245/20230921 SKU\347\254\224\350\256\260.md" "b/04 \346\235\216\346\230\216\345\201\245/20230921 SKU\347\254\224\350\256\260.md" deleted file mode 100644 index f584be2..0000000 --- "a/04 \346\235\216\346\230\216\345\201\245/20230921 SKU\347\254\224\350\256\260.md" +++ /dev/null @@ -1,191 +0,0 @@ -### 什么是SKU - -SKU: 英文全称为Stock Keeping Unit,简称SKU,是产品入库后一种编码归类方法,也是库存控制的最小单位。库存进出计量的单位, 可以是以件、盒、托盘等为单位。在服装、鞋类商品中使用最多最普遍。 例如纺织品中一个SKU通常表示:规格、颜色、款式。 - -### 什么是SPU - -SPU: 是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以称为一个SPU。 - -#### 总结:SPU是标准化产品单元,区分品种;SKU是库存量单位,区分单品;商品特指与商家有关的商品,可对应多个SKU。 - -### ER图 - -![](https://s2.loli.net/2023/09/21/lJTPQFUuSvmELYa.png) - -### 代码 - -~~~ mysql -create database text01 charset utf8; -use text01; - - -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-21 17:07:58 */ -/*==============================================================*/ - - -drop table if exists goods; - -drop table if exists goods_attribute; - -drop table if exists goods_attribute_value; - -drop table if exists goods_middle; - -drop table if exists specification; - -/*==============================================================*/ -/* Table: 商品表 */ -/*==============================================================*/ -create table goods -( - goods_id int not null auto_increment, - goods_name varchar(50) not null, - primary key (goods_id) -); -insert into goods values -(null,'华为 Mate60 Pro'); - -/*==============================================================*/ -/* Table: 商品属性表 */ -/*==============================================================*/ -create table goods_attribute -( - ga_id int not null auto_increment, - ga_name varchar(10) not null, - primary key (ga_id) -); -insert into goods_attribute values -(null,'颜色'), -(null,'版本'); - -/*==============================================================*/ -/* Table: 商品属性值表 */ -/*==============================================================*/ -create table goods_attribute_value -( - gav_id int not null auto_increment, - gav_name varchar(10) not null, - primary key (gav_id) -); -insert into goods_attribute_value values -(null,'黑色'), -(null,'白色'), -(null,'绿色'), -(null,'256G'), -(null,'512G'), -(null,'1T'); - - -/*==============================================================*/ -/* Table: 商品中间表 */ -/*==============================================================*/ -create table goods_middle -( - gm_id int not null auto_increment, - sf_id int, - ga_id int, - gav_id int, - primary key (gm_id) -); -insert into goods_middle values -(null,1,1,1), -(null,1,2,4), -(null,2,1,2), -(null,2,2,4), -(null,3,1,3), -(null,3,2,4), -(null,4,1,1), -(null,4,2,5), -(null,5,1,2), -(null,5,2,5), -(null,6,1,1), -(null,6,2,6), -(null,7,1,2), -(null,7,2,6), -(null,8,1,3), -(null,8,2,6); - -/*==============================================================*/ -/* Table: 规格表 */ -/*==============================================================*/ -create table specification -( - sf_id int not null auto_increment, - goods_id int, - sf_name varchar(50) not null, - sf_price decimal(6,2) not null, - sf_stock int not null, - primary key (sf_id) -); -insert into specification values -(null,1,'华为 Mate 60 Pro 256G+黑色',6999,0), -(null,1,'华为 Mate 60 Pro 256G+白色',6999,5), -(null,1,'华为 Mate 60 Pro 256G+绿色',6999,5), -(null,1,'华为 Mate 60 Pro 512G+黑色',7999,10), -(null,1,'华为 Mate 60 Pro 512G+白色',7999,20), -(null,1,'华为 Mate 60 Pro 1T+黑色',8999,30), -(null,1,'华为 Mate 60 Pro 1T+白色',8999,30), -(null,1,'华为 Mate 60 Pro 1T+绿色',8999,30); - - -alter table goods_middle add constraint FK_Relationship_2 foreign key (sf_id) - references specification (sf_id) on delete restrict on update restrict; - -alter table goods_middle add constraint FK_Relationship_3 foreign key (ga_id) - references goods_attribute (ga_id) on delete restrict on update restrict; - -alter table goods_middle add constraint FK_Relationship_4 foreign key (gav_id) - references goods_attribute_value (gav_id) on delete restrict on update restrict; - -alter table specification add constraint FK_Relationship_1 foreign key (goods_id) - references goods (goods_id) on delete restrict on update restrict; - - -# 视图(查询所有) -create or replace view select_all -as -SELECT - s.sf_id, - s.sf_name, - gav.gav_name, - s.sf_price -FROM - goods g, - specification s, - goods_middle gm, - goods_attribute ga, - goods_attribute_value gav -WHERE - g.goods_id = s.goods_id - AND s.sf_id = gm.sf_id - AND gm.ga_id = ga.ga_id - AND gm.gav_id = gav.gav_id - order by s.sf_id ; - - # 查询视图 - select * from select_all; - - -# 存储过程(查询指定的类型) -delimiter $$ -create procedure proc01(in in_color varchar(5),in in_ram varchar(10)) -begin - select * from specification where sf_id = - (select a.sf_id from - (select sf_id,gav_name from goods_middle gm,goods_attribute_value gav where gm.gav_id = gav.gav_id and gav_name = in_color) as a - , - (select sf_id,gav_name from goods_middle gm,goods_attribute_value gav where gm.gav_id = gav.gav_id and gav_name = in_ram) as b - where a.sf_id = b.sf_id); -end $$ -delimiter ; - -# 调用存储过程 -call proc01('白色','256G'); -call proc01('绿色','1T'); -call proc01('黑色','512G'); - - -~~~ - diff --git "a/04 \346\235\216\346\230\216\345\201\245/20230924 \345\255\230\345\202\250\350\277\207\347\250\213\347\232\204\344\274\240\345\217\202\357\274\210\351\242\204\344\271\240\357\274\211.md" "b/04 \346\235\216\346\230\216\345\201\245/20230924 \345\255\230\345\202\250\350\277\207\347\250\213\347\232\204\344\274\240\345\217\202\357\274\210\351\242\204\344\271\240\357\274\211.md" deleted file mode 100644 index c974510..0000000 --- "a/04 \346\235\216\346\230\216\345\201\245/20230924 \345\255\230\345\202\250\350\277\207\347\250\213\347\232\204\344\274\240\345\217\202\357\274\210\351\242\204\344\271\240\357\274\211.md" +++ /dev/null @@ -1,106 +0,0 @@ -#### 存储过程的传参 - -#### in :表示传入的参数 - -只有一个参数 - -~~~ mysql -delimiter $$ -create procedure proc04(in name varchar(5)) # in 表示传入参数 -begin - select * from student where student.name = name; # 将传递的参数赋值并利用 -end $$ -delimiter ; - -call proc04("张三"); # 传递参数,执行语句,得到张三的所有信息 -call proc04("李四"); # 传递参数,执行语句,得到李四的所有信息 -~~~ - -有多个参数 - -~~~ mysql -# 需求:查询指定部门,大于多少薪资的员工信息 (两个参数但是可变的) -delimiter $$ -create procedure proc05(in param_dname varchar(10),in param_sal decimal(7,2)) -begin - select * from dept d,emp e where d.dname = param_dname and e.sal > param_sal; -end $$ -delimiter ; - -call proc05("学工部",20000); # 调用分装好的语句,查询学工部薪资大于20000的员工信息 -call proc05("销售部",10000); -~~~ - -#### out :表示从存储过程内部传值给调用者 - -一个out参数 - -~~~ mysql -# 需求:传入员工编号,返回员工姓名 -delimiter $$ -create procedure proc06(in in_empno int, out out_ename varchar(5)) -begin - select ename into out_ename from emp where empno = in_empno; #into 表示将查询的结果赋值给out_ename -end $$ -delimiter ; - -call proc06(1001,@o_ename); # 传入员工编号,定义一个变量接收返回的结果 -select @o_ename; # 查询变量值 -~~~ - -多个out参数 - -~~~ mysql -# 需求:传入员工编号,返回员工姓名、薪资 -delimiter $$ -create procedure proc07(in in_empno int, out out_ename varchar(5), out out_sal decimal(7,2)) -begin - select ename,sal into out_ename,out_sal from emp where empno = in_empno; # 赋值字段一一对应,字段之间逗号隔开 -end $$ -delimiter ; - -call proc07(1001,@o_ename,@o_sal); # 定义变量接收返回结果 -select @o_ename; -select @o_sal; -~~~ - -#### inout:表示从外部传入的参数进过修改后可以返回的变量,既可以使用传入变量的值,也可以修改传入变量的值 - -案例一 - -~~~ mysql -# 需求:传入一个数字,传出这个数字的10倍值 -delimiter $$ -create procedure proc08(inout num int) -begin - set num = num * 10; -end $$ -delimiter ; - -set @inout_num = 2; # 设一个变量用来接收变化的值,并给初始值 -call proc08(@inout_num); # 调用存储过程,并将值传入 -select @inout_num; # 得到改变的值 20 -~~~ - -案例二 - -~~~ mysql -# 需求:传入员工名,拼接部门号,传入薪资,求出年薪 -# 拼接要求: 30_张三 -delimiter $$ -create procedure proc08(inout inout_ename varchar(5),inout inout_sal int) -begin - # concat_ws 是一个拼接的函数,可以指定拼接格式 - select concat_ws('_',deptno,ename) into inout_ename from emp where emp.ename = inout_ename; - set inout_sal = inout_sal * 12; -end $$ -delimiter ; -# 定义变量,并赋初始值 -set @inout_ename = "张三"; -set @inout_sal = 3000; -# 调用存储过程,得到结果 -call proc08(@inout_ename,@inout_sal); -# 打印结果 -select @inout_ename; -select @inout_sal; -~~~ diff --git "a/04 \346\235\216\346\230\216\345\201\245/20230926 Check\347\272\246\346\235\237\344\270\216\350\247\206\345\233\276.md" "b/04 \346\235\216\346\230\216\345\201\245/20230926 Check\347\272\246\346\235\237\344\270\216\350\247\206\345\233\276.md" deleted file mode 100644 index b62980b..0000000 --- "a/04 \346\235\216\346\230\216\345\201\245/20230926 Check\347\272\246\346\235\237\344\270\216\350\247\206\345\233\276.md" +++ /dev/null @@ -1,349 +0,0 @@ -## Check 约束 - -作用:检查某个字段的值是否符合XX要求,一般指的是值的范围 - -例: - -~~~ mysql -create table student( - gender char(1), - age int, - check(gender in('男','女')), - check(age > 0) -); -~~~ - -## 视图 - -#### 视图介绍: - -​ 视图(view)是一个虚拟表,为其命名后,用户使用时只需查此虚拟表即可获取结果集,并可以将其当作表来使用。此虚拟表的数据,来源于原表当中。 - -#### 视图的作用: - -​ 简化代码,可以把重复使用的查询封装成视图重复使用,同时可以使复杂的查询易于理解和使用。 - -​ 安全原因,如果一张表中有很多数据不希望让人看到,此时可以使用视图。 - -#### 创建视图语句 - -语法一: - -~~~ mysql -create view 视图名 as 查询语句 -~~~ - -语法二: - -~~~ mysql -create view 视图名(字段别名) as 查询语句 # 字段别名的个数要与查询语句一样 -~~~ - -#### 修改视图语句 - -语法一: - -~~~ mysql -create or replace view 视图名 as 查询语句 # 有就修改,没就创建 -~~~ - -语法二: - -~~~ mysql -alter view 视图名 as 新的查询语句 # 前提是被修改的视图要存在 -~~~ - - #### 更新视图: - -​ 因为视图表是根据原表数据来的,所有对视图表进行增、删、改操作,也就相当于对原表进行操作。即,有一定的操作是会执行失败的。 - -​ ==所有,一般情况下,最好将视图作为查询数据的虚拟表,而不是通过视图更新数据。== - -#### 重命名视图 - -~~~ mysql -rename table 视图名 to 新视图名; -~~~ - -#### 删除视图 - -~~~ MySQL -drop view if exists 视图名; -~~~ - -## 视图练习 - -~~~ mysql -/* -SQLyog Ultimate v12.08 (64 bit) -MySQL - 5.7.28-log : Database - view_db -********************************************************************* -*/ - -/*!40101 SET NAMES utf8 */; - -/*!40101 SET SQL_MODE=''*/; - -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -CREATE DATABASE /*!32312 IF NOT EXISTS*/`view_db` /*!40100 DEFAULT CHARACTER SET utf8 */; - -USE `view_db`; - -/*Table structure for table `countries` */ - -DROP TABLE IF EXISTS `countries`; - -CREATE TABLE `countries` ( - `country_id` char(2) NOT NULL, - `country_name` varchar(40) DEFAULT NULL, - `region_id` int(11) DEFAULT NULL, - PRIMARY KEY (`country_id`), - KEY `countr_reg_fk` (`region_id`), - CONSTRAINT `countr_reg_fk` FOREIGN KEY (`region_id`) REFERENCES `regions` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `countries` */ - -insert into `countries`(`country_id`,`country_name`,`region_id`) values ('AR','Argentina',2),('AU','Australia',3),('BE','Belgium',1),('BR','Brazil',2),('CA','Canada',2),('CH','Switzerland',1),('CN','China',3),('DE','Germany',1),('DK','Denmark',1),('EG','Egypt',4),('FR','France',1),('HK','HongKong',3),('IL','Israel',4),('IN','India',3),('IT','Italy',1),('JP','Japan',3),('KW','Kuwait',4),('MX','Mexico',2),('NG','Nigeria',4),('NL','Netherlands',1),('SG','Singapore',3),('UK','United Kingdom',1),('US','United States of America',2),('ZM','Zambia',4),('ZW','Zimbabwe',4); - -/*Table structure for table `departments` */ - -DROP TABLE IF EXISTS `departments`; - -CREATE TABLE `departments` ( - `department_id` int(4) NOT NULL DEFAULT '0', - `department_name` varchar(30) NOT NULL, - `manager_id` int(6) DEFAULT NULL, - `location_id` int(4) DEFAULT NULL, - PRIMARY KEY (`department_id`), - UNIQUE KEY `dept_id_pk` (`department_id`), - KEY `dept_loc_fk` (`location_id`), - KEY `dept_mgr_fk` (`manager_id`), - CONSTRAINT `dept_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`location_id`), - CONSTRAINT `dept_mgr_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `departments` */ - -insert into `departments`(`department_id`,`department_name`,`manager_id`,`location_id`) values (10,'Administration',200,1700),(20,'Marketing',201,1800),(30,'Purchasing',114,1700),(40,'Human Resources',203,2400),(50,'Shipping',121,1500),(60,'IT',103,1400),(70,'Public Relations',204,2700),(80,'Sales',145,2500),(90,'Executive',100,1700),(100,'Finance',108,1700),(110,'Accounting',205,1700),(120,'Treasury',NULL,1700),(130,'Corporate Tax',NULL,1700),(140,'Control And Credit',NULL,1700),(150,'Shareholder Services',NULL,1700),(160,'Benefits',NULL,1700),(170,'Manufacturing',NULL,1700),(180,'Construction',NULL,1700),(190,'Contracting',NULL,1700),(200,'Operations',NULL,1700),(210,'IT Support',NULL,1700),(220,'NOC',NULL,1700),(230,'IT Helpdesk',NULL,1700),(240,'Government Sales',NULL,1700),(250,'Retail Sales',NULL,1700),(260,'Recruiting',NULL,1700),(270,'Payroll',NULL,1700); - -/*Table structure for table `employees` */ - -DROP TABLE IF EXISTS `employees`; - -CREATE TABLE `employees` ( - `employee_id` int(6) NOT NULL DEFAULT '0', - `first_name` varchar(20) DEFAULT NULL, - `last_name` varchar(25) NOT NULL, - `email` varchar(25) NOT NULL, - `phone_number` varchar(20) DEFAULT NULL, - `hire_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `salary` double(8,2) DEFAULT NULL, - `commission_pct` double(2,2) DEFAULT NULL, - `manager_id` int(6) DEFAULT NULL, - `department_id` int(4) DEFAULT NULL, - PRIMARY KEY (`employee_id`), - UNIQUE KEY `emp_email_uk` (`email`), - UNIQUE KEY `emp_emp_id_pk` (`employee_id`), - KEY `emp_dept_fk` (`department_id`), - KEY `emp_job_fk` (`job_id`), - KEY `emp_manager_fk` (`manager_id`), - CONSTRAINT `emp_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `emp_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`), - CONSTRAINT `emp_manager_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `employees` */ - -insert into `employees`(`employee_id`,`first_name`,`last_name`,`email`,`phone_number`,`hire_date`,`job_id`,`salary`,`commission_pct`,`manager_id`,`department_id`) values (100,'Steven','King','SKING','515.123.4567','1987-06-17','AD_PRES',24000.00,NULL,NULL,90),(101,'Neena','Kochhar','NKOCHHAR','515.123.4568','1989-09-21','AD_VP',17000.00,NULL,100,90),(102,'Lex','De Haan','LDEHAAN','515.123.4569','1993-01-13','AD_VP',17000.00,NULL,100,90),(103,'Alexander','Hunold','AHUNOLD','590.423.4567','1990-01-03','IT_PROG',9000.00,NULL,102,60),(104,'Bruce','Ernst','BERNST','590.423.4568','1991-05-21','IT_PROG',6000.00,NULL,103,60),(105,'David','Austin','DAUSTIN','590.423.4569','1997-06-25','IT_PROG',4800.00,NULL,103,60),(106,'Valli','Pataballa','VPATABAL','590.423.4560','1998-02-05','IT_PROG',4800.00,NULL,103,60),(107,'Diana','Lorentz','DLORENTZ','590.423.5567','1999-02-07','IT_PROG',4200.00,NULL,103,60),(108,'Nancy','Greenberg','NGREENBE','515.124.4569','1994-08-17','FI_MGR',12000.00,NULL,101,100),(109,'Daniel','Faviet','DFAVIET','515.124.4169','1994-08-16','FI_ACCOUNT',9000.00,NULL,108,100),(110,'John','Chen','JCHEN','515.124.4269','1997-09-28','FI_ACCOUNT',8200.00,NULL,108,100),(111,'Ismael','Sciarra','ISCIARRA','515.124.4369','1997-09-30','FI_ACCOUNT',7700.00,NULL,108,100),(112,'Jose Manuel','Urman','JMURMAN','515.124.4469','1998-03-07','FI_ACCOUNT',7800.00,NULL,108,100),(113,'Luis','Popp','LPOPP','515.124.4567','1999-12-07','FI_ACCOUNT',6900.00,NULL,108,100),(114,'Den','Raphaely','DRAPHEAL','515.127.4561','1994-12-07','PU_MAN',11000.00,NULL,100,30),(115,'Alexander','Khoo','AKHOO','515.127.4562','1995-05-18','PU_CLERK',3100.00,NULL,114,30),(116,'Shelli','Baida','SBAIDA','515.127.4563','1997-12-24','PU_CLERK',2900.00,NULL,114,30),(117,'Sigal','Tobias','STOBIAS','515.127.4564','1997-07-24','PU_CLERK',2800.00,NULL,114,30),(118,'Guy','Himuro','GHIMURO','515.127.4565','1998-11-15','PU_CLERK',2600.00,NULL,114,30),(119,'Karen','Colmenares','KCOLMENA','515.127.4566','1999-08-10','PU_CLERK',2500.00,NULL,114,30),(120,'Matthew','Weiss','MWEISS','650.123.1234','1996-07-18','ST_MAN',8000.00,NULL,100,50),(121,'Adam','Fripp','AFRIPP','650.123.2234','1997-04-10','ST_MAN',8200.00,NULL,100,50),(122,'Payam','Kaufling','PKAUFLIN','650.123.3234','1995-05-01','ST_MAN',7900.00,NULL,100,50),(123,'Shanta','Vollman','SVOLLMAN','650.123.4234','1997-10-10','ST_MAN',6500.00,NULL,100,50),(124,'Kevin','Mourgos','KMOURGOS','650.123.5234','1999-11-16','ST_MAN',5800.00,NULL,100,50),(125,'Julia','Nayer','JNAYER','650.124.1214','1997-07-16','ST_CLERK',3200.00,NULL,120,50),(126,'Irene','Mikkilineni','IMIKKILI','650.124.1224','1998-09-28','ST_CLERK',2700.00,NULL,120,50),(127,'James','Landry','JLANDRY','650.124.1334','1999-01-14','ST_CLERK',2400.00,NULL,120,50),(128,'Steven','Markle','SMARKLE','650.124.1434','2000-03-08','ST_CLERK',2200.00,NULL,120,50),(129,'Laura','Bissot','LBISSOT','650.124.5234','1997-08-20','ST_CLERK',3300.00,NULL,121,50),(130,'Mozhe','Atkinson','MATKINSO','650.124.6234','1997-10-30','ST_CLERK',2800.00,NULL,121,50),(131,'James','Marlow','JAMRLOW','650.124.7234','1997-02-16','ST_CLERK',2500.00,NULL,121,50),(132,'TJ','Olson','TJOLSON','650.124.8234','1999-04-10','ST_CLERK',2100.00,NULL,121,50),(133,'Jason','Mallin','JMALLIN','650.127.1934','1996-06-14','ST_CLERK',3300.00,NULL,122,50),(134,'Michael','Rogers','MROGERS','650.127.1834','1998-08-26','ST_CLERK',2900.00,NULL,122,50),(135,'Ki','Gee','KGEE','650.127.1734','1999-12-12','ST_CLERK',2400.00,NULL,122,50),(136,'Hazel','Philtanker','HPHILTAN','650.127.1634','2000-02-06','ST_CLERK',2200.00,NULL,122,50),(137,'Renske','Ladwig','RLADWIG','650.121.1234','1995-07-14','ST_CLERK',3600.00,NULL,123,50),(138,'Stephen','Stiles','SSTILES','650.121.2034','1997-10-26','ST_CLERK',3200.00,NULL,123,50),(139,'John','Seo','JSEO','650.121.2019','1998-02-12','ST_CLERK',2700.00,NULL,123,50),(140,'Joshua','Patel','JPATEL','650.121.1834','1998-04-06','ST_CLERK',2500.00,NULL,123,50),(141,'Trenna','Rajs','TRAJS','650.121.8009','1995-10-17','ST_CLERK',3500.00,NULL,124,50),(142,'Curtis','Davies','CDAVIES','650.121.2994','1997-01-29','ST_CLERK',3100.00,NULL,124,50),(143,'Randall','Matos','RMATOS','650.121.2874','1998-03-15','ST_CLERK',2600.00,NULL,124,50),(144,'Peter','Vargas','PVARGAS','650.121.2004','1998-07-09','ST_CLERK',2500.00,NULL,124,50),(145,'John','Russell','JRUSSEL','011.44.1344.429268','1996-10-01','SA_MAN',14000.00,0.40,100,80),(146,'Karen','Partners','KPARTNER','011.44.1344.467268','1997-01-05','SA_MAN',13500.00,0.30,100,80),(147,'Alberto','Errazuriz','AERRAZUR','011.44.1344.429278','1997-03-10','SA_MAN',12000.00,0.30,100,80),(148,'Gerald','Cambrault','GCAMBRAU','011.44.1344.619268','1999-10-15','SA_MAN',11000.00,0.30,100,80),(149,'Eleni','Zlotkey','EZLOTKEY','011.44.1344.429018','2000-01-29','SA_MAN',10500.00,0.20,100,80),(150,'Peter','Tucker','PTUCKER','011.44.1344.129268','1997-01-30','SA_REP',10000.00,0.30,145,80),(151,'David','Bernstein','DBERNSTE','011.44.1344.345268','1997-03-24','SA_REP',9500.00,0.25,145,80),(152,'Peter','Hall','PHALL','011.44.1344.478968','1997-08-20','SA_REP',9000.00,0.25,145,80),(153,'Christopher','Olsen','COLSEN','011.44.1344.498718','1998-03-30','SA_REP',8000.00,0.20,145,80),(154,'Nanette','Cambrault','NCAMBRAU','011.44.1344.987668','1998-12-09','SA_REP',7500.00,0.20,145,80),(155,'Oliver','Tuvault','OTUVAULT','011.44.1344.486508','1999-11-23','SA_REP',7000.00,0.15,145,80),(156,'Janette','King','JKING','011.44.1345.429268','1996-01-30','SA_REP',10000.00,0.35,146,80),(157,'Patrick','Sully','PSULLY','011.44.1345.929268','1996-03-04','SA_REP',9500.00,0.35,146,80),(158,'Allan','McEwen','AMCEWEN','011.44.1345.829268','1996-08-01','SA_REP',9000.00,0.35,146,80),(159,'Lindsey','Smith','LSMITH','011.44.1345.729268','1997-03-10','SA_REP',8000.00,0.30,146,80),(160,'Louise','Doran','LDORAN','011.44.1345.629268','1997-12-15','SA_REP',7500.00,0.30,146,80),(161,'Sarath','Sewall','SSEWALL','011.44.1345.529268','1998-11-03','SA_REP',7000.00,0.25,146,80),(162,'Clara','Vishney','CVISHNEY','011.44.1346.129268','1997-11-11','SA_REP',10500.00,0.25,147,80),(163,'Danielle','Greene','DGREENE','011.44.1346.229268','1999-03-19','SA_REP',9500.00,0.15,147,80),(164,'Mattea','Marvins','MMARVINS','011.44.1346.329268','2000-01-24','SA_REP',7200.00,0.10,147,80),(165,'David','Lee','DLEE','011.44.1346.529268','2000-02-23','SA_REP',6800.00,0.10,147,80),(166,'Sundar','Ande','SANDE','011.44.1346.629268','2000-03-24','SA_REP',6400.00,0.10,147,80),(167,'Amit','Banda','ABANDA','011.44.1346.729268','2000-04-21','SA_REP',6200.00,0.10,147,80),(168,'Lisa','Ozer','LOZER','011.44.1343.929268','1997-03-11','SA_REP',11500.00,0.25,148,80),(169,'Harrison','Bloom','HBLOOM','011.44.1343.829268','1998-03-23','SA_REP',10000.00,0.20,148,80),(170,'Tayler','Fox','TFOX','011.44.1343.729268','1998-01-24','SA_REP',9600.00,0.20,148,80),(171,'William','Smith','WSMITH','011.44.1343.629268','1999-02-23','SA_REP',7400.00,0.15,148,80),(172,'Elizabeth','Bates','EBATES','011.44.1343.529268','1999-03-24','SA_REP',7300.00,0.15,148,80),(173,'Sundita','Kumar','SKUMAR','011.44.1343.329268','2000-04-21','SA_REP',6100.00,0.10,148,80),(174,'Ellen','Abel','EABEL','011.44.1644.429267','1996-05-11','SA_REP',11000.00,0.30,149,80),(175,'Alyssa','Hutton','AHUTTON','011.44.1644.429266','1997-03-19','SA_REP',8800.00,0.25,149,80),(176,'Jonathon','Taylor','JTAYLOR','011.44.1644.429265','1998-03-24','SA_REP',8600.00,0.20,149,80),(177,'Jack','Livingston','JLIVINGS','011.44.1644.429264','1998-04-23','SA_REP',8400.00,0.20,149,80),(178,'Kimberely','Grant','KGRANT','011.44.1644.429263','1999-05-24','SA_REP',7000.00,0.15,149,NULL),(179,'Charles','Johnson','CJOHNSON','011.44.1644.429262','2000-01-04','SA_REP',6200.00,0.10,149,80),(180,'Winston','Taylor','WTAYLOR','650.507.9876','1998-01-24','SH_CLERK',3200.00,NULL,120,50),(181,'Jean','Fleaur','JFLEAUR','650.507.9877','1998-02-23','SH_CLERK',3100.00,NULL,120,50),(182,'Martha','Sullivan','MSULLIVA','650.507.9878','1999-06-21','SH_CLERK',2500.00,NULL,120,50),(183,'Girard','Geoni','GGEONI','650.507.9879','2000-02-03','SH_CLERK',2800.00,NULL,120,50),(184,'Nandita','Sarchand','NSARCHAN','650.509.1876','1996-01-27','SH_CLERK',4200.00,NULL,121,50),(185,'Alexis','Bull','ABULL','650.509.2876','1997-02-20','SH_CLERK',4100.00,NULL,121,50),(186,'Julia','Dellinger','JDELLING','650.509.3876','1998-06-24','SH_CLERK',3400.00,NULL,121,50),(187,'Anthony','Cabrio','ACABRIO','650.509.4876','1999-02-07','SH_CLERK',3000.00,NULL,121,50),(188,'Kelly','Chung','KCHUNG','650.505.1876','1997-06-14','SH_CLERK',3800.00,NULL,122,50),(189,'Jennifer','Dilly','JDILLY','650.505.2876','1997-08-13','SH_CLERK',3600.00,NULL,122,50),(190,'Timothy','Gates','TGATES','650.505.3876','1998-07-11','SH_CLERK',2900.00,NULL,122,50),(191,'Randall','Perkins','RPERKINS','650.505.4876','1999-12-19','SH_CLERK',2500.00,NULL,122,50),(192,'Sarah','Bell','SBELL','650.501.1876','1996-02-04','SH_CLERK',4000.00,NULL,123,50),(193,'Britney','Everett','BEVERETT','650.501.2876','1997-03-03','SH_CLERK',3900.00,NULL,123,50),(194,'Samuel','McCain','SMCCAIN','650.501.3876','1998-07-01','SH_CLERK',3200.00,NULL,123,50),(195,'Vance','Jones','VJONES','650.501.4876','1999-03-17','SH_CLERK',2800.00,NULL,123,50),(196,'Alana','Walsh','AWALSH','650.507.9811','1998-04-24','SH_CLERK',3100.00,NULL,124,50),(197,'Kevin','Feeney','KFEENEY','650.507.9822','1998-05-23','SH_CLERK',3000.00,NULL,124,50),(198,'Donald','OConnell','DOCONNEL','650.507.9833','1999-06-21','SH_CLERK',2600.00,NULL,124,50),(199,'Douglas','Grant','DGRANT','650.507.9844','2000-01-13','SH_CLERK',2600.00,NULL,124,50),(200,'Jennifer','Whalen','JWHALEN','515.123.4444','1987-09-17','AD_ASST',4400.00,NULL,101,10),(201,'Michael','Hartstein','MHARTSTE','515.123.5555','1996-02-17','MK_MAN',13000.00,NULL,100,20),(202,'Pat','Fay','PFAY','603.123.6666','1997-08-17','MK_REP',6000.00,NULL,201,20),(203,'Susan','Mavris','SMAVRIS','515.123.7777','1994-06-07','HR_REP',6500.00,NULL,101,40),(204,'Hermann','Baer','HBAER','515.123.8888','1994-06-07','PR_REP',10000.00,NULL,101,70),(205,'Shelley','Higgins','SHIGGINS','515.123.8080','1994-06-07','AC_MGR',12000.00,NULL,101,110),(206,'William','Gietz','WGIETZ','515.123.8181','1994-06-07','AC_ACCOUNT',8300.00,NULL,205,110); - -/*Table structure for table `job_grades` */ - -DROP TABLE IF EXISTS `job_grades`; - -CREATE TABLE `job_grades` ( - `grade_level` varchar(3) DEFAULT NULL, - `lowest_sal` int(11) DEFAULT NULL, - `highest_sal` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `job_grades` */ - -insert into `job_grades`(`grade_level`,`lowest_sal`,`highest_sal`) values ('A',1000,2999),('B',3000,5999),('C',6000,9999),('D',10000,14999),('E',15000,24999),('F',25000,40000); - -/*Table structure for table `job_history` */ - -DROP TABLE IF EXISTS `job_history`; - -CREATE TABLE `job_history` ( - `employee_id` int(6) NOT NULL, - `start_date` date NOT NULL, - `end_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `department_id` int(4) DEFAULT NULL, - PRIMARY KEY (`employee_id`,`start_date`), - UNIQUE KEY `jhist_emp_id_st_date_pk` (`employee_id`,`start_date`), - KEY `jhist_job_fk` (`job_id`), - KEY `jhist_dept_fk` (`department_id`), - CONSTRAINT `jhist_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `jhist_emp_fk` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`employee_id`), - CONSTRAINT `jhist_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `job_history` */ - -insert into `job_history`(`employee_id`,`start_date`,`end_date`,`job_id`,`department_id`) values (101,'1989-09-21','1993-10-27','AC_ACCOUNT',110),(101,'1993-10-28','1997-03-15','AC_MGR',110),(102,'1993-01-13','1998-07-24','IT_PROG',60),(114,'1998-03-24','1999-12-31','ST_CLERK',50),(122,'1999-01-01','1999-12-31','ST_CLERK',50),(176,'1998-03-24','1998-12-31','SA_REP',80),(176,'1999-01-01','1999-12-31','SA_MAN',80),(200,'1987-09-17','1993-06-17','AD_ASST',90),(200,'1994-07-01','1998-12-31','AC_ACCOUNT',90),(201,'1996-02-17','1999-12-19','MK_REP',20); - -/*Table structure for table `jobs` */ - -DROP TABLE IF EXISTS `jobs`; - -CREATE TABLE `jobs` ( - `job_id` varchar(10) NOT NULL DEFAULT '', - `job_title` varchar(35) NOT NULL, - `min_salary` int(6) DEFAULT NULL, - `max_salary` int(6) DEFAULT NULL, - PRIMARY KEY (`job_id`), - UNIQUE KEY `job_id_pk` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `jobs` */ - -insert into `jobs`(`job_id`,`job_title`,`min_salary`,`max_salary`) values ('AC_ACCOUNT','Public Accountant',4200,9000),('AC_MGR','Accounting Manager',8200,16000),('AD_ASST','Administration Assistant',3000,6000),('AD_PRES','President',20000,40000),('AD_VP','Administration Vice President',15000,30000),('FI_ACCOUNT','Accountant',4200,9000),('FI_MGR','Finance Manager',8200,16000),('HR_REP','Human Resources Representative',4000,9000),('IT_PROG','Programmer',4000,10000),('MK_MAN','Marketing Manager',9000,15000),('MK_REP','Marketing Representative',4000,9000),('PR_REP','Public Relations Representative',4500,10500),('PU_CLERK','Purchasing Clerk',2500,5500),('PU_MAN','Purchasing Manager',8000,15000),('SA_MAN','Sales Manager',10000,20000),('SA_REP','Sales Representative',6000,12000),('SH_CLERK','Shipping Clerk',2500,5500),('ST_CLERK','Stock Clerk',2000,5000),('ST_MAN','Stock Manager',5500,8500); - -/*Table structure for table `locations` */ - -DROP TABLE IF EXISTS `locations`; - -CREATE TABLE `locations` ( - `location_id` int(4) NOT NULL DEFAULT '0', - `street_address` varchar(40) DEFAULT NULL, - `postal_code` varchar(12) DEFAULT NULL, - `city` varchar(30) NOT NULL, - `state_province` varchar(25) DEFAULT NULL, - `country_id` char(2) DEFAULT NULL, - PRIMARY KEY (`location_id`), - UNIQUE KEY `loc_id_pk` (`location_id`), - KEY `loc_c_id_fk` (`country_id`), - CONSTRAINT `loc_c_id_fk` FOREIGN KEY (`country_id`) REFERENCES `countries` (`country_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `locations` */ - -insert into `locations`(`location_id`,`street_address`,`postal_code`,`city`,`state_province`,`country_id`) values (1000,'1297 Via Cola di Rie','00989','Roma',NULL,'IT'),(1100,'93091 Calle della Testa','10934','Venice',NULL,'IT'),(1200,'2017 Shinjuku-ku','1689','Tokyo','Tokyo Prefecture','JP'),(1300,'9450 Kamiya-cho','6823','Hiroshima',NULL,'JP'),(1400,'2014 Jabberwocky Rd','26192','Southlake','Texas','US'),(1500,'2011 Interiors Blvd','99236','South San Francisco','California','US'),(1600,'2007 Zagora St','50090','South Brunswick','New Jersey','US'),(1700,'2004 Charade Rd','98199','Seattle','Washington','US'),(1800,'147 Spadina Ave','M5V 2L7','Toronto','Ontario','CA'),(1900,'6092 Boxwood St','YSW 9T2','Whitehorse','Yukon','CA'),(2000,'40-5-12 Laogianggen','190518','Beijing',NULL,'CN'),(2100,'1298 Vileparle (E)','490231','Bombay','Maharashtra','IN'),(2200,'12-98 Victoria Street','2901','Sydney','New South Wales','AU'),(2300,'198 Clementi North','540198','Singapore',NULL,'SG'),(2400,'8204 Arthur St',NULL,'London',NULL,'UK'),(2500,'Magdalen Centre, The Oxford Science Park','OX9 9ZB','Oxford','Oxford','UK'),(2600,'9702 Chester Road','09629850293','Stretford','Manchester','UK'),(2700,'Schwanthalerstr. 7031','80925','Munich','Bavaria','DE'),(2800,'Rua Frei Caneca 1360 ','01307-002','Sao Paulo','Sao Paulo','BR'),(2900,'20 Rue des Corps-Saints','1730','Geneva','Geneve','CH'),(3000,'Murtenstrasse 921','3095','Bern','BE','CH'),(3100,'Pieter Breughelstraat 837','3029SK','Utrecht','Utrecht','NL'),(3200,'Mariano Escobedo 9991','11932','Mexico City','Distrito Federal,','MX'); - -/*Table structure for table `order` */ - -DROP TABLE IF EXISTS `order`; - -CREATE TABLE `order` ( - `order_id` int(11) DEFAULT NULL, - `order_name` varchar(15) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `order` */ - -insert into `order`(`order_id`,`order_name`) values (1,'shkstart'),(2,'tomcat'),(3,'dubbo'); - -/*Table structure for table `regions` */ - -DROP TABLE IF EXISTS `regions`; - -CREATE TABLE `regions` ( - `region_id` int(11) NOT NULL, - `region_name` varchar(25) DEFAULT NULL, - PRIMARY KEY (`region_id`), - UNIQUE KEY `reg_id_pk` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `regions` */ - -insert into `regions`(`region_id`,`region_name`) values (1,'Europe'),(2,'Americas'),(3,'Asia'),(4,'Middle East and Africa'); - -/*Table structure for table `emp_details_view` */ - -DROP TABLE IF EXISTS `emp_details_view`; - - - - -#第14章_视图的课后练习 - - -#练习1: -#1. 使用表emps创建视图employee_vu, -#其中包括姓名(LAST_NAME),员工号(EMPLOYEE_ID),部门号(DEPARTMENT_ID) -create view employee_vu as -select LAST_NAME 姓名,EMPLOYEE_ID 员工号,DEPARTMENT_ID 部门号 from employees; - -#2. 显示视图的结构 -desc employee_vu; - -#3. 查询视图中的全部内容 -select * from employee_vu; - -#4. 将视图中的数据限定在部门号是80的范围内 -create or replace view employee_vu as -select - LAST_NAME 姓名, - EMPLOYEE_ID 员工号, - DEPARTMENT_ID 部门号 -from employees -where DEPARTMENT_ID = 80; - -#练习2: - -#1. 创建视图emp_v1,要求查询电话号码以‘011’开头的员工姓名和工资、邮箱 -create view emp_v1 as -select - concat(last_name,' ',first_name) 员工姓名, - salary 工资, - email 邮箱 -from employees -where phone_number like '011%'; - -#2. 要求将视图 emp_v1 修改为查询电话号码以‘011’开头的并且邮箱中包含 e 字符 -#的员工姓名和邮箱、电话号码,工资 -create or replace view emp_v1 as -select - concat(last_name,' ',first_name) 员工姓名, - salary 工资, - email 邮箱 -from employees -where phone_number like '011%' and email like '%e%' ; - -select * from emp_v1 -#3. 向 emp_v1 插入一条记录,是否可以? -# 不可以,因为emp_v1是一个视图,它是一个只读的虚拟表格,只是将查询语句的结果封装成一个新的表格而已。因此,无法通过直接向MySQL视图中插入数据 - - -#4. 修改emp_v1中员工的工资,每人涨薪1000 -update emp_v1 set 工资 = 工资 + 1000; - -#5. 删除emp_v1中姓名为Olsen的员工 -delete from emp_v1 where 员工姓名 like 'olsen%' - -#6. 创建视图emp_v2,要求查询部门的最高工资高于 12000 的部门id和其最高工资 -create view emp_v2 as -select - department_id 部门id, - max(salary) 最高工资 -from employees -where salary > 12000 group by department_id; -#查询方二:select department_id 部门id,max(salary) 最高工资 from employees group by department_id having 最高工资 > 12000 ; -select * from emp_v2; - -#7. 向 emp_v2 中插入一条记录,是否可以? -# 不可以,因为emp_v2是一个视图,它是一个只读的虚拟表格,只是将查询语句的结果封装成一个新的表格而已。因此,无法通过直接向MySQL视图中插入数据 - -#8. 删除刚才的emp_v2 和 emp_v1 -drop view emp_v2; -drop view emp_v1; - - -~~~ - diff --git "a/05 \350\260\242\351\223\226\346\265\251/20230910.md" "b/05 \350\260\242\351\223\226\346\265\251/20230910.md" deleted file mode 100644 index 2f590cc..0000000 --- "a/05 \350\260\242\351\223\226\346\265\251/20230910.md" +++ /dev/null @@ -1,5 +0,0 @@ -- Conceptual Data Model----------概念模型 -- Physical Data Model--------------物理模型 -- Object-Oriented Model-----------逻辑模型 - -P是PrimaryIdentifier是否为**主键**表述的缩写,勾选了P就代表当前被勾选字段是该表的主键。M是Mandatory的缩写,属性值是否允许为空的意思。D是displayed的缩写,表示是否在实体图形符号中显示该属性。 \ No newline at end of file diff --git "a/05 \350\260\242\351\223\226\346\265\251/20230912\344\275\234\344\270\232.md" "b/05 \350\260\242\351\223\226\346\265\251/20230912\344\275\234\344\270\232.md" deleted file mode 100644 index 5c47a8c..0000000 --- "a/05 \350\260\242\351\223\226\346\265\251/20230912\344\275\234\344\270\232.md" +++ /dev/null @@ -1,65 +0,0 @@ -/==============================================================/ /* DBMS name: MySQL 5.0 / / Created on: 2023/9/12 17:16:23 / /==============================================================*/ - -drop table if exists Relationship_2; - -drop table if exists Relationship_3; - -drop table if exists Relationship_4; - -drop table if exists Relationship_5; - -drop table if exists Relationship_6; - -drop table if exists actor; - -drop table if exists comment; - -drop table if exists employee; - -drop table if exists movie; - -drop table if exists people; - -drop table if exists "short review"; - -/==============================================================/ /* Table: Relationship_2 / /==============================================================*/ create table Relationship_2 ( "p-name" char(4) not null, "m-name" varchar(5) not null, score decimal(3,1) not null, primary key ("p-name", "m-name") ); - -/==============================================================/ /* Table: Relationship_3 / /==============================================================*/ create table Relationship_3 ( director char(4) not null, "m-name" varchar(5) not null, actorname varchar(4) not null, primary key (director, "m-name") ); - -/==============================================================/ /* Table: Relationship_4 / /==============================================================*/ create table Relationship_4 ( "a-name" char(4) not null, director char(4) not null, scriptwritername varchar(4) not null, primary key ("a-name", director) ); - -/==============================================================/ /* Table: Relationship_5 / /==============================================================*/ create table Relationship_5 ( "c-id" varchar(11) not null, "p-name" char(4) not null, "c-start" varchar(11) not null, primary key ("c-id", "p-name") ); - -/==============================================================/ /* Table: Relationship_6 / /==============================================================*/ create table Relationship_6 ( "s-id" varchar(11) not null, "p-name" char(4) not null, "s-startµÈ¼¶" varchar(12) not null, primary key ("s-id", "p-name") ); - -/==============================================================/ /* Table: actor / /==============================================================*/ create table actor ( "a-name" char(4) not null, "a-sex" char(1) not null, datetime datetime not null, Constellation char(3) not null, birthplace varchar(5) not null, job char(2) not null, "Foreign name" varchar(8) not null, Chinesename char(4) not null, family varchar(25) not null, imdbID varchar(15) not null, primary key ("a-name") ); - -/==============================================================/ /* Table: comment / /==============================================================*/ create table comment ( "c-id" varchar(11) not null, "s-content" varchar(500) not null, primary key ("c-id") ); - -/==============================================================/ /* Table: employee / /==============================================================*/ create table employee ( director char(4) not null, star varchar(4) not null, scriptwriter char(4) not null, primary key (director) ); - -/==============================================================/ /* Table: movie / /==============================================================*/ create table movie ( "m-name" varchar(5) not null, "m-type" varchar(5) not null, "m-time" int not null, "release-date" time not null, "rename" varchar(20) not null, primary key ("m-name") ); - -/==============================================================/ /* Table: people / /==============================================================*/ create table people ( "p-name" char(4) not null, "p-sex" char(1) not null, primary key ("p-name") ); - -/==============================================================/ /* Table: "short review" / /==============================================================*/ create table "short review" ( "s-id" varchar(11) not null, "s-content" varchar(500) not null, primary key ("s-id") ); - -alter table Relationship_2 add constraint FK_Relationship_2 foreign key ("p-name") references people ("p-name") on delete restrict on update restrict; - -alter table Relationship_2 add constraint FK_Relationship_7 foreign key ("m-name") references movie ("m-name") on delete restrict on update restrict; - -alter table Relationship_3 add constraint FK_Relationship_3 foreign key (director) references employee (director) on delete restrict on update restrict; - -alter table Relationship_3 add constraint FK_Relationship_8 foreign key ("m-name") references movie ("m-name") on delete restrict on update restrict; - -alter table Relationship_4 add constraint FK_Relationship_4 foreign key ("a-name") references actor ("a-name") on delete restrict on update restrict; - -alter table Relationship_4 add constraint FK_Relationship_9 foreign key (director) references employee (director) on delete restrict on update restrict; - -alter table Relationship_5 add constraint FK_Relationship_10 foreign key ("p-name") references people ("p-name") on delete restrict on update restrict; - -alter table Relationship_5 add constraint FK_Relationship_5 foreign key ("c-id") references comment ("c-id") on delete restrict on update restrict; - -alter table Relationship_6 add constraint FK_Relationship_11 foreign key ("p-name") references people ("p-name") on delete restrict on update restrict; - -alter table Relationship_6 add constraint FK_Relationship_6 foreign key ("s-id") references "short review" ("s-id") on delete restrict on update restrict; \ No newline at end of file diff --git "a/05 \350\260\242\351\223\226\346\265\251/20230914\344\275\234\344\270\232.md" "b/05 \350\260\242\351\223\226\346\265\251/20230914\344\275\234\344\270\232.md" deleted file mode 100644 index 5cb6426..0000000 --- "a/05 \350\260\242\351\223\226\346\265\251/20230914\344\275\234\344\270\232.md" +++ /dev/null @@ -1,35 +0,0 @@ -/==============================================================/ /* DBMS name: MySQL 5.0 / / Created on: 2023/9/13 22:58:34 / /==============================================================*/ - -drop table if exists department; - -drop table if exists diagnose; - -drop table if exists doctor; - -drop table if exists hospital; - -drop table if exists pharmacy; - -drop table if exists sick; - -/==============================================================/ /* Table: department / /==============================================================*/ create table department ( d_id varchar(11) not null, hospital_name varchar(10), d_name varchar(11) not null, d_tel varchar(15) not null, d_address varchar(25) not null, primary key (d_id) ); - -/==============================================================/ /* Table: diagnose / /==============================================================*/ create table diagnose ( "doctor-ID" varchar(15) not null, "sick-IDcar" varchar(15) not null, "drug-id" varchar(15), "prescription-id" varchar(15) not null, primary key ("doctor-ID", "sick-IDcar") ); - -/==============================================================/ /* Table: doctor / /==============================================================*/ create table doctor ( "doctor-ID" varchar(15) not null, d_id varchar(11), "doctor-name" char(4) not null, "doctor-tel" varchar(15) not null, primary key ("doctor-ID") ); - -/==============================================================/ /* Table: hospital / /==============================================================*/ create table hospital ( hospital_name varchar(10) not null, primary key (hospital_name) ); - -/==============================================================/ /* Table: pharmacy / /==============================================================*/ create table pharmacy ( "drug-id" varchar(15) not null, "drug-name" varchar(12) not null, primary key ("drug-id") ); - -/==============================================================/ /* Table: sick / /==============================================================*/ create table sick ( "sick-name" char(4) not null, "sick-age" int not null, "sick-sex" char(1) not null, "sick-tel" varchar(15) not null, "sick-IDcar" varchar(15) not null, primary key ("sick-IDcar") ); - -alter table department add constraint FK_Relationship_1 foreign key (hospital_name) references hospital (hospital_name) on delete restrict on update restrict; - -alter table diagnose add constraint FK_Relationship_4 foreign key ("doctor-ID") references doctor ("doctor-ID") on delete restrict on update restrict; - -alter table diagnose add constraint FK_Relationship_5 foreign key ("sick-IDcar") references sick ("sick-IDcar") on delete restrict on update restrict; - -alter table diagnose add constraint FK_Relationship_6 foreign key ("drug-id") references pharmacy ("drug-id") on delete restrict on update restrict; - -alter table doctor add constraint FK_Relationship_2 foreign key (d_id) references department (d_id) on delete restrict on update restrict; \ No newline at end of file diff --git "a/05 \350\260\242\351\223\226\346\265\251/20230917.md" "b/05 \350\260\242\351\223\226\346\265\251/20230917.md" deleted file mode 100644 index 7544562..0000000 --- "a/05 \350\260\242\351\223\226\346\265\251/20230917.md" +++ /dev/null @@ -1,156 +0,0 @@ -``` -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/17 18:11:14 */ -/*==============================================================*/ -create database qiche charset utf8; -use qiche; - -drop table if exists automobile; - -drop table if exists client; - -drop table if exists record; - -drop table if exists salesman; - -/*==============================================================*/ -/* Table: automobile */ -/*==============================================================*/ -create table automobile #汽车 -( - a_id int(3) not null auto_increment, #汽车编号 - a_name varchar(10) not null, #汽车名称 - a_sellingprice decimal(7,1) not null, #汽车售价 - a_brand varchar(10) not null, #汽车品牌 - primary key (a_id) -); -insert into automobile values -(01,'五菱神光mini',20000.0,'五菱宏光'), -(02,'玛拉莎蒂2023',900000.0,'玛莎拉蒂'), -(03,'宝牛SUV',250000.0,'宝马'), -(04,'五菱宏光2077',10000.0,'五菱宏光'); - -/*==============================================================*/ -/* Table: client */ -/*==============================================================*/ -create table client #顾客 -( - c_id int(2) not null auto_increment, #顾客编号 - c_name varchar(10) not null, #顾客姓名 - c_sex varchar(2) not null, #顾客性别 - primary key (c_id) -); -insert into client values -(2001,'德莱厄斯','男'), -(2002,'塞恩','男'), -(2003,'蒙多','男'); -/*==============================================================*/ -/* Table: record */ -/*==============================================================*/ - - -/*==============================================================*/ -/* Table: salesman */ -/*==============================================================*/ -create table salesman #销售员 -( - s_id int(2) not null auto_increment, #工号 - s_name varchar(5) not null, #姓名 - s_sex varchar(2) not null, #性别 - primary key (s_id) -); -insert into salesman values -(1001,'梦泪','男'), -(1002,'坤哥','男'), -(1003,'厄斐琉斯','男'); - -create table record #销售记录 -( - r_id int(2) not null auto_increment, #销售编号 - s_id int not null, #工号 - c_id int not null, #顾客编号 - a_id int not null, #汽车编号 - primary key (r_id) -); -insert into record values -(3001,1001,2002,02), -(3002,1002,2001,01), -(3003,1001,2002,03), -(3004,1003,2003,04); - -alter table record add constraint FK_Relationship_2 foreign key (s_id) - references salesman (s_id) on delete restrict on update restrict; - -alter table record add constraint FK_Relationship_3 foreign key (c_id) - references client (c_id) on delete restrict on update restrict; - -alter table record add constraint FK_Relationship_4 foreign key (a_id) - references automobile (a_id) on delete restrict on update restrict; - -- 1.查询特定销售员的销售记录 -SELECT - s.s_id 工号, - s_name 销售员, - r_id 销售编号, - a_name 汽车型号, - a_sellingprice 售价, - a_brand 汽车品牌 -FROM - salesman s - JOIN record r - JOIN automobile a ON s.s_id = r.s_id - AND a.a_id = r.a_id -WHERE - s.s_id =( - SELECT - s_id - FROM - salesman - WHERE - s_name = '梦泪' - ); - -- 2.查找销售记录中销售价格最高的汽车 - select a.* from record r join automobile a on r.a_id=a.a_id where r.a_id = (select a_id from automobile where a_brand=(select max(a_brand) from automobile)); - -- 3.统计某个销售员的销售总额 -SELECT - s_name 销售员, - sum(a_sellingprice) 销售总额 -FROM - salesman s - JOIN record r - JOIN automobile a ON s.s_id = r.s_id - AND a.a_id = r.a_id - group by s.s_name having s.s_name='梦泪'; - -- 4.根据客户信息查询其购买过的汽车 - select c_name 顾客,c_sex 性别,a_name 汽车型号, a_sellingprice 售价,a_brand 型号 from client c join record r join automobile a on c.c_id=r.c_id and r.a_id = a.a_id where c.c_name='塞恩'; - -- 5.分析特定品牌汽车的销售情况,统计每个品牌的销售数量和总销售额 -SELECT - a_brand 品牌, - count( r.a_id) 销售数量, - sum( a.a_sellingprice ) 销售总额 -FROM - record r - JOIN automobile a ON r.a_id = a.a_id -GROUP BY - a_brand; - -- 6.检索特定日期范围内的销售了哪些汽车 - -- 7.查找某车型的销售历史。 - SELECT - a_name 汽车型号, - a_brand 品牌, - r.a_id 销售数量, - a.a_sellingprice 销售总额 -FROM - record r - JOIN automobile a ON r.a_id = a.a_id where a.a_name='五菱神光mini'; - -- 8.统计每个销售员的销售数量 -SELECT - s_name 销售员, - count(r.a_id) 销售总额 -FROM - salesman s - JOIN record r - JOIN automobile a ON s.s_id = r.s_id - AND a.a_id = r.a_id - group by s.s_name; -``` \ No newline at end of file diff --git "a/05 \350\260\242\351\223\226\346\265\251/20230922.md" "b/05 \350\260\242\351\223\226\346\265\251/20230922.md" deleted file mode 100644 index fb69a09..0000000 --- "a/05 \350\260\242\351\223\226\346\265\251/20230922.md" +++ /dev/null @@ -1,3 +0,0 @@ -SPU:标准化产品单元(Standard Product Unit),是商品信息聚合的最小单位,是一组可复用标准化信息的集合,主要也是为了在交易端对一组同类型商品做页面的聚合展示,解决的是一品多型号多规格等等多属性的问题; -SKU:最小的库存单位(StockKeeping Unit),sku是库存存贮的最小单位,商品的进货、销售、售价、库存等最终都是打在sku身上的,最终的交易都决定在一个sku个体上; -标准商品(cspu/mku):对于标准商品,行业内不同系统不同领域叫法可能会有差异,有的叫cspu,有的叫mku,这个概念一般是在大型的电商系统中才会用到,解决的是一品多商的问题,比如A商家、B商家、C商家……(以下省略N个商家)都售卖同一种商品abc,从同一个品牌商那里进货,那用户搜索abc的时候,会出来N个商品的搜索结果,以及N的相关商品的搜索结果,没有聚合展示,对用户选品带来困扰。标品就是将这N个商品的搜索结果做聚合,仅展示标准商品,便于用户选品。 \ No newline at end of file diff --git "a/05 \350\260\242\351\223\226\346\265\251/20230925\351\242\204\344\271\240.md" "b/05 \350\260\242\351\223\226\346\265\251/20230925\351\242\204\344\271\240.md" deleted file mode 100644 index 1f26f8c..0000000 --- "a/05 \350\260\242\351\223\226\346\265\251/20230925\351\242\204\344\271\240.md" +++ /dev/null @@ -1,43 +0,0 @@ -#### 1.事务 - -为了完成某个业务而对数据库进行一系列操作,这些操作要么全部成功,要么全部失败。 - -#### 事务的四个特性 - -1.原子性:事务包含的这一系列操作,要么全部成功,要么全部失败 - -2.一致性:事务完成之后,不会将非法的数据写入数据库。 - -3.隔离性:多个事务可以在一定程度上并发执行 - -4.持久性:事务完成之后,数据要永久保存 - -#### 2.视图 - -在已有的表或者视图上创建的虚拟表 - -创建视图: create view 视图名 asselect - -可以对(单表)视图进行一些增删改查的操作,这些操作会影响到原始的表 - -删除视图:drop view 视图名 - -#### 3.索引 - -为了提高查询的速度而在数据库断创建的一种排序的数据结构 - -#### 4.储存过程 - -存储在数据库端的一组为了完成特点功能的sql语句 - -存储过程:create procedure 存储过程名(【参数】) - -参数格式(参数类型 参数名 数据类型) - -参数类型有三种 - -IN:输入参数,改参数的值必须在调用该存储过程时指定,在存储过程内部使用,不能返回。缺省值是IN - -OUT:输出参数,该参数值的值可以在存储过程内部修改,并可返回。 - -INOUT:输入输出参数,该参数需要在调用时指定,并且可以返回 \ No newline at end of file diff --git "a/05 \350\260\242\351\223\226\346\265\251/20230926.md" "b/05 \350\260\242\351\223\226\346\265\251/20230926.md" deleted file mode 100644 index 17d49f8..0000000 --- "a/05 \350\260\242\351\223\226\346\265\251/20230926.md" +++ /dev/null @@ -1,70 +0,0 @@ -#第14章_视图的课后练习 - -USE view_db; -#练习1: -#1. 使用表emps创建视图employee_vu, -#其中包括姓名(LAST_NAME),员工号(EMPLOYEE_ID),部门号(DEPARTMENT_ID) -CREATE VIEW employees_vu AS SELECT -last_name 姓名, -employee_id 员工号, -department_id 部门号 -FROM employees; -#2. 显示视图的结构 -desc employees_vu; -#3. 查询视图中的全部内容 -SELECT * FROM employees_vu; - -#4. 将视图中的数据限定在部门号是80的范围内 -CREATE or REPLACE view employees_vu(last_name,employee_id,department_id) -AS -SELECT last_name,employee_id,department_id -from employees -WHERE department_id=80; -#练习2: - - -#1. 创建视图emp_v1,要求查询电话号码以‘011’开头的员工姓名和工资、邮箱 - -CREATE or REPLACE VIEW emp_v1 -AS -SELECT last_name,salary,email -from employees -WHERE phone_number like '011%'; -#2. 要求将视图 emp_v1 修改为查询电话号码以‘011’开头的并且邮箱中包含 e 字符 -#的员工姓名和邮箱、电话号码,工资 -CREATE or REPLACE view emp_v1 -AS -SELECT last_name,salary,email,phone_number -FROM employees -WHERE -phone_number like'011%'and email like '%e%'; -SELECT * FROM emp_v1; -#3. 向 emp_v1 插入一条记录,是否可以? -desc emp_v1; -INSERT into emp_v1 VALUES -('sadasdsada1',55555,'asdafaf','411651616'); - - -#4. 修改emp_v1中员工的工资,每人涨薪1000 -UPDATE emp_v1 set salary=salary+1000; -#5. 删除emp_v1中姓名为Olsen的员工 -DELETE FROM emp_v1 WHERE last_name='Olsen'; -SELECT * from emp_v1 WHERE last_name='Olsen'; - -#6. 创建视图emp_v2,要求查询部门的最高工资高于 12000 的部门id和其最高工资 -CREATE or REPLACE view emp_v2 -AS -SELECT department_id,max(salary) -FROM employees -GROUP BY department_id -HAVING max(salary) > 12000; -SELECT * FROM emp_v2; - -#7. 向 emp_v2 中插入一条记录,是否可以? -desc emp_v2; -INSERT into emp_v2 VALUES -(60,18880); - - -#8. 删除刚才的emp_v2 和 emp_v1 -DROP emp_v2 and emp_V1 \ No newline at end of file diff --git "a/05 \350\260\242\351\223\226\346\265\251/9.20.md" "b/05 \350\260\242\351\223\226\346\265\251/9.20.md" deleted file mode 100644 index a750feb..0000000 --- "a/05 \350\260\242\351\223\226\346\265\251/9.20.md" +++ /dev/null @@ -1,737 +0,0 @@ -``` -create database text01 charset utf8; -use text01; -/* - Navicat Premium Data Transfer - - Source Server : local - Source Server Type : MySQL - Source Server Version : 80034 (8.0.34) - Source Host : localhost:3306 - Source Schema : mxdxdb - - Target Server Type : MySQL - Target Server Version : 80034 (8.0.34) - File Encoding : 65001 - - Date: 17/09/2023 22:21:02 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for countries --- ---------------------------- -DROP TABLE IF EXISTS `countries`; -CREATE TABLE `countries` ( - `country_id` char(2) NOT NULL, - `country_name` varchar(40) DEFAULT NULL, - `region_id` int DEFAULT NULL, - PRIMARY KEY (`country_id`), - KEY `countr_reg_fk` (`region_id`), - CONSTRAINT `countr_reg_fk` FOREIGN KEY (`region_id`) REFERENCES `regions` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of countries --- ---------------------------- -BEGIN; -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('AR', '阿根廷', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('AU', '澳大利亚', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('BE', '比利时', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('BR', '巴西', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CA', '加拿大', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CH', '瑞士', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CN', '中国', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('DE', '德国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('DK', '丹麦', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('EG', '埃及', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('FR', '法国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('HK', '香港', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IL', '以色列', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IN', '印度', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IT', '意大利', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('JP', '日本', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('KW', '科威特', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('MX', '墨西哥', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('NG', '尼日利亚', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('NL', '荷兰', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('SG', '新加坡', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('UK', '英国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('US', '美国', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('ZM', '赞比亚', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('ZW', '津巴布韦', 4); -COMMIT; - --- ---------------------------- --- Table structure for departments --- ---------------------------- -DROP TABLE IF EXISTS `departments`; -CREATE TABLE `departments` ( - `department_id` int NOT NULL DEFAULT '0', - `department_name` varchar(30) NOT NULL, - `manager_id` int DEFAULT NULL, - `location_id` int DEFAULT NULL, - PRIMARY KEY (`department_id`), - UNIQUE KEY `dept_id_pk` (`department_id`), - KEY `dept_loc_fk` (`location_id`), - KEY `dept_mgr_fk` (`manager_id`), - CONSTRAINT `dept_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`location_id`), - CONSTRAINT `dept_mgr_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of departments --- ---------------------------- -BEGIN; -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (10, '行政部', 200, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (20, '营销部', 201, 1800); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (30, '采购部', 114, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (40, '人力资源部', 203, 2400); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (50, '物流部', 121, 1500); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (60, '信息技术部', 103, 1400); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (70, '公共关系部', 204, 2700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (80, '销售部', 145, 2500); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (90, '执行部门', 100, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (100, '财务部', 108, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (110, '会计部', 205, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (120, '财务部门1', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (130, '企业税务部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (140, '控制和信用部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (150, '股东服务部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (160, '员工福利部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (170, '制造部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (180, '建筑部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (190, '承包部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (200, '运营部', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (210, '信息技术支持部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (220, '网络运营中心', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (230, '信息技术帮助台', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (240, '政府销售部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (250, '零售销售部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (260, '招聘部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (270, '工资单部门', NULL, 1700); -COMMIT; - --- ---------------------------- --- Table structure for employees --- ---------------------------- -DROP TABLE IF EXISTS `employees`; -CREATE TABLE `employees` ( - `employee_id` int NOT NULL DEFAULT '0', - `first_name` varchar(20) DEFAULT NULL, - `last_name` varchar(25) NOT NULL, - `email` varchar(25) NOT NULL, - `phone_number` varchar(20) DEFAULT NULL, - `hire_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `salary` double(8,2) DEFAULT NULL, - `commission_pct` double(2,2) DEFAULT NULL, - `manager_id` int DEFAULT NULL, - `department_id` int DEFAULT NULL, - PRIMARY KEY (`employee_id`), - UNIQUE KEY `emp_email_uk` (`email`), - UNIQUE KEY `emp_emp_id_pk` (`employee_id`), - KEY `emp_dept_fk` (`department_id`), - KEY `emp_job_fk` (`job_id`), - KEY `emp_manager_fk` (`manager_id`), - CONSTRAINT `emp_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `emp_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`), - CONSTRAINT `emp_manager_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of employees --- ---------------------------- -BEGIN; -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (100, '史蒂文', '金', 'SKING', '515.123.4567', '1987-06-17', 'AD_PRES', 24000.00, NULL, NULL, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (101, '尼娜', '科查尔', 'NKOCHHAR', '515.123.4568', '1989-09-21', 'AD_VP', 17000.00, NULL, 100, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (102, '雷克斯', '德哈恩', 'LDEHAAN', '515.123.4569', '1993-01-13', 'AD_VP', 17000.00, NULL, 100, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (103, '亚历山大', '胡诺尔德', 'AHUNOLD', '590.423.4567', '1990-01-03', 'IT_PROG', 9000.00, NULL, 102, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (104, '布鲁斯', '恩斯特', 'BERNST', '590.423.4568', '1991-05-21', 'IT_PROG', 6000.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (105, '大卫', '奥斯汀', 'DAUSTIN', '590.423.4569', '1997-06-25', 'IT_PROG', 4800.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (106, '瓦利', '帕塔巴拉', 'VPATABAL', '590.423.4560', '1998-02-05', 'IT_PROG', 4800.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (107, '黛安娜', '洛伦茨', 'DLORENTZ', '590.423.5567', '1999-02-07', 'IT_PROG', 4200.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (108, '南希', '格林伯格', 'NGREENBE', '515.124.4569', '1994-08-17', 'FI_MGR', 12000.00, NULL, 101, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (109, '丹尼尔', '法维特', 'DFAVIET', '515.124.4169', '1994-08-16', 'FI_ACCOUNT', 9000.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (110, '约翰', '陈', 'JCHEN', '515.124.4269', '1997-09-28', 'FI_ACCOUNT', 8200.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (111, '伊斯梅尔', '斯基亚拉', 'ISCIARRA', '515.124.4369', '1997-09-30', 'FI_ACCOUNT', 7700.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (112, '何塞·曼努埃尔', '乌尔曼', 'JMURMAN', '515.124.4469', '1998-03-07', 'FI_ACCOUNT', 7800.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (113, '路易斯', '波普', 'LPOPP', '515.124.4567', '1999-12-07', 'FI_ACCOUNT', 6900.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (114, '丹', '拉法艾利', 'DRAPHEAL', '515.127.4561', '1994-12-07', 'PU_MAN', 11000.00, NULL, 100, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (115, '亚历山大', '胡', 'AKHOO', '515.127.4562', '1995-05-18', 'PU_CLERK', 3100.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (116, '雪莉', '拜达', 'SBAIDA', '515.127.4563', '1997-12-24', 'PU_CLERK', 2900.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (117, '西加尔', '托比亚斯', 'STOBIAS', '515.127.4564', '1997-07-24', 'PU_CLERK', 2800.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (118, '盖伊', '火室', 'GHIMURO', '515.127.4565', '1998-11-15', 'PU_CLERK', 2600.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (119, '卡伦', '科尔门纳雷斯', 'KCOLMENA', '515.127.4566', '1999-08-10', 'PU_CLERK', 2500.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (120, '马修', '韦斯', 'MWEISS', '650.123.1234', '1996-07-18', 'ST_MAN', 8000.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (121, '亚当', '弗里普', 'AFRIPP', '650.123.2234', '1997-04-10', 'ST_MAN', 8200.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (122, '帕亚姆', '考夫林', 'PKAUFLIN', '650.123.3234', '1995-05-01', 'ST_MAN', 7900.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (123, '珊塔', '沃尔曼', 'SVOLLMAN', '650.123.4234', '1997-10-10', 'ST_MAN', 6500.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (124, '凯文', '莫尔戈斯', 'KMOURGOS', '650.123.5234', '1999-11-16', 'ST_MAN', 5800.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (125, '朱莉娅', '内耶尔', 'JNAYER', '650.124.1214', '1997-07-16', 'ST_CLERK', 3200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (126, '艾琳', '米基利内尼', 'IMIKKILI', '650.124.1224', '1998-09-28', 'ST_CLERK', 2700.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (127, '詹姆斯', '兰德里', 'JLANDRY', '650.124.1334', '1999-01-14', 'ST_CLERK', 2400.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (128, '史蒂文', '马克尔', 'SMARKLE', '650.124.1434', '2000-03-08', 'ST_CLERK', 2200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (129, '劳拉', '比索特', 'LBISSOT', '650.124.5234', '1997-08-20', 'ST_CLERK', 3300.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (130, '莫兹', '阿特金森', 'MATKINSO', '650.124.6234', '1997-10-30', 'ST_CLERK', 2800.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (131, '詹姆斯', '马洛', 'JAMRLOW', '650.124.7234', '1997-02-16', 'ST_CLERK', 2500.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (132, 'TJ', '奥尔森', 'TJOLSON', '650.124.8234', '1999-04-10', 'ST_CLERK', 2100.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (133, '贾森', '马林', 'JMALLIN', '650.127.1934', '1996-06-14', 'ST_CLERK', 3300.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (134, '迈克尔', '罗杰斯', 'MROGERS', '650.127.1834', '1998-08-26', 'ST_CLERK', 2900.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (135, '基', '吉', 'KGEE', '650.127.1734', '1999-12-12', 'ST_CLERK', 2400.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (136, '海泽尔', '菲尔坦克', 'HPHILTAN', '650.127.1634', '2000-02-06', 'ST_CLERK', 2200.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (137, '伦斯克', '拉德维格', 'RLADWIG', '650.121.1234', '1995-07-14', 'ST_CLERK', 3600.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (138, '斯蒂芬', '斯泰尔斯', 'SSTILES', '650.121.2034', '1997-10-26', 'ST_CLERK', 3200.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (139, '约翰', '西奥', 'JSEO', '650.121.2019', '1998-02-12', 'ST_CLERK', 2700.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (140, '乔舒亚', '帕特尔', 'JPATEL', '650.121.1834', '1998-04-06', 'ST_CLERK', 2500.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (141, '特蕾娜', '拉杰斯', 'TRAJS', '650.121.8009', '1995-10-17', 'ST_CLERK', 3500.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (142, '柯蒂斯', '戴维斯', 'CDAVIES', '650.121.2994', '1997-01-29', 'ST_CLERK', 3100.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (143, '兰德尔', '马托斯', 'RMATOS', '650.121.2874', '1998-03-15', 'ST_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (144, '彼得', '瓦加斯', 'PVARGAS', '650.121.2004', '1998-07-09', 'ST_CLERK', 2500.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (145, '约翰', '罗素', 'JRUSSEL', '011.44.1344.429268', '1996-10-01', 'SA_MAN', 14000.00, 0.40, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (146, '卡伦', '帕特纳斯', 'KPARTNER', '011.44.1344.467268', '1997-01-05', 'SA_MAN', 13500.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (147, '阿尔贝托', '埃拉苏里斯', 'AERRAZUR', '011.44.1344.429278', '1997-03-10', 'SA_MAN', 12000.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (148, '杰拉德', '坎布劳特', 'GCAMBRAU', '011.44.1344.619268', '1999-10-15', 'SA_MAN', 11000.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (149, '埃莱妮', '兹洛特基', 'EZLOTKEY', '011.44.1344.429018', '2000-01-29', 'SA_MAN', 10500.00, 0.20, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (150, '彼得', '塔克', 'PTUCKER', '011.44.1344.129268', '1997-01-30', 'SA_REP', 10000.00, 0.30, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (151, '大卫', '伯恩斯坦', 'DBERNSTE', '011.44.1344.345268', '1997-03-24', 'SA_REP', 9500.00, 0.25, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (152, '彼得', '霍尔', 'PHALL', '011.44.1344.478968', '1997-08-20', 'SA_REP', 9000.00, 0.25, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (153, '克里斯托弗', '奥尔森', 'COLSEN', '011.44.1344.498718', '1998-03-30', 'SA_REP', 8000.00, 0.20, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (154, '娜妮特', '坎布劳特', 'NCAMBRAU', '011.44.1344.987668', '1998-12-09', 'SA_REP', 7500.00, 0.20, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (155, '奥利弗', '图沃尔特', 'OTUVAULT', '011.44.1344.486508', '1999-11-23', 'SA_REP', 7000.00, 0.15, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (156, '詹妮特', '金', 'JKING', '011.44.1345.429268', '1996-01-30', 'SA_REP', 10000.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (157, '帕特里克', '萨利', 'PSULLY', '011.44.1345.929268', '1996-03-04', 'SA_REP', 9500.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (158, '艾伦', '麦克尤恩', 'AMCEWEN', '011.44.1345.829268', '1996-08-01', 'SA_REP', 9000.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (159, '林赛', '史密斯', 'LSMITH', '011.44.1345.729268', '1997-03-10', 'SA_REP', 8000.00, 0.30, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (160, '路易斯', '多兰', 'LDORAN', '011.44.1345.629268', '1997-12-15', 'SA_REP', 7500.00, 0.30, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (161, '萨拉特', '肖尔', 'SSEWALL', '011.44.1345.529268', '1998-11-03', 'SA_REP', 7000.00, 0.25, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (162, '克拉拉', '维什尼', 'CVISHNEY', '011.44.1346.129268', '1997-11-11', 'SA_REP', 10500.00, 0.25, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (163, '丹妮尔', '格林', 'DGREENE', '011.44.1346.229268', '1999-03-19', 'SA_REP', 9500.00, 0.15, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (164, '玛蒂亚', '马文斯', 'MMARVINS', '011.44.1346.329268', '2000-01-24', 'SA_REP', 7200.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (165, '大卫', '李', 'DLEE', '011.44.1346.529268', '2000-02-23', 'SA_REP', 6800.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (166, '桑达尔', '安迪', 'SANDE', '011.44.1346.629268', '2000-03-24', 'SA_REP', 6400.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (167, '阿米特', '班达', 'ABANDA', '011.44.1346.729268', '2000-04-21', 'SA_REP', 6200.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (168, '丽莎', '奥泽尔', 'LOZER', '011.44.1343.929268', '1997-03-11', 'SA_REP', 11500.00, 0.25, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (169, '哈里森', '布鲁姆', 'HBLOOM', '011.44.1343.829268', '1998-03-23', 'SA_REP', 10000.00, 0.20, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (170, '泰勒', '福克斯', 'TFOX', '011.44.1343.729268', '1998-01-24', 'SA_REP', 9600.00, 0.20, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (171, '威廉', '史密斯', 'WSMITH', '011.44.1343.629268', '1999-02-23', 'SA_REP', 7400.00, 0.15, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (172, '伊丽莎白', '贝茨', 'EBATES', '011.44.1343.529268', '1999-03-24', 'SA_REP', 7300.00, 0.15, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (173, '桑迪塔', '库马尔', 'SKUMAR', '011.44.1343.329268', '2000-04-21', 'SA_REP', 6100.00, 0.10, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (174, '艾伦', '阿贝尔', 'EABEL', '011.44.1644.429267', '1996-05-11', 'SA_REP', 11000.00, 0.30, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (175, '阿莉莎', '哈顿', 'AHUTTON', '011.44.1644.429266', '1997-03-19', 'SA_REP', 8800.00, 0.25, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (176, '乔纳森', '泰勒', 'JTAYLOR', '011.44.1644.429265', '1998-03-24', 'SA_REP', 8600.00, 0.20, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (177, '杰克', '利文斯顿', 'JLIVINGS', '011.44.1644.429264', '1998-04-23', 'SA_REP', 8400.00, 0.20, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (178, '金柏莉', '格兰特', 'KGRANT', '011.44.1644.429263', '1999-05-24', 'SA_REP', 7000.00, 0.15, 149, NULL); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (179, '查尔斯', '约翰逊', 'CJOHNSON', '011.44.1644.429262', '2000-01-04', 'SA_REP', 6200.00, 0.10, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (180, '温斯顿', '泰勒', 'WTAYLOR', '650.507.9876', '1998-01-24', 'SH_CLERK', 3200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (181, '简', '弗勒尔', 'JFLEAUR', '650.507.9877', '1998-02-23', 'SH_CLERK', 3100.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (182, '玛莎', '沙利文', 'MSULLIVA', '650.507.9878', '1999-06-21', 'SH_CLERK', 2500.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (183, '吉拉德', '格奥尼', 'GGEONI', '650.507.9879', '2000-02-03', 'SH_CLERK', 2800.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (184, '南迪塔', '萨尔钦德', 'NSARCHAN', '650.509.1876', '1996-01-27', 'SH_CLERK', 4200.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (185, '亚历克西斯', '布尔', 'ABULL', '650.509.2876', '1997-02-20', 'SH_CLERK', 4100.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (186, '朱莉娅', '戴林格', 'JDELLING', '650.509.3876', '1998-06-24', 'SH_CLERK', 3400.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (187, '安东尼', '卡布里奥', 'ACABRIO', '650.509.4876', '1999-02-07', 'SH_CLERK', 3000.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (188, '凯莉', '钟', 'KCHUNG', '650.505.1876', '1997-06-14', 'SH_CLERK', 3800.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (189, '詹妮弗', '迪利', 'JDILLY', '650.505.2876', '1997-08-13', 'SH_CLERK', 3600.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (190, '蒂莫西', '盖茨', 'TGATES', '650.505.3876', '1998-07-11', 'SH_CLERK', 2900.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (191, '兰达尔', '珀金斯', 'RPERKINS', '650.505.4876', '1999-12-19', 'SH_CLERK', 2500.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (192, '萨拉', '贝尔', 'SBELL', '650.501.1876', '1996-02-04', 'SH_CLERK', 4000.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (193, '布里特尼', '埃弗雷特', 'BEVERETT', '650.501.2876', '1997-03-03', 'SH_CLERK', 3900.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (194, '塞缪尔', '麦凯恩', 'SMCCAIN', '650.501.3876', '1998-07-01', 'SH_CLERK', 3200.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (195, '范斯', '琼斯', 'VJONES', '650.501.4876', '1999-03-17', 'SH_CLERK', 2800.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (196, '阿兰娜', '沃尔什', 'AWALSH', '650.507.9811', '1998-04-24', 'SH_CLERK', 3100.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (197, '凯文', '费尼', 'KFEENEY', '650.507.9822', '1998-05-23', 'SH_CLERK', 3000.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (198, '唐纳德', '奥康奈尔', 'DOCONNEL', '650.507.9833', '1999-06-21', 'SH_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (199, '道格拉斯', '格兰特', 'DGRANT', '650.507.9844', '2000-01-13', 'SH_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (200, '詹妮弗', '韦伦', 'JWHALEN', '515.123.4444', '1987-09-17', 'AD_ASST', 4400.00, NULL, 101, 10); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (201, '迈克尔', '哈滕斯坦', 'MHARTSTE', '515.123.5555', '1996-02-17', 'MK_MAN', 13000.00, NULL, 100, 20); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (202, '帕特', '费伊', 'PFAY', '603.123.6666', '1997-08-17', 'MK_REP', 6000.00, NULL, 201, 20); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (203, '苏珊', '马夫里斯', 'SMAVRIS', '515.123.7777', '1994-06-07', 'HR_REP', 6500.00, NULL, 101, 40); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (204, '赫尔曼', '拜尔', 'HBAER', '515.123.8888', '1994-06-07', 'PR_REP', 10000.00, NULL, 101, 70); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (205, '谢莉', '希金斯', 'SHIGGINS', '515.123.8080', '1994-06-07', 'AC_MGR', 12000.00, NULL, 101, 110); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (206, '威廉', '吉茨', 'WGIETZ', '515.123.8181', '1994-06-07', 'AC_ACCOUNT', 8300.00, NULL, 205, 110); -COMMIT; - --- ---------------------------- --- Table structure for job_grades --- ---------------------------- -DROP TABLE IF EXISTS `job_grades`; -CREATE TABLE `job_grades` ( - `grade_level` varchar(3) DEFAULT NULL, - `lowest_sal` int DEFAULT NULL, - `highest_sal` int DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of job_grades --- ---------------------------- -BEGIN; -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('A', 1000, 2999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('B', 3000, 5999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('C', 6000, 9999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('D', 10000, 14999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('E', 15000, 24999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('F', 25000, 40000); -COMMIT; - --- ---------------------------- --- Table structure for job_history --- ---------------------------- -DROP TABLE IF EXISTS `job_history`; -CREATE TABLE `job_history` ( - `employee_id` int NOT NULL, - `start_date` date NOT NULL, - `end_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `department_id` int DEFAULT NULL, - PRIMARY KEY (`employee_id`,`start_date`), - UNIQUE KEY `jhist_emp_id_st_date_pk` (`employee_id`,`start_date`), - KEY `jhist_job_fk` (`job_id`), - KEY `jhist_dept_fk` (`department_id`), - CONSTRAINT `jhist_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `jhist_emp_fk` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`employee_id`), - CONSTRAINT `jhist_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of job_history --- ---------------------------- -BEGIN; -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (101, '1989-09-21', '1993-10-27', 'AC_ACCOUNT', 110); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (101, '1993-10-28', '1997-03-15', 'AC_MGR', 110); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (102, '1993-01-13', '1998-07-24', 'IT_PROG', 60); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (114, '1998-03-24', '1999-12-31', 'ST_CLERK', 50); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (122, '1999-01-01', '1999-12-31', 'ST_CLERK', 50); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (176, '1998-03-24', '1998-12-31', 'SA_REP', 80); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (176, '1999-01-01', '1999-12-31', 'SA_MAN', 80); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (200, '1987-09-17', '1993-06-17', 'AD_ASST', 90); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (200, '1994-07-01', '1998-12-31', 'AC_ACCOUNT', 90); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (201, '1996-02-17', '1999-12-19', 'MK_REP', 20); -COMMIT; - --- ---------------------------- --- Table structure for jobs --- ---------------------------- -DROP TABLE IF EXISTS `jobs`; -CREATE TABLE `jobs` ( - `job_id` varchar(10) NOT NULL DEFAULT '', - `job_title` varchar(35) NOT NULL, - `min_salary` int DEFAULT NULL, - `max_salary` int DEFAULT NULL, - PRIMARY KEY (`job_id`), - UNIQUE KEY `job_id_pk` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of jobs --- ---------------------------- -BEGIN; -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AC_ACCOUNT', '公共会计师', 4200, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AC_MGR', '会计经理', 8200, 16000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_ASST', '行政助理', 3000, 6000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_PRES', '总裁', 20000, 40000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_VP', '行政副总裁', 15000, 30000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('FI_ACCOUNT', '会计', 4200, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('FI_MGR', '财务经理', 8200, 16000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('HR_REP', '人力资源代表', 4000, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('IT_PROG', '程序员', 4000, 10000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('MK_MAN', '市场营销经理', 9000, 15000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('MK_REP', '市场营销代表', 4000, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PR_REP', '公共关系代表', 4500, 10500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PU_CLERK', '采购文员', 2500, 5500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PU_MAN', '采购经理', 8000, 15000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SA_MAN', '销售经理', 10000, 20000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SA_REP', '销售代表', 6000, 12000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SH_CLERK', '发货文员', 2500, 5500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('ST_CLERK', '库存文员', 2000, 5000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('ST_MAN', '库存经理', 5500, 8500); -COMMIT; - --- ---------------------------- --- Table structure for locations --- ---------------------------- -DROP TABLE IF EXISTS `locations`; -CREATE TABLE `locations` ( - `location_id` int NOT NULL DEFAULT '0', - `street_address` varchar(40) DEFAULT NULL, - `postal_code` varchar(12) DEFAULT NULL, - `city` varchar(30) NOT NULL, - `state_province` varchar(25) DEFAULT NULL, - `country_id` char(2) DEFAULT NULL, - PRIMARY KEY (`location_id`), - UNIQUE KEY `loc_id_pk` (`location_id`), - KEY `loc_c_id_fk` (`country_id`), - CONSTRAINT `loc_c_id_fk` FOREIGN KEY (`country_id`) REFERENCES `countries` (`country_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of locations --- ---------------------------- -BEGIN; -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1000, '1297 Via Cola di Rie', '00989', '罗马', NULL, 'IT'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1100, '93091 Calle della Testa', '10934', '威尼斯', NULL, 'IT'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1200, '2017 Shinjuku-ku', '1689', '东京', '东京都', 'JP'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1300, '9450 Kamiya-cho', '6823', '广岛', NULL, 'JP'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1400, '2014 Jabberwocky Rd', '26192', '南湖', '德克萨斯', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1500, '2011 Interiors Blvd', '99236', '南旧金山', '加利福尼亚', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1600, '2007 Zagora St', '50090', '南布朗斯维克', '新泽西', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1700, '2004 Charade Rd', '98199', '西雅图', '华盛顿', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1800, '147 Spadina Ave', 'M5V 2L7', '多伦多', '安大略', 'CA'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1900, '6092 Boxwood St', 'YSW 9T2', '怀特霍斯', '育空', 'CA'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2000, '40-5-12 Laogianggen', '190518', '北京', NULL, 'CN'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2100, '1298 Vileparle (E)', '490231', '孟买', '马哈拉施特拉邦', 'IN'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2200, '12-98 Victoria Street', '2901', '悉尼', '新南威尔士', 'AU'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2300, '198 Clementi North', '540198', '新加坡', NULL, 'SG'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2400, '8204 Arthur St', NULL, '伦敦', NULL, 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2500, 'Magdalen Centre, The Oxford Science Park', 'OX9 9ZB', '牛津', '牛津', 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2600, '9702 Chester Road', '09629850293', '斯特雷福德', '曼彻斯特', 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2700, 'Schwanthalerstr. 7031', '80925', '慕尼黑', '巴伐利亚', 'DE'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2800, 'Rua Frei Caneca 1360 ', '01307-002', '圣保罗', '圣保罗', 'BR'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2900, '20 Rue des Corps-Saints', '1730', '日内瓦', '日内瓦', 'CH'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3000, 'Murtenstrasse 921', '3095', '伯尔尼', 'BE', 'CH'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3100, 'Pieter Breughelstraat 837', '3029SK', '乌得勒支', '乌得勒支', 'NL'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3200, 'Mariano Escobedo 9991', '11932', '墨西哥城', '联邦区', 'MX'); -COMMIT; - --- ---------------------------- --- Table structure for order --- ---------------------------- -DROP TABLE IF EXISTS `order`; -CREATE TABLE `order` ( - `order_id` int DEFAULT NULL, - `order_name` varchar(15) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of order --- ---------------------------- -BEGIN; -INSERT INTO `order` (`order_id`, `order_name`) VALUES (1, 'shkstart'); -INSERT INTO `order` (`order_id`, `order_name`) VALUES (2, 'tomcat'); -INSERT INTO `order` (`order_id`, `order_name`) VALUES (3, 'dubbo'); -COMMIT; - --- ---------------------------- --- Table structure for regions --- ---------------------------- -DROP TABLE IF EXISTS `regions`; -CREATE TABLE `regions` ( - `region_id` int NOT NULL, - `region_name` varchar(25) DEFAULT NULL, - PRIMARY KEY (`region_id`), - UNIQUE KEY `reg_id_pk` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of regions --- ---------------------------- -BEGIN; -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (1, '欧洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (2, '美洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (3, '亚洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (4, '中东和非洲'); -COMMIT; - --- ---------------------------- --- View structure for emp_details_view --- ---------------------------- -DROP VIEW IF EXISTS `emp_details_view`; -CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `emp_details_view` AS select `e`.`employee_id` AS `employee_id`,`e`.`job_id` AS `job_id`,`e`.`manager_id` AS `manager_id`,`e`.`department_id` AS `department_id`,`d`.`location_id` AS `location_id`,`l`.`country_id` AS `country_id`,`e`.`first_name` AS `first_name`,`e`.`last_name` AS `last_name`,`e`.`salary` AS `salary`,`e`.`commission_pct` AS `commission_pct`,`d`.`department_name` AS `department_name`,`j`.`job_title` AS `job_title`,`l`.`city` AS `city`,`l`.`state_province` AS `state_province`,`c`.`country_name` AS `country_name`,`r`.`region_name` AS `region_name` from (((((`employees` `e` join `departments` `d`) join `jobs` `j`) join `locations` `l`) join `countries` `c`) join `regions` `r`) where ((`e`.`department_id` = `d`.`department_id`) and (`d`.`location_id` = `l`.`location_id`) and (`l`.`country_id` = `c`.`country_id`) and (`c`.`region_id` = `r`.`region_id`) and (`j`.`job_id` = `e`.`job_id`)); - -SET FOREIGN_KEY_CHECKS = 1; - - - - - - -#第03章_基本的SELECT语句的课后练习 - -# 1.查询所有员工12个月的工资总和,并起别名为工资总和 -#理解1:计算12月的基本工资 - select sum(salary * 12) 工资总和 from employees ; - -#理解2:计算12月的基本工资和奖金 -# ifnull(原值,新值) 判断一个原值是否为null,如果原值是null,就用一个新值代替 - select sum(salary * 12) + sum(salary * 12 * commission_pct) 实发工资 from employees; - select sum(salary * 12 + salary * 12 * ifnull(commission_pct,0)) 实发工资 from employees; - -# 2.查询employees表中去除重复的job_id以后的数据 -#去除重复 distinct - select distinct(job_id) from employees; - -# 3.查询工资大于12000的员工姓名和工资 - select first_name 姓名,salary 工资 from employees where salary > 12000; - -# 4.查询员工号为176的员工的姓名和部门号 - select first_name 姓名,department_id 部门号 from employees where employee_id = 176; - -# 5.显示表 departments 的结构,并查询其中的全部数据 - desc departments; - select * from departments; - - - -# 第04章_运算符课后练习 -# 1.选择工资不在5000到12000的员工的姓名和工资 - select first_name 姓名,salary 工资 from employees where salary not between 5000 and 12000; - -# 2.选择在20或50号部门工作的员工姓名和部门号 - select first_name 姓名,department_id 部门号 from employees where department_id in(20,50); - -# 3.选择公司中没有管理者的员工姓名及job_id - select first_name 姓名,job_id from employees where manager_id is null; - -# 4.选择公司中有奖金的员工姓名,奖金和奖金级别 - select first_name 姓名,e.salary*commission_pct 奖金,grade_level 奖金级别 from employees e left join job_grades j on e.salary*commission_pct between j.lowest_sal and j.highest_sal where commission_pct is not null; - -# 5.选择员工姓名的第三个字是 尔 的员工姓名 - select first_name 姓名 from employees where first_name like '__尔'; - -# 6.选择姓名中有 特 字和 尔 字的员工姓名 - select * from employees where last_name like '%特%' and last_name like '%尔%' - -# 7.显示出表 employees 表中 first_name 以 '尔'结尾的员工信息 - select * from employees where first_name like '%尔'; - -# 8.显示出表 employees 部门编号在 80-100 之间的姓名、工种 - select first_name 姓名,job_title 工种 from employees e left join jobs j on e.job_id=j.job_id where department_id between 80 and 100; - -# 9.显示出表 employees 的 manager_id 是 100,101,108 的员工姓名、工资、管理者id - select first_name 员工姓名,salary 工资,manager_id 管理者id from employees where manager_id in(100,101,108) - - - - -#第05章_排序与分页的课后练习 - -#1. 查询员工的姓名和部门号和年薪,按年薪降序显示 --- order by 年薪 asc/desc - select first_name 姓名,department_id 部门号,(salary * 12) 年薪 from employees order by 年薪 desc; - -#2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据 - select * from employees where salary not between 8000 and 17000 order by salary desc limit 21,19; - -#3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序 - select * from employees where email like '%e%' order by char_length(email) desc,department_id; - - - - -# 第06章_多表查询的课后练习 - -# 1.显示所有员工的姓名,部门号和部门名称。 - select first_name 姓名,e.job_id 部门号,job_title 部门名称 from employees e,jobs j where e.job_id=j.job_id - -# 2.查询90号部门员工的job_id和90号部门的location_id - select job_id,location_id from employees e,departments d where e.department_id = d.department_id and e.department_id = 90; - -# 3.选择所有 有奖金的员工 的 last_name , department_name , location_id , city - select last_name ,department_name ,d.location_id ,city - from employees e,departments d,locations l - where e.department_id = d.department_id and d.location_id = l.location_id and commission_pct is not null; - - -# 4.选择city在 多伦多 工作的员工的 last_name , job_id , department_id , department_name - - #子查询 - select last_name ,job_id ,b.department_id ,department_name from employees e, - (select department_id ,department_name from departments where location_id = - (select location_id from locations where city = '多伦多')) b where e.department_id=b.department_id; - - #连表查 - select last_name ,job_id ,d.department_id ,department_name - from locations l ,departments d ,employees e - where l.location_id = d.location_id and d.department_id = e.department_id and city = '多伦多'; - - -#sql92语法(自然连接): - -# 5.查询行政部门员工的部门名称、部门地址、姓名、工作、工资 - #select * from locations join departments join employees where department_name = '行政部'; - select d.department_name 部门名称,l.street_address 部门地址,e.first_name 姓名,j.job_title 工作,e.salary 工资 from locations l - left join departments d on l.location_id = d.location_id - left join employees e on d.department_id = e.department_id - right join jobs j on e.job_id = j.job_id where d.department_name = '行政部'; - -# 6.显示所有员工的姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式 --- 员工姓名 员工编号 上级姓名 上级的员工编号 --- 德哈恩 102 金 100 - select e1.last_name 员工姓名,e1.employee_id 员工编号,e2.last_name 上级姓名,e2.employee_id 上级的员工编号 from employees e1,employees e2 where e1.manager_id =e2.employee_id - -# 7.查询哪些部门没有员工 - select department_name 部门名称 from departments d left join employees e on d.department_id = e.department_id where employee_id is null; - -# 8. 查询哪个城市没有部门 - select city 没有部门的城市 from locations where location_id not in - (select distinct(location_id) from departments); - -# 9. 查询部门名为 销售部 或 信息技术部 的员工信息 - select * from employees where department_id in - (select department_id from departments where department_name in('销售部','信息技术部')); - - - - -# 第08章_聚合函数的课后练习 - -#2.查询公司员工工资的最大值,最小值,平均值,总和 - select max(salary) 最大值,min(salary) 最小值,avg(salary) 平均值,sum(salary) 总和 from employees ; - -#3.查询各job_id的员工工资的最大值,最小值,平均值,总和 - select j.job_id, max(salary) 最大值,min(salary) 最小值,avg(salary) 平均值,sum(salary) 总和 - from jobs j left join employees e on j.job_id = e.job_id group by j.job_id; - -#4.选择各个job_id的员工人数 - select j.job_id,count(j.job_id) from jobs j left join employees e on j.job_id = e.job_id group by j.job_id; - -# 5.查询员工最高工资和最低工资的差距 - select max(salary)-min(salary) 最高工资和最低工资的差距 from employees ; - -# 6.查询各个管理者 手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内 - select e1.manager_id,min(e1.salary) 最低工资 - from employees e1 right join employees e2 on e1.manager_id = e2.employee_id - where e1.salary >6000 group by e1.manager_id - -# 7.查询所有部门的名字,location_id,员工数量和平均工资,并按平均工资降序 - select d.department_name 部门名,d.location_id,count(e.department_id) 员工数量,avg(e.salary) 平均工资 - from employees e right join departments d on e.department_id = d.department_id - group by d.department_id order by 平均工资 desc - -# 8.查询每个工种、每个部门的部门名、工种名和最低工资 - - select d.department_name 部门名,j.job_title 工种名,min(e.salary) 最低工资 from jobs j right join employees e on j.job_id = e.job_id left join departments d on e.department_id = d.department_id group by j.job_id,d.department_id; - - - -# 第09章_子查询的课后练习 - -#1.查询和 兹洛特基 相同部门的员工姓名和工资 - select last_name 员工姓名,salary 工资 from employees where department_id = - (select department_id from employees where last_name = '兹洛特基'); - -#2.查询工资比公司平均工资高的员工的员工号,姓名和工资。 - #select l.location_id, avg(e.salary) 平均工资 from locations l right join departments d on l.location_id = d.location_id left join employees e on d.department_id = e.department_id group by l.location_id; - - select employee_id,first_name,salary from employees where salary>(select avg(salary) from employees); - -#3.选择工资大于所有JOB_ID = 'SA_MAN'的员工的工资的员工的last_name, job_id, salary - select last_name, job_id, salary from employees where salary > - (select max(e.salary) from jobs j left join employees e on j.job_id = e.job_id where j.job_id = 'SA_MAN'); - -#4.查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名 - #select * from employees where last_name like '' -#5.查询部门的location_id为1700的部门的工作的员工的员工号 - select employee_id 员工号 from employees where department_id in - (select department_id from departments where location_id = 1700); - -#6.查询管理者是 金 的员工姓名和工资 - select last_name 姓名,salary 工资 from employees where manager_id in - (select employee_id from employees where last_name = '金'); - -#7.查询工资最低的员工信息: last_name, salary - select last_name,salary from employees where salary = - (select min(salary) from employees); - - - -#8.查询平均工资最低的部门信息 - -#方式1: -# 部门最低工资=全司最低 -#方式2: -# 部门平均<= 公司所有平均 - select d.*,avg(e.salary) 平均工资 from departments d right join employees e on d.department_id = e.department_id group by d.department_id order by 平均工资 limit 0,1; - - -#9.查询平均工资最低的部门信息和该部门的平均工资(相关子查询) -#方式:先查最低平均工资的部门,再根据其id去select中再子查询 - - # 连表查 - select d.*,avg(e.salary) 平均工资 from departments d right join employees e on d.department_id = e.department_id group by d.department_id order by 平均工资 limit 0,1; - # 子查询 - select d.*,a.平均工资 from departments d right join - (select department_id,avg(salary) 平均工资 from employees group by department_id having avg(salary) = - (select avg(salary) 平均工资 from employees group by department_id order by 平均工资 limit 0,1)) a - on d.department_id = a.department_id; - - -#10.查询平均工资最高的 job 信息 - -#方式1:平均工资=最大 -#方式2:平均工资>=所有平均工资 - select j.*,avg(e.salary) 平均工资 - from jobs j right join employees e on j.job_id = e.job_id group by j.job_id order by 平均工资 desc limit 0,1; - -#11.查询平均工资高于公司平均工资的部门有哪些? - select d.department_name 部门名,avg(e.salary) 平均工资 - from departments d right join employees e on d.department_id = e.department_id - group by d.department_id having 平均工资 > (select avg(salary) from employees); - -#12.查询出公司中所有 manager 的详细信息 - -#方式1:自连接 自己连自己 - select * from employees where employee_id in - (select distinct(a.employee_id) from - (select e2.* from employees e1 left join employees e2 on e1.manager_id = e2.employee_id) a); - -#方式2:子查询 -#员工编号=(管理员编号有哪些) - select * from employees where employee_id in - (select distinct manager_id from employees); - -#13.各个部门中 最高工资中 最低的那个部门的 最低工资是多少? - select min(e.salary) 最低工资 from employees e right join - (select department_id,max(salary) 最高工资 from employees group by department_id order by 最高工资 limit 0,1) a - on e.department_id = a.department_id ; - -#14.查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary -#方式1: - select last_name, department_id, email, salary from employees where employee_id = - (select employee_id from employees e right join - (select department_id,avg(salary) 平均工资 from employees group by department_id order by 平均工资 desc limit 0,1) a - on e.department_id = a.department_id limit 0,1); - -#15. 查询部门的部门号,其中不包括job_id是"ST_CLERK"的部门号 -#方式1: - select job_id from jobs where job_id != 'ST_CLERK'; - -#16. 选择所有没有管理者的员工的last_name - select last_name from employees where manager_id is null; - -#17.查询员工号、姓名、雇用时间、工资,其中员工的管理者为 'De Haan' -#方式1: - select * from employees where last_name = 'De Haan' - -#方式2: - -#18.查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资(相关子查询) - -#方式1:使用相关子查询 - select e.employee_id 员工号,e.last_name 姓名,e.salary 工资,a.平均工资 from employees e left join - (select department_id,avg(salary) 平均工资 from employees group by department_id) a - on e.department_id = a.department_id and e.salary > a.平均工资; - -#方式2:在FROM中声明子查询 - -#19.查询每个部门下的部门人数大于 5 的部门名称(相关子查询) - select department_name from departments where department_id in - (select distinct department_id from employees where employee_id in - (select manager_id from employees group by manager_id having count(manager_id)>5)); - - -#20.查询每个国家下的部门个数大于 2 的国家编号(相关子查询) - select country_id from locations where location_id in - (select location_id from departments group by location_id having count(location_id) > 2); - -/* -子查询的编写技巧(或步骤):① 从里往外写 ② 从外往里写 - -如何选择? -① 如果子查询相对较简单,建议从外往里写。一旦子查询结构较复杂,则建议从里往外写 -② 如果是相关子查询的话,通常都是从外往里写。 - -*/ -``` \ No newline at end of file diff --git "a/05 \350\260\242\351\223\226\346\265\251/SKU\344\275\234\344\270\232.md" "b/05 \350\260\242\351\223\226\346\265\251/SKU\344\275\234\344\270\232.md" deleted file mode 100644 index 4ea5de6..0000000 --- "a/05 \350\260\242\351\223\226\346\265\251/SKU\344\275\234\344\270\232.md" +++ /dev/null @@ -1,169 +0,0 @@ -~~~mysql -spu与sku: - -1.SPu指的是商品,spu届性就是不会影响到库存和价格的属性,又 -叫关键属性,与商品是一对一的关系 - -2.sku指的是具体规格单品,sku属性就是会影响到库存和价格的属性 -又叫销售属性,与商品是多对一的关系 - -3.一个spu有多个sku -~~~ - - - -~~~mysql - -```mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-21 16:27:34 */ -/*==============================================================*/ -CREATE DATABASE uu charset utf8; -use uu; - -drop table if exists property; - -drop table if exists property_value; - -drop table if exists sku; - -drop table if exists sku_property; - -drop table if exists spu; - -/*==============================================================*/ -/* Table: property */ -/*==============================================================*/ -create table property -( - property_id int not null auto_increment, - property_name char(10) not null, - primary key (property_id) -); - -/*==============================================================*/ -/* Table: property_value */ -/*==============================================================*/ -create table property_value -( - property_value_id int not null auto_increment, - property_value_name char(20) not null, - primary key (property_value_id) -); - -/*==============================================================*/ -/* Table: sku */ -/*==============================================================*/ -create table sku -( - sku_id int not null auto_increment, - spu_id int, - sku_name varchar(50) not null, - sku_inventory varchar(50) not null, - sku_price float(7,0) not null, - primary key (sku_id) -); - -/*==============================================================*/ -/* Table: sku_property */ -/*==============================================================*/ -create table sku_property -( - sku_property_id int not null auto_increment, - sku_id int, - property_id int, - property_value_id int, - primary key (sku_property_id) -); - -/*==============================================================*/ -/* Table: spu */ -/*==============================================================*/ -create table spu -( - spu_id int not null auto_increment, - spu_name varchar(50) not null, - spu_particulars varchar(100) not null, - primary key (spu_id) -); - -alter table sku add constraint FK_Relationship_1 foreign key (spu_id) - references spu (spu_id) on delete restrict on update restrict; - -alter table sku_property add constraint FK_Relationship_2 foreign key (sku_id) - references sku (sku_id) on delete restrict on update restrict; - -alter table sku_property add constraint FK_Relationship_3 foreign key (property_id) - references property (property_id) on delete restrict on update restrict; - -alter table sku_property add constraint FK_Relationship_4 foreign key (property_value_id) - references property_value (property_value_id) on delete restrict on update restrict; - - --- 商品表 -INSERT INTO spu VALUES -(1,'华为mate60','遥遥领先'), -(2,'畅享15plus','巨巨坑'); - - --- 规格表 -INSERT INTO sku VALUES -(1,1,'华为 mate60 pro 256G 雅丹黑','60',6999), -(2,1,'华为 mate60 pro 256G 雅川青','60',6999), -(3,1,'华为 mate60 pro 256G 南糥紫','66',6999), -(4,1,'华为 mate60 pro 512G 雅丹黑','80',7999), -(5,1,'华为 mate60 pro 512G 雅川青','120',7999), -(6,1,'华为 mate60 pro 512G 南糥紫','90',7999); - - --- 属性表 -INSERT INTO property VALUES -(1,'颜色'), -(2,'内存'); - - --- 属性值表 -INSERT INTO property_value VALUES -(1,'雅丹黑'), -(2,'雅川青'), -(3,'南糥紫'), -(4,'256G'), -(5,'512G'); - - - --- 规格属性关联表 -INSERT INTO sku_property VALUES -(1,1,1,1),-- 256G 雅丹黑 -(2,1,2,4),-- 256G 雅丹黑 -(3,2,1,2),-- 256G 雅川青 -(4,2,2,4),-- 256G 雅川青 -(5,3,1,3),-- 256G 南糥紫 -(6,3,2,4),-- 256G 南糥紫 -(7,4,1,1),-- 512G 雅丹黑 -(8,4,2,5),-- 512G 雅丹黑 -(9,5,1,2),-- 512G 雅川青 -(10,5,2,5),-- 512G 雅川青 -(11,6,1,3),-- 512G 南糥紫 -(12,6,2,5);-- 512G 南糥紫 - - --- 自然连接全部表,查询所有信息 -select * FROM -spu s, -sku sk, -property p, -property_value pv, -sku_property sp -WHERE -s.spu_id=sk.spu_id -and sk.sku_id=sp.sku_id -and p.property_id=sp.property_id -and pv.property_value_id=sp.property_value_id; - - - -``` -~~~ - diff --git "a/05 \350\260\242\351\223\226\346\265\251/\345\233\276\344\271\246\351\246\206\344\275\234\344\270\232.md" "b/05 \350\260\242\351\223\226\346\265\251/\345\233\276\344\271\246\351\246\206\344\275\234\344\270\232.md" deleted file mode 100644 index 4b5b337..0000000 --- "a/05 \350\260\242\351\223\226\346\265\251/\345\233\276\344\271\246\351\246\206\344\275\234\344\270\232.md" +++ /dev/null @@ -1,51 +0,0 @@ -图书馆作业 - -CREATE DATABASE bookstore CHARSET utf8; -use bookstore; -CREATE table admi( -admi_Id VARCHAR(20) not null, -admi_name VARCHAR(20) not null, -admi_age VARCHAR(20) not null, -admi_gender VARCHAR(20) not null, -PRIMARY key(admi_id) -); -CREATE table library( -li_id VARCHAR(20) not null PRIMARY key, -li_address VARCHAR(20) not null, -admi_Id VARCHAR(20) not null, -FOREIGN key (admi_id)REFERENCES admi(admi_id) -); -CREATE table books( -book_id VARCHAR(20) PRIMARY key, -book_name VARCHAR(20), -li_id VARCHAR(20) not null, -FOREIGN key (li_id)REFERENCES library(li_id) -); -CREATE table student( -st_id VARCHAR(20), -st_name VARCHAR(20), -st_age VARCHAR(20), -st_gender VARCHAR(20), -book_id VARCHAR(20), -FOREIGN key (book_id) REFERENCES books(book_id) -); -CREATE table press( -pr_id VARCHAR(20), -pr_name VARCHAR(20), -pr_phone VARCHAR(20), -pr_add VARCHAR(20), -book_id VARCHAR(20), -FOREIGN key (book_id) REFERENCES books(book_id) -); - -笔记 - -软件 powerpesigner - -第一步 创建概念模型 - -第二部 转成逻辑模型 ldk - -第三部 转换成物理模型pdk - -第四步 生成DDL \ No newline at end of file diff --git "a/05 \350\260\242\351\223\226\346\265\251/\347\254\254\344\270\200\346\254\241\347\254\224\350\256\260.md" "b/05 \350\260\242\351\223\226\346\265\251/\347\254\254\344\270\200\346\254\241\347\254\224\350\256\260.md" deleted file mode 100644 index 693b8f3..0000000 --- "a/05 \350\260\242\351\223\226\346\265\251/\347\254\254\344\270\200\346\254\241\347\254\224\350\256\260.md" +++ /dev/null @@ -1,9 +0,0 @@ -大二更加讲究实际应用也就是实操,难度会比大一更加困难 - -大一更多的是理论 - -实训内容 - -1. Linux 服务器: Nginx,MongoDB -2. 项目中可能实现的技术: 中间件、鉴别权限 -3. 如果时间允许 小程序 \ No newline at end of file diff --git "a/05 \350\260\242\351\223\226\346\265\251/\347\254\254\344\270\211\346\254\241\347\254\224\350\256\260.md" "b/05 \350\260\242\351\223\226\346\265\251/\347\254\254\344\270\211\346\254\241\347\254\224\350\256\260.md" deleted file mode 100644 index 3d317f5..0000000 --- "a/05 \350\260\242\351\223\226\346\265\251/\347\254\254\344\270\211\346\254\241\347\254\224\350\256\260.md" +++ /dev/null @@ -1,19 +0,0 @@ -笔记 - -第一范式: - -要求字段的内容,不可再分割,为的是保证数据的原子性 - -例:姓名,省份、城市、区具、地址址 - -第二范式: - -要求在满足第一范式的基础上,要求非主键字投要完全依赖主健(非主键雪完全依赖整个联合主键,而不只很赖部分) - -小明的存在,公须贾依父亲和母亲的存在 - -第三范式: - -满足第二范式的前提下,要求非主键属性要有接依赖于主键 - -示例:儿子依赖爸爸,爸爸依赖爷爷。其中儿子与爷爷属于间接依赖,则不属于第三范式,学生表中建议不要写专业,院级系,将他们分开写,否则将很难修改,还占内存 \ No newline at end of file diff --git "a/05 \350\260\242\351\223\226\346\265\251/\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.md" "b/05 \350\260\242\351\223\226\346\265\251/\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.md" deleted file mode 100644 index b7c1243..0000000 --- "a/05 \350\260\242\351\223\226\346\265\251/\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.md" +++ /dev/null @@ -1,67 +0,0 @@ -1 表之间的关系 - -1.一对一的关系:将其中任一表中主键,放到另一个表当外键; - -2.一对多的关系:将一所在的表的主键,放到多的表当外键 - -3.多对多的关系:必须第三张表,将前面两个表的主键放进来当外键 - -2 数据库设计的方法 - -1.直观设计法 - -2.规范设计法:E-R模型; - -3.计算机辅助设计法:PowerDesigner - -3 E-R图:实体关系图 - -要素:实体(表)、属性(字段)、关系(类似外键约束) - -作业 - -CREATE DATABASE xch charset utf8; -use xch; -CREATE TABLE yuanxi( -yuanxi_id int auto_increment PRIMARY key, -yuanxi_name VARCHAR(10) -); -INSERT INTO yuanxi VALUES -(111,'软件工程'), -(222,'城乡建筑'), -(333,'医学护理'); -CREATE TABLE zuanye( -zuanye_name VARCHAR(10), -zuanye_id int auto_increment primary key, -yuanxi_id int, -FOREIGN key (yuanxi_id) REFERENCES yuanxi(yuanxi_id) -); -INSERT into zuanye VALUES -('软件技术',11,111), -('建筑设计',22,222), -('产后护理',33,333); -CREATE TABLE banji( -banji_id int , -banji_name VARCHAR(10), -nianji VARCHAR(10), -zuanye_id int, -FOREIGN key (zuanye_id) REFERENCES zuanye(zuanye_id) -); -INSERT into banji VALUES -(1,'软件技术2班',22,11), -(2,'建筑设计1班',22,22), -(3,'产后护理1班',22,33); -CREATE TABLE classroom( -classroom_id int PRIMARY key, -classroom_name VARCHAR(10) -); -INSERT into classroom VALUES -(1111,'翻斗花园一'), -(2222,'翻斗花园二'), -(3333,'翻斗花园三'); -CREATE table kecheng -CREATE TABLE student( -student_id int UNION not null, -student_name VARCHAR(10), -student_age int, -); \ No newline at end of file diff --git "a/06 \351\231\210\345\277\227\344\274\237/20230905.md" "b/06 \351\231\210\345\277\227\344\274\237/20230905.md" deleted file mode 100644 index 5ca897e..0000000 --- "a/06 \351\231\210\345\277\227\344\274\237/20230905.md" +++ /dev/null @@ -1,31 +0,0 @@ -## 大二任务 - -1、数据库高级 - -2、JavaScript - -3、MVC框架 - -4、node.js - -5、vue.js 简化开发有ui框架配合 - -6、springboot - -node.js和vue.js属于前端 - -### 技术栈 - -一个项目具体要求用什么技术实现,可以称之为技术选型也就是选方案 - -### 技能树 - -我们所拥有的技能,可以称为技能树 - -### 实训 - -1.Linux 服务器: Nginx,MongoDB - -2.项目中可能实现的技能:中间、鉴别权限 - -3.或小程序 \ No newline at end of file diff --git "a/06 \351\231\210\345\277\227\344\274\237/20230906.md" "b/06 \351\231\210\345\277\227\344\274\237/20230906.md" deleted file mode 100644 index 96ed90a..0000000 --- "a/06 \351\231\210\345\277\227\344\274\237/20230906.md" +++ /dev/null @@ -1,19 +0,0 @@ -### 一对一 - -将其中任意一个表中的主键放到另一个表中当外键 - -### 一对多 - -将一的主键放到多的表中当外键 - -### 多对多 - -必须引进第三张表,将前面两个表的主键当作该表的外键 - -## E-R图 有三大要素:实体、属性、关系 - -(1). 实体型:用矩形表示,矩形框内写明实体名 也可以通俗点理解MySQL当中的表 - -(2). 属性:用椭圆形表示,并用无向变将其与相应的实体型连接起来 可以理解成MySQL表当中的字段 - -(3). 联系用菱形表示,菱形框内写明联系名,用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1、1:n 或 m:n)。 类似于外键约束 \ No newline at end of file diff --git "a/06 \351\231\210\345\277\227\344\274\237/20230907.md" "b/06 \351\231\210\345\277\227\344\274\237/20230907.md" deleted file mode 100644 index 32e67c2..0000000 --- "a/06 \351\231\210\345\277\227\344\274\237/20230907.md" +++ /dev/null @@ -1,105 +0,0 @@ - ## 数据库范式 - -### 第一范式 - -要求字段的内容,不可再分割,为的是保证数据的原子性 - -例如:淘宝的地址信息,一个地址可以拆分为很多,省、市、区、街道和详细地址。 - -### 第二范式 - -要求在满足第一范式的基础上,还要满足数据表里的每一条数据记录,都是可唯一标识的,要求非主键字段要完全依赖主键(非主键要依赖整个联合主键)而不能只依赖部分 - -例如:你的诞生一定离不开你爸妈。 - -举例1:成绩表(学号,课程,成绩)学号和课程合在一起才能构成主键,才能知道成绩多少。 - -举例2:比赛表(球员编号、姓名、年龄、比赛编号、比赛时间、比赛场地、得分) - -姓名和年龄只依赖球员编号 - -比赛时间和比赛场地只依赖比赛编号 - -得分依赖于球员编号和比赛编号 - -所以按照第二范式要分成三个表 - -### 第三范式 - -满足第二范式的前提下,要求非主键属性要直接依赖于主键 - -举例:(学号、姓名、班级、班主任)这个表中,学号是主键,它可以确认姓名、班级、班主任,符合了第二范式,但是在非主键字段中,我们也可以通过班级推导出该班级的班主任,所以它是不符合第三范式的 - -拆分成两个表 - -学号、姓名、班级 - -班级、班主任 - -通过把班级与班主任的映射关系另外做成一张映射表,我们就成功地消除了表中的传递依赖了 - -```java -create database school charset utf8; -use school; -create table college( - co_id int PRIMARY key auto_increment, - co_name varchar(10) UNIQUE key not null -); -create table major( - ma_id int PRIMARY key auto_increment, - ma_name varchar(10) UNIQUE key not null, - co_id int, - foreign key (co_id) references college(co_id) -); -CREATE TABLE clase( - cl_id int PRIMARY key auto_increment, - cl_name varchar(10) UNIQUE key not null, - ma_id int, - foreign key (ma_id) references major(ma_id) -); -CREATE TABLE student( - stu_id int PRIMARY key auto_increment, - stu_name varchar(10) UNIQUE key not null, - stu_sex varchar(4), - cl_id int, - foreign key (cl_id) references clase(cl_id) -); -CREATE TABLE course( - co_id int PRIMARY key auto_increment, - co_name varchar(10) UNIQUE key not null -); -CREATE TABLE score( - sc_id int PRIMARY key auto_increment, - sc_grade double(3,1), - stu_id int, - foreign key (stu_id) references student(stu_id), - co_id int, - foreign key (co_id) references course(co_id) -); -CREATE TABLE room( - ro_id int PRIMARY key auto_increment, - ro_name varchar(10) UNIQUE key not null, - co_id int, - foreign key (co_id) references course(co_id) -); -CREATE TABLE teacher( - tea_id int PRIMARY key auto_increment, - tea_name varchar(10) UNIQUE key not null, - tea_sex varchar(4), - ro_id int, - foreign key (ro_id) references room(ro_id) -); -CREATE TABLE timeroom( - tim_id int PRIMARY key auto_increment, - tim_class VARCHAR(10), - cl_id int, - FOREIGN key (cl_id) REFERENCES clase(cl_id), - co_id int, - FOREIGN key (co_id) REFERENCES course(co_id), - ro_id int, - FOREIGN key (ro_id) REFERENCES room(ro_id), - tea_id int, - FOREIGN key (tea_id) REFERENCES teacher(tea_id) -); -``` - diff --git "a/06 \351\231\210\345\277\227\344\274\237/20230908.md" "b/06 \351\231\210\345\277\227\344\274\237/20230908.md" deleted file mode 100644 index 5bfc1e2..0000000 --- "a/06 \351\231\210\345\277\227\344\274\237/20230908.md" +++ /dev/null @@ -1,145 +0,0 @@ -## 笔记 - -PowerDesigner制作ER图可以转换成数据库形式,操作形式如下: - -第一步:创建概念模型(类似ER图) CDM 以用户角度 - -第二步:转换成逻辑模型 LDM 以计算机角度 - -第三步:转换成物理 PDM 以数据角度 - -第四步:生成DDL - -## ER图 - -![8750562da5843903a5aeabd6c0b120d](https://s2.loli.net/2023/09/11/PlZvLfmqhsAMuyw.png) - -## sql代码 - -```sql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/11 20:20:24 */ -/*==============================================================*/ -CREATE DATABASE bookes charset utf8; -use bookes; - -drop table if exists book; - -drop table if exists guanli; - -drop table if exists jie; - -drop table if exists librarian; - -drop table if exists library; - -drop table if exists reader; - -drop table if exists system; - -/*==============================================================*/ -/* Table: book */ -/*==============================================================*/ -create table book -( - bo_id char(10) not null, - sys_id int not null, - bo_name char(10) not null, - bo_author char(10) not null, - primary key (bo_id) -); - -/*==============================================================*/ -/* Table: guanli */ -/*==============================================================*/ -create table guanli -( - sys_id int not null, - rar_id int not null, - primary key (sys_id, rar_id) -); - -/*==============================================================*/ -/* Table: jie */ -/*==============================================================*/ -create table jie -( - bo_id char(10) not null, - re_id int not null, - rar_id int, - primary key (bo_id, re_id) -); - -/*==============================================================*/ -/* Table: librarian */ -/*==============================================================*/ -create table librarian -( - rar_id int not null auto_increment, - lib_id int not null, - rar_name varchar(20) not null, - rar_sex varchar(1) not null, - rar_age int not null, - primary key (rar_id) -); - -/*==============================================================*/ -/* Table: library */ -/*==============================================================*/ -create table library -( - lib_id int not null auto_increment, - lib_name varchar(10) not null, - lib_add varchar(100) not null, - primary key (lib_id) -); - -/*==============================================================*/ -/* Table: reader */ -/*==============================================================*/ -create table reader -( - re_id int not null auto_increment, - re_name varchar(5) not null, - re_age int not null, - re_tel numeric(11,0) not null, - primary key (re_id) -); - -/*==============================================================*/ -/* Table: system */ -/*==============================================================*/ -create table system -( - sys_id int not null auto_increment, - sys_mian decimal(4,1) not null, - sys_add varchar(100) not null, - sys_tel numeric(11,0) not null, - primary key (sys_id) -); - -alter table book add constraint FK_lay foreign key (sys_id) - references system (sys_id) on delete restrict on update restrict; - -alter table guanli add constraint FK_guanli foreign key (sys_id) - references system (sys_id) on delete restrict on update restrict; - -alter table guanli add constraint FK_guanli2 foreign key (rar_id) - references librarian (rar_id) on delete restrict on update restrict; - -alter table jie add constraint FK_jie foreign key (bo_id) - references book (bo_id) on delete restrict on update restrict; - -alter table jie add constraint FK_jie2 foreign key (re_id) - references reader (re_id) on delete restrict on update restrict; - -alter table jie add constraint FK_mate foreign key (rar_id) - references librarian (rar_id) on delete restrict on update restrict; - -alter table librarian add constraint FK_manage foreign key (lib_id) - references library (lib_id) on delete restrict on update restrict; - - -``` - diff --git "a/06 \351\231\210\345\277\227\344\274\237/20230912.md" "b/06 \351\231\210\345\277\227\344\274\237/20230912.md" deleted file mode 100644 index 5d14eea..0000000 --- "a/06 \351\231\210\345\277\227\344\274\237/20230912.md" +++ /dev/null @@ -1,148 +0,0 @@ -# 作业 9/12 - - - -```MYSQL -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-12 11:33:36 */ -/*==============================================================*/ -CREATE DATABASE film charset utf8; -use film; - -drop table if exists Commenttype; - -drop table if exists `comment`; - -drop table if exists commentssection; - -drop table if exists country; - -drop table if exists `language`; - -drop table if exists movie; - -drop table if exists movieteam; - -drop table if exists movietypes; - -/*==============================================================*/ -/* Table: Commenttype */ -/*==============================================================*/ -create table Commenttype -( - Commenttype_id int not null auto_increment, - comment_id int not null, - Commenttype_name varchar(10) not null, - primary key (Commenttype_id) -); - -/*==============================================================*/ -/* Table: comment */ -/*==============================================================*/ -create table `comment` -( - comment_id int not null auto_increment, - comment_user varchar(10) not null, - comment_time datetime not null, - comment_content varchar(255) not null, - primary key (comment_id) -); - -/*==============================================================*/ -/* Table: commentssection */ -/*==============================================================*/ -create table commentssection -( - commentssection_id int not null auto_increment, - movie_id int not null, - commentssection_theme varchar(20) not null, - commentssection_source varchar(5) not null, - commentssection_time datetime not null, - primary key (commentssection_id) -); - -/*==============================================================*/ -/* Table: country */ -/*==============================================================*/ -create table country -( - country_id int not null auto_increment, - country_name varchar(10) not null, - primary key (country_id) -); - -/*==============================================================*/ -/* Table: language */ -/*==============================================================*/ -create table language -( - language_id int not null auto_increment, - language varchar(10) not null, - primary key (language_id) -); - -/*==============================================================*/ -/* Table: movie */ -/*==============================================================*/ -create table movie -( - movie_id int not null auto_increment, - movietypes_id int not null, - country_id int not null, - comment_id int not null, - language_id int not null, - movie_name varchar(20) not null, - movie_time int not null, - movie_alias varchar(20) not null, - movie_data datetime not null, - TMDB varchar(20) not null, - movie_intro varchar(255) not null, - movie_awards varchar(100) not null, - movie_score decimal(2,1) not null, - primary key (movie_id) -); - -/*==============================================================*/ -/* Table: movieteam */ -/*==============================================================*/ -create table movieteam -( - movieteam_id int not null auto_increment, - movie_id int not null, - movieteam_name varchar(10) not null, - movieteam_age char(1) not null, - movieteam_status varchar(10) not null, - primary key (movieteam_id) -); - -/*==============================================================*/ -/* Table: movietypes */ -/*==============================================================*/ -create table movietypes -( - movietypes_id int not null auto_increment, - movietypes_name varchar(5) not null, - primary key (movietypes_id) -); - -alter table Commenttype add constraint FK_Relationship_5 foreign key (comment_id) - references comment (comment_id) on delete restrict on update restrict; - -alter table commentssection add constraint FK_Relationship_7 foreign key (movie_id) - references movie (movie_id) on delete restrict on update restrict; - -alter table movie add constraint FK_Relationship_1 foreign key (movietypes_id) - references movietypes (movietypes_id) on delete restrict on update restrict; - -alter table movie add constraint FK_Relationship_2 foreign key (country_id) - references country (country_id) on delete restrict on update restrict; - -alter table movie add constraint FK_Relationship_3 foreign key (language_id) - references language (language_id) on delete restrict on update restrict; - -alter table movie add constraint FK_Relationship_4 foreign key (comment_id) - references comment (comment_id) on delete restrict on update restrict; - -alter table movieteam add constraint FK_Relationship_6 foreign key (movie_id) - references movie (movie_id) on delete restrict on update restrict; \ No newline at end of file diff --git "a/06 \351\231\210\345\277\227\344\274\237/20230913.md" "b/06 \351\231\210\345\277\227\344\274\237/20230913.md" deleted file mode 100644 index ecf342e..0000000 --- "a/06 \351\231\210\345\277\227\344\274\237/20230913.md" +++ /dev/null @@ -1,196 +0,0 @@ -E_R图 - -![image-20230914113357495](https://s2.loli.net/2023/09/14/hazeIFEfy73VDsn.png) - -# 代码 - -```MYSQL -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/14 11:17:52 */ -/*==============================================================*/ -CREATE DATABASE hospital1 charset utf8; -use hospital1; - -drop table if exists aaa; - -drop table if exists administrative; - -drop table if exists doctor; - -drop table if exists doctor_patients; - -drop table if exists drug; - -drop table if exists hospital; - -drop table if exists patients; - -drop table if exists patients_reception; - -drop table if exists prescription; - -drop table if exists prescription_drug; - -drop table if exists reception; - -/*==============================================================*/ -/* Table: aaa */ -/*==============================================================*/ -create table aaa -( - durg_id int not null, - reception_id int not null, - primary key (durg_id, reception_id) -); - -/*==============================================================*/ -/* Table: administrative */ -/*==============================================================*/ -create table administrative -( - administrative_id int not null auto_increment, - hospital_id char(10), - administrative����name varchar(40) not null, - primary key (administrative_id) -); - -/*==============================================================*/ -/* Table: doctor */ -/*==============================================================*/ -create table doctor -( - doctor_id int not null auto_increment, - administrative_id int, - doctor_name varchar(20) not null, - primary key (doctor_id) -); - -/*==============================================================*/ -/* Table: doctor_patients */ -/*==============================================================*/ -create table doctor_patients -( - patients_id int not null, - doctor_id int not null, - primary key (patients_id, doctor_id) -); - -/*==============================================================*/ -/* Table: drug */ -/*==============================================================*/ -create table drug -( - durg_id int not null auto_increment, - drug_name varchar(50) not null, - drug_mioney varchar(100) not null, - primary key (durg_id) -); - -/*==============================================================*/ -/* Table: hospital */ -/*==============================================================*/ -create table hospital -( - hospital_id char(10) not null, - hospital_name varchar(40) not null, - primary key (hospital_id) -); - -/*==============================================================*/ -/* Table: patients */ -/*==============================================================*/ -create table patients -( - patients_id int not null auto_increment, - prescribe_id char(10), - patients_name varchar(20) not null, - primary key (patients_id) -); - -/*==============================================================*/ -/* Table: patients_reception */ -/*==============================================================*/ -create table patients_reception -( - patients_id int not null, - reception_id int not null, - primary key (patients_id, reception_id) -); - -/*==============================================================*/ -/* Table: prescription */ -/*==============================================================*/ -create table prescription -( - prescribe_time char(10) not null, - prescribe_id char(10) not null, - doctor_id int, - reception_id int, - patients_id int, - prescribe_amount char(10) not null, - primary key (prescribe_id) -); - -/*==============================================================*/ -/* Table: prescription_drug */ -/*==============================================================*/ -create table prescription_drug -( - durg_id int not null, - prescribe_id char(10) not null, - primary key (durg_id, prescribe_id) -); - -/*==============================================================*/ -/* Table: reception */ -/*==============================================================*/ -create table reception -( - reception_id int not null auto_increment, - reception_name varchar(10) not null, - primary key (reception_id) -); - -alter table aaa add constraint FK_aaa foreign key (durg_id) - references drug (durg_id) on delete restrict on update restrict; - -alter table aaa add constraint FK_aaa2 foreign key (reception_id) - references reception (reception_id) on delete restrict on update restrict; - -alter table administrative add constraint FK_Relationship_6 foreign key (hospital_id) - references hospital (hospital_id) on delete restrict on update restrict; - -alter table doctor add constraint FK_Relationship_7 foreign key (administrative_id) - references administrative (administrative_id) on delete restrict on update restrict; - -alter table doctor_patients add constraint FK_doctor_patients foreign key (patients_id) - references patients (patients_id) on delete restrict on update restrict; - -alter table doctor_patients add constraint FK_doctor_patients2 foreign key (doctor_id) - references doctor (doctor_id) on delete restrict on update restrict; - -alter table patients add constraint FK_prescription_patients2 foreign key (prescribe_id) - references prescription (prescribe_id) on delete restrict on update restrict; - -alter table patients_reception add constraint FK_patients_reception foreign key (patients_id) - references patients (patients_id) on delete restrict on update restrict; - -alter table patients_reception add constraint FK_patients_reception2 foreign key (reception_id) - references reception (reception_id) on delete restrict on update restrict; - -alter table prescription add constraint FK_doctor_prescribe foreign key (doctor_id) - references doctor (doctor_id) on delete restrict on update restrict; - -alter table prescription add constraint FK_prescription_patients foreign key (patients_id) - references patients (patients_id) on delete restrict on update restrict; - -alter table prescription add constraint FK_price_statistics foreign key (reception_id) - references reception (reception_id) on delete restrict on update restrict; - -alter table prescription_drug add constraint FK_prescription_drug foreign key (durg_id) - references drug (durg_id) on delete restrict on update restrict; - -alter table prescription_drug add constraint FK_prescription_drug2 foreign key (prescribe_id) - references prescription (prescribe_id) on delete restrict on update restrict; - diff --git "a/06 \351\231\210\345\277\227\344\274\237/20230914.md" "b/06 \351\231\210\345\277\227\344\274\237/20230914.md" deleted file mode 100644 index 1866932..0000000 --- "a/06 \351\231\210\345\277\227\344\274\237/20230914.md" +++ /dev/null @@ -1,15 +0,0 @@ -复习ER图 - -第一步:创建概念模型图(CDM)以用户角度 - -第二步:转换逻辑模型图(LDM)以计算机角度 - -第三步:转换物理模型图(PDM)以数据角度 - -第四步:生成DDL - -表与表的关系:一个表里的几条记录对应另一个表的几条记录 - -数据库范式在实际中不会完全按照范式,根据需求实际操作 - -[【数据库E-R图知识点和相关习题(复试真题)】_e—r模型的题及答案_Penroseblog的博客-CSDN博客](https://blog.csdn.net/qq_44875230/article/details/123584355?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-123584355-blog-106179701.235^v38^pc_relevant_anti_t3&spm=1001.2101.3001.4242.2&utm_relevant_index=4) \ No newline at end of file diff --git "a/06 \351\231\210\345\277\227\344\274\237/20230915.md" "b/06 \351\231\210\345\277\227\344\274\237/20230915.md" deleted file mode 100644 index 2ea5942..0000000 --- "a/06 \351\231\210\345\277\227\344\274\237/20230915.md" +++ /dev/null @@ -1,210 +0,0 @@ -![image-20230917220642520](https://s2.loli.net/2023/09/17/rbkQX1HenwVu8z5.png) - -````mysql - -# 应用场景: - -```m --- 1.查询特定销售员的销售记录 --- 2.查找销售记录中销售价格最高的汽车 --- 3.统计某个销售员的销售总额 --- 4.根据客户信息查询其购买过的汽车 --- 5.分析特定品牌汽车的销售情况,统计每个品牌的销售数量和总销售额 --- 6.检索特定日期范围内的销售了哪些汽车 --- 7.查找某车型的销售历史。 --- 8.统计每个销售员的销售数量 - -``` - -```mysql -/*==============================================================*/ -/* DBMS name:czw MySQL 5.0 */ -/* Created on: 2023-09-15 08:55:58 */ -/*==============================================================*/ - -create database no_money_car charset utf8; - -use no_money_car; - -drop table if exists admin; - -drop table if exists car; - -drop table if exists car_brand; - -drop table if exists car_type; - -drop table if exists guke; - -drop table if exists xiaoshou; - -/*==============================================================*/ -/* Table: car_brand */ -/*==============================================================*/ -create table car_brand -( - car_brand_id int not null auto_increment, - car_brand_name varchar(20) not null, - primary key (car_brand_id) -); - -insert into car_brand values -(0,'宝马'), -(0,'大众'), -(0,'奔驰'), -(0,'玛莎拉蒂'); - -/*==============================================================*/ -/* Table: car_type */ -/*==============================================================*/ -create table car_type -( - car_type_id int not null auto_increment, - car_type_name varchar(10) not null, - primary key (car_type_id) -); - -insert into car_type values -(0,'SUV'), -(0,'轿车'), -(0,'货车'), -(0,'跑车'); - -/*==============================================================*/ -/* Table: car */ -/*==============================================================*/ -create table car -( - car_id int not null auto_increment, - car_type_id int, - car_brand_id int, - car_name varchar(20) not null, - car_money numeric(8,1) not null, - primary key (car_id) -); - -insert into car values -(0,4,4,'B24',8851507.0), -(0,1,1,'A57',6505841.0), -(0,2,3,'蹦蹦',3548060.0), -(0,2,1,'486',7516152.0); - -/*==============================================================*/ -/* Table: guke */ -/*==============================================================*/ -create table guke -( - guke_id int not null auto_increment, - guke_name varchar(6) not null, - guke_tel varchar(11) not null, - primary key (guke_id) -); - -insert into guke values -(0,'刘总','15825681476'), -(0,'张总','18813681156'), -(0,'周总','17447681479'), -(0,'笑总','14563681278'); - -/*==============================================================*/ -/* Table: xiaoshou */ -/*==============================================================*/ -create table xiaoshou -( - xiaoshou_id int not null auto_increment, - xiaoshou_name varchar(6) not null, - xiaoshou_tel char(11) not null, - primary key (xiaoshou_id) -); - -insert into xiaoshou values -(0,'马量','16573821841'), -(0,'司马易','13828921841'), -(0,'孙武空','12815824841'); - -/*==============================================================*/ -/* Table: admin */ -/*==============================================================*/ -create table admin -( - admin_id int not null auto_increment, - xiaoshou_id int, - guke_id int, - car_id int, - admin_date date not null, - primary key (admin_id) -); - -insert into admin values -(0,1,1,1,'2022-9-4'), -(0,3,4,3,'2022-9-3'), -(0,3,2,2,'2022-9-3'), -(0,1,1,3,'2022-9-5'); - --- 1.查询特定销售员的销售记录 - -select * from xiaoshou x -join admin a on x.xiaoshou_id=a.xiaoshou_id -join car c on c.car_id=a.car_id -join car_type t on c.car_type_id=t.car_type_id -join car_brand b on c.car_brand_id=b.car_brand_id -where xiaoshou_name='孙武空'; - - -- 2.查找销售记录中销售价格最高的汽车 - -select max(car_money) from car c; - - -- 3.统计某个销售员的销售总额 - -select sum(car_money) from xiaoshou x -join admin a on x.xiaoshou_id=a.xiaoshou_id -join car c on c.car_id=a.car_id where xiaoshou_name='孙武空'; - - -- 4.根据客户信息查询其购买过的汽车 - -select * from guke g -left join admin a on g.guke_id=a.guke_id -left join car c on a.car_id=c.car_id; - - -- 5.分析特定品牌汽车的销售情况,统计每个品牌的销售数量和总销售额 - -select car_brand_name,count(car_money),sum(car_money) from car_brand b -left join car c on b.car_brand_id=c.car_brand_id group by b.car_brand_id; - - -- 6.检索特定日期范围内的销售了哪些汽车 - -select car_name from admin a -left join car c on a.car_id=c.car_id where admin_date='2022-09-03'; - - -- 7.查找某车型的销售历史。 - -select car_name,admin_date from car c -left join admin a on c.car_id=a.car_id; - - -- 8.统计每个销售员的销售数量 - -select xiaoshou_name,count(car_name) from xiaoshou x -left join admin a on x.xiaoshou_id=a.xiaoshou_id -left join car c on a.car_id=c.car_id group by x.xiaoshou_id; - -alter table admin add constraint FK_sale foreign key (car_id) - references car (car_id) on delete restrict on update restrict; - -alter table admin add constraint FK_select foreign key (guke_id) - references guke (guke_id) on delete restrict on update restrict; - -alter table admin add constraint FK_sell foreign key (xiaoshou_id) - references xiaoshou (xiaoshou_id) on delete restrict on update restrict; - -alter table car add constraint FK_brand foreign key (car_brand_id) - references car_brand (car_brand_id) on delete restrict on update restrict; - -alter table car add constraint FK_classify foreign key (car_type_id) - references car_type (car_type_id) on delete restrict on update restrict; - - -``` - - -```` - diff --git "a/06 \351\231\210\345\277\227\344\274\237/20230919.md" "b/06 \351\231\210\345\277\227\344\274\237/20230919.md" deleted file mode 100644 index a04db47..0000000 --- "a/06 \351\231\210\345\277\227\344\274\237/20230919.md" +++ /dev/null @@ -1,742 +0,0 @@ -### mysql复习 - -如果值是null,那么所有null参与运算,返回的结果也都是null - -所以如果遇上null,却又必须让它参与运算,就使用 ifnull (原值,新值) - -这个函数的作用,如果原值是null,就用新值代替,如果原值不null,就保持原值 - -### 建立数据库 - -```mysql -create database db1 charset utf8; - -use db1; -/* - Navicat Premium Data Transfer - - Source Server : local - Source Server Type : MySQL - Source Server Version : 80034 (8.0.34) - Source Host : localhost:3306 - Source Schema : mxdxdb - - Target Server Type : MySQL - Target Server Version : 80034 (8.0.34) - File Encoding : 65001 - - Date: 17/09/2023 22:21:02 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for countries --- ---------------------------- -DROP TABLE IF EXISTS `countries`; -CREATE TABLE `countries` ( - `country_id` char(2) NOT NULL, - `country_name` varchar(40) DEFAULT NULL, - `region_id` int DEFAULT NULL, - PRIMARY KEY (`country_id`), - KEY `countr_reg_fk` (`region_id`), - CONSTRAINT `countr_reg_fk` FOREIGN KEY (`region_id`) REFERENCES `regions` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of countries --- ---------------------------- -BEGIN; -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('AR', '阿根廷', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('AU', '澳大利亚', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('BE', '比利时', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('BR', '巴西', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CA', '加拿大', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CH', '瑞士', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CN', '中国', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('DE', '德国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('DK', '丹麦', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('EG', '埃及', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('FR', '法国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('HK', '香港', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IL', '以色列', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IN', '印度', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IT', '意大利', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('JP', '日本', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('KW', '科威特', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('MX', '墨西哥', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('NG', '尼日利亚', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('NL', '荷兰', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('SG', '新加坡', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('UK', '英国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('US', '美国', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('ZM', '赞比亚', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('ZW', '津巴布韦', 4); -COMMIT; - --- ---------------------------- --- Table structure for departments --- ---------------------------- -DROP TABLE IF EXISTS `departments`; -CREATE TABLE `departments` ( - `department_id` int NOT NULL DEFAULT '0', - `department_name` varchar(30) NOT NULL, - `manager_id` int DEFAULT NULL, - `location_id` int DEFAULT NULL, - PRIMARY KEY (`department_id`), - UNIQUE KEY `dept_id_pk` (`department_id`), - KEY `dept_loc_fk` (`location_id`), - KEY `dept_mgr_fk` (`manager_id`), - CONSTRAINT `dept_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`location_id`), - CONSTRAINT `dept_mgr_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of departments --- ---------------------------- -BEGIN; -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (10, '行政部', 200, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (20, '营销部', 201, 1800); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (30, '采购部', 114, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (40, '人力资源部', 203, 2400); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (50, '物流部', 121, 1500); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (60, '信息技术部', 103, 1400); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (70, '公共关系部', 204, 2700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (80, '销售部', 145, 2500); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (90, '执行部门', 100, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (100, '财务部', 108, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (110, '会计部', 205, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (120, '财务部门1', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (130, '企业税务部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (140, '控制和信用部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (150, '股东服务部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (160, '员工福利部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (170, '制造部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (180, '建筑部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (190, '承包部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (200, '运营部', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (210, '信息技术支持部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (220, '网络运营中心', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (230, '信息技术帮助台', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (240, '政府销售部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (250, '零售销售部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (260, '招聘部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (270, '工资单部门', NULL, 1700); -COMMIT; - --- ---------------------------- --- Table structure for employees --- ---------------------------- -DROP TABLE IF EXISTS `employees`; -CREATE TABLE `employees` ( - `employee_id` int NOT NULL DEFAULT '0', - `first_name` varchar(20) DEFAULT NULL, - `last_name` varchar(25) NOT NULL, - `email` varchar(25) NOT NULL, - `phone_number` varchar(20) DEFAULT NULL, - `hire_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `salary` double(8,2) DEFAULT NULL, - `commission_pct` double(2,2) DEFAULT NULL, - `manager_id` int DEFAULT NULL, - `department_id` int DEFAULT NULL, - PRIMARY KEY (`employee_id`), - UNIQUE KEY `emp_email_uk` (`email`), - UNIQUE KEY `emp_emp_id_pk` (`employee_id`), - KEY `emp_dept_fk` (`department_id`), - KEY `emp_job_fk` (`job_id`), - KEY `emp_manager_fk` (`manager_id`), - CONSTRAINT `emp_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `emp_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`), - CONSTRAINT `emp_manager_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of employees --- ---------------------------- -BEGIN; -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (100, '史蒂文', '金', 'SKING', '515.123.4567', '1987-06-17', 'AD_PRES', 24000.00, NULL, NULL, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (101, '尼娜', '科查尔', 'NKOCHHAR', '515.123.4568', '1989-09-21', 'AD_VP', 17000.00, NULL, 100, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (102, '雷克斯', '德哈恩', 'LDEHAAN', '515.123.4569', '1993-01-13', 'AD_VP', 17000.00, NULL, 100, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (103, '亚历山大', '胡诺尔德', 'AHUNOLD', '590.423.4567', '1990-01-03', 'IT_PROG', 9000.00, NULL, 102, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (104, '布鲁斯', '恩斯特', 'BERNST', '590.423.4568', '1991-05-21', 'IT_PROG', 6000.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (105, '大卫', '奥斯汀', 'DAUSTIN', '590.423.4569', '1997-06-25', 'IT_PROG', 4800.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (106, '瓦利', '帕塔巴拉', 'VPATABAL', '590.423.4560', '1998-02-05', 'IT_PROG', 4800.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (107, '黛安娜', '洛伦茨', 'DLORENTZ', '590.423.5567', '1999-02-07', 'IT_PROG', 4200.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (108, '南希', '格林伯格', 'NGREENBE', '515.124.4569', '1994-08-17', 'FI_MGR', 12000.00, NULL, 101, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (109, '丹尼尔', '法维特', 'DFAVIET', '515.124.4169', '1994-08-16', 'FI_ACCOUNT', 9000.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (110, '约翰', '陈', 'JCHEN', '515.124.4269', '1997-09-28', 'FI_ACCOUNT', 8200.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (111, '伊斯梅尔', '斯基亚拉', 'ISCIARRA', '515.124.4369', '1997-09-30', 'FI_ACCOUNT', 7700.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (112, '何塞·曼努埃尔', '乌尔曼', 'JMURMAN', '515.124.4469', '1998-03-07', 'FI_ACCOUNT', 7800.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (113, '路易斯', '波普', 'LPOPP', '515.124.4567', '1999-12-07', 'FI_ACCOUNT', 6900.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (114, '丹', '拉法艾利', 'DRAPHEAL', '515.127.4561', '1994-12-07', 'PU_MAN', 11000.00, NULL, 100, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (115, '亚历山大', '胡', 'AKHOO', '515.127.4562', '1995-05-18', 'PU_CLERK', 3100.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (116, '雪莉', '拜达', 'SBAIDA', '515.127.4563', '1997-12-24', 'PU_CLERK', 2900.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (117, '西加尔', '托比亚斯', 'STOBIAS', '515.127.4564', '1997-07-24', 'PU_CLERK', 2800.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (118, '盖伊', '火室', 'GHIMURO', '515.127.4565', '1998-11-15', 'PU_CLERK', 2600.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (119, '卡伦', '科尔门纳雷斯', 'KCOLMENA', '515.127.4566', '1999-08-10', 'PU_CLERK', 2500.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (120, '马修', '韦斯', 'MWEISS', '650.123.1234', '1996-07-18', 'ST_MAN', 8000.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (121, '亚当', '弗里普', 'AFRIPP', '650.123.2234', '1997-04-10', 'ST_MAN', 8200.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (122, '帕亚姆', '考夫林', 'PKAUFLIN', '650.123.3234', '1995-05-01', 'ST_MAN', 7900.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (123, '珊塔', '沃尔曼', 'SVOLLMAN', '650.123.4234', '1997-10-10', 'ST_MAN', 6500.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (124, '凯文', '莫尔戈斯', 'KMOURGOS', '650.123.5234', '1999-11-16', 'ST_MAN', 5800.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (125, '朱莉娅', '内耶尔', 'JNAYER', '650.124.1214', '1997-07-16', 'ST_CLERK', 3200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (126, '艾琳', '米基利内尼', 'IMIKKILI', '650.124.1224', '1998-09-28', 'ST_CLERK', 2700.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (127, '詹姆斯', '兰德里', 'JLANDRY', '650.124.1334', '1999-01-14', 'ST_CLERK', 2400.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (128, '史蒂文', '马克尔', 'SMARKLE', '650.124.1434', '2000-03-08', 'ST_CLERK', 2200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (129, '劳拉', '比索特', 'LBISSOT', '650.124.5234', '1997-08-20', 'ST_CLERK', 3300.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (130, '莫兹', '阿特金森', 'MATKINSO', '650.124.6234', '1997-10-30', 'ST_CLERK', 2800.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (131, '詹姆斯', '马洛', 'JAMRLOW', '650.124.7234', '1997-02-16', 'ST_CLERK', 2500.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (132, 'TJ', '奥尔森', 'TJOLSON', '650.124.8234', '1999-04-10', 'ST_CLERK', 2100.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (133, '贾森', '马林', 'JMALLIN', '650.127.1934', '1996-06-14', 'ST_CLERK', 3300.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (134, '迈克尔', '罗杰斯', 'MROGERS', '650.127.1834', '1998-08-26', 'ST_CLERK', 2900.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (135, '基', '吉', 'KGEE', '650.127.1734', '1999-12-12', 'ST_CLERK', 2400.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (136, '海泽尔', '菲尔坦克', 'HPHILTAN', '650.127.1634', '2000-02-06', 'ST_CLERK', 2200.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (137, '伦斯克', '拉德维格', 'RLADWIG', '650.121.1234', '1995-07-14', 'ST_CLERK', 3600.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (138, '斯蒂芬', '斯泰尔斯', 'SSTILES', '650.121.2034', '1997-10-26', 'ST_CLERK', 3200.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (139, '约翰', '西奥', 'JSEO', '650.121.2019', '1998-02-12', 'ST_CLERK', 2700.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (140, '乔舒亚', '帕特尔', 'JPATEL', '650.121.1834', '1998-04-06', 'ST_CLERK', 2500.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (141, '特蕾娜', '拉杰斯', 'TRAJS', '650.121.8009', '1995-10-17', 'ST_CLERK', 3500.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (142, '柯蒂斯', '戴维斯', 'CDAVIES', '650.121.2994', '1997-01-29', 'ST_CLERK', 3100.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (143, '兰德尔', '马托斯', 'RMATOS', '650.121.2874', '1998-03-15', 'ST_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (144, '彼得', '瓦加斯', 'PVARGAS', '650.121.2004', '1998-07-09', 'ST_CLERK', 2500.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (145, '约翰', '罗素', 'JRUSSEL', '011.44.1344.429268', '1996-10-01', 'SA_MAN', 14000.00, 0.40, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (146, '卡伦', '帕特纳斯', 'KPARTNER', '011.44.1344.467268', '1997-01-05', 'SA_MAN', 13500.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (147, '阿尔贝托', '埃拉苏里斯', 'AERRAZUR', '011.44.1344.429278', '1997-03-10', 'SA_MAN', 12000.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (148, '杰拉德', '坎布劳特', 'GCAMBRAU', '011.44.1344.619268', '1999-10-15', 'SA_MAN', 11000.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (149, '埃莱妮', '兹洛特基', 'EZLOTKEY', '011.44.1344.429018', '2000-01-29', 'SA_MAN', 10500.00, 0.20, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (150, '彼得', '塔克', 'PTUCKER', '011.44.1344.129268', '1997-01-30', 'SA_REP', 10000.00, 0.30, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (151, '大卫', '伯恩斯坦', 'DBERNSTE', '011.44.1344.345268', '1997-03-24', 'SA_REP', 9500.00, 0.25, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (152, '彼得', '霍尔', 'PHALL', '011.44.1344.478968', '1997-08-20', 'SA_REP', 9000.00, 0.25, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (153, '克里斯托弗', '奥尔森', 'COLSEN', '011.44.1344.498718', '1998-03-30', 'SA_REP', 8000.00, 0.20, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (154, '娜妮特', '坎布劳特', 'NCAMBRAU', '011.44.1344.987668', '1998-12-09', 'SA_REP', 7500.00, 0.20, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (155, '奥利弗', '图沃尔特', 'OTUVAULT', '011.44.1344.486508', '1999-11-23', 'SA_REP', 7000.00, 0.15, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (156, '詹妮特', '金', 'JKING', '011.44.1345.429268', '1996-01-30', 'SA_REP', 10000.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (157, '帕特里克', '萨利', 'PSULLY', '011.44.1345.929268', '1996-03-04', 'SA_REP', 9500.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (158, '艾伦', '麦克尤恩', 'AMCEWEN', '011.44.1345.829268', '1996-08-01', 'SA_REP', 9000.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (159, '林赛', '史密斯', 'LSMITH', '011.44.1345.729268', '1997-03-10', 'SA_REP', 8000.00, 0.30, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (160, '路易斯', '多兰', 'LDORAN', '011.44.1345.629268', '1997-12-15', 'SA_REP', 7500.00, 0.30, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (161, '萨拉特', '肖尔', 'SSEWALL', '011.44.1345.529268', '1998-11-03', 'SA_REP', 7000.00, 0.25, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (162, '克拉拉', '维什尼', 'CVISHNEY', '011.44.1346.129268', '1997-11-11', 'SA_REP', 10500.00, 0.25, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (163, '丹妮尔', '格林', 'DGREENE', '011.44.1346.229268', '1999-03-19', 'SA_REP', 9500.00, 0.15, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (164, '玛蒂亚', '马文斯', 'MMARVINS', '011.44.1346.329268', '2000-01-24', 'SA_REP', 7200.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (165, '大卫', '李', 'DLEE', '011.44.1346.529268', '2000-02-23', 'SA_REP', 6800.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (166, '桑达尔', '安迪', 'SANDE', '011.44.1346.629268', '2000-03-24', 'SA_REP', 6400.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (167, '阿米特', '班达', 'ABANDA', '011.44.1346.729268', '2000-04-21', 'SA_REP', 6200.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (168, '丽莎', '奥泽尔', 'LOZER', '011.44.1343.929268', '1997-03-11', 'SA_REP', 11500.00, 0.25, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (169, '哈里森', '布鲁姆', 'HBLOOM', '011.44.1343.829268', '1998-03-23', 'SA_REP', 10000.00, 0.20, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (170, '泰勒', '福克斯', 'TFOX', '011.44.1343.729268', '1998-01-24', 'SA_REP', 9600.00, 0.20, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (171, '威廉', '史密斯', 'WSMITH', '011.44.1343.629268', '1999-02-23', 'SA_REP', 7400.00, 0.15, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (172, '伊丽莎白', '贝茨', 'EBATES', '011.44.1343.529268', '1999-03-24', 'SA_REP', 7300.00, 0.15, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (173, '桑迪塔', '库马尔', 'SKUMAR', '011.44.1343.329268', '2000-04-21', 'SA_REP', 6100.00, 0.10, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (174, '艾伦', '阿贝尔', 'EABEL', '011.44.1644.429267', '1996-05-11', 'SA_REP', 11000.00, 0.30, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (175, '阿莉莎', '哈顿', 'AHUTTON', '011.44.1644.429266', '1997-03-19', 'SA_REP', 8800.00, 0.25, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (176, '乔纳森', '泰勒', 'JTAYLOR', '011.44.1644.429265', '1998-03-24', 'SA_REP', 8600.00, 0.20, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (177, '杰克', '利文斯顿', 'JLIVINGS', '011.44.1644.429264', '1998-04-23', 'SA_REP', 8400.00, 0.20, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (178, '金柏莉', '格兰特', 'KGRANT', '011.44.1644.429263', '1999-05-24', 'SA_REP', 7000.00, 0.15, 149, NULL); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (179, '查尔斯', '约翰逊', 'CJOHNSON', '011.44.1644.429262', '2000-01-04', 'SA_REP', 6200.00, 0.10, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (180, '温斯顿', '泰勒', 'WTAYLOR', '650.507.9876', '1998-01-24', 'SH_CLERK', 3200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (181, '简', '弗勒尔', 'JFLEAUR', '650.507.9877', '1998-02-23', 'SH_CLERK', 3100.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (182, '玛莎', '沙利文', 'MSULLIVA', '650.507.9878', '1999-06-21', 'SH_CLERK', 2500.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (183, '吉拉德', '格奥尼', 'GGEONI', '650.507.9879', '2000-02-03', 'SH_CLERK', 2800.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (184, '南迪塔', '萨尔钦德', 'NSARCHAN', '650.509.1876', '1996-01-27', 'SH_CLERK', 4200.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (185, '亚历克西斯', '布尔', 'ABULL', '650.509.2876', '1997-02-20', 'SH_CLERK', 4100.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (186, '朱莉娅', '戴林格', 'JDELLING', '650.509.3876', '1998-06-24', 'SH_CLERK', 3400.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (187, '安东尼', '卡布里奥', 'ACABRIO', '650.509.4876', '1999-02-07', 'SH_CLERK', 3000.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (188, '凯莉', '钟', 'KCHUNG', '650.505.1876', '1997-06-14', 'SH_CLERK', 3800.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (189, '詹妮弗', '迪利', 'JDILLY', '650.505.2876', '1997-08-13', 'SH_CLERK', 3600.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (190, '蒂莫西', '盖茨', 'TGATES', '650.505.3876', '1998-07-11', 'SH_CLERK', 2900.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (191, '兰达尔', '珀金斯', 'RPERKINS', '650.505.4876', '1999-12-19', 'SH_CLERK', 2500.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (192, '萨拉', '贝尔', 'SBELL', '650.501.1876', '1996-02-04', 'SH_CLERK', 4000.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (193, '布里特尼', '埃弗雷特', 'BEVERETT', '650.501.2876', '1997-03-03', 'SH_CLERK', 3900.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (194, '塞缪尔', '麦凯恩', 'SMCCAIN', '650.501.3876', '1998-07-01', 'SH_CLERK', 3200.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (195, '范斯', '琼斯', 'VJONES', '650.501.4876', '1999-03-17', 'SH_CLERK', 2800.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (196, '阿兰娜', '沃尔什', 'AWALSH', '650.507.9811', '1998-04-24', 'SH_CLERK', 3100.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (197, '凯文', '费尼', 'KFEENEY', '650.507.9822', '1998-05-23', 'SH_CLERK', 3000.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (198, '唐纳德', '奥康奈尔', 'DOCONNEL', '650.507.9833', '1999-06-21', 'SH_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (199, '道格拉斯', '格兰特', 'DGRANT', '650.507.9844', '2000-01-13', 'SH_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (200, '詹妮弗', '韦伦', 'JWHALEN', '515.123.4444', '1987-09-17', 'AD_ASST', 4400.00, NULL, 101, 10); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (201, '迈克尔', '哈滕斯坦', 'MHARTSTE', '515.123.5555', '1996-02-17', 'MK_MAN', 13000.00, NULL, 100, 20); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (202, '帕特', '费伊', 'PFAY', '603.123.6666', '1997-08-17', 'MK_REP', 6000.00, NULL, 201, 20); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (203, '苏珊', '马夫里斯', 'SMAVRIS', '515.123.7777', '1994-06-07', 'HR_REP', 6500.00, NULL, 101, 40); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (204, '赫尔曼', '拜尔', 'HBAER', '515.123.8888', '1994-06-07', 'PR_REP', 10000.00, NULL, 101, 70); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (205, '谢莉', '希金斯', 'SHIGGINS', '515.123.8080', '1994-06-07', 'AC_MGR', 12000.00, NULL, 101, 110); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (206, '威廉', '吉茨', 'WGIETZ', '515.123.8181', '1994-06-07', 'AC_ACCOUNT', 8300.00, NULL, 205, 110); -COMMIT; - --- ---------------------------- --- Table structure for job_grades --- ---------------------------- -DROP TABLE IF EXISTS `job_grades`; -CREATE TABLE `job_grades` ( - `grade_level` varchar(3) DEFAULT NULL, - `lowest_sal` int DEFAULT NULL, - `highest_sal` int DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of job_grades --- ---------------------------- -BEGIN; -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('A', 1000, 2999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('B', 3000, 5999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('C', 6000, 9999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('D', 10000, 14999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('E', 15000, 24999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('F', 25000, 40000); -COMMIT; - --- ---------------------------- --- Table structure for job_history --- ---------------------------- -DROP TABLE IF EXISTS `job_history`; -CREATE TABLE `job_history` ( - `employee_id` int NOT NULL, - `start_date` date NOT NULL, - `end_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `department_id` int DEFAULT NULL, - PRIMARY KEY (`employee_id`,`start_date`), - UNIQUE KEY `jhist_emp_id_st_date_pk` (`employee_id`,`start_date`), - KEY `jhist_job_fk` (`job_id`), - KEY `jhist_dept_fk` (`department_id`), - CONSTRAINT `jhist_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `jhist_emp_fk` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`employee_id`), - CONSTRAINT `jhist_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of job_history --- ---------------------------- -BEGIN; -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (101, '1989-09-21', '1993-10-27', 'AC_ACCOUNT', 110); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (101, '1993-10-28', '1997-03-15', 'AC_MGR', 110); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (102, '1993-01-13', '1998-07-24', 'IT_PROG', 60); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (114, '1998-03-24', '1999-12-31', 'ST_CLERK', 50); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (122, '1999-01-01', '1999-12-31', 'ST_CLERK', 50); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (176, '1998-03-24', '1998-12-31', 'SA_REP', 80); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (176, '1999-01-01', '1999-12-31', 'SA_MAN', 80); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (200, '1987-09-17', '1993-06-17', 'AD_ASST', 90); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (200, '1994-07-01', '1998-12-31', 'AC_ACCOUNT', 90); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (201, '1996-02-17', '1999-12-19', 'MK_REP', 20); -COMMIT; - --- ---------------------------- --- Table structure for jobs --- ---------------------------- -DROP TABLE IF EXISTS `jobs`; -CREATE TABLE `jobs` ( - `job_id` varchar(10) NOT NULL DEFAULT '', - `job_title` varchar(35) NOT NULL, - `min_salary` int DEFAULT NULL, - `max_salary` int DEFAULT NULL, - PRIMARY KEY (`job_id`), - UNIQUE KEY `job_id_pk` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of jobs --- ---------------------------- -BEGIN; -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AC_ACCOUNT', '公共会计师', 4200, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AC_MGR', '会计经理', 8200, 16000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_ASST', '行政助理', 3000, 6000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_PRES', '总裁', 20000, 40000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_VP', '行政副总裁', 15000, 30000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('FI_ACCOUNT', '会计', 4200, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('FI_MGR', '财务经理', 8200, 16000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('HR_REP', '人力资源代表', 4000, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('IT_PROG', '程序员', 4000, 10000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('MK_MAN', '市场营销经理', 9000, 15000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('MK_REP', '市场营销代表', 4000, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PR_REP', '公共关系代表', 4500, 10500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PU_CLERK', '采购文员', 2500, 5500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PU_MAN', '采购经理', 8000, 15000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SA_MAN', '销售经理', 10000, 20000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SA_REP', '销售代表', 6000, 12000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SH_CLERK', '发货文员', 2500, 5500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('ST_CLERK', '库存文员', 2000, 5000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('ST_MAN', '库存经理', 5500, 8500); -COMMIT; - --- ---------------------------- --- Table structure for locations --- ---------------------------- -DROP TABLE IF EXISTS `locations`; -CREATE TABLE `locations` ( - `location_id` int NOT NULL DEFAULT '0', - `street_address` varchar(40) DEFAULT NULL, - `postal_code` varchar(12) DEFAULT NULL, - `city` varchar(30) NOT NULL, - `state_province` varchar(25) DEFAULT NULL, - `country_id` char(2) DEFAULT NULL, - PRIMARY KEY (`location_id`), - UNIQUE KEY `loc_id_pk` (`location_id`), - KEY `loc_c_id_fk` (`country_id`), - CONSTRAINT `loc_c_id_fk` FOREIGN KEY (`country_id`) REFERENCES `countries` (`country_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of locations --- ---------------------------- -BEGIN; -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1000, '1297 Via Cola di Rie', '00989', '罗马', NULL, 'IT'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1100, '93091 Calle della Testa', '10934', '威尼斯', NULL, 'IT'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1200, '2017 Shinjuku-ku', '1689', '东京', '东京都', 'JP'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1300, '9450 Kamiya-cho', '6823', '广岛', NULL, 'JP'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1400, '2014 Jabberwocky Rd', '26192', '南湖', '德克萨斯', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1500, '2011 Interiors Blvd', '99236', '南旧金山', '加利福尼亚', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1600, '2007 Zagora St', '50090', '南布朗斯维克', '新泽西', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1700, '2004 Charade Rd', '98199', '西雅图', '华盛顿', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1800, '147 Spadina Ave', 'M5V 2L7', '多伦多', '安大略', 'CA'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1900, '6092 Boxwood St', 'YSW 9T2', '怀特霍斯', '育空', 'CA'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2000, '40-5-12 Laogianggen', '190518', '北京', NULL, 'CN'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2100, '1298 Vileparle (E)', '490231', '孟买', '马哈拉施特拉邦', 'IN'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2200, '12-98 Victoria Street', '2901', '悉尼', '新南威尔士', 'AU'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2300, '198 Clementi North', '540198', '新加坡', NULL, 'SG'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2400, '8204 Arthur St', NULL, '伦敦', NULL, 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2500, 'Magdalen Centre, The Oxford Science Park', 'OX9 9ZB', '牛津', '牛津', 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2600, '9702 Chester Road', '09629850293', '斯特雷福德', '曼彻斯特', 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2700, 'Schwanthalerstr. 7031', '80925', '慕尼黑', '巴伐利亚', 'DE'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2800, 'Rua Frei Caneca 1360 ', '01307-002', '圣保罗', '圣保罗', 'BR'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2900, '20 Rue des Corps-Saints', '1730', '日内瓦', '日内瓦', 'CH'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3000, 'Murtenstrasse 921', '3095', '伯尔尼', 'BE', 'CH'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3100, 'Pieter Breughelstraat 837', '3029SK', '乌得勒支', '乌得勒支', 'NL'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3200, 'Mariano Escobedo 9991', '11932', '墨西哥城', '联邦区', 'MX'); -COMMIT; - --- ---------------------------- --- Table structure for order --- ---------------------------- -DROP TABLE IF EXISTS `order`; -CREATE TABLE `order` ( - `order_id` int DEFAULT NULL, - `order_name` varchar(15) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of order --- ---------------------------- -BEGIN; -INSERT INTO `order` (`order_id`, `order_name`) VALUES (1, 'shkstart'); -INSERT INTO `order` (`order_id`, `order_name`) VALUES (2, 'tomcat'); -INSERT INTO `order` (`order_id`, `order_name`) VALUES (3, 'dubbo'); -COMMIT; - --- ---------------------------- --- Table structure for regions --- ---------------------------- -DROP TABLE IF EXISTS `regions`; -CREATE TABLE `regions` ( - `region_id` int NOT NULL, - `region_name` varchar(25) DEFAULT NULL, - PRIMARY KEY (`region_id`), - UNIQUE KEY `reg_id_pk` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of regions --- ---------------------------- -BEGIN; -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (1, '欧洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (2, '美洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (3, '亚洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (4, '中东和非洲'); -COMMIT; - --- ---------------------------- --- View structure for emp_details_view --- ---------------------------- -DROP VIEW IF EXISTS `emp_details_view`; -CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `emp_details_view` AS select `e`.`employee_id` AS `employee_id`,`e`.`job_id` AS `job_id`,`e`.`manager_id` AS `manager_id`,`e`.`department_id` AS `department_id`,`d`.`location_id` AS `location_id`,`l`.`country_id` AS `country_id`,`e`.`first_name` AS `first_name`,`e`.`last_name` AS `last_name`,`e`.`salary` AS `salary`,`e`.`commission_pct` AS `commission_pct`,`d`.`department_name` AS `department_name`,`j`.`job_title` AS `job_title`,`l`.`city` AS `city`,`l`.`state_province` AS `state_province`,`c`.`country_name` AS `country_name`,`r`.`region_name` AS `region_name` from (((((`employees` `e` join `departments` `d`) join `jobs` `j`) join `locations` `l`) join `countries` `c`) join `regions` `r`) where ((`e`.`department_id` = `d`.`department_id`) and (`d`.`location_id` = `l`.`location_id`) and (`l`.`country_id` = `c`.`country_id`) and (`c`.`region_id` = `r`.`region_id`) and (`j`.`job_id` = `e`.`job_id`)); - -SET FOREIGN_KEY_CHECKS = 1; -``` - -### 查询 - -```mysql -#第03章_基本的SELECT语句的课后练习 - -# 1.查询所有员工12个月的工资总和,并起别名为工资总和 - -#理解1:计算12月的基本工资 - -#SELECT sum(salary*12) as 工资总和 FROM employees; - -select sum(12*salary) from employees; - -#理解2:计算12月的基本工资和奖金 -# ifnull(原值,新值) 判断一个原值是否为null,如果原值是null,就用一个新值代替 - -select sum(salary*12+ifnull(salary*commission_pct*12,0)) from employees; - -# 2.查询employees表中去除重复的job_id以后的数据 -#去除重复 distinct - -select distinct job_id from employees; - -# 3.查询工资大于12000的员工姓名和工资 - -select first_name,salary from employees where salary>12000; - -# 4.查询员工号为176的员工的姓名和部门号 - -select first_name,department_id from employees where employee_id=176; - -# 5.显示表 departments 的结构,并查询其中的全部数据 - -desc departments; -select * from departments; - -# 第04章_运算符课后练习 - -# 1.选择工资不在5000到12000的员工的姓名和工资 - -select first_name,salary from employees where salary not between 5000 and 12000; - -# 2.选择在20或50号部门工作的员工姓名和部门号 - -select first_name,department_id from employees where department_id in (20,50); - -# 3.选择公司中没有管理者的员工姓名及job_id - -select first_name,job_id from employees where manager_id is null; - -# 4.选择公司中有奖金的员工姓名,工资和奖金级别 - -select employee_id,salary,grade_level from employees e left join job_grades j on e.salary between j.lowest_sal and j.highest_sal where commission_pct is not null; - -# 5.选择员工姓名的第三个字是 尔 的员工姓名 - -select * from employees where first_name like '__尔'; - -# 6.选择姓名中有 特 字和 尔 字的员工姓名 - -select * from employees where last_name like '%特%' and last_name like '%尔%'; - -# 7.显示出表 employees 表中 first_name 以 '尔'结尾的员工信息 - -select * from employees where first_name like '%尔'; - -# 8.显示出表 employees 部门编号在 80-100 之间的姓名、工种 - -select e.first_name,j.job_title from employees e left join jobs j on e.job_id=j.job_id where department_id between 80 and 100; - -# 9.显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、工资、管理者id - -select first_name,salary,manager_id from employees where manager_id in (100,101,110); - -#第05章_排序与分页的课后练习 - -#1. 查询员工的姓名和部门号和年薪,按年薪降序显示 --- order by 年薪 asc/desc - -select first_name,department_id,salary*12 from employees order by salary*12 desc; - -#2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据 - -select first_name,salary from employees where salary not between 8000 and 17000 order by salary desc limit 20,20; - -#3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序 - -select * from employees where email like '%e%' order by length(email) desc,department_id asc; - -# 第06章_多表查询的课后练习 - -# 1.显示所有员工的姓名,部门号和部门名称。 - -select first_name,e.department_id,department_name from employees e left join departments d on e.department_id=d.department_id; - -# 2.查询90号部门员工的job_id和90号部门的location_id - -select e.job_id,d.location_id from employees e left join departments d on e.department_id=d.department_id where e.department_id=90; - -# 3.选择所有 有奖金的员工 的 last_name , department_name , location_id , city - -select e.last_name,d.department_name,d.location_id,l.city from employees e left join departments d on e.department_id=d.department_id left join locations l on d.location_id=l.location_id where commission_pct is not null; - -# 4.选择city在 多伦多 工作的员工的 last_name , job_id , department_id , department_name - -select e.last_name,e.job_id,d.department_id,d.department_name from employees e left join departments d on e.department_id=d.department_id left join locations l on d.location_id=l.location_id where l.city='多伦多'; - -#sql92语法(自然连接): - -# 5.查询行政部门员工的部门名称、部门地址、姓名、工作、工资 - -select department_name,street_address,first_name,job_title,salary from jobs j,employees e,departments d,locations l where j.job_id=e.job_id and e.department_id=d.department_id and d.location_id=l.location_id and department_name='行政部'; - -# 6.显示所有员工的姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式 --- 员工姓名 员工编号 上级姓名 上级的员工编号 --- 德哈恩 102 金 100 - -select e.first_name,e.employee_id,s.last_name,s.employee_id from employees e inner join employees s on e.employee_id=s.employee_id; - -# 7.查询哪些部门没有员工 - -select department_name from departments d left join employees e on d.department_id=e.department_id where employee_id is null; - -# 8. 查询哪个城市没有部门 - -select city from departments d right join locations l on d.location_id=l.location_id where department_id is null; - -# 9. 查询部门名为 销售部 或 信息技术部 的员工信息 - -select e.* from departments d,employees e where d.department_id=e.department_id and d.department_name='销售部' or d.department_name='信息技术部'; - -# 第08章_聚合函数的课后练习 - -#2.查询公司员工工资的最大值,最小值,平均值,总和 - -select max(salary),min(salary),avg(salary),sum(salary) from employees; - -#3.查询各job_id的员工工资的最大值,最小值,平均值,总和 - -select job_id,max(salary),min(salary),avg(salary),sum(salary) from employees group by job_id; - -#4.选择各个job_id的员工人数 - -select job_id,count(employee_id) from employees group by job_id; - -# 5.查询员工最高工资和最低工资的差距 - -select max(salary)-min(salary) from employees; - -# 6.查询各个管理者 手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内 - -select manager_id,min(salary) from employees where manager_id is not null group by manager_id having min(salary)>6000; - -# 7.查询所有部门的名字,location_id,员工数量和平均工资,并按平均工资降序 - -select d.department_name,d.location_id,count(employee_id),avg(salary) from departments d left join employees e on d.department_id=e.department_id group by d.department_id order by avg(salary) desc; - -# 8.查询每个工种、每个部门的部门名、工种名和最低工资 - -select j.job_title,min(salary),department_name from jobs j left join employees e on j.job_id=e.job_id left join departments d on e.department_id=d.department_id group by j.job_id,d.department_id; - -# 第09章_子查询的课后练习 - -#1.查询和 兹洛特基 相同部门的员工姓名和工资 - -select * from employees where department_id =(select department_id from employees where last_name='兹洛特基') and salary=(select salary from employees where last_name='兹洛特基'); - -#2.查询工资比公司平均工资高的员工的员工号,姓名和工资。 - -select employee_id,first_name,salary from employees where salary>(select avg(salary) from employees); - -#3.选择工资大于所有JOB_ID = 'SA_MAN'的员工的工资的员工的last_name, job_id, salary - -select last_name,job_id,salary from employees where salary>(select max(salary) from employees where JOB_ID = 'SA_MAN'); - -#4.查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名 - -select employee_id,last_name from employees where department_id=(select department_id from employees where last_name like '%u%'); - -#5.查询部门的location_id为1700的部门的工作的员工的员工号 - -select first_name,employee_id from employees where department_id in (select department_id from departments where location_id=1700); - -#6.查询管理者是 金 的员工姓名和工资 - -select first_name,salary from employees where manager_id in (select manager_id from employees where last_name='金'); - -#7.查询工资最低的员工信息: last_name, salary - -select last_name,salary from employees where salary=(select min(salary) from employees); - -#8.查询平均工资最低的部门信息 - -#方式1: -# 部门最低工资=全司最低 - -select * from departments where department_id =(select department_id from employees group by department_id having avg(salary)=(select min(s) from (select avg(salary) s from employees group by department_id) a)); - -#方式2: -# 部门平均<= 公司所有平均 - -select * from departments where department_id=(select department_id from employees group by department_id having avg(salary)<=all(select avg(salary) from employees group by department_id)); - -#9.查询平均工资最低的部门信息和该部门的平均工资(相关子查询) -#方式:先查最低平均工资的部门,再根据其id去select中再子查询 - -select d.*,(select avg(salary) from employees where department_id=d.department_id) from departments d where department_id =(select department_id from employees group by department_id having avg(salary)=(select min(s) from (select avg(salary) s from employees group by department_id) a)); - -#10.查询平均工资最高的 job 信息 - -#方式1:平均工资=最大 - -select * from jobs where job_id=(select job_id from employees group by job_id having avg(salary)=(select max(s) from (select avg(salary) s from employees group by job_id) a)); - -#方式2:平均工资>=所有平均工资 - -select * from jobs where job_id=(select job_id from employees group by job_id having avg(salary)>=all(select avg(salary) from employees group by job_id)); - -#11.查询平均工资高于公司平均工资的部门有哪些? - -select department_id from employees where department_id is not null group by department_id having avg(salary)>(select avg(salary) from employees); - -#12.查询出公司中所有 manager 的详细信息 - -#方式1:自连接 自己连自己 - -select e.* from employees e inner join employees s on e.employee_id=s.manager_id; - -#方式2:子查询 -#员工编号=(管理员编号有哪些) - -select * from employees where employee_id=any(select distinct manager_id from employees); - -#13.各个部门中 最高工资中 最低的那个部门的 最低工资是多少? - -select min(salary) from employees group by department_id having max(salary)<=all(select max(salary) from employees group by department_id); - -#14.查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary - -select last_name,department_id,email,salary from employees where department_id = (select department_id from employees group by department_id having avg(salary)>=all(select avg(salary) from employees group by department_id)); - -#15. 查询部门的部门号,其中不包括job_id是"ST_CLERK"的部门号 - -select department_id from departments where department_id !=all(select department_id from employees where job_id='ST_CLERK'); - -#16. 选择所有没有管理者的员工的last_name - -select last_name from employees where manager_id is null; - -#17.查询员工号、姓名、雇用时间、工资,其中员工的管理者为 'De Haan' -#方式1: - -select employee_id,first_name,hire_date,salary from employees e where e.manager_id=(select employee_id from employees where first_name = 'De Haan'); - -#方式2: - -select employee_id, last_name, hire_date, salary from employees e where exists(select * from employees s where e.employee_id=s.manager_id and s.first_name='De Haan'); - -#18.查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资(相关子查询) - -#方式1:使用相关子查询 - -select employee_id,last_name,salary from employees e1 where salary > (select avg(salary) from employees e2 where e2.department_id = e1.department_id); - -#方式2:在FROM中声明子查询 - -select employee_id,last_name,salary from employees e1,(select department_id,AVG(salary) s from employees e2 group by department_id) a where e1.department_id = a.department_id and e1.salary > a.s; - -#19.查询每个部门下的部门人数大于 5 的部门名称(相关子查询) - -select department_name,department_id from departments d where 5 < (select count(*) from employees e where d.department_id = e.department_id); - -#20.查询每个国家下的部门个数大于 2 的国家编号(相关子查询) - -select country_id from locations l where 2 < (select count(*) from departments d where l.location_id=d.location_id); - -/* -子查询的编写技巧(或步骤):① 从里往外写 ② 从外往里写 - -如何选择? -① 如果子查询相对较简单,建议从外往里写。一旦子查询结构较复杂,则建议从里往外写 -② 如果是相关子查询的话,通常都是从外往里写。 - -*/ -``` - diff --git "a/06 \351\231\210\345\277\227\344\274\237/20230920.md" "b/06 \351\231\210\345\277\227\344\274\237/20230920.md" deleted file mode 100644 index 52ceb55..0000000 --- "a/06 \351\231\210\345\277\227\344\274\237/20230920.md" +++ /dev/null @@ -1,107 +0,0 @@ -# 笔记 - -#### RBAC:(Role-Based Access Control)基于角色的权限访问控制权限管制模型,目前权限的主流方案,核心为角色 - -数据库可以储存:业务代码,功能代码 - -User(用户):每个用户都有唯一的UID识别,并被授予不同的角色 - -Role(角色):不同角色具有不同的权限 - -Permission(权限):访问权限 - -用户-角色映射:用户和角色之间的映射关系 - -角色-权限映射:角色和权限之间的映射 - -### sku - -SKU 英文全称为Stock Keeping Unit,简称 SKU ,是产品入库后一种编码归类方法,也是库存控制的最小单位。一款商品,每个颜色,每个尺码,每一型号等都有出现一个 sku ,便于电商品牌识别商品。 - -### 作业 - -![image-20230920171301260](https://s2.loli.net/2023/09/21/9JDFtVnrSkCveOf.png) - -```mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-20 15:24:17 */ -/*==============================================================*/ - - -drop table if exists jurisdiction; - -drop table if exists personal; - -drop table if exists personal_role; - -drop table if exists role; - -drop table if exists role_jurisdiction; - -/*==============================================================*/ -/* Table: jurisdiction */ -/*==============================================================*/ -create table jurisdiction -( - jurisdiction_id int not null auto_increment, - jurisdiction_name varchar(50) not null, - primary key (jurisdiction_id) -); - -/*==============================================================*/ -/* Table: personal */ -/*==============================================================*/ -create table personal -( - personal_id int not null auto_increment, - personal_name varchar(11) not null, - personal_pwd varchar(11) not null, - primary key (personal_id) -); - -/*==============================================================*/ -/* Table: personal_role */ -/*==============================================================*/ -create table personal_role -( - role_id int not null, - personal_id int not null, - primary key (role_id, personal_id) -); - -/*==============================================================*/ -/* Table: role */ -/*==============================================================*/ -create table role -( - role_id int not null auto_increment, - role_name varchar(50) not null, - primary key (role_id) -); - -/*==============================================================*/ -/* Table: role_jurisdiction */ -/*==============================================================*/ -create table role_jurisdiction -( - jurisdiction_id int not null, - role_id int not null, - primary key (jurisdiction_id, role_id) -); - -alter table personal_role add constraint FK_personal_role foreign key (role_id) - references role (role_id) on delete restrict on update restrict; - -alter table personal_role add constraint FK_personal_role2 foreign key (personal_id) - references personal (personal_id) on delete restrict on update restrict; - -alter table role_jurisdiction add constraint FK_role_jurisdiction foreign key (jurisdiction_id) - references jurisdiction (jurisdiction_id) on delete restrict on update restrict; - -alter table role_jurisdiction add constraint FK_role_jurisdiction2 foreign key (role_id) - references role (role_id) on delete restrict on update restrict; - - -``` - diff --git "a/06 \351\231\210\345\277\227\344\274\237/20230921.md" "b/06 \351\231\210\345\277\227\344\274\237/20230921.md" deleted file mode 100644 index 0aa3b63..0000000 --- "a/06 \351\231\210\345\277\227\344\274\237/20230921.md" +++ /dev/null @@ -1,132 +0,0 @@ -### sku - -SKU是类似一款商品,每款都有出现一个SKU。一款商品有许多颜色,则是有多个SKU - -例如:一款手机,有白色,黑色,红色 - -### spu - -一般SPU 与SKU 是一对一,或者一对多的关系;如果一对多的话就是不同的规格 - -例如:spu比作商品的款,sku比作商品的数量 - -SPU指一个商品集合,一般来说就是一个集合链。一个服装的集合链会包括相似款式和不同的尺码,SKU则是最小品类单元,同一个款式的衣服不同的尺码也算不同的SKU。SKU多见于前台的商品编号,SPU多见于后台的商品管理 - - - -![image-20230921223126500](C:\Users\1761144610\AppData\Roaming\Typora\typora-user-images\image-20230921223126500.png) - - - - - -```mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-21 16:41:07 */ -/*==============================================================*/ - -CREATE DATABASE biao charset utf8; - -use biao; - -drop table if exists lan; - -drop table if exists property; - -drop table if exists sku; - -drop table if exists spu; - -drop table if exists valuez; - -/*==============================================================*/ -/* Table: lan */ -/*==============================================================*/ -create table lan -( - lan_id int not null auto_increment, - property_id int, - values_id int, - sku_id int, - primary key (lan_id) -); - -/*==============================================================*/ -/* Table: property */ -/*==============================================================*/ -create table property -( - property_id int not null auto_increment, - property_name varchar(10) not null, - primary key (property_id) -); - -/*==============================================================*/ -/* Table: sku */ -/*==============================================================*/ -create table sku -( - sku_id int not null auto_increment, - spu_id int, - sku_name varchar(20) not null, - sku_price decimal(8,1) not null, - sku_numb int not null, - primary key (sku_id) -); - -/*==============================================================*/ -/* Table: spu */ -/*==============================================================*/ -create table spu -( - spu_id int not null auto_increment, - spu_name varchar(50) not null, - spu_text text, - primary key (spu_id) -); - -/*==============================================================*/ -/* Table: valuez */ -/*==============================================================*/ -create table valuez -( - values_id int not null auto_increment, - values_name varchar(20) not null, - primary key (values_id) -); - -alter table lan add constraint FK_Relationship_1 foreign key (property_id) - references property (property_id) on delete restrict on update restrict; - -alter table lan add constraint FK_Relationship_2 foreign key (values_id) - references valuez (values_id) on delete restrict on update restrict; - -alter table lan add constraint FK_Relationship_3 foreign key (sku_id) - references sku (sku_id) on delete restrict on update restrict; - -alter table sku add constraint FK_Relationship_4 foreign key (spu_id) - references spu (spu_id) on delete restrict on update restrict; - - -``` - -```mysql -INSERT INTO `spu` (`spu_id`, `spu_name`, `spu_text`) VALUES (1, '红米50', '还不错哦!'); - -INSERT INTO `sku` (`sku_id`, `spu_id`, `sku_name`, `sku_price`, `sku_numb`) VALUES (1, 1, '红米 白色', 3450.0, 400); -INSERT INTO `sku` (`sku_id`, `spu_id`, `sku_name`, `sku_price`, `sku_numb`) VALUES (2, 1, '红米 黑色', 3452.0, 500); -INSERT INTO `sku` (`sku_id`, `spu_id`, `sku_name`, `sku_price`, `sku_numb`) VALUES (3, NULL, '红米 红色', 3333.0, 600); - -INSERT INTO `valuez` (`values_id`, `values_name`) VALUES (1, '红色'); -INSERT INTO `valuez` (`values_id`, `values_name`) VALUES (2, '黑色'); -INSERT INTO `valuez` (`values_id`, `values_name`) VALUES (3, '白色'); -INSERT INTO `valuez` (`values_id`, `values_name`) VALUES (4, '512'); -INSERT INTO `valuez` (`values_id`, `values_name`) VALUES (5, '252'); -INSERT INTO `valuez` (`values_id`, `values_name`) VALUES (6, '128'); - -INSERT INTO `property` (`property_id`, `property_name`) VALUES (1, '颜色'); -INSERT INTO `property` (`property_id`, `property_name`) VALUES (2, '内存'); - -``` - diff --git "a/06 \351\231\210\345\277\227\344\274\237/20230922.md" "b/06 \351\231\210\345\277\227\344\274\237/20230922.md" deleted file mode 100644 index 38ba81f..0000000 --- "a/06 \351\231\210\345\277\227\344\274\237/20230922.md" +++ /dev/null @@ -1,127 +0,0 @@ -## 数据库高级预习 - -当数据库复杂需要多条 SQL 语句查询时,可以使用存储过程去完成这个需求。 - -### 创建存储过程语法 - -使用 create procedure 语句创建存储过程 - -#### 声明语句结束符 - -```mysql -delimiter $$ - -delimiter // -``` - -#### 创建 mysql 存储过程、存储函数 - -```mysql -create procedure 存储过程名(参数) -``` - -#### 存储过程体 - -```mysql -create function 存储函数名(参数) -``` - -#### 参数类型有三种: - -```mysql -IN: 输入参数,该参数的值必须在调用该存储过程时指定,在存储过程内部使用, 不能返回。 - -缺省值是IN。 - -OUT:输出参数,该参数值的值可以在存储过程内部修改,并可返回。 - -INOUT:输入输出参数,该参数需要在调用时指定,并且可以返回。 -``` - -### 事务 - - 为了完成某个业务而对数据库进行一系列操作,这些操作要么全部成功,要么全部失败。 - -#### 事务的四个特性 - -原子性:事务包含的这一系列操作,要么全部成功,要么全部失败(由DBMS的事务管理子系统来实现)。 - -一致性:事务完成之后,不会将非法的数据写入数据库(由DBMS的完整性子系统执行测试任务)。 - -隔离性:多个事务可以在一定程度上并发执行(由DBMS的并发控制子系统实现)。 - -持久性:事务完成之后,数据要永久保存(一般会保存在硬盘上)(由DBMS的恢复管理子系统实现的)。 - -#### 隔离级别 - - 隔离级别从低到高依次是"读未提交"、“读已提交”、“可重复读取”和“序列化”,隔离级别越高,性能越低。mysql 数据库默认隔离级别是“可重复读取”,oracle是“读已提交”。数据库底层使用的“加锁”的机制来实现不同的隔离级别,包括对整个表加锁,对表中的行加锁。 - -### 视图 - -在已有的表或者视图上创建的虚拟表。 - -#### 创建视图 - -```mysql -create view 视图名 as select -``` - -注:可以对单表或者多表进行查询,数据库会将视图的定义保存下来。 - -可以对(单表)视图进行一些增删改查操作,这些操作会影响到原始的表。 - -#### 删除视图 - -```mysql -drop view 视图名 -``` - -### 索引 - - 为了提高查询的速度而在数据库端创建的一种排序的数据结构。 - - 注:索引类似于一本书的目录 - -#### 创建索引 - -```mysql -create index 索引名 on 表名(字段列表) -``` - -在经常作为查询条件的字段加索引,除此以外,还要在分组、过滤、排序及联合查询的字段上加索引。 - -#### 删除索引 - -```mysql -drop index 索引名 on 表名 -``` - -### 锁 - -共享锁(S锁,读锁)和排他锁(X锁,写锁)——行锁 - -``` -共享锁:若事务A 对某行数据加S锁,此时允许其他事务对该行数据加S锁,即可以有多个事务共同读取改行数 据,但是不允许其他事务对该数据加X锁 - -排他锁(X锁,写锁,独占锁):若事务A对某行数据加X锁,此时不允许其他事务对该行数据加任何锁 -``` - -数据库中 - -1. 数据库中进行增,删,改操作时,会自动给行添加排他锁,行数据添加上了排他锁,不允许其他事务对该行数据加任何锁 -2. 数据库中进行查(select)操作时,对数据不加任何锁 - -1. 给行数据手动添加共享锁: - - ```mysql - select ..from..lock in share mode - select..from .. for share - ``` - -2. 添加排他锁: - - ```mysql - select...from...for update - ``` - - \ No newline at end of file diff --git "a/06 \351\231\210\345\277\227\344\274\237/\346\215\225\350\216\267.PNG" "b/06 \351\231\210\345\277\227\344\274\237/\346\215\225\350\216\267.PNG" deleted file mode 100644 index 97896ba2e3d6760269933247109daa97095216fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127468 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 diff --git "a/07 \345\210\230\346\226\207\351\224\213/20230905\347\254\224\350\256\260\344\270\200.md" "b/07 \345\210\230\346\226\207\351\224\213/20230905\347\254\224\350\256\260\344\270\200.md" deleted file mode 100644 index 4431652..0000000 --- "a/07 \345\210\230\346\226\207\351\224\213/20230905\347\254\224\350\256\260\344\270\200.md" +++ /dev/null @@ -1,32 +0,0 @@ -### 理论知识普及 - - 大二:实际应用(实操)学习MySQL高级、MVC框架等。 - - - -大二下:1. node.js、vue.js 前端 简化开发,有UI框架配合。 - -​ 2.sppingBoot(Redis,webApi) - -​ (关系型 数据库)MongoDB:No-SQL,key-value键值对的形式存在。 - - - -大二下实训:1.Linux 服务器:NGINX - -​ 2.项目中可能实现的技术:中间件,签权,鉴别权限。 - -​ 3.小程序:uniapp移动端开发。 - - - -### 课后知识普及 - -### 1、技术栈: - -​ 一个项目要求用什么技术实现,可以称为技术选型(选方案)。 - -### 2、技能树: - -​ 一个人具备的技能。称为技术树(通俗来讲就一个人的天赋加点)。 - diff --git "a/07 \345\210\230\346\226\207\351\224\213/20230906\347\254\224\350\256\260\344\272\214.md" "b/07 \345\210\230\346\226\207\351\224\213/20230906\347\254\224\350\256\260\344\272\214.md" deleted file mode 100644 index 691202f..0000000 --- "a/07 \345\210\230\346\226\207\351\224\213/20230906\347\254\224\350\256\260\344\272\214.md" +++ /dev/null @@ -1,159 +0,0 @@ -### 数据库设计 - -关系是相互的:一个学生可以选多个课程;一个课程可以被多个学生选,必须引用第三张表。 - -表之间的关系: -1.一对一的关系:一个学生(学号,编号,身份证寒外键),只有一个身份证(身份证号) - 将其中任一表中的主键,放到另一个表当外健。 - -2.一对多的关系(多对一的关系):一个班级 (班级编号),有多个学生(学生编号)班级编号 - 将一所在的表的主键,放到多的表当外键。 - -3.多对多的关系:一个学生可以选修多门课程,一门课程可以被多个学生选修 - 必须第三张表,将前面两个表的主键放进来当外健。 - - - -数据库的设计方式: - -1.直观设计法 2.规范设计法 3.计算机辅助设计法 - - -### 什么是ER图? - -(1)概念 - ER图:实体关系图,简记E-R图,是指以实体、关系、属性三个基木概念概括数据的基木结构,从而描静态数据结构的概念模式。 - -(2)要素 - 3要素:实体、属性、和关系。 - -(3)表示 - 实体型: - 属性: - 1.用椭圆形或圆角矩形表示,与相应的实体连接起来; - 2.主属性名称下加下划线; - 联系(关系): - 1.用菱形表示,姜形框内写明联系的名称; - -​ 2.用线与实体相连,可标上联系的类型; -​ 3.联系也可以有自己的属性; -​ 4.用矩形表示,矩形框内写明实体名; - - - -~~~ sql -# 作业 - -~~~ mysql -CREATE DATABASE sc charset utf8; -use sc; -#院系表 -CREATE TABLE department( -d_id int primary KEY, -d_name VARCHAR(20) -); - -INSERT INTO department VALUES -(111,'软件工程学院'), -(112,'财经商贸学院'), -(113,'医疗医护学院'); - -# 专业表 -CREATE TABLE major( -m_id int PRIMARY KEY, -m_name VARCHAR(20), -d_id int, -foreign key(d_id) references department(d_id) -); - -INSERT into major VALUES -(11,'软件技术',111), -(22,'会计',112), -(33,'护理',113); -#班级表 -CREATE TABLE class( -cl_id int PRIMARY key, -cl_name VARCHAR(20), - grade VARCHAR(20), - m_id int, - FOREIGN key(m_id) REFERENCES major(m_id) -); - -insert into class values -(1,'软件技术2班','22级',11), -(2,'软件技术3班','21级',11), -(3,'软件技术4班','23级',11); -#教师表 -CREATE TABLE teacher( -t_id int PRIMARY key, -t_name VARCHAR(20), -t_sex VARCHAR(5) -); - -insert into teacher values -(1,'邹狠尾','男'), -(2,'温贵雯','男'), -(3,'徐永春','女'); -# 课程表 -CREATE TABLE courses( -c_id int PRIMARY key, -c_name VARCHAR(20), -t_id int, -FOREIGN KEY (t_id) REFERENCES teacher(t_id) -); -insert into courses VALUES -(1,'java',1), -(2,'html',2), -(3,'php',3); -# 学生表 -CREATE TABLE student( -s_id int PRIMARY key, -s_name VARCHAR(5), -s_sex VARCHAR(2), -c_id int, -FOREIGN key(c_id) REFERENCES class(c_id) -); - -insert into student values -(01,'小刘','男',1), -(02,'大刘','女',2), -(03,'老刘','女',3); -# 成绩表 -CREATE TABLE grades( -g_gr int, -s_id int, -c_id int, -FOREIGN KEY(s_id) REFERENCES student(s_id), -FOREIGN KEY(c_id) REFERENCES courses(c_id) -); - -INSERT into grades VALUES -(70,1,3), -(80,3,2), -(90,2,1); -#教室表 -CREATE TABLE classroom( -room_id int PRIMARY KEY, -room_name VARCHAR(20), -room_address VARCHAR(20) -); - - -insert into classroom values -(1,'实训八','望云楼'), -(2,'实训五','望云楼'), -(3,'实训三','望云楼'); -# 课程表 -CREATE TABLE curriculum( -room_id int, -cu_week VARCHAR(10), -cu_courseid int, -FOREIGN KEY(room_id) REFERENCES classroom(room_id) -); - -INSERT into curriculum VALUES -(1,'星期一',2), -(1,'星期一',3), -(1,'星期一',1); -~~~ - diff --git "a/07 \345\210\230\346\226\207\351\224\213/20230907\347\254\224\350\256\260\344\270\211.md" "b/07 \345\210\230\346\226\207\351\224\213/20230907\347\254\224\350\256\260\344\270\211.md" deleted file mode 100644 index 043a8b1..0000000 --- "a/07 \345\210\230\346\226\207\351\224\213/20230907\347\254\224\350\256\260\344\270\211.md" +++ /dev/null @@ -1,40 +0,0 @@ -### 数据库的范式 - -### 第一范式 - -要求字段的内容,不可再分割,为的是保证数据的原子性 - -例如:淘宝的地址信息,一个地址可以拆分为很多,省、市、区、街道和详细地址。 - -### 第二范式 - -要求在满足第一范式的基础上,还要满足数据表里的每一条数据记录,都是可唯一标识的,要求非主键字段要完全依赖主键(非主键要依赖整个联合主键)而不能只依赖部分 - -例如:你的诞生一定离不开你爸妈。 - -举例1:成绩表(学号,课程,成绩)学号和课程合在一起才能构成主键,才能知道成绩多少。 - -举例2:比赛表(球员编号、姓名、年龄、比赛编号、比赛时间、比赛场地、得分) - -姓名和年龄只依赖球员编号 - -比赛时间和比赛场地只依赖比赛编号 - -得分依赖于球员编号和比赛编号 - -所以按照第二范式要分成三个表 - -### 第三范式 - -满足第二范式的前提下,要求非主键属性要直接依赖于主键 - -举例:(学号、姓名、班级、班主任)这个表中,学号是主键,它可以确认姓名、班级、班主任,符合了第二范式,但是在非主键字段中,我们也可以通过班级推导出该班级的班主任,所以它是不符合第三范式的 - -拆分成两个表 - -学号、姓名、班级 - -班级、班主任 - -通过把班级与班主任的映射关系另外做成一张映射表,我们就成功地消除了表中的传递依赖了 - diff --git "a/07 \345\210\230\346\226\207\351\224\213/20230908 powerdesigner.md" "b/07 \345\210\230\346\226\207\351\224\213/20230908 powerdesigner.md" deleted file mode 100644 index 6735b56..0000000 --- "a/07 \345\210\230\346\226\207\351\224\213/20230908 powerdesigner.md" +++ /dev/null @@ -1,131 +0,0 @@ -## powerdesigner - -第一步:创建概念模型图(CDM)以用户角度 - -第二步:转换逻辑模型图(LDM)以计算机角度 - -第三步:转换物理模型图(PDM)以数据角度 - -第四步:生成DDL - -表与表的关系:一个表里的几条记录对应另一个表的几条记录 - -数据库范式在实际中不会完全按照范式,根据需求实际操作 - -~~~java -## 题目:图书管理系统 - -```mysql -create database lib charset utf8; - -use lib; - -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/10 18:25:47 */ -/*==============================================================*/ - - -drop table if exists administrator; - -drop table if exists book; - -drop table if exists reader; - -drop table if exists stacks; - -drop table if exists system; - -drop table if exists type; - -/*==============================================================*/ -/* Table: administrator */ -/*==============================================================*/ -create table administrator -( - a_id char(10) not null, - a_name char(5) not null, - primary key (a_id) -); - -/*==============================================================*/ -/* Table: book */ -/*==============================================================*/ -create table book -( - b_id int not null auto_increment, - b_name varchar(10) not null, - author varchar(5) not null, - publication varchar(10) not null, - b_num int not null, - primary key (b_id) -); - -/*==============================================================*/ -/* Table: reader */ -/*==============================================================*/ -create table reader -( - r_id int not null auto_increment, - r_name char(5) not null, - r_sex char(1) not null, - r_age int not null, - primary key (r_id) -); - -/*==============================================================*/ -/* Table: stacks */ -/*==============================================================*/ -create table stacks -( - s_id int not null auto_increment, - b_id int not null, - s_name varchar(5) not null, - s_address varchar(5) not null, - primary key (s_id) -); - -/*==============================================================*/ -/* Table: system */ -/*==============================================================*/ -create table system -( - date_id int not null auto_increment, - b_id int not null, - r_id int not null, - a_id char(10) not null, - borrow date not null, - `return` date not null, - actual date, - primary key (date_id) -); - -/*==============================================================*/ -/* Table: type */ -/*==============================================================*/ -create table type -( - type_id int not null auto_increment, - b_id int not null, - type_name varchar(3) not null, - primary key (type_id) -); - -alter table stacks add constraint FK_deposit foreign key (b_id) - references book (b_id) on delete restrict on update restrict; - -alter table system add constraint FK_Relationship_3 foreign key (b_id) - references book (b_id) on delete restrict on update restrict; - -alter table system add constraint FK_Relationship_4 foreign key (r_id) - references reader (r_id) on delete restrict on update restrict; - -alter table system add constraint FK_manage foreign key (a_id) - references administrator (a_id) on delete restrict on update restrict; - -alter table type add constraint FK_categorize foreign key (b_id) - references book (b_id) on delete restrict on update restrict; - - -``` -~~~ \ No newline at end of file diff --git "a/07 \345\210\230\346\226\207\351\224\213/20230910\347\254\224\350\256\260\345\233\233.md" "b/07 \345\210\230\346\226\207\351\224\213/20230910\347\254\224\350\256\260\345\233\233.md" deleted file mode 100644 index 28b4f3c..0000000 --- "a/07 \345\210\230\346\226\207\351\224\213/20230910\347\254\224\350\256\260\345\233\233.md" +++ /dev/null @@ -1,132 +0,0 @@ -# 笔记 - -1、创建概念模型(类似ER图)CDM(用户角度) -2、转换成逻辑模型LDM(计算机角度) -3、转换成物理模型PDM(数据库角度) -4、生成DDL - -```java - -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/11 14:58:55 */ -/*==============================================================*/ -CREATE database books charset utf8; -use books; - -drop table if exists administrators; - -drop table if exists author; - -drop table if exists book; - -drop table if exists bowor; - -drop table if exists press; - -drop table if exists readers; - -drop table if exists stack; - -/*==============================================================*/ -/* Table: administrators */ -/*==============================================================*/ -create table administrators -( - ad_id int not null, - ad_name char(10) not null, - ad_sex char(1) not null, - ad_duties char(10) not null, - primary key (ad_id) -); - -/*==============================================================*/ -/* Table: author */ -/*==============================================================*/ -create table author -( - auth_id int not null, - auth_wprks char(10) not null, - auth_price int not null, - primary key (auth_id) -); - -/*==============================================================*/ -/* Table: book */ -/*==============================================================*/ -create table book -( - bo_id int not null, - st_id int not null, - auth_id int not null, - pr_id int not null, - bo_name char(20) not null, - bo_price int not null, - bo_author char(10) not null, - primary key (bo_id) -); - -/*==============================================================*/ -/* Table: bowor */ -/*==============================================================*/ -create table bowor -( - re_id int not null, - bo_id int not null, - primary key (re_id, bo_id) -); - -/*==============================================================*/ -/* Table: press */ -/*==============================================================*/ -create table press -( - pr_id int not null, - pr_name char(10) not null, - pr_date date not null, - primary key (pr_id) -); - -/*==============================================================*/ -/* Table: readers */ -/*==============================================================*/ -create table readers -( - re_id int not null, - re_name char(20) not null, - re_age int not null, - re_sex char(1) not null, - primary key (re_id) -); - -/*==============================================================*/ -/* Table: stack */ -/*==============================================================*/ -create table stack -( - st_id int not null, - ad_id int not null, - st_address char(20) not null, - st_area int not null, - st_tel int not null, - primary key (st_id) -); - -alter table book add constraint FK_deposit foreign key (st_id) - references stack (st_id) on delete restrict on update restrict; - -alter table book add constraint FK_have foreign key (pr_id) - references press (pr_id) on delete restrict on update restrict; - -alter table book add constraint FK_work foreign key (auth_id) - references author (auth_id) on delete restrict on update restrict; - -alter table bowor add constraint FK_bowor foreign key (re_id) - references readers (re_id) on delete restrict on update restrict; - -alter table bowor add constraint FK_bowor2 foreign key (bo_id) - references book (bo_id) on delete restrict on update restrict; - -alter table stack add constraint FK_Relationship_5 foreign key (ad_id) - references administrators (ad_id) on delete restrict on update restrict; -``` \ No newline at end of file diff --git "a/07 \345\210\230\346\226\207\351\224\213/20230912\347\224\265\345\275\261\347\256\241\347\220\206.md" "b/07 \345\210\230\346\226\207\351\224\213/20230912\347\224\265\345\275\261\347\256\241\347\220\206.md" deleted file mode 100644 index 6db6cd2..0000000 --- "a/07 \345\210\230\346\226\207\351\224\213/20230912\347\224\265\345\275\261\347\256\241\347\220\206.md" +++ /dev/null @@ -1,202 +0,0 @@ - - -### 电影管理 - -``` java -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-12 11:33:30 */ -/*==============================================================*/ - - -drop table if exists actor; - -drop table if exists director; - -drop table if exists film; - -drop table if exists "film language"; - -drop table if exists "film review"; - -drop table if exists "film types"; - -drop table if exists film_region; - -drop table if exists language; - -drop table if exists protagonist; - -drop table if exists region; - -drop table if exists scriptwriter; - -drop table if exists type; - -/*==============================================================*/ -/* Table: actor */ -/*==============================================================*/ -create table actor -( - actor_id int not null auto_increment, - actor_name varchar(4) not null, - primary key (actor_id) -); - -/*==============================================================*/ -/* Table: director */ -/*==============================================================*/ -create table director -( - film_id int not null, - actor_id int not null, - primary key (film_id, actor_id) -); - -/*==============================================================*/ -/* Table: film */ -/*==============================================================*/ -create table film -( - film_id int not null auto_increment, - film_name varchar(10) not null, - film_date date not null, - film_time time not null, - primary key (film_id) -); - -/*==============================================================*/ -/* Table: "film language" */ -/*==============================================================*/ -create table "film language" -( - film_id int not null, - lgg_id char(10) not null, - primary key (film_id, lgg_id) -); - -/*==============================================================*/ -/* Table: "film review" */ -/*==============================================================*/ -create table "film review" -( - fr_id char(10) not null, - film_id int not null, - fr_grade char(1) not null, - fr_title varchar(10), - fr_text text, - primary key (fr_id) -); - -/*==============================================================*/ -/* Table: "film types" */ -/*==============================================================*/ -create table "film types" -( - film_id int not null, - type_id int not null, - primary key (film_id, type_id) -); - -/*==============================================================*/ -/* Table: film_region */ -/*==============================================================*/ -create table film_region -( - film_id int not null, - region_id int not null, - primary key (film_id, region_id) -); - -/*==============================================================*/ -/* Table: language */ -/*==============================================================*/ -create table language -( - lgg_id char(10) not null, - lgg_name varchar(10) not null, - primary key (lgg_id) -); - -/*==============================================================*/ -/* Table: protagonist */ -/*==============================================================*/ -create table protagonist -( - film_id int not null, - actor_id int not null, - primary key (film_id, actor_id) -); - -/*==============================================================*/ -/* Table: region */ -/*==============================================================*/ -create table region -( - region_id int not null auto_increment, - region_name varchar(10) not null, - primary key (region_id) -); - -/*==============================================================*/ -/* Table: scriptwriter */ -/*==============================================================*/ -create table scriptwriter -( - film_id int not null, - actor_id int not null, - primary key (film_id, actor_id) -); - -/*==============================================================*/ -/* Table: type */ -/*==============================================================*/ -create table type -( - type_id int not null auto_increment, - type_name varchar(2) not null, - primary key (type_id) -); - -alter table director add constraint FK_director foreign key (film_id) - references film (film_id) on delete restrict on update restrict; - -alter table director add constraint FK_director2 foreign key (actor_id) - references actor (actor_id) on delete restrict on update restrict; - -alter table "film language" add constraint "FK_film language" foreign key (film_id) - references film (film_id) on delete restrict on update restrict; - -alter table "film language" add constraint "FK_film language2" foreign key (lgg_id) - references language (lgg_id) on delete restrict on update restrict; - -alter table "film review" add constraint "FK_movie evaluation" foreign key (film_id) - references film (film_id) on delete restrict on update restrict; - -alter table "film types" add constraint "FK_film types" foreign key (film_id) - references film (film_id) on delete restrict on update restrict; - -alter table "film types" add constraint "FK_film types2" foreign key (type_id) - references type (type_id) on delete restrict on update restrict; - -alter table film_region add constraint FK_film_region foreign key (film_id) - references film (film_id) on delete restrict on update restrict; - -alter table film_region add constraint FK_film_region2 foreign key (region_id) - references region (region_id) on delete restrict on update restrict; - -alter table protagonist add constraint FK_protagonist foreign key (film_id) - references film (film_id) on delete restrict on update restrict; - -alter table protagonist add constraint FK_protagonist2 foreign key (actor_id) - references actor (actor_id) on delete restrict on update restrict; - -alter table scriptwriter add constraint FK_scriptwriter foreign key (film_id) - references film (film_id) on delete restrict on update restrict; - -alter table scriptwriter add constraint FK_scriptwriter2 foreign key (actor_id) - references actor (actor_id) on delete restrict on update restrict; - - -``` - diff --git "a/07 \345\210\230\346\226\207\351\224\213/20230913\345\214\273\347\224\237\350\215\257\345\223\201\347\227\205\344\272\272.md" "b/07 \345\210\230\346\226\207\351\224\213/20230913\345\214\273\347\224\237\350\215\257\345\223\201\347\227\205\344\272\272.md" deleted file mode 100644 index a8bf9f1..0000000 --- "a/07 \345\210\230\346\226\207\351\224\213/20230913\345\214\273\347\224\237\350\215\257\345\223\201\347\227\205\344\272\272.md" +++ /dev/null @@ -1,110 +0,0 @@ -````java - -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/13 23:37:23 */ -/*==============================================================*/ - -create database hospital charset utf8; -use hospital; - -drop table if exists department; - -drop table if exists doctor; - -drop table if exists drug; - -drop table if exists lookpatient; - -drop table if exists patient; - -drop table if exists patientEat; - -/*==============================================================*/ -/* Table: department */ -/*==============================================================*/ -create table department -( - doctor_id int not null, - department_id int not null auto_increment, - department_name varchar(10) not null, - department_tel int not null, - primary key (department_id) -); - -/*==============================================================*/ -/* Table: doctor */ -/*==============================================================*/ -create table doctor -( - doctor_id int not null auto_increment, - doctor_name varchar(10) not null, - doctor_age int not null, - doctor_sex char(1) not null, - primary key (doctor_id) -); - -/*==============================================================*/ -/* Table: drug */ -/*==============================================================*/ -create table drug -( - drug_id int not null auto_increment, - drug_name varchar(10) not null, - drug_price int not null, - drug_category varchar(10) not null, - primary key (drug_id) -); - -/*==============================================================*/ -/* Table: lookpatient */ -/*==============================================================*/ -create table lookpatient -( - doctor_id int not null, - patient_id int not null, - primary key (doctor_id, patient_id) -); - -/*==============================================================*/ -/* Table: patient */ -/*==============================================================*/ -create table patient -( - patient_id int not null auto_increment, - patient_name varchar(10) not null, - patient_age int not null, - patient_sex char(1) not null, - patient_sfz int not null, - patient_tel int not null, - primary key (patient_id) -); - -/*==============================================================*/ -/* Table: patientEat */ -/*==============================================================*/ -create table patientEat -( - drug_id int not null, - patient_id int not null, - primary key (drug_id, patient_id) -); - -alter table department add constraint FK_employ foreign key (doctor_id) - references doctor (doctor_id) on delete restrict on update restrict; - -alter table lookpatient add constraint FK_lookpatient foreign key (doctor_id) - references doctor (doctor_id) on delete restrict on update restrict; - -alter table lookpatient add constraint FK_lookpatient2 foreign key (patient_id) - references patient (patient_id) on delete restrict on update restrict; - -alter table patientEat add constraint FK_patientEat foreign key (drug_id) - references drug (drug_id) on delete restrict on update restrict; - -alter table patientEat add constraint FK_patientEat2 foreign key (patient_id) - references patient (patient_id) on delete restrict on update restrict; -``` - -```` - diff --git "a/07 \345\210\230\346\226\207\351\224\213/20230917\351\224\200\345\224\256\346\261\275\350\275\246\351\241\276\345\256\242.md" "b/07 \345\210\230\346\226\207\351\224\213/20230917\351\224\200\345\224\256\346\261\275\350\275\246\351\241\276\345\256\242.md" deleted file mode 100644 index f1d2bee..0000000 --- "a/07 \345\210\230\346\226\207\351\224\213/20230917\351\224\200\345\224\256\346\261\275\350\275\246\351\241\276\345\256\242.md" +++ /dev/null @@ -1,203 +0,0 @@ -### 笔记 - - - -1.查询特定销售员的销售记录 -2.查找销售记录中销售价格最高的汽车 -3.统计某个销售员的销售总额 -4.根据客户信息查询其购买过的汽车 -5.分析特定品牌汽车的销售情况,统计每个品牌的销售数量和总销售额 -6.检索特定日期范围内的销售了哪些汽车 -7.查找某车型的销售历史。 -8.统计每个销售员的销售数量 - - - -~~~ java -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-15 08:55:58 */ -/*==============================================================*/ - -create database no_money_car charset utf8; - -use no_money_car; - -drop table if exists admin; - -drop table if exists car; - -drop table if exists car_brand; - -drop table if exists car_type; - -drop table if exists guke; - -drop table if exists xiaoshou; - -/*==============================================================*/ -/* Table: car_brand */ -/*==============================================================*/ -create table car_brand -( - car_brand_id int not null auto_increment, - car_brand_name varchar(20) not null, - primary key (car_brand_id) -); - -insert into car_brand values -(0,'宝马'), -(0,'大众'), -(0,'奔驰'), -(0,'玛莎拉蒂'); - -/*==============================================================*/ -/* Table: car_type */ -/*==============================================================*/ -create table car_type -( - car_type_id int not null auto_increment, - car_type_name varchar(10) not null, - primary key (car_type_id) -); - -insert into car_type values -(0,'SUV'), -(0,'轿车'), -(0,'货车'), -(0,'跑车'); - -/*==============================================================*/ -/* Table: car */ -/*==============================================================*/ -create table car -( - car_id int not null auto_increment, - car_type_id int, - car_brand_id int, - car_name varchar(20) not null, - car_money numeric(8,1) not null, - primary key (car_id) -); - -insert into car values -(0,4,4,'B24',8851507.0), -(0,1,1,'A57',6505841.0), -(0,2,3,'蹦蹦',3548060.0), -(0,2,1,'486',7516152.0); - -/*==============================================================*/ -/* Table: guke */ -/*==============================================================*/ -create table guke -( - guke_id int not null auto_increment, - guke_name varchar(6) not null, - guke_tel varchar(11) not null, - primary key (guke_id) -); - -insert into guke values -(0,'刘总','15825681476'), -(0,'张总','18813681156'), -(0,'周总','17447681479'), -(0,'笑总','14563681278'); - -/*==============================================================*/ -/* Table: xiaoshou */ -/*==============================================================*/ -create table xiaoshou -( - xiaoshou_id int not null auto_increment, - xiaoshou_name varchar(6) not null, - xiaoshou_tel char(11) not null, - primary key (xiaoshou_id) -); - -insert into xiaoshou values -(0,'马量','16573821841'), -(0,'司马易','13828921841'), -(0,'孙武空','12815824841'); - -/*==============================================================*/ -/* Table: admin */ -/*==============================================================*/ -create table admin -( - admin_id int not null auto_increment, - xiaoshou_id int, - guke_id int, - car_id int, - admin_date date not null, - primary key (admin_id) -); - -insert into admin values -(0,1,1,1,'2022-9-4'), -(0,3,4,3,'2022-9-3'), -(0,3,2,2,'2022-9-3'), -(0,1,1,3,'2022-9-5'); - --- 1.查询特定销售员的销售记录 - -select * from xiaoshou x -join admin a on x.xiaoshou_id=a.xiaoshou_id -join car c on c.car_id=a.car_id -join car_type t on c.car_type_id=t.car_type_id -join car_brand b on c.car_brand_id=b.car_brand_id -where xiaoshou_name='孙武空'; - - -- 2.查找销售记录中销售价格最高的汽车 - -select max(car_money) from car c; - - -- 3.统计某个销售员的销售总额 - -select sum(car_money) from xiaoshou x -join admin a on x.xiaoshou_id=a.xiaoshou_id -join car c on c.car_id=a.car_id where xiaoshou_name='孙武空'; - - -- 4.根据客户信息查询其购买过的汽车 - -select * from guke g -left join admin a on g.guke_id=a.guke_id -left join car c on a.car_id=c.car_id; - - -- 5.分析特定品牌汽车的销售情况,统计每个品牌的销售数量和总销售额 - -select car_brand_name,count(car_money),sum(car_money) from car_brand b -left join car c on b.car_brand_id=c.car_brand_id group by b.car_brand_id; - - -- 6.检索特定日期范围内的销售了哪些汽车 - -select car_name from admin a -left join car c on a.car_id=c.car_id where admin_date='2022-09-03'; - - -- 7.查找某车型的销售历史。 - -select car_name,admin_date from car c -left join admin a on c.car_id=a.car_id; - - -- 8.统计每个销售员的销售数量 - -select xiaoshou_name,count(car_name) from xiaoshou x -left join admin a on x.xiaoshou_id=a.xiaoshou_id -left join car c on a.car_id=c.car_id group by x.xiaoshou_id; - -alter table admin add constraint FK_sale foreign key (car_id) - references car (car_id) on delete restrict on update restrict; - -alter table admin add constraint FK_select foreign key (guke_id) - references guke (guke_id) on delete restrict on update restrict; - -alter table admin add constraint FK_sell foreign key (xiaoshou_id) - references xiaoshou (xiaoshou_id) on delete restrict on update restrict; - -alter table car add constraint FK_brand foreign key (car_brand_id) - references car_brand (car_brand_id) on delete restrict on update restrict; - -alter table car add constraint FK_classify foreign key (car_type_id) - references car_type (car_type_id) on delete restrict on update restrict; - -~~~ - diff --git "a/07 \345\210\230\346\226\207\351\224\213/20230919MySQL\345\244\215\344\271\240.md" "b/07 \345\210\230\346\226\207\351\224\213/20230919MySQL\345\244\215\344\271\240.md" deleted file mode 100644 index 8e2e00d..0000000 --- "a/07 \345\210\230\346\226\207\351\224\213/20230919MySQL\345\244\215\344\271\240.md" +++ /dev/null @@ -1,764 +0,0 @@ -## mysql复习 - -如果值是null,那么所有null参与运算,返回的结果也都是null - -所以遇上null,却又必须让它参与运算,就使用 ifnull (原值,新值) - -这个函数的作用,如果原值是null,就用新值代替,如果原值不null,就保持原值 - -limit 起始数,显示数 - -desc 库名:显示表结构 - -length(email):email的字节长度 - -#### 自然连接 - -表,表 where 字段=字段 and 字段=字段 - -#### 联表区间 - -表 left join 表 on 表.字段 between 表.字段 and 表.字段(不支持别名) - -#### 自连接 - -inner join - -not in(条件,条件) - -!(between 20 and 50) - - - -~~~java -### 建库建表 - -```mysql -create database db1 charset utf8; - -use db1; -/* - Navicat Premium Data Transfer - - Source Server : local - Source Server Type : MySQL - Source Server Version : 80034 (8.0.34) - Source Host : localhost:3306 - Source Schema : mxdxdb - - Target Server Type : MySQL - Target Server Version : 80034 (8.0.34) - File Encoding : 65001 - - Date: 17/09/2023 22:21:02 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for countries --- ---------------------------- -DROP TABLE IF EXISTS `countries`; -CREATE TABLE `countries` ( - `country_id` char(2) NOT NULL, - `country_name` varchar(40) DEFAULT NULL, - `region_id` int DEFAULT NULL, - PRIMARY KEY (`country_id`), - KEY `countr_reg_fk` (`region_id`), - CONSTRAINT `countr_reg_fk` FOREIGN KEY (`region_id`) REFERENCES `regions` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of countries --- ---------------------------- -BEGIN; -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('AR', '阿根廷', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('AU', '澳大利亚', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('BE', '比利时', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('BR', '巴西', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CA', '加拿大', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CH', '瑞士', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CN', '中国', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('DE', '德国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('DK', '丹麦', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('EG', '埃及', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('FR', '法国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('HK', '香港', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IL', '以色列', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IN', '印度', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IT', '意大利', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('JP', '日本', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('KW', '科威特', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('MX', '墨西哥', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('NG', '尼日利亚', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('NL', '荷兰', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('SG', '新加坡', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('UK', '英国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('US', '美国', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('ZM', '赞比亚', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('ZW', '津巴布韦', 4); -COMMIT; - --- ---------------------------- --- Table structure for departments --- ---------------------------- -DROP TABLE IF EXISTS `departments`; -CREATE TABLE `departments` ( - `department_id` int NOT NULL DEFAULT '0', - `department_name` varchar(30) NOT NULL, - `manager_id` int DEFAULT NULL, - `location_id` int DEFAULT NULL, - PRIMARY KEY (`department_id`), - UNIQUE KEY `dept_id_pk` (`department_id`), - KEY `dept_loc_fk` (`location_id`), - KEY `dept_mgr_fk` (`manager_id`), - CONSTRAINT `dept_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`location_id`), - CONSTRAINT `dept_mgr_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of departments --- ---------------------------- -BEGIN; -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (10, '行政部', 200, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (20, '营销部', 201, 1800); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (30, '采购部', 114, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (40, '人力资源部', 203, 2400); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (50, '物流部', 121, 1500); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (60, '信息技术部', 103, 1400); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (70, '公共关系部', 204, 2700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (80, '销售部', 145, 2500); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (90, '执行部门', 100, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (100, '财务部', 108, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (110, '会计部', 205, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (120, '财务部门1', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (130, '企业税务部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (140, '控制和信用部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (150, '股东服务部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (160, '员工福利部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (170, '制造部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (180, '建筑部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (190, '承包部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (200, '运营部', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (210, '信息技术支持部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (220, '网络运营中心', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (230, '信息技术帮助台', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (240, '政府销售部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (250, '零售销售部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (260, '招聘部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (270, '工资单部门', NULL, 1700); -COMMIT; - --- ---------------------------- --- Table structure for employees --- ---------------------------- -DROP TABLE IF EXISTS `employees`; -CREATE TABLE `employees` ( - `employee_id` int NOT NULL DEFAULT '0', - `first_name` varchar(20) DEFAULT NULL, - `last_name` varchar(25) NOT NULL, - `email` varchar(25) NOT NULL, - `phone_number` varchar(20) DEFAULT NULL, - `hire_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `salary` double(8,2) DEFAULT NULL, - `commission_pct` double(2,2) DEFAULT NULL, - `manager_id` int DEFAULT NULL, - `department_id` int DEFAULT NULL, - PRIMARY KEY (`employee_id`), - UNIQUE KEY `emp_email_uk` (`email`), - UNIQUE KEY `emp_emp_id_pk` (`employee_id`), - KEY `emp_dept_fk` (`department_id`), - KEY `emp_job_fk` (`job_id`), - KEY `emp_manager_fk` (`manager_id`), - CONSTRAINT `emp_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `emp_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`), - CONSTRAINT `emp_manager_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of employees --- ---------------------------- -BEGIN; -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (100, '史蒂文', '金', 'SKING', '515.123.4567', '1987-06-17', 'AD_PRES', 24000.00, NULL, NULL, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (101, '尼娜', '科查尔', 'NKOCHHAR', '515.123.4568', '1989-09-21', 'AD_VP', 17000.00, NULL, 100, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (102, '雷克斯', '德哈恩', 'LDEHAAN', '515.123.4569', '1993-01-13', 'AD_VP', 17000.00, NULL, 100, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (103, '亚历山大', '胡诺尔德', 'AHUNOLD', '590.423.4567', '1990-01-03', 'IT_PROG', 9000.00, NULL, 102, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (104, '布鲁斯', '恩斯特', 'BERNST', '590.423.4568', '1991-05-21', 'IT_PROG', 6000.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (105, '大卫', '奥斯汀', 'DAUSTIN', '590.423.4569', '1997-06-25', 'IT_PROG', 4800.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (106, '瓦利', '帕塔巴拉', 'VPATABAL', '590.423.4560', '1998-02-05', 'IT_PROG', 4800.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (107, '黛安娜', '洛伦茨', 'DLORENTZ', '590.423.5567', '1999-02-07', 'IT_PROG', 4200.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (108, '南希', '格林伯格', 'NGREENBE', '515.124.4569', '1994-08-17', 'FI_MGR', 12000.00, NULL, 101, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (109, '丹尼尔', '法维特', 'DFAVIET', '515.124.4169', '1994-08-16', 'FI_ACCOUNT', 9000.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (110, '约翰', '陈', 'JCHEN', '515.124.4269', '1997-09-28', 'FI_ACCOUNT', 8200.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (111, '伊斯梅尔', '斯基亚拉', 'ISCIARRA', '515.124.4369', '1997-09-30', 'FI_ACCOUNT', 7700.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (112, '何塞·曼努埃尔', '乌尔曼', 'JMURMAN', '515.124.4469', '1998-03-07', 'FI_ACCOUNT', 7800.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (113, '路易斯', '波普', 'LPOPP', '515.124.4567', '1999-12-07', 'FI_ACCOUNT', 6900.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (114, '丹', '拉法艾利', 'DRAPHEAL', '515.127.4561', '1994-12-07', 'PU_MAN', 11000.00, NULL, 100, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (115, '亚历山大', '胡', 'AKHOO', '515.127.4562', '1995-05-18', 'PU_CLERK', 3100.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (116, '雪莉', '拜达', 'SBAIDA', '515.127.4563', '1997-12-24', 'PU_CLERK', 2900.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (117, '西加尔', '托比亚斯', 'STOBIAS', '515.127.4564', '1997-07-24', 'PU_CLERK', 2800.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (118, '盖伊', '火室', 'GHIMURO', '515.127.4565', '1998-11-15', 'PU_CLERK', 2600.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (119, '卡伦', '科尔门纳雷斯', 'KCOLMENA', '515.127.4566', '1999-08-10', 'PU_CLERK', 2500.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (120, '马修', '韦斯', 'MWEISS', '650.123.1234', '1996-07-18', 'ST_MAN', 8000.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (121, '亚当', '弗里普', 'AFRIPP', '650.123.2234', '1997-04-10', 'ST_MAN', 8200.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (122, '帕亚姆', '考夫林', 'PKAUFLIN', '650.123.3234', '1995-05-01', 'ST_MAN', 7900.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (123, '珊塔', '沃尔曼', 'SVOLLMAN', '650.123.4234', '1997-10-10', 'ST_MAN', 6500.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (124, '凯文', '莫尔戈斯', 'KMOURGOS', '650.123.5234', '1999-11-16', 'ST_MAN', 5800.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (125, '朱莉娅', '内耶尔', 'JNAYER', '650.124.1214', '1997-07-16', 'ST_CLERK', 3200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (126, '艾琳', '米基利内尼', 'IMIKKILI', '650.124.1224', '1998-09-28', 'ST_CLERK', 2700.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (127, '詹姆斯', '兰德里', 'JLANDRY', '650.124.1334', '1999-01-14', 'ST_CLERK', 2400.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (128, '史蒂文', '马克尔', 'SMARKLE', '650.124.1434', '2000-03-08', 'ST_CLERK', 2200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (129, '劳拉', '比索特', 'LBISSOT', '650.124.5234', '1997-08-20', 'ST_CLERK', 3300.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (130, '莫兹', '阿特金森', 'MATKINSO', '650.124.6234', '1997-10-30', 'ST_CLERK', 2800.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (131, '詹姆斯', '马洛', 'JAMRLOW', '650.124.7234', '1997-02-16', 'ST_CLERK', 2500.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (132, 'TJ', '奥尔森', 'TJOLSON', '650.124.8234', '1999-04-10', 'ST_CLERK', 2100.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (133, '贾森', '马林', 'JMALLIN', '650.127.1934', '1996-06-14', 'ST_CLERK', 3300.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (134, '迈克尔', '罗杰斯', 'MROGERS', '650.127.1834', '1998-08-26', 'ST_CLERK', 2900.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (135, '基', '吉', 'KGEE', '650.127.1734', '1999-12-12', 'ST_CLERK', 2400.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (136, '海泽尔', '菲尔坦克', 'HPHILTAN', '650.127.1634', '2000-02-06', 'ST_CLERK', 2200.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (137, '伦斯克', '拉德维格', 'RLADWIG', '650.121.1234', '1995-07-14', 'ST_CLERK', 3600.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (138, '斯蒂芬', '斯泰尔斯', 'SSTILES', '650.121.2034', '1997-10-26', 'ST_CLERK', 3200.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (139, '约翰', '西奥', 'JSEO', '650.121.2019', '1998-02-12', 'ST_CLERK', 2700.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (140, '乔舒亚', '帕特尔', 'JPATEL', '650.121.1834', '1998-04-06', 'ST_CLERK', 2500.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (141, '特蕾娜', '拉杰斯', 'TRAJS', '650.121.8009', '1995-10-17', 'ST_CLERK', 3500.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (142, '柯蒂斯', '戴维斯', 'CDAVIES', '650.121.2994', '1997-01-29', 'ST_CLERK', 3100.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (143, '兰德尔', '马托斯', 'RMATOS', '650.121.2874', '1998-03-15', 'ST_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (144, '彼得', '瓦加斯', 'PVARGAS', '650.121.2004', '1998-07-09', 'ST_CLERK', 2500.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (145, '约翰', '罗素', 'JRUSSEL', '011.44.1344.429268', '1996-10-01', 'SA_MAN', 14000.00, 0.40, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (146, '卡伦', '帕特纳斯', 'KPARTNER', '011.44.1344.467268', '1997-01-05', 'SA_MAN', 13500.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (147, '阿尔贝托', '埃拉苏里斯', 'AERRAZUR', '011.44.1344.429278', '1997-03-10', 'SA_MAN', 12000.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (148, '杰拉德', '坎布劳特', 'GCAMBRAU', '011.44.1344.619268', '1999-10-15', 'SA_MAN', 11000.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (149, '埃莱妮', '兹洛特基', 'EZLOTKEY', '011.44.1344.429018', '2000-01-29', 'SA_MAN', 10500.00, 0.20, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (150, '彼得', '塔克', 'PTUCKER', '011.44.1344.129268', '1997-01-30', 'SA_REP', 10000.00, 0.30, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (151, '大卫', '伯恩斯坦', 'DBERNSTE', '011.44.1344.345268', '1997-03-24', 'SA_REP', 9500.00, 0.25, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (152, '彼得', '霍尔', 'PHALL', '011.44.1344.478968', '1997-08-20', 'SA_REP', 9000.00, 0.25, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (153, '克里斯托弗', '奥尔森', 'COLSEN', '011.44.1344.498718', '1998-03-30', 'SA_REP', 8000.00, 0.20, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (154, '娜妮特', '坎布劳特', 'NCAMBRAU', '011.44.1344.987668', '1998-12-09', 'SA_REP', 7500.00, 0.20, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (155, '奥利弗', '图沃尔特', 'OTUVAULT', '011.44.1344.486508', '1999-11-23', 'SA_REP', 7000.00, 0.15, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (156, '詹妮特', '金', 'JKING', '011.44.1345.429268', '1996-01-30', 'SA_REP', 10000.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (157, '帕特里克', '萨利', 'PSULLY', '011.44.1345.929268', '1996-03-04', 'SA_REP', 9500.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (158, '艾伦', '麦克尤恩', 'AMCEWEN', '011.44.1345.829268', '1996-08-01', 'SA_REP', 9000.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (159, '林赛', '史密斯', 'LSMITH', '011.44.1345.729268', '1997-03-10', 'SA_REP', 8000.00, 0.30, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (160, '路易斯', '多兰', 'LDORAN', '011.44.1345.629268', '1997-12-15', 'SA_REP', 7500.00, 0.30, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (161, '萨拉特', '肖尔', 'SSEWALL', '011.44.1345.529268', '1998-11-03', 'SA_REP', 7000.00, 0.25, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (162, '克拉拉', '维什尼', 'CVISHNEY', '011.44.1346.129268', '1997-11-11', 'SA_REP', 10500.00, 0.25, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (163, '丹妮尔', '格林', 'DGREENE', '011.44.1346.229268', '1999-03-19', 'SA_REP', 9500.00, 0.15, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (164, '玛蒂亚', '马文斯', 'MMARVINS', '011.44.1346.329268', '2000-01-24', 'SA_REP', 7200.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (165, '大卫', '李', 'DLEE', '011.44.1346.529268', '2000-02-23', 'SA_REP', 6800.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (166, '桑达尔', '安迪', 'SANDE', '011.44.1346.629268', '2000-03-24', 'SA_REP', 6400.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (167, '阿米特', '班达', 'ABANDA', '011.44.1346.729268', '2000-04-21', 'SA_REP', 6200.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (168, '丽莎', '奥泽尔', 'LOZER', '011.44.1343.929268', '1997-03-11', 'SA_REP', 11500.00, 0.25, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (169, '哈里森', '布鲁姆', 'HBLOOM', '011.44.1343.829268', '1998-03-23', 'SA_REP', 10000.00, 0.20, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (170, '泰勒', '福克斯', 'TFOX', '011.44.1343.729268', '1998-01-24', 'SA_REP', 9600.00, 0.20, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (171, '威廉', '史密斯', 'WSMITH', '011.44.1343.629268', '1999-02-23', 'SA_REP', 7400.00, 0.15, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (172, '伊丽莎白', '贝茨', 'EBATES', '011.44.1343.529268', '1999-03-24', 'SA_REP', 7300.00, 0.15, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (173, '桑迪塔', '库马尔', 'SKUMAR', '011.44.1343.329268', '2000-04-21', 'SA_REP', 6100.00, 0.10, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (174, '艾伦', '阿贝尔', 'EABEL', '011.44.1644.429267', '1996-05-11', 'SA_REP', 11000.00, 0.30, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (175, '阿莉莎', '哈顿', 'AHUTTON', '011.44.1644.429266', '1997-03-19', 'SA_REP', 8800.00, 0.25, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (176, '乔纳森', '泰勒', 'JTAYLOR', '011.44.1644.429265', '1998-03-24', 'SA_REP', 8600.00, 0.20, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (177, '杰克', '利文斯顿', 'JLIVINGS', '011.44.1644.429264', '1998-04-23', 'SA_REP', 8400.00, 0.20, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (178, '金柏莉', '格兰特', 'KGRANT', '011.44.1644.429263', '1999-05-24', 'SA_REP', 7000.00, 0.15, 149, NULL); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (179, '查尔斯', '约翰逊', 'CJOHNSON', '011.44.1644.429262', '2000-01-04', 'SA_REP', 6200.00, 0.10, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (180, '温斯顿', '泰勒', 'WTAYLOR', '650.507.9876', '1998-01-24', 'SH_CLERK', 3200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (181, '简', '弗勒尔', 'JFLEAUR', '650.507.9877', '1998-02-23', 'SH_CLERK', 3100.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (182, '玛莎', '沙利文', 'MSULLIVA', '650.507.9878', '1999-06-21', 'SH_CLERK', 2500.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (183, '吉拉德', '格奥尼', 'GGEONI', '650.507.9879', '2000-02-03', 'SH_CLERK', 2800.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (184, '南迪塔', '萨尔钦德', 'NSARCHAN', '650.509.1876', '1996-01-27', 'SH_CLERK', 4200.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (185, '亚历克西斯', '布尔', 'ABULL', '650.509.2876', '1997-02-20', 'SH_CLERK', 4100.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (186, '朱莉娅', '戴林格', 'JDELLING', '650.509.3876', '1998-06-24', 'SH_CLERK', 3400.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (187, '安东尼', '卡布里奥', 'ACABRIO', '650.509.4876', '1999-02-07', 'SH_CLERK', 3000.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (188, '凯莉', '钟', 'KCHUNG', '650.505.1876', '1997-06-14', 'SH_CLERK', 3800.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (189, '詹妮弗', '迪利', 'JDILLY', '650.505.2876', '1997-08-13', 'SH_CLERK', 3600.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (190, '蒂莫西', '盖茨', 'TGATES', '650.505.3876', '1998-07-11', 'SH_CLERK', 2900.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (191, '兰达尔', '珀金斯', 'RPERKINS', '650.505.4876', '1999-12-19', 'SH_CLERK', 2500.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (192, '萨拉', '贝尔', 'SBELL', '650.501.1876', '1996-02-04', 'SH_CLERK', 4000.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (193, '布里特尼', '埃弗雷特', 'BEVERETT', '650.501.2876', '1997-03-03', 'SH_CLERK', 3900.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (194, '塞缪尔', '麦凯恩', 'SMCCAIN', '650.501.3876', '1998-07-01', 'SH_CLERK', 3200.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (195, '范斯', '琼斯', 'VJONES', '650.501.4876', '1999-03-17', 'SH_CLERK', 2800.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (196, '阿兰娜', '沃尔什', 'AWALSH', '650.507.9811', '1998-04-24', 'SH_CLERK', 3100.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (197, '凯文', '费尼', 'KFEENEY', '650.507.9822', '1998-05-23', 'SH_CLERK', 3000.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (198, '唐纳德', '奥康奈尔', 'DOCONNEL', '650.507.9833', '1999-06-21', 'SH_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (199, '道格拉斯', '格兰特', 'DGRANT', '650.507.9844', '2000-01-13', 'SH_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (200, '詹妮弗', '韦伦', 'JWHALEN', '515.123.4444', '1987-09-17', 'AD_ASST', 4400.00, NULL, 101, 10); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (201, '迈克尔', '哈滕斯坦', 'MHARTSTE', '515.123.5555', '1996-02-17', 'MK_MAN', 13000.00, NULL, 100, 20); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (202, '帕特', '费伊', 'PFAY', '603.123.6666', '1997-08-17', 'MK_REP', 6000.00, NULL, 201, 20); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (203, '苏珊', '马夫里斯', 'SMAVRIS', '515.123.7777', '1994-06-07', 'HR_REP', 6500.00, NULL, 101, 40); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (204, '赫尔曼', '拜尔', 'HBAER', '515.123.8888', '1994-06-07', 'PR_REP', 10000.00, NULL, 101, 70); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (205, '谢莉', '希金斯', 'SHIGGINS', '515.123.8080', '1994-06-07', 'AC_MGR', 12000.00, NULL, 101, 110); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (206, '威廉', '吉茨', 'WGIETZ', '515.123.8181', '1994-06-07', 'AC_ACCOUNT', 8300.00, NULL, 205, 110); -COMMIT; - --- ---------------------------- --- Table structure for job_grades --- ---------------------------- -DROP TABLE IF EXISTS `job_grades`; -CREATE TABLE `job_grades` ( - `grade_level` varchar(3) DEFAULT NULL, - `lowest_sal` int DEFAULT NULL, - `highest_sal` int DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of job_grades --- ---------------------------- -BEGIN; -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('A', 1000, 2999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('B', 3000, 5999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('C', 6000, 9999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('D', 10000, 14999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('E', 15000, 24999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('F', 25000, 40000); -COMMIT; - --- ---------------------------- --- Table structure for job_history --- ---------------------------- -DROP TABLE IF EXISTS `job_history`; -CREATE TABLE `job_history` ( - `employee_id` int NOT NULL, - `start_date` date NOT NULL, - `end_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `department_id` int DEFAULT NULL, - PRIMARY KEY (`employee_id`,`start_date`), - UNIQUE KEY `jhist_emp_id_st_date_pk` (`employee_id`,`start_date`), - KEY `jhist_job_fk` (`job_id`), - KEY `jhist_dept_fk` (`department_id`), - CONSTRAINT `jhist_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `jhist_emp_fk` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`employee_id`), - CONSTRAINT `jhist_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of job_history --- ---------------------------- -BEGIN; -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (101, '1989-09-21', '1993-10-27', 'AC_ACCOUNT', 110); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (101, '1993-10-28', '1997-03-15', 'AC_MGR', 110); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (102, '1993-01-13', '1998-07-24', 'IT_PROG', 60); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (114, '1998-03-24', '1999-12-31', 'ST_CLERK', 50); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (122, '1999-01-01', '1999-12-31', 'ST_CLERK', 50); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (176, '1998-03-24', '1998-12-31', 'SA_REP', 80); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (176, '1999-01-01', '1999-12-31', 'SA_MAN', 80); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (200, '1987-09-17', '1993-06-17', 'AD_ASST', 90); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (200, '1994-07-01', '1998-12-31', 'AC_ACCOUNT', 90); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (201, '1996-02-17', '1999-12-19', 'MK_REP', 20); -COMMIT; - --- ---------------------------- --- Table structure for jobs --- ---------------------------- -DROP TABLE IF EXISTS `jobs`; -CREATE TABLE `jobs` ( - `job_id` varchar(10) NOT NULL DEFAULT '', - `job_title` varchar(35) NOT NULL, - `min_salary` int DEFAULT NULL, - `max_salary` int DEFAULT NULL, - PRIMARY KEY (`job_id`), - UNIQUE KEY `job_id_pk` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of jobs --- ---------------------------- -BEGIN; -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AC_ACCOUNT', '公共会计师', 4200, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AC_MGR', '会计经理', 8200, 16000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_ASST', '行政助理', 3000, 6000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_PRES', '总裁', 20000, 40000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_VP', '行政副总裁', 15000, 30000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('FI_ACCOUNT', '会计', 4200, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('FI_MGR', '财务经理', 8200, 16000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('HR_REP', '人力资源代表', 4000, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('IT_PROG', '程序员', 4000, 10000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('MK_MAN', '市场营销经理', 9000, 15000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('MK_REP', '市场营销代表', 4000, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PR_REP', '公共关系代表', 4500, 10500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PU_CLERK', '采购文员', 2500, 5500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PU_MAN', '采购经理', 8000, 15000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SA_MAN', '销售经理', 10000, 20000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SA_REP', '销售代表', 6000, 12000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SH_CLERK', '发货文员', 2500, 5500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('ST_CLERK', '库存文员', 2000, 5000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('ST_MAN', '库存经理', 5500, 8500); -COMMIT; - --- ---------------------------- --- Table structure for locations --- ---------------------------- -DROP TABLE IF EXISTS `locations`; -CREATE TABLE `locations` ( - `location_id` int NOT NULL DEFAULT '0', - `street_address` varchar(40) DEFAULT NULL, - `postal_code` varchar(12) DEFAULT NULL, - `city` varchar(30) NOT NULL, - `state_province` varchar(25) DEFAULT NULL, - `country_id` char(2) DEFAULT NULL, - PRIMARY KEY (`location_id`), - UNIQUE KEY `loc_id_pk` (`location_id`), - KEY `loc_c_id_fk` (`country_id`), - CONSTRAINT `loc_c_id_fk` FOREIGN KEY (`country_id`) REFERENCES `countries` (`country_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of locations --- ---------------------------- -BEGIN; -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1000, '1297 Via Cola di Rie', '00989', '罗马', NULL, 'IT'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1100, '93091 Calle della Testa', '10934', '威尼斯', NULL, 'IT'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1200, '2017 Shinjuku-ku', '1689', '东京', '东京都', 'JP'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1300, '9450 Kamiya-cho', '6823', '广岛', NULL, 'JP'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1400, '2014 Jabberwocky Rd', '26192', '南湖', '德克萨斯', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1500, '2011 Interiors Blvd', '99236', '南旧金山', '加利福尼亚', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1600, '2007 Zagora St', '50090', '南布朗斯维克', '新泽西', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1700, '2004 Charade Rd', '98199', '西雅图', '华盛顿', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1800, '147 Spadina Ave', 'M5V 2L7', '多伦多', '安大略', 'CA'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1900, '6092 Boxwood St', 'YSW 9T2', '怀特霍斯', '育空', 'CA'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2000, '40-5-12 Laogianggen', '190518', '北京', NULL, 'CN'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2100, '1298 Vileparle (E)', '490231', '孟买', '马哈拉施特拉邦', 'IN'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2200, '12-98 Victoria Street', '2901', '悉尼', '新南威尔士', 'AU'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2300, '198 Clementi North', '540198', '新加坡', NULL, 'SG'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2400, '8204 Arthur St', NULL, '伦敦', NULL, 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2500, 'Magdalen Centre, The Oxford Science Park', 'OX9 9ZB', '牛津', '牛津', 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2600, '9702 Chester Road', '09629850293', '斯特雷福德', '曼彻斯特', 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2700, 'Schwanthalerstr. 7031', '80925', '慕尼黑', '巴伐利亚', 'DE'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2800, 'Rua Frei Caneca 1360 ', '01307-002', '圣保罗', '圣保罗', 'BR'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2900, '20 Rue des Corps-Saints', '1730', '日内瓦', '日内瓦', 'CH'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3000, 'Murtenstrasse 921', '3095', '伯尔尼', 'BE', 'CH'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3100, 'Pieter Breughelstraat 837', '3029SK', '乌得勒支', '乌得勒支', 'NL'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3200, 'Mariano Escobedo 9991', '11932', '墨西哥城', '联邦区', 'MX'); -COMMIT; - --- ---------------------------- --- Table structure for order --- ---------------------------- -DROP TABLE IF EXISTS `order`; -CREATE TABLE `order` ( - `order_id` int DEFAULT NULL, - `order_name` varchar(15) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of order --- ---------------------------- -BEGIN; -INSERT INTO `order` (`order_id`, `order_name`) VALUES (1, 'shkstart'); -INSERT INTO `order` (`order_id`, `order_name`) VALUES (2, 'tomcat'); -INSERT INTO `order` (`order_id`, `order_name`) VALUES (3, 'dubbo'); -COMMIT; - --- ---------------------------- --- Table structure for regions --- ---------------------------- -DROP TABLE IF EXISTS `regions`; -CREATE TABLE `regions` ( - `region_id` int NOT NULL, - `region_name` varchar(25) DEFAULT NULL, - PRIMARY KEY (`region_id`), - UNIQUE KEY `reg_id_pk` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of regions --- ---------------------------- -BEGIN; -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (1, '欧洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (2, '美洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (3, '亚洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (4, '中东和非洲'); -COMMIT; - --- ---------------------------- --- View structure for emp_details_view --- ---------------------------- -DROP VIEW IF EXISTS `emp_details_view`; -CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `emp_details_view` AS select `e`.`employee_id` AS `employee_id`,`e`.`job_id` AS `job_id`,`e`.`manager_id` AS `manager_id`,`e`.`department_id` AS `department_id`,`d`.`location_id` AS `location_id`,`l`.`country_id` AS `country_id`,`e`.`first_name` AS `first_name`,`e`.`last_name` AS `last_name`,`e`.`salary` AS `salary`,`e`.`commission_pct` AS `commission_pct`,`d`.`department_name` AS `department_name`,`j`.`job_title` AS `job_title`,`l`.`city` AS `city`,`l`.`state_province` AS `state_province`,`c`.`country_name` AS `country_name`,`r`.`region_name` AS `region_name` from (((((`employees` `e` join `departments` `d`) join `jobs` `j`) join `locations` `l`) join `countries` `c`) join `regions` `r`) where ((`e`.`department_id` = `d`.`department_id`) and (`d`.`location_id` = `l`.`location_id`) and (`l`.`country_id` = `c`.`country_id`) and (`c`.`region_id` = `r`.`region_id`) and (`j`.`job_id` = `e`.`job_id`)); - -SET FOREIGN_KEY_CHECKS = 1; -``` - -### 查询语句 - -```mysql -#第03章_基本的SELECT语句的课后练习 - -# 1.查询所有员工12个月的工资总和,并起别名为工资总和 - -#理解1:计算12月的基本工资 - -#SELECT sum(salary*12) as 工资总和 FROM employees; - -select sum(12*salary) from employees; - -#理解2:计算12月的基本工资和奖金 -# ifnull(原值,新值) 判断一个原值是否为null,如果原值是null,就用一个新值代替 - -select sum(salary*12+ifnull(salary*commission_pct*12,0)) from employees; - -# 2.查询employees表中去除重复的job_id以后的数据 -#去除重复 distinct - -select distinct job_id from employees; - -# 3.查询工资大于12000的员工姓名和工资 - -select first_name,salary from employees where salary>12000; - -# 4.查询员工号为176的员工的姓名和部门号 - -select first_name,department_id from employees where employee_id=176; - -# 5.显示表 departments 的结构,并查询其中的全部数据 - -desc departments; -select * from departments; - -# 第04章_运算符课后练习 - -# 1.选择工资不在5000到12000的员工的姓名和工资 - -select first_name,salary from employees where salary not between 5000 and 12000; - -# 2.选择在20或50号部门工作的员工姓名和部门号 - -select first_name,department_id from employees where department_id in (20,50); - -# 3.选择公司中没有管理者的员工姓名及job_id - -select first_name,job_id from employees where manager_id is null; - -# 4.选择公司中有奖金的员工姓名,工资和奖金级别 - -select employee_id,salary,grade_level from employees e left join job_grades j on e.salary between j.lowest_sal and j.highest_sal where commission_pct is not null; - -# 5.选择员工姓名的第三个字是 尔 的员工姓名 - -select * from employees where first_name like '__尔'; - -# 6.选择姓名中有 特 字和 尔 字的员工姓名 - -select * from employees where last_name like '%特%' and last_name like '%尔%'; - -# 7.显示出表 employees 表中 first_name 以 '尔'结尾的员工信息 - -select * from employees where first_name like '%尔'; - -# 8.显示出表 employees 部门编号在 80-100 之间的姓名、工种 - -select e.first_name,j.job_title from employees e left join jobs j on e.job_id=j.job_id where department_id between 80 and 100; - -# 9.显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、工资、管理者id - -select first_name,salary,manager_id from employees where manager_id in (100,101,110); - -#第05章_排序与分页的课后练习 - -#1. 查询员工的姓名和部门号和年薪,按年薪降序显示 --- order by 年薪 asc/desc - -select first_name,department_id,salary*12 from employees order by salary*12 desc; - -#2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据 - -select first_name,salary from employees where salary not between 8000 and 17000 order by salary desc limit 20,20; - -#3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序 - -select * from employees where email like '%e%' order by length(email) desc,department_id asc; - -# 第06章_多表查询的课后练习 - -# 1.显示所有员工的姓名,部门号和部门名称。 - -select first_name,e.department_id,department_name from employees e left join departments d on e.department_id=d.department_id; - -# 2.查询90号部门员工的job_id和90号部门的location_id - -select e.job_id,d.location_id from employees e left join departments d on e.department_id=d.department_id where e.department_id=90; - -# 3.选择所有 有奖金的员工 的 last_name , department_name , location_id , city - -select e.last_name,d.department_name,d.location_id,l.city from employees e left join departments d on e.department_id=d.department_id left join locations l on d.location_id=l.location_id where commission_pct is not null; - -# 4.选择city在 多伦多 工作的员工的 last_name , job_id , department_id , department_name - -select e.last_name,e.job_id,d.department_id,d.department_name from employees e left join departments d on e.department_id=d.department_id left join locations l on d.location_id=l.location_id where l.city='多伦多'; - -#sql92语法(自然连接): - -# 5.查询行政部门员工的部门名称、部门地址、姓名、工作、工资 - -select department_name,street_address,first_name,job_title,salary from jobs j,employees e,departments d,locations l where j.job_id=e.job_id and e.department_id=d.department_id and d.location_id=l.location_id and department_name='行政部'; - -# 6.显示所有员工的姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式 --- 员工姓名 员工编号 上级姓名 上级的员工编号 --- 德哈恩 102 金 100 - -select e.first_name,e.employee_id,s.last_name,s.employee_id from employees e inner join employees s on e.employee_id=s.employee_id; - -# 7.查询哪些部门没有员工 - -select department_name from departments d left join employees e on d.department_id=e.department_id where employee_id is null; - -# 8. 查询哪个城市没有部门 - -select city from departments d right join locations l on d.location_id=l.location_id where department_id is null; - -# 9. 查询部门名为 销售部 或 信息技术部 的员工信息 - -select e.* from departments d,employees e where d.department_id=e.department_id and d.department_name='销售部' or d.department_name='信息技术部'; - -# 第08章_聚合函数的课后练习 - -#2.查询公司员工工资的最大值,最小值,平均值,总和 - -select max(salary),min(salary),avg(salary),sum(salary) from employees; - -#3.查询各job_id的员工工资的最大值,最小值,平均值,总和 - -select job_id,max(salary),min(salary),avg(salary),sum(salary) from employees group by job_id; - -#4.选择各个job_id的员工人数 - -select job_id,count(employee_id) from employees group by job_id; - -# 5.查询员工最高工资和最低工资的差距 - -select max(salary)-min(salary) from employees; - -# 6.查询各个管理者 手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内 - -select manager_id,min(salary) from employees where manager_id is not null group by manager_id having min(salary)>6000; - -# 7.查询所有部门的名字,location_id,员工数量和平均工资,并按平均工资降序 - -select d.department_name,d.location_id,count(employee_id),avg(salary) from departments d left join employees e on d.department_id=e.department_id group by d.department_id order by avg(salary) desc; - -# 8.查询每个工种、每个部门的部门名、工种名和最低工资 - -select j.job_title,min(salary),department_name from jobs j left join employees e on j.job_id=e.job_id left join departments d on e.department_id=d.department_id group by j.job_id,d.department_id; - -# 第09章_子查询的课后练习 - -#1.查询和 兹洛特基 相同部门的员工姓名和工资 - -select * from employees where department_id =(select department_id from employees where last_name='兹洛特基') and salary=(select salary from employees where last_name='兹洛特基'); - -#2.查询工资比公司平均工资高的员工的员工号,姓名和工资。 - -select employee_id,first_name,salary from employees where salary>(select avg(salary) from employees); - -#3.选择工资大于所有JOB_ID = 'SA_MAN'的员工的工资的员工的last_name, job_id, salary - -select last_name,job_id,salary from employees where salary>(select max(salary) from employees where JOB_ID = 'SA_MAN'); - -#4.查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名 - -select employee_id,last_name from employees where department_id=(select department_id from employees where last_name like '%u%'); - -#5.查询部门的location_id为1700的部门的工作的员工的员工号 - -select first_name,employee_id from employees where department_id in (select department_id from departments where location_id=1700); - -#6.查询管理者是 金 的员工姓名和工资 - -select first_name,salary from employees where manager_id in (select manager_id from employees where last_name='金'); - -#7.查询工资最低的员工信息: last_name, salary - -select last_name,salary from employees where salary=(select min(salary) from employees); - -#8.查询平均工资最低的部门信息 - -#方式1: -# 部门最低工资=全司最低 - -select * from departments where department_id =(select department_id from employees group by department_id having avg(salary)=(select min(s) from (select avg(salary) s from employees group by department_id) a)); - -#方式2: -# 部门平均<= 公司所有平均 - -select * from departments where department_id=(select department_id from employees group by department_id having avg(salary)<=all(select avg(salary) from employees group by department_id)); - -#9.查询平均工资最低的部门信息和该部门的平均工资(相关子查询) -#方式:先查最低平均工资的部门,再根据其id去select中再子查询 - -select d.*,(select avg(salary) from employees where department_id=d.department_id) from departments d where department_id =(select department_id from employees group by department_id having avg(salary)=(select min(s) from (select avg(salary) s from employees group by department_id) a)); - -#10.查询平均工资最高的 job 信息 - -#方式1:平均工资=最大 - -select * from jobs where job_id=(select job_id from employees group by job_id having avg(salary)=(select max(s) from (select avg(salary) s from employees group by job_id) a)); - -#方式2:平均工资>=所有平均工资 - -select * from jobs where job_id=(select job_id from employees group by job_id having avg(salary)>=all(select avg(salary) from employees group by job_id)); - -#11.查询平均工资高于公司平均工资的部门有哪些? - -select department_id from employees where department_id is not null group by department_id having avg(salary)>(select avg(salary) from employees); - -#12.查询出公司中所有 manager 的详细信息 - -#方式1:自连接 自己连自己 - -select e.* from employees e inner join employees s on e.employee_id=s.manager_id; - -#方式2:子查询 -#员工编号=(管理员编号有哪些) - -select * from employees where employee_id=any(select distinct manager_id from employees); - -#13.各个部门中 最高工资中 最低的那个部门的 最低工资是多少? - -select min(salary) from employees group by department_id having max(salary)<=all(select max(salary) from employees group by department_id); - -#14.查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary - -select last_name,department_id,email,salary from employees where department_id = (select department_id from employees group by department_id having avg(salary)>=all(select avg(salary) from employees group by department_id)); - -#15. 查询部门的部门号,其中不包括job_id是"ST_CLERK"的部门号 - -select department_id from departments where department_id !=all(select department_id from employees where job_id='ST_CLERK'); - -#16. 选择所有没有管理者的员工的last_name - -select last_name from employees where manager_id is null; - -#17.查询员工号、姓名、雇用时间、工资,其中员工的管理者为 'De Haan' -#方式1: - -select employee_id,first_name,hire_date,salary from employees e where e.manager_id=(select employee_id from employees where first_name = 'De Haan'); - -#方式2: - -select employee_id, last_name, hire_date, salary from employees e where exists(select * from employees s where e.employee_id=s.manager_id and s.first_name='De Haan'); - -#18.查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资(相关子查询) - -#方式1:使用相关子查询 - -select employee_id,last_name,salary from employees e1 where salary > (select avg(salary) from employees e2 where e2.department_id = e1.department_id); - -#方式2:在FROM中声明子查询 - -select employee_id,last_name,salary from employees e1,(select department_id,AVG(salary) s from employees e2 group by department_id) a where e1.department_id = a.department_id and e1.salary > a.s; - -#19.查询每个部门下的部门人数大于 5 的部门名称(相关子查询) - -select department_name,department_id from departments d where 5 < (select count(*) from employees e where d.department_id = e.department_id); - -#20.查询每个国家下的部门个数大于 2 的国家编号(相关子查询) - -select country_id from locations l where 2 < (select count(*) from departments d where l.location_id=d.location_id); - -/* -子查询的编写技巧(或步骤):① 从里往外写 ② 从外往里写 - -如何选择? -① 如果子查询相对较简单,建议从外往里写。一旦子查询结构较复杂,则建议从里往外写 -② 如果是相关子查询的话,通常都是从外往里写。 -~~~ \ No newline at end of file diff --git "a/07 \345\210\230\346\226\207\351\224\213/20230920RBAC.md" "b/07 \345\210\230\346\226\207\351\224\213/20230920RBAC.md" deleted file mode 100644 index f0f946f..0000000 --- "a/07 \345\210\230\346\226\207\351\224\213/20230920RBAC.md" +++ /dev/null @@ -1,158 +0,0 @@ -## RBAC(Role-Based Access Control) - -一种数据库设计思想,基于角色的访问权限管制模型,目前权限的主流方案,核心为角色 - -在 RBAC 模型里面,有3个基础组成部分,分别是:用户、角色和权限 - -- User(用户):每个用户都有唯一的UID识别,并被授予不同的角色 -- Role(角色):不同角色具有不同的权限 -- Permission(权限):访问权限 -- 用户-角色映射:用户和角色之间的映射关系 -- 角色-权限映射:角色和权限之间的映射 - -管理员和普通用户被授予不同的权限,普通用户只能去修改和查看个人信息,而不能创建用户和冻结用户,而管理员由于被授予所有权限,所以可以做所有操作 - -## 预习 SKU - -SKU 英文全称为Stock Keeping Unit,简称 SKU ,是产品入库后一种编码归类方法,也是库存控制的最小单位。一款商品,每个颜色,每个尺码,每一型号等都有出现一个 sku ,便于电商品牌识别商品。 - -既然 sku 被定义为最小存货单元,商家就可以选择自己设定 sku,一般来说是以件、盒、个、托盘等为单位。 - -- 大厂的 sku 就可以是一箱, -- 超市的 sku 就可以是一盒, -- 零售商的 sku 可以是一个。 - -~~~java -## RBAC练习 - -```mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-20 15:30:32 */ -/*==============================================================*/ -create database school charset utf8; - -use school; - -drop table if exists management; - -drop table if exists role; - -drop table if exists role_management; - -drop table if exists user; - -drop table if exists user_role; - -/*==============================================================*/ -/* Table: management */ -/*==============================================================*/ -create table management -( - management_id int not null auto_increment, - management_name varchar(10) not null, - managemen_comment varchar(50) not null, - management_type char(10) not null, - primary key (management_id) -); - -/*==============================================================*/ -/* Table: role */ -/*==============================================================*/ -create table role -( - role_id int not null auto_increment, - role_name varchar(3) not null, - role_comment char(10) not null, - primary key (role_id) -); - -/*==============================================================*/ -/* Table: role_management */ -/*==============================================================*/ -create table role_management -( - management_id int not null, - role_id int not null, - primary key (management_id, role_id) -); - -/*==============================================================*/ -/* Table: user */ -/*==============================================================*/ -create table user -( - user_id int not null auto_increment, - user_name varchar(5) not null, - user_pwd char(6) not null, - primary key (user_id) -); - -/*==============================================================*/ -/* Table: user_role */ -/*==============================================================*/ -create table user_role -( - role_id int not null, - user_id int not null, - primary key (role_id, user_id) -); - -alter table role_management add constraint FK_role_management foreign key (management_id) - references management (management_id) on delete restrict on update restrict; - -alter table role_management add constraint FK_role_management2 foreign key (role_id) - references role (role_id) on delete restrict on update restrict; - -alter table user_role add constraint FK_user_role foreign key (role_id) - references role (role_id) on delete restrict on update restrict; - -alter table user_role add constraint FK_user_role2 foreign key (user_id) - references user (user_id) on delete restrict on update restrict; - - - --- ---------------------------- --- Records of management --- ---------------------------- -INSERT INTO `management` VALUES (1, '学生信息'); -INSERT INTO `management` VALUES (2, '教师信息'); -INSERT INTO `management` VALUES (3, '工资信息'); -INSERT INTO `management` VALUES (4, '首页'); - --- ---------------------------- --- Records of role --- ---------------------------- -INSERT INTO `role` VALUES (1, '校长'); -INSERT INTO `role` VALUES (2, '教师'); -INSERT INTO `role` VALUES (3, '学生'); - --- ---------------------------- --- Records of role_management --- ---------------------------- -INSERT INTO `role_management` VALUES (1, 1); -INSERT INTO `role_management` VALUES (2, 1); -INSERT INTO `role_management` VALUES (3, 1); -INSERT INTO `role_management` VALUES (4, 1); -INSERT INTO `role_management` VALUES (1, 2); -INSERT INTO `role_management` VALUES (2, 2); -INSERT INTO `role_management` VALUES (4, 2); -INSERT INTO `role_management` VALUES (1, 3); -INSERT INTO `role_management` VALUES (4, 3); --- ---------------------------- --- Records of user --- ---------------------------- -INSERT INTO `user` VALUES (1, '一一', '123456'); -INSERT INTO `user` VALUES (2, '二二', '123456'); -INSERT INTO `user` VALUES (3, '三三', '123456'); -INSERT INTO `user` VALUES (4, '四四', '123456'); - --- ---------------------------- --- Records of user_role --- ---------------------------- -INSERT INTO `user_role` VALUES (1, 1); -INSERT INTO `user_role` VALUES (2, 2); -INSERT INTO `user_role` VALUES (2, 3); -INSERT INTO `user_role` VALUES (3, 4); -``` -~~~ \ No newline at end of file diff --git "a/07 \345\210\230\346\226\207\351\224\213/20230921 \351\201\245\351\201\245\351\242\206\345\205\210.md" "b/07 \345\210\230\346\226\207\351\224\213/20230921 \351\201\245\351\201\245\351\242\206\345\205\210.md" deleted file mode 100644 index 7c7fd5b..0000000 --- "a/07 \345\210\230\346\226\207\351\224\213/20230921 \351\201\245\351\201\245\351\242\206\345\205\210.md" +++ /dev/null @@ -1,98 +0,0 @@ -### 笔记 - -今天学到了sku,spu - -sku是库存量单位一个项目可能有多个SKU - -spu: 是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以称为一个spu - - - -~~~java - -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-21 16:41:07 */ -/*==============================================================*/ -create database zy charset utf8; -use zy; - -drop table if exists attributes; - -drop table if exists attributes_value; - -drop table if exists relation; - -drop table if exists sku; - -drop table if exists spu; - -/*==============================================================*/ -/* Table: attributes */ -/*==============================================================*/ -create table attributes -( - attributes_id int not null auto_increment, - attributes_name varchar(50) not null, - primary key (attributes_id) -); - -/*==============================================================*/ -/* Table: attributes_value */ -/*==============================================================*/ -create table attributes_value -( - value_id int not null auto_increment, - value_content varchar(50) not null, - primary key (value_id) -); - -/*==============================================================*/ -/* Table: relation */ -/*==============================================================*/ -create table relation -( - relation_id int not null auto_increment, - sku_id int, - attributes_id int, - value_id int, - primary key (relation_id) -); - -/*==============================================================*/ -/* Table: sku */ -/*==============================================================*/ -create table sku -( - sku_id int not null auto_increment, - spu_id int, - sku_name varchar(50) not null, - sku_price decimal(9,2) not null, - sku_kc int not null, - primary key (sku_id) -); - -/*==============================================================*/ -/* Table: spu */ -/*==============================================================*/ -create table spu -( - spu_id int not null auto_increment, - spu_name varchar(50) not null, - spu_content varchar(50) not null, - primary key (spu_id) -); - -alter table relation add constraint FK_Relationship_2 foreign key (sku_id) - references sku (sku_id) on delete restrict on update restrict; - -alter table relation add constraint FK_Relationship_3 foreign key (attributes_id) - references attributes (attributes_id) on delete restrict on update restrict; - -alter table relation add constraint FK_Relationship_4 foreign key (value_id) - references attributes_value (value_id) on delete restrict on update restrict; - -alter table sku add constraint FK_Relationship_1 foreign key (spu_id) - references spu (spu_id) on delete restrict on update restrict; -``` -~~~ \ No newline at end of file diff --git "a/07 \345\210\230\346\226\207\351\224\213/20230924\345\244\215\344\271\240.md" "b/07 \345\210\230\346\226\207\351\224\213/20230924\345\244\215\344\271\240.md" deleted file mode 100644 index 38aca5c..0000000 --- "a/07 \345\210\230\346\226\207\351\224\213/20230924\345\244\215\344\271\240.md" +++ /dev/null @@ -1,23 +0,0 @@ -#### 事务的特性 - - 原子性隔离性持久性 - -#### 2.视图 - - 在已有的表或者视图上创建的虚拟表 - - 创建视图: create view 视图名 asselect - - 删除视图:drop view 视图名 - -#### 3.索引 - - 为了提高查询的速度而在数据库断创建的一种排序的数据结构 - -#### 参数类型有三种 - -IN:输入参数,改参数的值必须在调用该存储过程时指定,在存储过程内部使用,不能返回。缺省值是IN - -OUT:输出参数,该参数值的值可以在存储过程内部修改,并可返回 - -INOUT:输入输出参数,该参数需要在调用时指定,并且可以返回 \ No newline at end of file diff --git "a/07 \345\210\230\346\226\207\351\224\213/20230927\350\247\206\345\233\276.md" "b/07 \345\210\230\346\226\207\351\224\213/20230927\350\247\206\345\233\276.md" deleted file mode 100644 index 2ac5b6e..0000000 --- "a/07 \345\210\230\346\226\207\351\224\213/20230927\350\247\206\345\233\276.md" +++ /dev/null @@ -1,347 +0,0 @@ -## 视图 - -#### check 检查约束 - -检查某个字段的值是否符合值的范围 - -```mysql -gender char(1) , /*逗号留不留都可以*/ -check(gender in ('男','女')) -``` - -MySQL 5.7不支持使用,MySQL8.0 可以使用 - -```mysql -/*在utf8中,一个汉字等于一个字符,等于3个字节*/ -check(length(name)>6) /*6指的是6个字节*/ -``` - -视图是一种虚拟表,本身不具有数据,占用很少的内存空间 - -```mysql -concat(last_name,' ',first_name) /*拼接字段*/ -``` - -创建视图语句 - -```mysql -create view 视图名 as select语句 -``` - -删除视图语句 - -```mysql -drop view 视图名1,视图名2 -``` - -修改视图语句 - -```mysql -create or replace view 视图名 as select 语句 -``` - -使用视图 - -```mysql -select * from 视图名 [where 条件] -``` - -查看创建语句 - -```mysql -show create table 表名 -``` - -修改视图语句 - -```mysql -update 表名 set 条件 -insert into 表名 values (值) -``` - -不可以执行insert语句的表 - -1.多表连接 - -## 作业 - -### 建表建库 - -```mysql -/* -SQLyog Ultimate v12.08 (64 bit) -MySQL - 5.7.28-log : Database - view_db -********************************************************************* -*/ - - -/*!40101 SET NAMES utf8 */; - -/*!40101 SET SQL_MODE=''*/; - -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -CREATE DATABASE /*!32312 IF NOT EXISTS*/`view_db` /*!40100 DEFAULT CHARACTER SET utf8 */; - -USE `view_db`; - -/*Table structure for table `countries` */ - -DROP TABLE IF EXISTS `countries`; - -CREATE TABLE `countries` ( - `country_id` char(2) NOT NULL, - `country_name` varchar(40) DEFAULT NULL, - `region_id` int(11) DEFAULT NULL, - PRIMARY KEY (`country_id`), - KEY `countr_reg_fk` (`region_id`), - CONSTRAINT `countr_reg_fk` FOREIGN KEY (`region_id`) REFERENCES `regions` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `countries` */ - -insert into `countries`(`country_id`,`country_name`,`region_id`) values ('AR','Argentina',2),('AU','Australia',3),('BE','Belgium',1),('BR','Brazil',2),('CA','Canada',2),('CH','Switzerland',1),('CN','China',3),('DE','Germany',1),('DK','Denmark',1),('EG','Egypt',4),('FR','France',1),('HK','HongKong',3),('IL','Israel',4),('IN','India',3),('IT','Italy',1),('JP','Japan',3),('KW','Kuwait',4),('MX','Mexico',2),('NG','Nigeria',4),('NL','Netherlands',1),('SG','Singapore',3),('UK','United Kingdom',1),('US','United States of America',2),('ZM','Zambia',4),('ZW','Zimbabwe',4); - -/*Table structure for table `departments` */ - -DROP TABLE IF EXISTS `departments`; - -CREATE TABLE `departments` ( - `department_id` int(4) NOT NULL DEFAULT '0', - `department_name` varchar(30) NOT NULL, - `manager_id` int(6) DEFAULT NULL, - `location_id` int(4) DEFAULT NULL, - PRIMARY KEY (`department_id`), - UNIQUE KEY `dept_id_pk` (`department_id`), - KEY `dept_loc_fk` (`location_id`), - KEY `dept_mgr_fk` (`manager_id`), - CONSTRAINT `dept_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`location_id`), - CONSTRAINT `dept_mgr_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `departments` */ - -insert into `departments`(`department_id`,`department_name`,`manager_id`,`location_id`) values (10,'Administration',200,1700),(20,'Marketing',201,1800),(30,'Purchasing',114,1700),(40,'Human Resources',203,2400),(50,'Shipping',121,1500),(60,'IT',103,1400),(70,'Public Relations',204,2700),(80,'Sales',145,2500),(90,'Executive',100,1700),(100,'Finance',108,1700),(110,'Accounting',205,1700),(120,'Treasury',NULL,1700),(130,'Corporate Tax',NULL,1700),(140,'Control And Credit',NULL,1700),(150,'Shareholder Services',NULL,1700),(160,'Benefits',NULL,1700),(170,'Manufacturing',NULL,1700),(180,'Construction',NULL,1700),(190,'Contracting',NULL,1700),(200,'Operations',NULL,1700),(210,'IT Support',NULL,1700),(220,'NOC',NULL,1700),(230,'IT Helpdesk',NULL,1700),(240,'Government Sales',NULL,1700),(250,'Retail Sales',NULL,1700),(260,'Recruiting',NULL,1700),(270,'Payroll',NULL,1700); - -/*Table structure for table `employees` */ - -DROP TABLE IF EXISTS `employees`; - -CREATE TABLE `employees` ( - `employee_id` int(6) NOT NULL DEFAULT '0', - `first_name` varchar(20) DEFAULT NULL, - `last_name` varchar(25) NOT NULL, - `email` varchar(25) NOT NULL, - `phone_number` varchar(20) DEFAULT NULL, - `hire_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `salary` double(8,2) DEFAULT NULL, - `commission_pct` double(2,2) DEFAULT NULL, - `manager_id` int(6) DEFAULT NULL, - `department_id` int(4) DEFAULT NULL, - PRIMARY KEY (`employee_id`), - UNIQUE KEY `emp_email_uk` (`email`), - UNIQUE KEY `emp_emp_id_pk` (`employee_id`), - KEY `emp_dept_fk` (`department_id`), - KEY `emp_job_fk` (`job_id`), - KEY `emp_manager_fk` (`manager_id`), - CONSTRAINT `emp_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `emp_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`), - CONSTRAINT `emp_manager_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `employees` */ - -insert into `employees`(`employee_id`,`first_name`,`last_name`,`email`,`phone_number`,`hire_date`,`job_id`,`salary`,`commission_pct`,`manager_id`,`department_id`) values (100,'Steven','King','SKING','515.123.4567','1987-06-17','AD_PRES',24000.00,NULL,NULL,90),(101,'Neena','Kochhar','NKOCHHAR','515.123.4568','1989-09-21','AD_VP',17000.00,NULL,100,90),(102,'Lex','De Haan','LDEHAAN','515.123.4569','1993-01-13','AD_VP',17000.00,NULL,100,90),(103,'Alexander','Hunold','AHUNOLD','590.423.4567','1990-01-03','IT_PROG',9000.00,NULL,102,60),(104,'Bruce','Ernst','BERNST','590.423.4568','1991-05-21','IT_PROG',6000.00,NULL,103,60),(105,'David','Austin','DAUSTIN','590.423.4569','1997-06-25','IT_PROG',4800.00,NULL,103,60),(106,'Valli','Pataballa','VPATABAL','590.423.4560','1998-02-05','IT_PROG',4800.00,NULL,103,60),(107,'Diana','Lorentz','DLORENTZ','590.423.5567','1999-02-07','IT_PROG',4200.00,NULL,103,60),(108,'Nancy','Greenberg','NGREENBE','515.124.4569','1994-08-17','FI_MGR',12000.00,NULL,101,100),(109,'Daniel','Faviet','DFAVIET','515.124.4169','1994-08-16','FI_ACCOUNT',9000.00,NULL,108,100),(110,'John','Chen','JCHEN','515.124.4269','1997-09-28','FI_ACCOUNT',8200.00,NULL,108,100),(111,'Ismael','Sciarra','ISCIARRA','515.124.4369','1997-09-30','FI_ACCOUNT',7700.00,NULL,108,100),(112,'Jose Manuel','Urman','JMURMAN','515.124.4469','1998-03-07','FI_ACCOUNT',7800.00,NULL,108,100),(113,'Luis','Popp','LPOPP','515.124.4567','1999-12-07','FI_ACCOUNT',6900.00,NULL,108,100),(114,'Den','Raphaely','DRAPHEAL','515.127.4561','1994-12-07','PU_MAN',11000.00,NULL,100,30),(115,'Alexander','Khoo','AKHOO','515.127.4562','1995-05-18','PU_CLERK',3100.00,NULL,114,30),(116,'Shelli','Baida','SBAIDA','515.127.4563','1997-12-24','PU_CLERK',2900.00,NULL,114,30),(117,'Sigal','Tobias','STOBIAS','515.127.4564','1997-07-24','PU_CLERK',2800.00,NULL,114,30),(118,'Guy','Himuro','GHIMURO','515.127.4565','1998-11-15','PU_CLERK',2600.00,NULL,114,30),(119,'Karen','Colmenares','KCOLMENA','515.127.4566','1999-08-10','PU_CLERK',2500.00,NULL,114,30),(120,'Matthew','Weiss','MWEISS','650.123.1234','1996-07-18','ST_MAN',8000.00,NULL,100,50),(121,'Adam','Fripp','AFRIPP','650.123.2234','1997-04-10','ST_MAN',8200.00,NULL,100,50),(122,'Payam','Kaufling','PKAUFLIN','650.123.3234','1995-05-01','ST_MAN',7900.00,NULL,100,50),(123,'Shanta','Vollman','SVOLLMAN','650.123.4234','1997-10-10','ST_MAN',6500.00,NULL,100,50),(124,'Kevin','Mourgos','KMOURGOS','650.123.5234','1999-11-16','ST_MAN',5800.00,NULL,100,50),(125,'Julia','Nayer','JNAYER','650.124.1214','1997-07-16','ST_CLERK',3200.00,NULL,120,50),(126,'Irene','Mikkilineni','IMIKKILI','650.124.1224','1998-09-28','ST_CLERK',2700.00,NULL,120,50),(127,'James','Landry','JLANDRY','650.124.1334','1999-01-14','ST_CLERK',2400.00,NULL,120,50),(128,'Steven','Markle','SMARKLE','650.124.1434','2000-03-08','ST_CLERK',2200.00,NULL,120,50),(129,'Laura','Bissot','LBISSOT','650.124.5234','1997-08-20','ST_CLERK',3300.00,NULL,121,50),(130,'Mozhe','Atkinson','MATKINSO','650.124.6234','1997-10-30','ST_CLERK',2800.00,NULL,121,50),(131,'James','Marlow','JAMRLOW','650.124.7234','1997-02-16','ST_CLERK',2500.00,NULL,121,50),(132,'TJ','Olson','TJOLSON','650.124.8234','1999-04-10','ST_CLERK',2100.00,NULL,121,50),(133,'Jason','Mallin','JMALLIN','650.127.1934','1996-06-14','ST_CLERK',3300.00,NULL,122,50),(134,'Michael','Rogers','MROGERS','650.127.1834','1998-08-26','ST_CLERK',2900.00,NULL,122,50),(135,'Ki','Gee','KGEE','650.127.1734','1999-12-12','ST_CLERK',2400.00,NULL,122,50),(136,'Hazel','Philtanker','HPHILTAN','650.127.1634','2000-02-06','ST_CLERK',2200.00,NULL,122,50),(137,'Renske','Ladwig','RLADWIG','650.121.1234','1995-07-14','ST_CLERK',3600.00,NULL,123,50),(138,'Stephen','Stiles','SSTILES','650.121.2034','1997-10-26','ST_CLERK',3200.00,NULL,123,50),(139,'John','Seo','JSEO','650.121.2019','1998-02-12','ST_CLERK',2700.00,NULL,123,50),(140,'Joshua','Patel','JPATEL','650.121.1834','1998-04-06','ST_CLERK',2500.00,NULL,123,50),(141,'Trenna','Rajs','TRAJS','650.121.8009','1995-10-17','ST_CLERK',3500.00,NULL,124,50),(142,'Curtis','Davies','CDAVIES','650.121.2994','1997-01-29','ST_CLERK',3100.00,NULL,124,50),(143,'Randall','Matos','RMATOS','650.121.2874','1998-03-15','ST_CLERK',2600.00,NULL,124,50),(144,'Peter','Vargas','PVARGAS','650.121.2004','1998-07-09','ST_CLERK',2500.00,NULL,124,50),(145,'John','Russell','JRUSSEL','011.44.1344.429268','1996-10-01','SA_MAN',14000.00,0.40,100,80),(146,'Karen','Partners','KPARTNER','011.44.1344.467268','1997-01-05','SA_MAN',13500.00,0.30,100,80),(147,'Alberto','Errazuriz','AERRAZUR','011.44.1344.429278','1997-03-10','SA_MAN',12000.00,0.30,100,80),(148,'Gerald','Cambrault','GCAMBRAU','011.44.1344.619268','1999-10-15','SA_MAN',11000.00,0.30,100,80),(149,'Eleni','Zlotkey','EZLOTKEY','011.44.1344.429018','2000-01-29','SA_MAN',10500.00,0.20,100,80),(150,'Peter','Tucker','PTUCKER','011.44.1344.129268','1997-01-30','SA_REP',10000.00,0.30,145,80),(151,'David','Bernstein','DBERNSTE','011.44.1344.345268','1997-03-24','SA_REP',9500.00,0.25,145,80),(152,'Peter','Hall','PHALL','011.44.1344.478968','1997-08-20','SA_REP',9000.00,0.25,145,80),(153,'Christopher','Olsen','COLSEN','011.44.1344.498718','1998-03-30','SA_REP',8000.00,0.20,145,80),(154,'Nanette','Cambrault','NCAMBRAU','011.44.1344.987668','1998-12-09','SA_REP',7500.00,0.20,145,80),(155,'Oliver','Tuvault','OTUVAULT','011.44.1344.486508','1999-11-23','SA_REP',7000.00,0.15,145,80),(156,'Janette','King','JKING','011.44.1345.429268','1996-01-30','SA_REP',10000.00,0.35,146,80),(157,'Patrick','Sully','PSULLY','011.44.1345.929268','1996-03-04','SA_REP',9500.00,0.35,146,80),(158,'Allan','McEwen','AMCEWEN','011.44.1345.829268','1996-08-01','SA_REP',9000.00,0.35,146,80),(159,'Lindsey','Smith','LSMITH','011.44.1345.729268','1997-03-10','SA_REP',8000.00,0.30,146,80),(160,'Louise','Doran','LDORAN','011.44.1345.629268','1997-12-15','SA_REP',7500.00,0.30,146,80),(161,'Sarath','Sewall','SSEWALL','011.44.1345.529268','1998-11-03','SA_REP',7000.00,0.25,146,80),(162,'Clara','Vishney','CVISHNEY','011.44.1346.129268','1997-11-11','SA_REP',10500.00,0.25,147,80),(163,'Danielle','Greene','DGREENE','011.44.1346.229268','1999-03-19','SA_REP',9500.00,0.15,147,80),(164,'Mattea','Marvins','MMARVINS','011.44.1346.329268','2000-01-24','SA_REP',7200.00,0.10,147,80),(165,'David','Lee','DLEE','011.44.1346.529268','2000-02-23','SA_REP',6800.00,0.10,147,80),(166,'Sundar','Ande','SANDE','011.44.1346.629268','2000-03-24','SA_REP',6400.00,0.10,147,80),(167,'Amit','Banda','ABANDA','011.44.1346.729268','2000-04-21','SA_REP',6200.00,0.10,147,80),(168,'Lisa','Ozer','LOZER','011.44.1343.929268','1997-03-11','SA_REP',11500.00,0.25,148,80),(169,'Harrison','Bloom','HBLOOM','011.44.1343.829268','1998-03-23','SA_REP',10000.00,0.20,148,80),(170,'Tayler','Fox','TFOX','011.44.1343.729268','1998-01-24','SA_REP',9600.00,0.20,148,80),(171,'William','Smith','WSMITH','011.44.1343.629268','1999-02-23','SA_REP',7400.00,0.15,148,80),(172,'Elizabeth','Bates','EBATES','011.44.1343.529268','1999-03-24','SA_REP',7300.00,0.15,148,80),(173,'Sundita','Kumar','SKUMAR','011.44.1343.329268','2000-04-21','SA_REP',6100.00,0.10,148,80),(174,'Ellen','Abel','EABEL','011.44.1644.429267','1996-05-11','SA_REP',11000.00,0.30,149,80),(175,'Alyssa','Hutton','AHUTTON','011.44.1644.429266','1997-03-19','SA_REP',8800.00,0.25,149,80),(176,'Jonathon','Taylor','JTAYLOR','011.44.1644.429265','1998-03-24','SA_REP',8600.00,0.20,149,80),(177,'Jack','Livingston','JLIVINGS','011.44.1644.429264','1998-04-23','SA_REP',8400.00,0.20,149,80),(178,'Kimberely','Grant','KGRANT','011.44.1644.429263','1999-05-24','SA_REP',7000.00,0.15,149,NULL),(179,'Charles','Johnson','CJOHNSON','011.44.1644.429262','2000-01-04','SA_REP',6200.00,0.10,149,80),(180,'Winston','Taylor','WTAYLOR','650.507.9876','1998-01-24','SH_CLERK',3200.00,NULL,120,50),(181,'Jean','Fleaur','JFLEAUR','650.507.9877','1998-02-23','SH_CLERK',3100.00,NULL,120,50),(182,'Martha','Sullivan','MSULLIVA','650.507.9878','1999-06-21','SH_CLERK',2500.00,NULL,120,50),(183,'Girard','Geoni','GGEONI','650.507.9879','2000-02-03','SH_CLERK',2800.00,NULL,120,50),(184,'Nandita','Sarchand','NSARCHAN','650.509.1876','1996-01-27','SH_CLERK',4200.00,NULL,121,50),(185,'Alexis','Bull','ABULL','650.509.2876','1997-02-20','SH_CLERK',4100.00,NULL,121,50),(186,'Julia','Dellinger','JDELLING','650.509.3876','1998-06-24','SH_CLERK',3400.00,NULL,121,50),(187,'Anthony','Cabrio','ACABRIO','650.509.4876','1999-02-07','SH_CLERK',3000.00,NULL,121,50),(188,'Kelly','Chung','KCHUNG','650.505.1876','1997-06-14','SH_CLERK',3800.00,NULL,122,50),(189,'Jennifer','Dilly','JDILLY','650.505.2876','1997-08-13','SH_CLERK',3600.00,NULL,122,50),(190,'Timothy','Gates','TGATES','650.505.3876','1998-07-11','SH_CLERK',2900.00,NULL,122,50),(191,'Randall','Perkins','RPERKINS','650.505.4876','1999-12-19','SH_CLERK',2500.00,NULL,122,50),(192,'Sarah','Bell','SBELL','650.501.1876','1996-02-04','SH_CLERK',4000.00,NULL,123,50),(193,'Britney','Everett','BEVERETT','650.501.2876','1997-03-03','SH_CLERK',3900.00,NULL,123,50),(194,'Samuel','McCain','SMCCAIN','650.501.3876','1998-07-01','SH_CLERK',3200.00,NULL,123,50),(195,'Vance','Jones','VJONES','650.501.4876','1999-03-17','SH_CLERK',2800.00,NULL,123,50),(196,'Alana','Walsh','AWALSH','650.507.9811','1998-04-24','SH_CLERK',3100.00,NULL,124,50),(197,'Kevin','Feeney','KFEENEY','650.507.9822','1998-05-23','SH_CLERK',3000.00,NULL,124,50),(198,'Donald','OConnell','DOCONNEL','650.507.9833','1999-06-21','SH_CLERK',2600.00,NULL,124,50),(199,'Douglas','Grant','DGRANT','650.507.9844','2000-01-13','SH_CLERK',2600.00,NULL,124,50),(200,'Jennifer','Whalen','JWHALEN','515.123.4444','1987-09-17','AD_ASST',4400.00,NULL,101,10),(201,'Michael','Hartstein','MHARTSTE','515.123.5555','1996-02-17','MK_MAN',13000.00,NULL,100,20),(202,'Pat','Fay','PFAY','603.123.6666','1997-08-17','MK_REP',6000.00,NULL,201,20),(203,'Susan','Mavris','SMAVRIS','515.123.7777','1994-06-07','HR_REP',6500.00,NULL,101,40),(204,'Hermann','Baer','HBAER','515.123.8888','1994-06-07','PR_REP',10000.00,NULL,101,70),(205,'Shelley','Higgins','SHIGGINS','515.123.8080','1994-06-07','AC_MGR',12000.00,NULL,101,110),(206,'William','Gietz','WGIETZ','515.123.8181','1994-06-07','AC_ACCOUNT',8300.00,NULL,205,110); - -/*Table structure for table `job_grades` */ - -DROP TABLE IF EXISTS `job_grades`; - -CREATE TABLE `job_grades` ( - `grade_level` varchar(3) DEFAULT NULL, - `lowest_sal` int(11) DEFAULT NULL, - `highest_sal` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `job_grades` */ - -insert into `job_grades`(`grade_level`,`lowest_sal`,`highest_sal`) values ('A',1000,2999),('B',3000,5999),('C',6000,9999),('D',10000,14999),('E',15000,24999),('F',25000,40000); - -/*Table structure for table `job_history` */ - -DROP TABLE IF EXISTS `job_history`; - -CREATE TABLE `job_history` ( - `employee_id` int(6) NOT NULL, - `start_date` date NOT NULL, - `end_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `department_id` int(4) DEFAULT NULL, - PRIMARY KEY (`employee_id`,`start_date`), - UNIQUE KEY `jhist_emp_id_st_date_pk` (`employee_id`,`start_date`), - KEY `jhist_job_fk` (`job_id`), - KEY `jhist_dept_fk` (`department_id`), - CONSTRAINT `jhist_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `jhist_emp_fk` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`employee_id`), - CONSTRAINT `jhist_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `job_history` */ - -insert into `job_history`(`employee_id`,`start_date`,`end_date`,`job_id`,`department_id`) values (101,'1989-09-21','1993-10-27','AC_ACCOUNT',110),(101,'1993-10-28','1997-03-15','AC_MGR',110),(102,'1993-01-13','1998-07-24','IT_PROG',60),(114,'1998-03-24','1999-12-31','ST_CLERK',50),(122,'1999-01-01','1999-12-31','ST_CLERK',50),(176,'1998-03-24','1998-12-31','SA_REP',80),(176,'1999-01-01','1999-12-31','SA_MAN',80),(200,'1987-09-17','1993-06-17','AD_ASST',90),(200,'1994-07-01','1998-12-31','AC_ACCOUNT',90),(201,'1996-02-17','1999-12-19','MK_REP',20); - -/*Table structure for table `jobs` */ - -DROP TABLE IF EXISTS `jobs`; - -CREATE TABLE `jobs` ( - `job_id` varchar(10) NOT NULL DEFAULT '', - `job_title` varchar(35) NOT NULL, - `min_salary` int(6) DEFAULT NULL, - `max_salary` int(6) DEFAULT NULL, - PRIMARY KEY (`job_id`), - UNIQUE KEY `job_id_pk` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `jobs` */ - -insert into `jobs`(`job_id`,`job_title`,`min_salary`,`max_salary`) values ('AC_ACCOUNT','Public Accountant',4200,9000),('AC_MGR','Accounting Manager',8200,16000),('AD_ASST','Administration Assistant',3000,6000),('AD_PRES','President',20000,40000),('AD_VP','Administration Vice President',15000,30000),('FI_ACCOUNT','Accountant',4200,9000),('FI_MGR','Finance Manager',8200,16000),('HR_REP','Human Resources Representative',4000,9000),('IT_PROG','Programmer',4000,10000),('MK_MAN','Marketing Manager',9000,15000),('MK_REP','Marketing Representative',4000,9000),('PR_REP','Public Relations Representative',4500,10500),('PU_CLERK','Purchasing Clerk',2500,5500),('PU_MAN','Purchasing Manager',8000,15000),('SA_MAN','Sales Manager',10000,20000),('SA_REP','Sales Representative',6000,12000),('SH_CLERK','Shipping Clerk',2500,5500),('ST_CLERK','Stock Clerk',2000,5000),('ST_MAN','Stock Manager',5500,8500); - -/*Table structure for table `locations` */ - -DROP TABLE IF EXISTS `locations`; - -CREATE TABLE `locations` ( - `location_id` int(4) NOT NULL DEFAULT '0', - `street_address` varchar(40) DEFAULT NULL, - `postal_code` varchar(12) DEFAULT NULL, - `city` varchar(30) NOT NULL, - `state_province` varchar(25) DEFAULT NULL, - `country_id` char(2) DEFAULT NULL, - PRIMARY KEY (`location_id`), - UNIQUE KEY `loc_id_pk` (`location_id`), - KEY `loc_c_id_fk` (`country_id`), - CONSTRAINT `loc_c_id_fk` FOREIGN KEY (`country_id`) REFERENCES `countries` (`country_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `locations` */ - -insert into `locations`(`location_id`,`street_address`,`postal_code`,`city`,`state_province`,`country_id`) values (1000,'1297 Via Cola di Rie','00989','Roma',NULL,'IT'),(1100,'93091 Calle della Testa','10934','Venice',NULL,'IT'),(1200,'2017 Shinjuku-ku','1689','Tokyo','Tokyo Prefecture','JP'),(1300,'9450 Kamiya-cho','6823','Hiroshima',NULL,'JP'),(1400,'2014 Jabberwocky Rd','26192','Southlake','Texas','US'),(1500,'2011 Interiors Blvd','99236','South San Francisco','California','US'),(1600,'2007 Zagora St','50090','South Brunswick','New Jersey','US'),(1700,'2004 Charade Rd','98199','Seattle','Washington','US'),(1800,'147 Spadina Ave','M5V 2L7','Toronto','Ontario','CA'),(1900,'6092 Boxwood St','YSW 9T2','Whitehorse','Yukon','CA'),(2000,'40-5-12 Laogianggen','190518','Beijing',NULL,'CN'),(2100,'1298 Vileparle (E)','490231','Bombay','Maharashtra','IN'),(2200,'12-98 Victoria Street','2901','Sydney','New South Wales','AU'),(2300,'198 Clementi North','540198','Singapore',NULL,'SG'),(2400,'8204 Arthur St',NULL,'London',NULL,'UK'),(2500,'Magdalen Centre, The Oxford Science Park','OX9 9ZB','Oxford','Oxford','UK'),(2600,'9702 Chester Road','09629850293','Stretford','Manchester','UK'),(2700,'Schwanthalerstr. 7031','80925','Munich','Bavaria','DE'),(2800,'Rua Frei Caneca 1360 ','01307-002','Sao Paulo','Sao Paulo','BR'),(2900,'20 Rue des Corps-Saints','1730','Geneva','Geneve','CH'),(3000,'Murtenstrasse 921','3095','Bern','BE','CH'),(3100,'Pieter Breughelstraat 837','3029SK','Utrecht','Utrecht','NL'),(3200,'Mariano Escobedo 9991','11932','Mexico City','Distrito Federal,','MX'); - -/*Table structure for table `order` */ - -DROP TABLE IF EXISTS `order`; - -CREATE TABLE `order` ( - `order_id` int(11) DEFAULT NULL, - `order_name` varchar(15) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `order` */ - -insert into `order`(`order_id`,`order_name`) values (1,'shkstart'),(2,'tomcat'),(3,'dubbo'); - -/*Table structure for table `regions` */ - -DROP TABLE IF EXISTS `regions`; - -CREATE TABLE `regions` ( - `region_id` int(11) NOT NULL, - `region_name` varchar(25) DEFAULT NULL, - PRIMARY KEY (`region_id`), - UNIQUE KEY `reg_id_pk` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `regions` */ - -insert into `regions`(`region_id`,`region_name`) values (1,'Europe'),(2,'Americas'),(3,'Asia'),(4,'Middle East and Africa'); - -/*Table structure for table `emp_details_view` */ - -DROP TABLE IF EXISTS `emp_details_view`; - -/*!50001 DROP VIEW IF EXISTS `emp_details_view` */; -/*!50001 DROP TABLE IF EXISTS `emp_details_view` */; - -/*!50001 CREATE TABLE `emp_details_view`( - `employee_id` int(6) , - `job_id` varchar(10) , - `manager_id` int(6) , - `department_id` int(4) , - `location_id` int(4) , - `country_id` char(2) , - `first_name` varchar(20) , - `last_name` varchar(25) , - `salary` double(8,2) , - `commission_pct` double(2,2) , - `department_name` varchar(30) , - `job_title` varchar(35) , - `city` varchar(30) , - `state_province` varchar(25) , - `country_name` varchar(40) , - `region_name` varchar(25) -)*/; - -/*View structure for view emp_details_view */ - -/*!50001 DROP TABLE IF EXISTS `emp_details_view` */; -/*!50001 DROP VIEW IF EXISTS `emp_details_view` */; - -/*!50001 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `emp_details_view` AS select `e`.`employee_id` AS `employee_id`,`e`.`job_id` AS `job_id`,`e`.`manager_id` AS `manager_id`,`e`.`department_id` AS `department_id`,`d`.`location_id` AS `location_id`,`l`.`country_id` AS `country_id`,`e`.`first_name` AS `first_name`,`e`.`last_name` AS `last_name`,`e`.`salary` AS `salary`,`e`.`commission_pct` AS `commission_pct`,`d`.`department_name` AS `department_name`,`j`.`job_title` AS `job_title`,`l`.`city` AS `city`,`l`.`state_province` AS `state_province`,`c`.`country_name` AS `country_name`,`r`.`region_name` AS `region_name` from (((((`employees` `e` join `departments` `d`) join `jobs` `j`) join `locations` `l`) join `countries` `c`) join `regions` `r`) where ((`e`.`department_id` = `d`.`department_id`) and (`d`.`location_id` = `l`.`location_id`) and (`l`.`country_id` = `c`.`country_id`) and (`c`.`region_id` = `r`.`region_id`) and (`j`.`job_id` = `e`.`job_id`)) */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - -``` - -### 题目 - -```mysql -#第14章_视图的课后练习 - -#练习1: -#1. 使用表emps创建视图employee_vu, -#其中包括姓名(LAST_NAME),员工号(EMPLOYEE_ID),部门号(DEPARTMENT_ID) -create view employee_vu as select last_name 姓名,employee_id 员工号,department_id 部门号 from employees; - -#2. 显示视图的结构 -desc employee_vu; - -#3. 查询视图中的全部内容 -select * from employee_vu; - -#4. 将视图中的数据限定在部门号是80的范围内 -create or replace view employee_vu as select last_name 姓名,employee_id 员工号,department_id 部门号 from employees where department_id=80; -select * from employee_vu; - -#练习2: -#1. 创建视图emp_v1,要求查询电话号码以‘011’开头的员工姓名和工资、邮箱 -create view emp_v1 as select last_name 员工姓名,salary 工资,email 邮箱 from employees where phone_number like '011%'; - -#2. 要求将视图 emp_v1 修改为查询电话号码以‘011’开头的并且邮箱中包含 e 字符 -#的员工姓名和邮箱、电话号码,工资 -create or replace view emp_v1 as select last_name 员工姓名,salary 工资,phone_number 电话号码,email 邮箱 from employees where phone_number like '011%' and email like '%e%'; - -#3. 向 emp_v1 插入一条记录,是否可以? -不可以 - -#4. 修改emp_v1中员工的工资,每人涨薪1000 -update emp_v1 set 工资=工资+1000; - -#5. 删除emp_v1中姓名为Olsen的员工 -delete from emp_v1 where 员工姓名='Olsen'; - -#6. 创建视图emp_v2,要求查询部门的最高工资高于 12000 的部门id和其最高工资 -create view emp_v2 as select department_id 部门id,max(salary) 最高工资 from employees group by department_id having max(salary)>12000; - -#7. 向 emp_v2 中插入一条记录,是否可以? -不可以 - -#8. 删除刚才的emp_v2 和 emp_v1 -drop view emp_v2 , emp_v1; -``` \ No newline at end of file diff --git "a/08 \345\256\230\346\226\207\350\257\232/20230905 \345\274\200\345\255\246\347\254\254\344\270\200\350\257\276.md" "b/08 \345\256\230\346\226\207\350\257\232/20230905 \345\274\200\345\255\246\347\254\254\344\270\200\350\257\276.md" deleted file mode 100644 index 880328b..0000000 --- "a/08 \345\256\230\346\226\207\350\257\232/20230905 \345\274\200\345\255\246\347\254\254\344\270\200\350\257\276.md" +++ /dev/null @@ -1,26 +0,0 @@ -### 大二上 - -实际应用(实操)学习mysql高级 MVC框架等 - -### 大二下 - -Node.js(前端) vue.js(前端)简化开发 有UI框架配合 - -spping Boot (redis,webApi) - -### 大二下 - -实训:1.Linux服务器 nginx - - 2. 项目中可能实现的技术:中间件 ,签权 ,鉴别权限 - 3. 小程序 uniapp移动端开发 - -### 课后知识 - -1.技术栈:一个技术要求用用什么技术实现,可以成为技术选型 - -2.技能树:一个人具备的技能,称为技能树 - -3.学会独立完成项目,在老师讲课的基础上,多利用空余时间学习别的知识 - -4.我们应该多关注招聘网站,多以我们学习的专业 招聘职位的岗位要求,为我们的学习目标 可以更好的适应今后的工作 \ No newline at end of file diff --git "a/08 \345\256\230\346\226\207\350\257\232/20230906 \346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" "b/08 \345\256\230\346\226\207\350\257\232/20230906 \346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" deleted file mode 100644 index 9c114ec..0000000 --- "a/08 \345\256\230\346\226\207\350\257\232/20230906 \346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" +++ /dev/null @@ -1,144 +0,0 @@ -### 可以多根据用户需求和开发的系统的需求,设计出符合对应的DBMS的需求的数据库结构,使其能有效的储存合管理数据 - -## 表与表之间的关系有 一对一 一对多 多对多 - -1.一对一的关系:将其一个主键,放到另一个表当主键 - -2.一对多的关系:将一所在表的主键,放到多的表当当外键 - -3.多对多的关系:必须第三张表,把另外两个表的主键放到这个表当外键 - - - -### E-R图(实体关系图):以实体,关系,属性三个基本概念数据的基本结构 - -联系:用菱形表示,矩形内写明实体名 ,用线与实体相连,可标上联系的类型,联系也可以有自己的属性 - -属性:用椭圆形或者圆角矩形表示,与相应的实体连接起来 ,属性名加下划线 - -要素:实体(表),属性(字段),关系(线的中间加菱形) - -实体:用矩形,主键 加下划线 外键横线中间加菱形 - - - -# 作业 - -~~~ mysql -CREATE DATABASE sc charset utf8; -use sc; -#院系表 -CREATE TABLE department( -d_id int primary KEY, -d_name VARCHAR(20) -); - -INSERT INTO department VALUES -(111,'软件工程学院'), -(112,'财经商贸学院'), -(113,'医疗医护学院'); - -# 专业表 -CREATE TABLE major( -m_id int PRIMARY KEY, -m_name VARCHAR(20), -d_id int, -foreign key(d_id) references department(d_id) -); - -INSERT into major VALUES -(11,'软件技术',111), -(22,'会计',112), -(33,'护理',113); -#班级表 -CREATE TABLE class( -cl_id int PRIMARY key, -cl_name VARCHAR(20), - grade VARCHAR(20), - m_id int, - FOREIGN key(m_id) REFERENCES major(m_id) -); - -insert into class values -(1,'软件技术2班','22级',11), -(2,'软件技术8班','21级',11), -(3,'软件技术4班','23级',11); -#教师表 -CREATE TABLE teacher( -t_id int PRIMARY key, -t_name VARCHAR(20), -t_sex VARCHAR(5) -); - -insert into teacher values -(1,'叶子豪','男'), -(2,'小叶','女'), -(3,'小六','女'); -# 课程表 -CREATE TABLE courses( -c_id int PRIMARY key, -c_name VARCHAR(20), -t_id int, -FOREIGN KEY (t_id) REFERENCES teacher(t_id) -); -insert into courses VALUES -(1,'java',1), -(2,'html',2), -(3,'php',3); -# 学生表 -CREATE TABLE student( -s_id int PRIMARY key, -s_name VARCHAR(5), -s_sex VARCHAR(2), -c_id int, -FOREIGN key(c_id) REFERENCES class(c_id) -); - -insert into student values -(01,'小代','男',1), -(02,'小二','女',2), -(03,'老六','女',3); -# 成绩表 -CREATE TABLE grades( -g_gr int, -s_id int, -c_id int, -FOREIGN KEY(s_id) REFERENCES student(s_id), -FOREIGN KEY(c_id) REFERENCES courses(c_id) -); - -INSERT into grades VALUES -(70,1,3), -(80,3,2), -(90,2,1); -#教室表 -CREATE TABLE classroom( -room_id int PRIMARY KEY, -room_name VARCHAR(20), -room_address VARCHAR(20) -); - - -insert into classroom values -(1,'实训八','望云楼'), -(2,'实训五','望云楼'), -(3,'实训三','望云楼'); -# 课程表 -CREATE TABLE curriculum( -room_id int, -cu_week VARCHAR(10), -cu_courseid int, -FOREIGN KEY(room_id) REFERENCES classroom(room_id) -); - -INSERT into curriculum VALUES -(1,'星期一',2), -(1,'星期一',3), -(1,'星期一',1); - - - -~~~ - - - diff --git "a/08 \345\256\230\346\226\207\350\257\232/20230907 \346\225\260\346\215\256\345\272\223\350\214\203\345\274\217.md" "b/08 \345\256\230\346\226\207\350\257\232/20230907 \346\225\260\346\215\256\345\272\223\350\214\203\345\274\217.md" deleted file mode 100644 index 5b98fd6..0000000 --- "a/08 \345\256\230\346\226\207\350\257\232/20230907 \346\225\260\346\215\256\345\272\223\350\214\203\345\274\217.md" +++ /dev/null @@ -1,95 +0,0 @@ -# 数据库的范式 - -第一范式:要求字段的内容,不可再分割为保证数据的原子性 - -第二范式:要求在满足第一范式的基础上 要求非主键字段要完全依赖主键(非主键要依赖整个联合主键)而不能只依赖部分 - -第三范式:满足第二范式的前提下 要求非主键属性要直接依赖于主键 - -~~~ sql -# 建库 -CREATE DATABASE school charset utf8; -# 选库 -use school; -# 院系表 -CREATE TABLE college( -co_id int PRIMARY KEY auto_increment, -co_name VARCHAR(20) -); -# 专业表 -CREATE TABLE major( -ma_id int PRIMARY KEY auto_increment, -ma_name VARCHAR(20), -ma_intor VARCHAR(255), -co_id int, -FOREIGN KEY(co_id) REFERENCES college(co_id) -); -# 班级表 -CREATE TABLE clazz( -cl_id int PRIMARY KEY auto_increment, -cl_name VARCHAR(20), -cl_grade int, -ma_id int, -FOREIGN KEY(ma_id) REFERENCES major(ma_id) -); -# 学生表 -CREATE TABLE student( -st_id int PRIMARY KEY auto_increment, -st_name VARCHAR(20), -st_age int, -st_address VARCHAR(20), -st_gender char(1), -cl_id int, -FOREIGN KEY(cl_id) REFERENCES clazz(cl_id) -); - -# 老师表 -CREATE TABLE teacher( -te_id int PRIMARY KEY auto_increment, -te_name VARCHAR(20), -te_age int, -te_address VARCHAR(20), -te_gender char(1) -); - - -# 课程信息表 -CREATE TABLE coures( -ce_id int PRIMARY KEY auto_increment, -ce_name VARCHAR(20), -te_id int, -FOREIGN KEY(te_id) REFERENCES teacher(te_id) -); - -# 选修(成绩)表 -CREATE TABLE elective( -el_score DOUBLE, -ce_id int, -st_id int, -FOREIGN KEY(ce_id) REFERENCES coures(ce_id), -FOREIGN KEY(st_id) REFERENCES student(st_id) -); - -#教室表 - -CREATE TABLE classroom( -room_id int PRIMARY KEY auto_increment, -room_name int, -room_address VARCHAR(20) -); - -#课程表 -CREATE TABLE curriculum( -cm_id int PRIMARY KEY auto_increment, -cm_name VARCHAR(10), -room_id int, -- 教室主键 -FOREIGN KEY(room_id) REFERENCES classroom(room_id), -te_id int, -- 老师主键 -FOREIGN KEY(te_id) REFERENCES teacher(te_id), -ce_id int, -- 课程信息表主键 -FOREIGN KEY(ce_id) REFERENCES coures(ce_id), -cl_id int, -- 班级表主键 -FOREIGN KEY(cl_id) REFERENCES clazz(cl_id) -); -~~~ - diff --git "a/08 \345\256\230\346\226\207\350\257\232/20230910 \345\233\276\344\271\246\351\246\206.md" "b/08 \345\256\230\346\226\207\350\257\232/20230910 \345\233\276\344\271\246\351\246\206.md" deleted file mode 100644 index 449cd2c..0000000 --- "a/08 \345\256\230\346\226\207\350\257\232/20230910 \345\233\276\344\271\246\351\246\206.md" +++ /dev/null @@ -1,172 +0,0 @@ -## 笔记 - -### powerDesigner - -第一步:创建概念模型(类似于E-R图) CDM(以用户的角度) - -第二步:转换成逻辑模型 LMD (以计算机的角度) - -第三步:转换成物理模型 PDM(以数据库的角度) - -第四步:生成DDL - - - -## 作业 - - - -![image-20230911130253553](https://s2.loli.net/2023/09/11/I4scvGrZ3t18k75.png) - -![image-20230911130317516](https://s2.loli.net/2023/09/11/KsbEO3vA6uwCatG.png) - -~~~ sql -CREATE DATABASE aaa charset utf8; -use aaa; - -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/11 4:17:10 */ -/*==============================================================*/ - - -drop table if exists Borrowin; - -drop table if exists administrator; - -drop table if exists author; - -drop table if exists book; - -drop table if exists category; - -drop table if exists library; - -drop table if exists publishing; - -drop table if exists student; - -/*==============================================================*/ -/* Table: Borrowin */ -/*==============================================================*/ -create table Borrowin -( - bo_id int not null, - stu_id char(10) not null, - bo_library char(10) not null, - bo_return char(10) not null, - primary key (bo_id, stu_id) -); - -/*==============================================================*/ -/* Table: administrator */ -/*==============================================================*/ -create table administrator -( - ad_id char(10) not null, - li_id int not null, - ad_name char(5) not null, - ad_sex char(1) not null, - ad_age int not null, - ad_tel varchar(11) not null, - ad_address varchar(30), - primary key (ad_id) -); - -/*==============================================================*/ -/* Table: author */ -/*==============================================================*/ -create table author -( - au_id char(20) not null, - au_name char(10) not null, - au_sex char(1), - zu_tel char(20), - primary key (au_id) -); - -/*==============================================================*/ -/* Table: book */ -/*==============================================================*/ -create table book -( - bo_id int not null auto_increment, - au_id char(20) not null, - cat_id char(10) not null, - bo_name varchar(10) not null, - primary key (bo_id) -); - -/*==============================================================*/ -/* Table: category */ -/*==============================================================*/ -create table category -( - cat_id char(10) not null, - li_id int not null, - cat_name varchar(10) not null, - cat_type varchar(10) not null, - primary key (cat_id) -); - -/*==============================================================*/ -/* Table: library */ -/*==============================================================*/ -create table library -( - li_id int not null auto_increment, - li_address varchar(20) not null, - li_resume varchar(255) not null, - primary key (li_id) -); - -/*==============================================================*/ -/* Table: publishing */ -/*==============================================================*/ -create table publishing -( - pu_id char(10) not null, - bo_id int not null, - pu_name char(20) not null, - pu_tel char(11) not null, - pu_adress varchar(255) not null, - primary key (pu_id) -); - -/*==============================================================*/ -/* Table: student */ -/*==============================================================*/ -create table student -( - stu_id char(10) not null, - stu_name char(5) not null, - stu_sex char(1) not null, - stu_age int not null, - sut_tel varchar(11) not null, - stu_class char(10) not null, - primary key (stu_id) -); - -alter table Borrowin add constraint FK_Borrowin foreign key (bo_id) - references book (bo_id) on delete restrict on update restrict; - -alter table Borrowin add constraint FK_Borrowin2 foreign key (stu_id) - references student (stu_id) on delete restrict on update restrict; - -alter table administrator add constraint FK_manage foreign key (li_id) - references library (li_id) on delete restrict on update restrict; - -alter table book add constraint FK_Relationship_5 foreign key (au_id) - references author (au_id) on delete restrict on update restrict; - -alter table book add constraint FK_Relationship_6 foreign key (cat_id) - references category (cat_id) on delete restrict on update restrict; - -alter table category add constraint FK_Relationship_7 foreign key (li_id) - references library (li_id) on delete restrict on update restrict; - -alter table publishing add constraint FK_publication foreign key (bo_id) - references book (bo_id) on delete restrict on update restrict; - -~~~ - diff --git "a/08 \345\256\230\346\226\207\350\257\232/20230912 \347\224\265\345\275\261\344\275\234\344\270\232.md" "b/08 \345\256\230\346\226\207\350\257\232/20230912 \347\224\265\345\275\261\344\275\234\344\270\232.md" deleted file mode 100644 index 7a6a274..0000000 --- "a/08 \345\256\230\346\226\207\350\257\232/20230912 \347\224\265\345\275\261\344\275\234\344\270\232.md" +++ /dev/null @@ -1,216 +0,0 @@ -## 作业 - -![image-20230912150116180](https://s2.loli.net/2023/09/12/kNWrUqi32wMTalc.png) - -~~~ mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/12 14:57:38 */ -/*==============================================================*/ - - -drop table if exists actor; - -drop table if exists comment; - -drop table if exists critics; - -drop table if exists director; - -drop table if exists language; - -drop table if exists movie; - -drop table if exists producer; - -drop table if exists producing; - -drop table if exists score; - -drop table if exists starring; - -drop table if exists type; - -drop table if exists user; - -/*==============================================================*/ -/* Table: actor */ -/*==============================================================*/ -create table actor -( - ac_id int not null auto_increment, - ac_name char(10) not null, - ac_sex char(2) not null, - ac_age int not null, - ac_tel char(15) not null, - primary key (ac_id) -); - -/*==============================================================*/ -/* Table: comment */ -/*==============================================================*/ -create table comment -( - com_id int not null auto_increment, - com_appraise varchar(150) not null, - primary key (com_id) -); - -/*==============================================================*/ -/* Table: critics */ -/*==============================================================*/ -create table critics -( - cr_id int not null auto_increment, - mo_id int, - cr_title varchar(50) not null, - cr_appraise varchar(255) not null, - primary key (cr_id) -); - -/*==============================================================*/ -/* Table: director */ -/*==============================================================*/ -create table director -( - ac_id int not null, - mo_id int not null, - dir_name char(10) not null, - primary key (ac_id, mo_id) -); - -/*==============================================================*/ -/* Table: language */ -/*==============================================================*/ -create table language -( - lan_id char(10) not null, - mo_id int, - lan_name char(20) not null, - primary key (lan_id) -); - -/*==============================================================*/ -/* Table: movie */ -/*==============================================================*/ -create table movie -( - mo_id int not null auto_increment, - type_id char(10), - com_id int, - mo_name char(20) not null, - mo_time date not null, - mo_min char(10) not null, - primary key (mo_id) -); - -/*==============================================================*/ -/* Table: producer */ -/*==============================================================*/ -create table producer -( - ac_id int not null, - mo_id int not null, - po_name char(10) not null, - primary key (ac_id, mo_id) -); - -/*==============================================================*/ -/* Table: producing */ -/*==============================================================*/ -create table producing -( - pro_id char(10) not null, - mo_id int, - pro_name varchar(20) not null, - primary key (pro_id) -); - -/*==============================================================*/ -/* Table: score */ -/*==============================================================*/ -create table score -( - user_id int not null, - mo_id int not null, - sc_fs char(10) not null, - primary key (user_id, mo_id) -); - -/*==============================================================*/ -/* Table: starring */ -/*==============================================================*/ -create table starring -( - ac_id int not null, - mo_id int not null, - st_name char(10) not null, - primary key (ac_id, mo_id) -); - -/*==============================================================*/ -/* Table: type */ -/*==============================================================*/ -create table type -( - type_id char(10) not null, - type_name varchar(20) not null, - primary key (type_id) -); - -/*==============================================================*/ -/* Table: user */ -/*==============================================================*/ -create table user -( - user_id int not null auto_increment, - user_name char(10) not null, - user_age int, - user_sex char(2), - user_tel char(18) not null, - user_ip char(10), - primary key (user_id) -); - -alter table critics add constraint FK_Relationship_9 foreign key (mo_id) - references movie (mo_id) on delete restrict on update restrict; - -alter table director add constraint FK_director foreign key (ac_id) - references actor (ac_id) on delete restrict on update restrict; - -alter table director add constraint FK_director2 foreign key (mo_id) - references movie (mo_id) on delete restrict on update restrict; - -alter table language add constraint FK_Relationship_8 foreign key (mo_id) - references movie (mo_id) on delete restrict on update restrict; - -alter table movie add constraint FK_Relationship_1 foreign key (type_id) - references type (type_id) on delete restrict on update restrict; - -alter table movie add constraint FK_Relationship_13 foreign key (com_id) - references comment (com_id) on delete restrict on update restrict; - -alter table producer add constraint FK_producer foreign key (ac_id) - references actor (ac_id) on delete restrict on update restrict; - -alter table producer add constraint FK_producer2 foreign key (mo_id) - references movie (mo_id) on delete restrict on update restrict; - -alter table producing add constraint FK_Relationship_5 foreign key (mo_id) - references movie (mo_id) on delete restrict on update restrict; - -alter table score add constraint FK_score foreign key (user_id) - references user (user_id) on delete restrict on update restrict; - -alter table score add constraint FK_score2 foreign key (mo_id) - references movie (mo_id) on delete restrict on update restrict; - -alter table starring add constraint FK_starring foreign key (ac_id) - references actor (ac_id) on delete restrict on update restrict; - -alter table starring add constraint FK_starring2 foreign key (mo_id) - references movie (mo_id) on delete restrict on update restrict; - - -~~~ - diff --git "a/08 \345\256\230\346\226\207\350\257\232/20230913 \345\214\273\347\224\237\344\275\234\344\270\232.md" "b/08 \345\256\230\346\226\207\350\257\232/20230913 \345\214\273\347\224\237\344\275\234\344\270\232.md" deleted file mode 100644 index 018280c..0000000 --- "a/08 \345\256\230\346\226\207\350\257\232/20230913 \345\214\273\347\224\237\344\275\234\344\270\232.md" +++ /dev/null @@ -1,266 +0,0 @@ -## 笔记 - -如果一个主体的属性有多个值那这个属性就可以拆成一个新的主体 - -## 作业 - -![image-20230914001728162](https://s2.loli.net/2023/09/14/c67CgKyaSt8Bz9Q.png) - -~~~ mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/13 22:17:22 */ -/*==============================================================*/ -CREATE DATABASE yy charset utf8; -use yy; - -drop table if exists cases; - -drop table if exists department; - -drop table if exists diagnosis; - -drop table if exists doctor; - -drop table if exists hospital; - -drop table if exists medicine; - -drop table if exists nurse; - -drop table if exists outpatient; - -drop table if exists patient; - -drop table if exists payment; - -drop table if exists pharmacy; - -drop table if exists ward; - -/*==============================================================*/ -/* Table: cases */ -/*==============================================================*/ -create table cases -( - pat_id char(10) not null, - doc_id char(10) not null, - primary key (pat_id, doc_id) -); - -INSERT into cases VALUES -('1','3'), -('1','5'); - -/*==============================================================*/ -/* Table: department */ -/*==============================================================*/ -create table department -( - dep_id char(10) not null, - hos_id char(10), - dep_name char(20) not null, - primary key (dep_id) -); - -INSERT into department VALUES -('1','3','内科'), -('2','1','外科'); - -/*==============================================================*/ -/* Table: diagnosis */ -/*==============================================================*/ -create table diagnosis -( - pat_id char(10) not null, - nurse_id char(10) not null, - phar_id char(10) not null, - primary key (pat_id, nurse_id) -); - -INSERT into diagnosis VALUES -('1','3','2'), -('3','2','1'); - -/*==============================================================*/ -/* Table: doctor */ -/*==============================================================*/ -create table doctor -( - doc_id char(10) not null, - dep_id char(10), - out_id char(10), - doc_name char(20) not null, - doc_sex char(10) not null, - doc_age int not null, - doc_introduce varchar(255) not null, - doc_tel char(11) not null, - primary key (doc_id) -); - -INSERT into doctor VALUES -('3','1','1','周富','男',30,'帅','13121516141'), -('1','3','3','叶子豪','女',40,'好','16141519175'); - -/*==============================================================*/ -/* Table: hospital */ -/*==============================================================*/ -create table hospital -( - hos_id char(10) not null, - hos_name char(20) not null, - primary key (hos_id) -); - -INSERT into hospital VALUES -('1','1号医院'), -('3','2号医院'); - -/*==============================================================*/ -/* Table: medicine */ -/*==============================================================*/ -create table medicine -( - med_id char(10) not null, - phar_id char(10), - med_name char(20) not null, - med_time char(10) not null, - primary key (med_id) -); - -INSERT into medicine VALUES -('1','3','2','2020-2-3'), -('1','3','2','2020-3-5'); -/*==============================================================*/ -/* Table: nurse */ -/*==============================================================*/ -create table nurse -( - nurse_id char(10) not null, - phar_id char(10), - nurse_name char(20) not null, - nurse_sex char(2) not null, - nurse_age int not null, - primary key (nurse_id) -); - -INSERT into nurse VALUES -('1','2','小叶','女',30),('3','3','小涛','男',28); - - - -/*==============================================================*/ -/* Table: outpatient */ -/*==============================================================*/ -create table outpatient -( - out_id char(10) not null, - hos_id char(10), - out_name char(20) not null, - primary key (out_id) -); - -INSERT into outpatient VALUES -('1','3','发热科'), -('3','1','内科'); - -/*==============================================================*/ -/* Table: patient */ -/*==============================================================*/ -create table patient -( - pat_id char(10) not null, - ward_id char(10), - pay_id char(10), - pat_name char(10) not null, - pat_sex char(10) not null, - pat_age int not null, - pat_identity char(20) not null, - pat_tel char(11) not null, - primary key (pat_id) -); - -INSERT into patient VALUES -('1','3','2','子豪','男',20,'3500000','13658945168'),('3','1','2','小富','女',30,'31333333','16151418195'); - -/*==============================================================*/ -/* Table: payment */ -/*==============================================================*/ -create table payment -( - pay_id char(10) not null, - pay_name char(20) not null, - pay_amount numeric(8,1) not null, - primary key (pay_id) -); - -INSERT into payment VALUES -('1','120',130.8), -('2','220',1400.3); - -/*==============================================================*/ -/* Table: pharmacy */ -/*==============================================================*/ -create table pharmacy -( - phar_id char(10) not null, - phar_name char(20) not null, - primary key (phar_id) -); - -INSERT into pharmacy VALUES -('1','头孢房'), -('2','999感冒灵房'); - -/*==============================================================*/ -/* Table: ward */ -/*==============================================================*/ -create table ward -( - ward_id char(10) not null, - ward_name char(20) not null, - primary key (ward_id) -); - -INSERT into ward VALUES -('1','210'), -('2','410'); - -/* ====================================== */ -alter table cases add constraint FK_cases foreign key (pat_id) - references patient (pat_id) on delete restrict on update restrict; - -alter table cases add constraint FK_cases2 foreign key (doc_id) - references doctor (doc_id) on delete restrict on update restrict; - -alter table department add constraint FK_Relationship_8 foreign key (hos_id) - references hospital (hos_id) on delete restrict on update restrict; - -alter table diagnosis add constraint FK_diagnosis foreign key (pat_id) - references patient (pat_id) on delete restrict on update restrict; - -alter table diagnosis add constraint FK_diagnosis2 foreign key (nurse_id) - references nurse (nurse_id) on delete restrict on update restrict; - -alter table doctor add constraint FK_Relationship_1 foreign key (dep_id) - references department (dep_id) on delete restrict on update restrict; - -alter table doctor add constraint FK_Relationship_10 foreign key (out_id) - references outpatient (out_id) on delete restrict on update restrict; - -alter table medicine add constraint FK_Relationship_4 foreign key (phar_id) - references pharmacy (phar_id) on delete restrict on update restrict; - -alter table nurse add constraint FK_Relationship_7 foreign key (phar_id) - references pharmacy (phar_id) on delete restrict on update restrict; - -alter table outpatient add constraint FK_Relationship_9 foreign key (hos_id) - references hospital (hos_id) on delete restrict on update restrict; - -alter table patient add constraint FK_Relationship_3 foreign key (ward_id) - references ward (ward_id) on delete restrict on update restrict; - -alter table patient add constraint FK_Relationship_6 foreign key (pay_id) - references payment (pay_id) on delete restrict on update restrict; -~~~ - diff --git "a/08 \345\256\230\346\226\207\350\257\232/20230915 mysql\345\244\215\344\271\240.md" "b/08 \345\256\230\346\226\207\350\257\232/20230915 mysql\345\244\215\344\271\240.md" deleted file mode 100644 index 8bc1581..0000000 --- "a/08 \345\256\230\346\226\207\350\257\232/20230915 mysql\345\244\215\344\271\240.md" +++ /dev/null @@ -1,34 +0,0 @@ -## 复习 -如果值是null,那么所有null参与运算,返回的结果也都是null - -所以遇上null,却又必须让它参与运算,就使用 ifnull (原值,新值) - -这个函数的作用,如果原值是null,就用新值代替,如果原值不null,就保持原值 - -#### ifnull - -计算时,ifnull(xx,代替值)当xx是null时,用代替值计算 - -使用方式:ifnull(字段名) - -limit 起始数,显示数 - -desc 库名:显示表结构 - -length(email):email的字节长度 - -#### 自然连接 - -表,表 where 字段=字段 and 字段=字段 - -#### 联表区间 - -表 left join 表 on 表.字段 between 表.字段 and 表.字段(不支持别名) - -#### 自连接 - -inner join - -not in(条件,条件) - -!(between 20 and 50) \ No newline at end of file diff --git "a/08 \345\256\230\346\226\207\350\257\232/20230917 \345\260\217\346\265\213.md" "b/08 \345\256\230\346\226\207\350\257\232/20230917 \345\260\217\346\265\213.md" deleted file mode 100644 index 7f73037..0000000 --- "a/08 \345\256\230\346\226\207\350\257\232/20230917 \345\260\217\346\265\213.md" +++ /dev/null @@ -1,125 +0,0 @@ -![image-20230917211022417](https://s2.loli.net/2023/09/17/5URPqvCK6tAkHmo.png) - -~~~ sql - -CREATE DATABASE cat charset utf8; -use cat; -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-15 08:56:05 */ -/*==============================================================*/ - - -drop table if exists car; - -drop table if exists client; - -drop table if exists salesman; - -drop table if exists salesrecord; - -/*==============================================================*/ -/* Table: car */ -/*==============================================================*/ -create table car -( - car_id char(10) not null, - car_brand char(20) not null, - car_model char(10) not null, - car_price decimal(10,1) not null, - primary key (car_id) -); - -INSERT into car VALUES -('s101','奔驰','e500',1000000), -('s102','奥迪','a6',800000), -('s103','法拉利','911',1563452), -('s104','五菱宏光','a100',234102); - -/*==============================================================*/ -/* Table: client */ -/*==============================================================*/ -create table client -( - client_id char(20) not null, - client_name varchar(20) not null, - client_sex char(2) not null, - client_age int not null, - client_tel varchar(12) not null, - primary key (client_id) -); - -INSERT into client VALUES -('1','时学安','男',23,'13161554256'), -('2','叶子豪','女',30,'14488796603'), -('3','周富','男',24,'16635696642'), -('4','陈佳炜','男',26,'14851123620'); - -/*==============================================================*/ -/* Table: salesman */ -/*==============================================================*/ -create table salesman -( - sales_id char(10) not null, - sales_name char(20) not null, - sales_sex char(2) not null, - sales_age int not null, - sales_tel varchar(12) not null, - primary key (sales_id) -); - -INSERT into salesman VALUES -('2','李俊兴','男',35,'14454756321'), -('1','谢铖浩','男',45,'13366522446'), -('3','肖钟凯韩','女',26,'15563320136'), -('4','马达','男',28,'14778952146'); - -/*==============================================================*/ -/* Table: salesrecord */ -/*==============================================================*/ -create table salesrecord -( - sal_quantity int not null, - sal_totalprices decimal(10,1) not null, - sal_time varchar(20) not null, - sal_id char(10) not null, - car_id char(10), - sales_id char(10), - client_id char(20), - primary key (sal_id) -); -INSERT into salesrecord VALUES -(1,1563452,'2022-02-03','1','s103','1','3'), -(1,234102,'2021-03-16','2','s104','3','2'), -(1,1000000,'2023-09-06','3','s101','4','1'), -(1,800000,'2023-12-23','4','s102','2','4'); - -alter table salesrecord add constraint FK_Relationship_1 foreign key (car_id) - references car (car_id) on delete restrict on update restrict; - -alter table salesrecord add constraint FK_Relationship_2 foreign key (sales_id) - references salesman (sales_id) on delete restrict on update restrict; - -alter table salesrecord add constraint FK_Relationship_3 foreign key (client_id) - references client (client_id) on delete restrict on update restrict; - - --- 1.查询特定销售员的销售记录 -SELECT * FROM salesrecord where sales_id=(SELECT sales_id FROM salesman where sales_name='马达'); --- 2.查找销售记录中销售价格最高的汽车 -SELECT MAX(car_price) FROM car; -SELECT * FROM car c LEFT JOIN salesrecord s on c.car_id=s.car_id where car_price=(SELECT MAX(car_price) FROM car); --- 3.统计某个销售员的销售总额 -SELECT sum(sal_totalprices) FROM salesman sa LEFT JOIN salesrecord sl on sa.sales_id=sl.sales_id WHERE sales_name="马达" ; --- 4.根据客户信息查询其购买过的汽车 - SELECT c.client_name,car.car_brand FROM client c LEFT JOIN salesrecord s on c.client_id=s.client_id LEFT JOIN car on car.car_id=s.car_id WHERE c.client_name ='周富'; --- 5.分析特定品牌汽车的销售情况,统计每个品牌的销售数量和总销售额 -SELECT c.car_brand,COUNT(s.sal_quantity) 销售数量,SUM(s.sal_totalprices) 总销售额 FROM car c LEFT JOIN salesrecord s on c.car_id=s.car_id GROUP BY c.car_id; --- 6.检索特定日期范围内的销售了哪些汽车 -SELECT * FROM salesrecord s LEFT JOIN car c on s.car_id=c.car_id where sal_totalprices BETWEEN '2023-09-06' and '2023-12-30'; --- 7.查找某车型的销售历史。 -SELECT * FROM car c LEFT JOIN salesrecord s on c.car_id=s.car_id WHERE c.car_brand='法拉利'; --- 8.统计每个销售员的销售数量 -SELECT c.client_name, COUNT(s.sal_quantity) FROM client c LEFT JOIN salesrecord s on c.client_id=s.client_id GROUP BY client_name; -~~~ - diff --git "a/08 \345\256\230\346\226\207\350\257\232/20230919 \345\244\215\344\271\240 .md" "b/08 \345\256\230\346\226\207\350\257\232/20230919 \345\244\215\344\271\240 .md" deleted file mode 100644 index 19ac09d..0000000 --- "a/08 \345\256\230\346\226\207\350\257\232/20230919 \345\244\215\344\271\240 .md" +++ /dev/null @@ -1,777 +0,0 @@ -## 作业 - -~~~ sql -/* - Navicat Premium Data Transfer - - Source Server : local - Source Server Type : MySQL - Source Server Version : 80034 (8.0.34) - Source Host : localhost:3306 - Source Schema : mxdxdb - - Target Server Type : MySQL - Target Server Version : 80034 (8.0.34) - File Encoding : 65001 - - Date: 17/09/2023 22:21:02 -*/ - -CREATE DATABASE lx charset utf8; -use lx; - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for countries --- ---------------------------- -DROP TABLE IF EXISTS `countries`; -CREATE TABLE `countries` ( - `country_id` char(2) NOT NULL, - `country_name` varchar(40) DEFAULT NULL, - `region_id` int DEFAULT NULL, - PRIMARY KEY (`country_id`), - KEY `countr_reg_fk` (`region_id`), - CONSTRAINT `countr_reg_fk` FOREIGN KEY (`region_id`) REFERENCES `regions` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of countries --- ---------------------------- -BEGIN; -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('AR', '阿根廷', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('AU', '澳大利亚', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('BE', '比利时', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('BR', '巴西', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CA', '加拿大', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CH', '瑞士', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CN', '中国', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('DE', '德国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('DK', '丹麦', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('EG', '埃及', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('FR', '法国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('HK', '香港', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IL', '以色列', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IN', '印度', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IT', '意大利', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('JP', '日本', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('KW', '科威特', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('MX', '墨西哥', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('NG', '尼日利亚', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('NL', '荷兰', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('SG', '新加坡', 3); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('UK', '英国', 1); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('US', '美国', 2); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('ZM', '赞比亚', 4); -INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('ZW', '津巴布韦', 4); -COMMIT; - --- ---------------------------- --- Table structure for departments --- ---------------------------- -DROP TABLE IF EXISTS `departments`; -CREATE TABLE `departments` ( - `department_id` int NOT NULL DEFAULT '0', - `department_name` varchar(30) NOT NULL, - `manager_id` int DEFAULT NULL, - `location_id` int DEFAULT NULL, - PRIMARY KEY (`department_id`), - UNIQUE KEY `dept_id_pk` (`department_id`), - KEY `dept_loc_fk` (`location_id`), - KEY `dept_mgr_fk` (`manager_id`), - CONSTRAINT `dept_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`location_id`), - CONSTRAINT `dept_mgr_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of departments --- ---------------------------- -BEGIN; -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (10, '行政部', 200, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (20, '营销部', 201, 1800); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (30, '采购部', 114, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (40, '人力资源部', 203, 2400); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (50, '物流部', 121, 1500); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (60, '信息技术部', 103, 1400); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (70, '公共关系部', 204, 2700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (80, '销售部', 145, 2500); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (90, '执行部门', 100, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (100, '财务部', 108, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (110, '会计部', 205, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (120, '财务部门1', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (130, '企业税务部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (140, '控制和信用部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (150, '股东服务部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (160, '员工福利部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (170, '制造部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (180, '建筑部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (190, '承包部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (200, '运营部', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (210, '信息技术支持部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (220, '网络运营中心', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (230, '信息技术帮助台', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (240, '政府销售部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (250, '零售销售部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (260, '招聘部门', NULL, 1700); -INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (270, '工资单部门', NULL, 1700); -COMMIT; - --- ---------------------------- --- Table structure for employees --- ---------------------------- -DROP TABLE IF EXISTS `employees`; -CREATE TABLE `employees` ( - `employee_id` int NOT NULL DEFAULT '0', - `first_name` varchar(20) DEFAULT NULL, - `last_name` varchar(25) NOT NULL, - `email` varchar(25) NOT NULL, - `phone_number` varchar(20) DEFAULT NULL, - `hire_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `salary` double(8,2) DEFAULT NULL, - `commission_pct` double(2,2) DEFAULT NULL, - `manager_id` int DEFAULT NULL, - `department_id` int DEFAULT NULL, - PRIMARY KEY (`employee_id`), - UNIQUE KEY `emp_email_uk` (`email`), - UNIQUE KEY `emp_emp_id_pk` (`employee_id`), - KEY `emp_dept_fk` (`department_id`), - KEY `emp_job_fk` (`job_id`), - KEY `emp_manager_fk` (`manager_id`), - CONSTRAINT `emp_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `emp_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`), - CONSTRAINT `emp_manager_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of employees --- ---------------------------- -BEGIN; -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (100, '史蒂文', '金', 'SKING', '515.123.4567', '1987-06-17', 'AD_PRES', 24000.00, NULL, NULL, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (101, '尼娜', '科查尔', 'NKOCHHAR', '515.123.4568', '1989-09-21', 'AD_VP', 17000.00, NULL, 100, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (102, '雷克斯', '德哈恩', 'LDEHAAN', '515.123.4569', '1993-01-13', 'AD_VP', 17000.00, NULL, 100, 90); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (103, '亚历山大', '胡诺尔德', 'AHUNOLD', '590.423.4567', '1990-01-03', 'IT_PROG', 9000.00, NULL, 102, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (104, '布鲁斯', '恩斯特', 'BERNST', '590.423.4568', '1991-05-21', 'IT_PROG', 6000.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (105, '大卫', '奥斯汀', 'DAUSTIN', '590.423.4569', '1997-06-25', 'IT_PROG', 4800.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (106, '瓦利', '帕塔巴拉', 'VPATABAL', '590.423.4560', '1998-02-05', 'IT_PROG', 4800.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (107, '黛安娜', '洛伦茨', 'DLORENTZ', '590.423.5567', '1999-02-07', 'IT_PROG', 4200.00, NULL, 103, 60); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (108, '南希', '格林伯格', 'NGREENBE', '515.124.4569', '1994-08-17', 'FI_MGR', 12000.00, NULL, 101, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (109, '丹尼尔', '法维特', 'DFAVIET', '515.124.4169', '1994-08-16', 'FI_ACCOUNT', 9000.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (110, '约翰', '陈', 'JCHEN', '515.124.4269', '1997-09-28', 'FI_ACCOUNT', 8200.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (111, '伊斯梅尔', '斯基亚拉', 'ISCIARRA', '515.124.4369', '1997-09-30', 'FI_ACCOUNT', 7700.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (112, '何塞·曼努埃尔', '乌尔曼', 'JMURMAN', '515.124.4469', '1998-03-07', 'FI_ACCOUNT', 7800.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (113, '路易斯', '波普', 'LPOPP', '515.124.4567', '1999-12-07', 'FI_ACCOUNT', 6900.00, NULL, 108, 100); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (114, '丹', '拉法艾利', 'DRAPHEAL', '515.127.4561', '1994-12-07', 'PU_MAN', 11000.00, NULL, 100, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (115, '亚历山大', '胡', 'AKHOO', '515.127.4562', '1995-05-18', 'PU_CLERK', 3100.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (116, '雪莉', '拜达', 'SBAIDA', '515.127.4563', '1997-12-24', 'PU_CLERK', 2900.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (117, '西加尔', '托比亚斯', 'STOBIAS', '515.127.4564', '1997-07-24', 'PU_CLERK', 2800.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (118, '盖伊', '火室', 'GHIMURO', '515.127.4565', '1998-11-15', 'PU_CLERK', 2600.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (119, '卡伦', '科尔门纳雷斯', 'KCOLMENA', '515.127.4566', '1999-08-10', 'PU_CLERK', 2500.00, NULL, 114, 30); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (120, '马修', '韦斯', 'MWEISS', '650.123.1234', '1996-07-18', 'ST_MAN', 8000.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (121, '亚当', '弗里普', 'AFRIPP', '650.123.2234', '1997-04-10', 'ST_MAN', 8200.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (122, '帕亚姆', '考夫林', 'PKAUFLIN', '650.123.3234', '1995-05-01', 'ST_MAN', 7900.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (123, '珊塔', '沃尔曼', 'SVOLLMAN', '650.123.4234', '1997-10-10', 'ST_MAN', 6500.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (124, '凯文', '莫尔戈斯', 'KMOURGOS', '650.123.5234', '1999-11-16', 'ST_MAN', 5800.00, NULL, 100, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (125, '朱莉娅', '内耶尔', 'JNAYER', '650.124.1214', '1997-07-16', 'ST_CLERK', 3200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (126, '艾琳', '米基利内尼', 'IMIKKILI', '650.124.1224', '1998-09-28', 'ST_CLERK', 2700.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (127, '詹姆斯', '兰德里', 'JLANDRY', '650.124.1334', '1999-01-14', 'ST_CLERK', 2400.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (128, '史蒂文', '马克尔', 'SMARKLE', '650.124.1434', '2000-03-08', 'ST_CLERK', 2200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (129, '劳拉', '比索特', 'LBISSOT', '650.124.5234', '1997-08-20', 'ST_CLERK', 3300.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (130, '莫兹', '阿特金森', 'MATKINSO', '650.124.6234', '1997-10-30', 'ST_CLERK', 2800.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (131, '詹姆斯', '马洛', 'JAMRLOW', '650.124.7234', '1997-02-16', 'ST_CLERK', 2500.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (132, 'TJ', '奥尔森', 'TJOLSON', '650.124.8234', '1999-04-10', 'ST_CLERK', 2100.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (133, '贾森', '马林', 'JMALLIN', '650.127.1934', '1996-06-14', 'ST_CLERK', 3300.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (134, '迈克尔', '罗杰斯', 'MROGERS', '650.127.1834', '1998-08-26', 'ST_CLERK', 2900.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (135, '基', '吉', 'KGEE', '650.127.1734', '1999-12-12', 'ST_CLERK', 2400.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (136, '海泽尔', '菲尔坦克', 'HPHILTAN', '650.127.1634', '2000-02-06', 'ST_CLERK', 2200.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (137, '伦斯克', '拉德维格', 'RLADWIG', '650.121.1234', '1995-07-14', 'ST_CLERK', 3600.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (138, '斯蒂芬', '斯泰尔斯', 'SSTILES', '650.121.2034', '1997-10-26', 'ST_CLERK', 3200.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (139, '约翰', '西奥', 'JSEO', '650.121.2019', '1998-02-12', 'ST_CLERK', 2700.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (140, '乔舒亚', '帕特尔', 'JPATEL', '650.121.1834', '1998-04-06', 'ST_CLERK', 2500.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (141, '特蕾娜', '拉杰斯', 'TRAJS', '650.121.8009', '1995-10-17', 'ST_CLERK', 3500.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (142, '柯蒂斯', '戴维斯', 'CDAVIES', '650.121.2994', '1997-01-29', 'ST_CLERK', 3100.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (143, '兰德尔', '马托斯', 'RMATOS', '650.121.2874', '1998-03-15', 'ST_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (144, '彼得', '瓦加斯', 'PVARGAS', '650.121.2004', '1998-07-09', 'ST_CLERK', 2500.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (145, '约翰', '罗素', 'JRUSSEL', '011.44.1344.429268', '1996-10-01', 'SA_MAN', 14000.00, 0.40, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (146, '卡伦', '帕特纳斯', 'KPARTNER', '011.44.1344.467268', '1997-01-05', 'SA_MAN', 13500.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (147, '阿尔贝托', '埃拉苏里斯', 'AERRAZUR', '011.44.1344.429278', '1997-03-10', 'SA_MAN', 12000.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (148, '杰拉德', '坎布劳特', 'GCAMBRAU', '011.44.1344.619268', '1999-10-15', 'SA_MAN', 11000.00, 0.30, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (149, '埃莱妮', '兹洛特基', 'EZLOTKEY', '011.44.1344.429018', '2000-01-29', 'SA_MAN', 10500.00, 0.20, 100, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (150, '彼得', '塔克', 'PTUCKER', '011.44.1344.129268', '1997-01-30', 'SA_REP', 10000.00, 0.30, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (151, '大卫', '伯恩斯坦', 'DBERNSTE', '011.44.1344.345268', '1997-03-24', 'SA_REP', 9500.00, 0.25, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (152, '彼得', '霍尔', 'PHALL', '011.44.1344.478968', '1997-08-20', 'SA_REP', 9000.00, 0.25, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (153, '克里斯托弗', '奥尔森', 'COLSEN', '011.44.1344.498718', '1998-03-30', 'SA_REP', 8000.00, 0.20, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (154, '娜妮特', '坎布劳特', 'NCAMBRAU', '011.44.1344.987668', '1998-12-09', 'SA_REP', 7500.00, 0.20, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (155, '奥利弗', '图沃尔特', 'OTUVAULT', '011.44.1344.486508', '1999-11-23', 'SA_REP', 7000.00, 0.15, 145, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (156, '詹妮特', '金', 'JKING', '011.44.1345.429268', '1996-01-30', 'SA_REP', 10000.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (157, '帕特里克', '萨利', 'PSULLY', '011.44.1345.929268', '1996-03-04', 'SA_REP', 9500.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (158, '艾伦', '麦克尤恩', 'AMCEWEN', '011.44.1345.829268', '1996-08-01', 'SA_REP', 9000.00, 0.35, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (159, '林赛', '史密斯', 'LSMITH', '011.44.1345.729268', '1997-03-10', 'SA_REP', 8000.00, 0.30, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (160, '路易斯', '多兰', 'LDORAN', '011.44.1345.629268', '1997-12-15', 'SA_REP', 7500.00, 0.30, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (161, '萨拉特', '肖尔', 'SSEWALL', '011.44.1345.529268', '1998-11-03', 'SA_REP', 7000.00, 0.25, 146, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (162, '克拉拉', '维什尼', 'CVISHNEY', '011.44.1346.129268', '1997-11-11', 'SA_REP', 10500.00, 0.25, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (163, '丹妮尔', '格林', 'DGREENE', '011.44.1346.229268', '1999-03-19', 'SA_REP', 9500.00, 0.15, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (164, '玛蒂亚', '马文斯', 'MMARVINS', '011.44.1346.329268', '2000-01-24', 'SA_REP', 7200.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (165, '大卫', '李', 'DLEE', '011.44.1346.529268', '2000-02-23', 'SA_REP', 6800.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (166, '桑达尔', '安迪', 'SANDE', '011.44.1346.629268', '2000-03-24', 'SA_REP', 6400.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (167, '阿米特', '班达', 'ABANDA', '011.44.1346.729268', '2000-04-21', 'SA_REP', 6200.00, 0.10, 147, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (168, '丽莎', '奥泽尔', 'LOZER', '011.44.1343.929268', '1997-03-11', 'SA_REP', 11500.00, 0.25, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (169, '哈里森', '布鲁姆', 'HBLOOM', '011.44.1343.829268', '1998-03-23', 'SA_REP', 10000.00, 0.20, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (170, '泰勒', '福克斯', 'TFOX', '011.44.1343.729268', '1998-01-24', 'SA_REP', 9600.00, 0.20, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (171, '威廉', '史密斯', 'WSMITH', '011.44.1343.629268', '1999-02-23', 'SA_REP', 7400.00, 0.15, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (172, '伊丽莎白', '贝茨', 'EBATES', '011.44.1343.529268', '1999-03-24', 'SA_REP', 7300.00, 0.15, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (173, '桑迪塔', '库马尔', 'SKUMAR', '011.44.1343.329268', '2000-04-21', 'SA_REP', 6100.00, 0.10, 148, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (174, '艾伦', '阿贝尔', 'EABEL', '011.44.1644.429267', '1996-05-11', 'SA_REP', 11000.00, 0.30, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (175, '阿莉莎', '哈顿', 'AHUTTON', '011.44.1644.429266', '1997-03-19', 'SA_REP', 8800.00, 0.25, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (176, '乔纳森', '泰勒', 'JTAYLOR', '011.44.1644.429265', '1998-03-24', 'SA_REP', 8600.00, 0.20, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (177, '杰克', '利文斯顿', 'JLIVINGS', '011.44.1644.429264', '1998-04-23', 'SA_REP', 8400.00, 0.20, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (178, '金柏莉', '格兰特', 'KGRANT', '011.44.1644.429263', '1999-05-24', 'SA_REP', 7000.00, 0.15, 149, NULL); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (179, '查尔斯', '约翰逊', 'CJOHNSON', '011.44.1644.429262', '2000-01-04', 'SA_REP', 6200.00, 0.10, 149, 80); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (180, '温斯顿', '泰勒', 'WTAYLOR', '650.507.9876', '1998-01-24', 'SH_CLERK', 3200.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (181, '简', '弗勒尔', 'JFLEAUR', '650.507.9877', '1998-02-23', 'SH_CLERK', 3100.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (182, '玛莎', '沙利文', 'MSULLIVA', '650.507.9878', '1999-06-21', 'SH_CLERK', 2500.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (183, '吉拉德', '格奥尼', 'GGEONI', '650.507.9879', '2000-02-03', 'SH_CLERK', 2800.00, NULL, 120, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (184, '南迪塔', '萨尔钦德', 'NSARCHAN', '650.509.1876', '1996-01-27', 'SH_CLERK', 4200.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (185, '亚历克西斯', '布尔', 'ABULL', '650.509.2876', '1997-02-20', 'SH_CLERK', 4100.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (186, '朱莉娅', '戴林格', 'JDELLING', '650.509.3876', '1998-06-24', 'SH_CLERK', 3400.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (187, '安东尼', '卡布里奥', 'ACABRIO', '650.509.4876', '1999-02-07', 'SH_CLERK', 3000.00, NULL, 121, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (188, '凯莉', '钟', 'KCHUNG', '650.505.1876', '1997-06-14', 'SH_CLERK', 3800.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (189, '詹妮弗', '迪利', 'JDILLY', '650.505.2876', '1997-08-13', 'SH_CLERK', 3600.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (190, '蒂莫西', '盖茨', 'TGATES', '650.505.3876', '1998-07-11', 'SH_CLERK', 2900.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (191, '兰达尔', '珀金斯', 'RPERKINS', '650.505.4876', '1999-12-19', 'SH_CLERK', 2500.00, NULL, 122, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (192, '萨拉', '贝尔', 'SBELL', '650.501.1876', '1996-02-04', 'SH_CLERK', 4000.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (193, '布里特尼', '埃弗雷特', 'BEVERETT', '650.501.2876', '1997-03-03', 'SH_CLERK', 3900.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (194, '塞缪尔', '麦凯恩', 'SMCCAIN', '650.501.3876', '1998-07-01', 'SH_CLERK', 3200.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (195, '范斯', '琼斯', 'VJONES', '650.501.4876', '1999-03-17', 'SH_CLERK', 2800.00, NULL, 123, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (196, '阿兰娜', '沃尔什', 'AWALSH', '650.507.9811', '1998-04-24', 'SH_CLERK', 3100.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (197, '凯文', '费尼', 'KFEENEY', '650.507.9822', '1998-05-23', 'SH_CLERK', 3000.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (198, '唐纳德', '奥康奈尔', 'DOCONNEL', '650.507.9833', '1999-06-21', 'SH_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (199, '道格拉斯', '格兰特', 'DGRANT', '650.507.9844', '2000-01-13', 'SH_CLERK', 2600.00, NULL, 124, 50); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (200, '詹妮弗', '韦伦', 'JWHALEN', '515.123.4444', '1987-09-17', 'AD_ASST', 4400.00, NULL, 101, 10); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (201, '迈克尔', '哈滕斯坦', 'MHARTSTE', '515.123.5555', '1996-02-17', 'MK_MAN', 13000.00, NULL, 100, 20); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (202, '帕特', '费伊', 'PFAY', '603.123.6666', '1997-08-17', 'MK_REP', 6000.00, NULL, 201, 20); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (203, '苏珊', '马夫里斯', 'SMAVRIS', '515.123.7777', '1994-06-07', 'HR_REP', 6500.00, NULL, 101, 40); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (204, '赫尔曼', '拜尔', 'HBAER', '515.123.8888', '1994-06-07', 'PR_REP', 10000.00, NULL, 101, 70); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (205, '谢莉', '希金斯', 'SHIGGINS', '515.123.8080', '1994-06-07', 'AC_MGR', 12000.00, NULL, 101, 110); -INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (206, '威廉', '吉茨', 'WGIETZ', '515.123.8181', '1994-06-07', 'AC_ACCOUNT', 8300.00, NULL, 205, 110); -COMMIT; - --- ---------------------------- --- Table structure for job_grades --- ---------------------------- -DROP TABLE IF EXISTS `job_grades`; -CREATE TABLE `job_grades` ( - `grade_level` varchar(3) DEFAULT NULL, - `lowest_sal` int DEFAULT NULL, - `highest_sal` int DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of job_grades --- ---------------------------- -BEGIN; -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('A', 1000, 2999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('B', 3000, 5999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('C', 6000, 9999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('D', 10000, 14999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('E', 15000, 24999); -INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('F', 25000, 40000); -COMMIT; - --- ---------------------------- --- Table structure for job_history --- ---------------------------- -DROP TABLE IF EXISTS `job_history`; -CREATE TABLE `job_history` ( - `employee_id` int NOT NULL, - `start_date` date NOT NULL, - `end_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `department_id` int DEFAULT NULL, - PRIMARY KEY (`employee_id`,`start_date`), - UNIQUE KEY `jhist_emp_id_st_date_pk` (`employee_id`,`start_date`), - KEY `jhist_job_fk` (`job_id`), - KEY `jhist_dept_fk` (`department_id`), - CONSTRAINT `jhist_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `jhist_emp_fk` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`employee_id`), - CONSTRAINT `jhist_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of job_history --- ---------------------------- -BEGIN; -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (101, '1989-09-21', '1993-10-27', 'AC_ACCOUNT', 110); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (101, '1993-10-28', '1997-03-15', 'AC_MGR', 110); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (102, '1993-01-13', '1998-07-24', 'IT_PROG', 60); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (114, '1998-03-24', '1999-12-31', 'ST_CLERK', 50); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (122, '1999-01-01', '1999-12-31', 'ST_CLERK', 50); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (176, '1998-03-24', '1998-12-31', 'SA_REP', 80); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (176, '1999-01-01', '1999-12-31', 'SA_MAN', 80); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (200, '1987-09-17', '1993-06-17', 'AD_ASST', 90); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (200, '1994-07-01', '1998-12-31', 'AC_ACCOUNT', 90); -INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (201, '1996-02-17', '1999-12-19', 'MK_REP', 20); -COMMIT; - --- ---------------------------- --- Table structure for jobs --- ---------------------------- -DROP TABLE IF EXISTS `jobs`; -CREATE TABLE `jobs` ( - `job_id` varchar(10) NOT NULL DEFAULT '', - `job_title` varchar(35) NOT NULL, - `min_salary` int DEFAULT NULL, - `max_salary` int DEFAULT NULL, - PRIMARY KEY (`job_id`), - UNIQUE KEY `job_id_pk` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of jobs --- ---------------------------- -BEGIN; -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AC_ACCOUNT', '公共会计师', 4200, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AC_MGR', '会计经理', 8200, 16000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_ASST', '行政助理', 3000, 6000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_PRES', '总裁', 20000, 40000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_VP', '行政副总裁', 15000, 30000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('FI_ACCOUNT', '会计', 4200, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('FI_MGR', '财务经理', 8200, 16000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('HR_REP', '人力资源代表', 4000, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('IT_PROG', '程序员', 4000, 10000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('MK_MAN', '市场营销经理', 9000, 15000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('MK_REP', '市场营销代表', 4000, 9000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PR_REP', '公共关系代表', 4500, 10500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PU_CLERK', '采购文员', 2500, 5500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PU_MAN', '采购经理', 8000, 15000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SA_MAN', '销售经理', 10000, 20000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SA_REP', '销售代表', 6000, 12000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SH_CLERK', '发货文员', 2500, 5500); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('ST_CLERK', '库存文员', 2000, 5000); -INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('ST_MAN', '库存经理', 5500, 8500); -COMMIT; - --- ---------------------------- --- Table structure for locations --- ---------------------------- -DROP TABLE IF EXISTS `locations`; -CREATE TABLE `locations` ( - `location_id` int NOT NULL DEFAULT '0', - `street_address` varchar(40) DEFAULT NULL, - `postal_code` varchar(12) DEFAULT NULL, - `city` varchar(30) NOT NULL, - `state_province` varchar(25) DEFAULT NULL, - `country_id` char(2) DEFAULT NULL, - PRIMARY KEY (`location_id`), - UNIQUE KEY `loc_id_pk` (`location_id`), - KEY `loc_c_id_fk` (`country_id`), - CONSTRAINT `loc_c_id_fk` FOREIGN KEY (`country_id`) REFERENCES `countries` (`country_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of locations --- ---------------------------- -BEGIN; -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1000, '1297 Via Cola di Rie', '00989', '罗马', NULL, 'IT'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1100, '93091 Calle della Testa', '10934', '威尼斯', NULL, 'IT'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1200, '2017 Shinjuku-ku', '1689', '东京', '东京都', 'JP'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1300, '9450 Kamiya-cho', '6823', '广岛', NULL, 'JP'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1400, '2014 Jabberwocky Rd', '26192', '南湖', '德克萨斯', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1500, '2011 Interiors Blvd', '99236', '南旧金山', '加利福尼亚', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1600, '2007 Zagora St', '50090', '南布朗斯维克', '新泽西', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1700, '2004 Charade Rd', '98199', '西雅图', '华盛顿', 'US'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1800, '147 Spadina Ave', 'M5V 2L7', '多伦多', '安大略', 'CA'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1900, '6092 Boxwood St', 'YSW 9T2', '怀特霍斯', '育空', 'CA'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2000, '40-5-12 Laogianggen', '190518', '北京', NULL, 'CN'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2100, '1298 Vileparle (E)', '490231', '孟买', '马哈拉施特拉邦', 'IN'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2200, '12-98 Victoria Street', '2901', '悉尼', '新南威尔士', 'AU'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2300, '198 Clementi North', '540198', '新加坡', NULL, 'SG'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2400, '8204 Arthur St', NULL, '伦敦', NULL, 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2500, 'Magdalen Centre, The Oxford Science Park', 'OX9 9ZB', '牛津', '牛津', 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2600, '9702 Chester Road', '09629850293', '斯特雷福德', '曼彻斯特', 'UK'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2700, 'Schwanthalerstr. 7031', '80925', '慕尼黑', '巴伐利亚', 'DE'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2800, 'Rua Frei Caneca 1360 ', '01307-002', '圣保罗', '圣保罗', 'BR'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2900, '20 Rue des Corps-Saints', '1730', '日内瓦', '日内瓦', 'CH'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3000, 'Murtenstrasse 921', '3095', '伯尔尼', 'BE', 'CH'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3100, 'Pieter Breughelstraat 837', '3029SK', '乌得勒支', '乌得勒支', 'NL'); -INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3200, 'Mariano Escobedo 9991', '11932', '墨西哥城', '联邦区', 'MX'); -COMMIT; - --- ---------------------------- --- Table structure for order --- ---------------------------- -DROP TABLE IF EXISTS `order`; -CREATE TABLE `order` ( - `order_id` int DEFAULT NULL, - `order_name` varchar(15) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of order --- ---------------------------- -BEGIN; -INSERT INTO `order` (`order_id`, `order_name`) VALUES (1, 'shkstart'); -INSERT INTO `order` (`order_id`, `order_name`) VALUES (2, 'tomcat'); -INSERT INTO `order` (`order_id`, `order_name`) VALUES (3, 'dubbo'); -COMMIT; - --- ---------------------------- --- Table structure for regions --- ---------------------------- -DROP TABLE IF EXISTS `regions`; -CREATE TABLE `regions` ( - `region_id` int NOT NULL, - `region_name` varchar(25) DEFAULT NULL, - PRIMARY KEY (`region_id`), - UNIQUE KEY `reg_id_pk` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - --- ---------------------------- --- Records of regions --- ---------------------------- -BEGIN; -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (1, '欧洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (2, '美洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (3, '亚洲'); -INSERT INTO `regions` (`region_id`, `region_name`) VALUES (4, '中东和非洲'); -COMMIT; - --- ---------------------------- --- View structure for emp_details_view --- ---------------------------- -DROP VIEW IF EXISTS `emp_details_view`; -CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `emp_details_view` AS select `e`.`employee_id` AS `employee_id`,`e`.`job_id` AS `job_id`,`e`.`manager_id` AS `manager_id`,`e`.`department_id` AS `department_id`,`d`.`location_id` AS `location_id`,`l`.`country_id` AS `country_id`,`e`.`first_name` AS `first_name`,`e`.`last_name` AS `last_name`,`e`.`salary` AS `salary`,`e`.`commission_pct` AS `commission_pct`,`d`.`department_name` AS `department_name`,`j`.`job_title` AS `job_title`,`l`.`city` AS `city`,`l`.`state_province` AS `state_province`,`c`.`country_name` AS `country_name`,`r`.`region_name` AS `region_name` from (((((`employees` `e` join `departments` `d`) join `jobs` `j`) join `locations` `l`) join `countries` `c`) join `regions` `r`) where ((`e`.`department_id` = `d`.`department_id`) and (`d`.`location_id` = `l`.`location_id`) and (`l`.`country_id` = `c`.`country_id`) and (`c`.`region_id` = `r`.`region_id`) and (`j`.`job_id` = `e`.`job_id`)); - -SET FOREIGN_KEY_CHECKS = 1; - - - - - -#第03章_基本的SELECT语句的课后练习 - -# 1.查询所有员工12个月的工资总和,并起别名为工资总和 - -#理解1:计算12月的基本工资 -SELECT sum(salary*12) 基本工资 FROM employees; - -#SELECT sum(salary*12) as 工资总和 FROM employees; - -#理解2:计算12月的基本工资和奖金 - -SELECT (sum(salary)+sum(commission_pct*salary))*12 FROM employees; - -# ifnull(原值,新值) 判断一个原值是否为null,如果原值是null,就用一个新值代替 - - - -# 2.查询employees表中去除重复的job_id以后的数据 -#去除重复 distinct - -SELECT DISTINCT job_id FROM employees; - -# 3.查询工资大于12000的员工姓名和工资 -SELECT first_name 员工姓名,salary 工资 FROM employees where salary>12000; - - -# 4.查询员工号为176的员工的姓名和部门号 - -SELECT first_name 姓名,department_id 部门号 FROM employees where employee_id = 176; -#; - -# 5.显示表 departments 的结构,并查询其中的全部数据 - -DESC departments; - -SELECT * FROM departments; - -# 第04章_运算符课后练习 - -# 1.选择工资不在5000到12000的员工的姓名和工资 - -SELECT first_name 姓名,salary 工资 FROM employees where salary not BETWEEN 5000 and 12000; - -# 2.选择在20或50号部门工作的员工姓名和部门号 - -SELECT first_name 姓名,department_id 部门号 from employees where department_id in (20,50); - -# 3.选择公司中没有管理者的员工姓名及job_id - -SELECT first_name,job_id from employees where manager_id is null; - - - -# 4.选择公司中有奖金的员工姓名,工资和奖金级别 - - -SELECT first_name 员工姓名,salary 工资,j.grade_level 奖金级别 FROM employees e LEFT JOIN job_grades j on e.commission_pct*salary BETWEEN j.lowest_sal and j.highest_sal; - -# 5.选择员工姓名的第三个字是 尔 的员工姓名 - -SELECT * from employees WHERE first_name like '__尔'; - - -# 6.选择姓名中有 特 字和 尔 字的员工姓名 - -SELECT * from employees WHERE last_name like '%特%' and last_name like '%尔%'; - -# 7.显示出表 employees 表中 first_name 以 '尔'结尾的员工信息 - -SELECT * FROM employees where first_name like '%尔'; -# 8.显示出表 employees 部门编号在 80-100 之间的姓名、工种 - -SELECT first_name 姓名, j.job_title 工种 FROM employees e LEFT JOIN jobs j on e.job_id=j.job_id where e.department_id BETWEEN 80 and 100; - -# 9.显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、工资、管理者id - -SELECT first_name 员工姓名, salary 工资,manager_id 管理者id from employees where manager_id in (100,101,110); - -#第05章_排序与分页的课后练习 - - -#1. 查询员工的姓名和部门号和年薪,按年薪降序显示 --- order by 年薪 asc/desc - -SELECT first_name 姓名 ,department_id 部门号,salary*12 年薪 from employees ORDER BY 年薪 DESC; - -#2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据 - -SELECT first_name 姓名 ,salary 工资 from employees where salary not BETWEEN 8000 and 17000 ORDER BY salary desc LIMIT 0,20; - - -#3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序 - -SELECT * FROM employees where email like '%e%' ORDER BY LENGTH(email) desc , department_id asc; - - - -# 第06章_多表查询的课后练习 - - -# 1.显示所有员工的姓名,部门号和部门名称。 - -SELECT e.first_name 姓名,d.department_id 部门号, d.department_name 部门名称 FROM employees e LEFT JOIN departments d on d.department_id=e.department_id; - -# 2.查询90号部门员工的job_id和90号部门的location_id - -SELECT job_id,location_id FROM employees e LEFT JOIN departments d on d.department_id=e.department_id where d.department_id=90; - - - -# 3.选择所有 有奖金的员工 的 last_name , department_name , location_id , city - -SELECT e.last_name , d.department_name , l.location_id,l.city FROM employees e LEFT JOIN departments d on d.department_id=e.department_id LEFT JOIN locations l on l.location_id=d.location_id where commission_pct is not null; - - - -# 4.选择city在 多伦多 工作的员工的 last_name , job_id , department_id , department_name - -SELECT e.last_name , e.job_id , d.department_id , d.department_name FROM employees e LEFT JOIN departments d on d.department_id=e.department_id LEFT JOIN locations l on l.location_id=d.location_id where l.city='多伦多'; - -#sql92语法(自然连接): - - - - -# 5.查询行政部门员工的部门名称、部门地址、姓名、工作、工资 - -SELECT department_name 部门名称, city 部门地址, e.last_name 姓名, j.job_title 工作, e.salary 工资 FROM employees e,departments d,locations l,jobs j where e.department_id=d.department_id and d.location_id=l.location_id and j.job_id=e.job_id; - - - - -# 6.显示所有员工的姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式 --- 员工姓名 员工编号 上级姓名 上级的员工编号 --- 德哈恩 102 金 100 - -SELECT b.first_name 员工姓名,b.department_id 员工编号,a.last_name 上级姓名,a.manager_id 上级的员工编号 FROM employees a JOIN employees b where a.department_id=b.department_id; - - -# 7.查询哪些部门没有员工 -SELECT * FROM departments d LEFT JOIN employees e on d.department_id=e.department_id where e.department_id is null; - -# 8. 查询哪个城市没有部门 -SELECT * FROM departments d LEFT JOIN locations l on d.location_id=l.location_id where state_province is null ; - - - -# 9. 查询部门名为 销售部 或 信息技术部 的员工信息 -SELECT * FROM employees e JOIN departments d ON e.department_id = d.department_id WHERE d.department_name like '销售部' or d.department_name like '信息技术部'; - - -# 第08章_聚合函数的课后练习 - - - -#2.查询公司员工工资的最大值,最小值,平均值,总和 - -SELECT MAX(salary) 最大值,MIN(salary) 最小值,AVG(salary) 平均值,SUM(salary) 总和 FROM employees; -#3.查询各job_id的员工工资的最大值,最小值,平均值,总和 -SELECT MAX(salary) 最大值,MIN(salary) 最小值,AVG(salary) 平均值,SUM(salary) 总和,job_id FROM employees GROUP BY job_id; -#4.选择各个job_id的员工人数 - -SELECT count(job_id) FROM employees GROUP BY job_id; - -# 5.查询员工最高工资和最低工资的差距 -SELECT MAX(salary) - MIN(salary) 差距 FROM employees; - -# 6.查询各个管理者 手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内 - - SELECT MAX(salary) 最大值,MIN(salary) 最小值 FROM employees WHERE salary>6000 and manager_id is not null GROUP BY manager_id; - - - - -# 7.查询所有部门的名字,location_id,员工数量和平均工资,并按平均工资降序 - - -SELECT d.department_name,AVG(salary),count(job_id) FROM employees e JOIN departments d ON e.department_id = d.department_id GROUP BY d.department_name ORDER BY AVG(salary) DESC; - - -# 8.查询每个工种、每个部门的部门名、工种名和最低工资 - -SELECT job_title,department_name,min_salary FROM jobs j JOIN employees e on j.job_id=e.job_id join departments d on e.department_id=d.department_id - - - - -# 第09章_子查询的课后练习 - - - -#1.查询和 兹洛特基 相同部门的员工姓名和工资 - - -SELECT last_name,salary FROM employees WHERE department_id= (SELECT department_id FROM employees WHERE last_name like '兹洛特基'); - -#2.查询工资比公司平均工资高的员工的员工号,姓名和工资。 - - -SELECT employee_id,last_name,salary FROM employees WHERE salary>(SELECT AVG(salary) FROM employees); -#3.选择工资大于所有JOB_ID = 'SA_MAN'的员工的工资的员工的last_name, job_id, salary -SELECT last_name, job_id, salary FROM employees WHERE salary>(SELECT MAX(salary) FROM employees WHERE JOB_ID = 'SA_MAN'); - - -#4.查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名 - -SELECT employee_id FROM employees where first_name like "%u%"; -SELECT employee_id 员工号,first_name 姓名 FROM employees where employee_id = (SELECT employee_id FROM employees where first_name like "%u%"); - - -#5.查询部门的location_id为1700的部门的工作的员工的员工号 - -SELECT location_id FROM departments where location_id = 1700; -SELECT first_name,department_id FROM employees where department_id in (SELECT department_id FROM departments where location_id = 1700); - - -#6.查询管理者是 金 的员工姓名和工资 -SELECT last_name FROM employees WHERE last_name='金'; - -SELECT first_name 员工姓名,salary 工资 FROM employees where last_name in (SELECT last_name FROM employees WHERE last_name='金'); -#7.查询工资最低的员工信息: last_name, salary - -SELECT last_name,salary FROM employees WHERE salary =(SELECT MIN(salary) FROM employees); - - -#8.查询平均工资最低的部门信息 -#方式1: -# 部门最低工资=全司最低 - -#方式2 -# 部门平均<= 公司所有平均 - -SELECT department_id FROM employees GROUP BY department_id ORDER BY avg(salary) LIMIT 0,1; - -SELECT DISTINCT d.* FROM employees e LEFT JOIN departments d on e.department_id=d.department_id where d.department_id = (SELECT department_id FROM employees GROUP BY department_id ORDER BY avg(salary) LIMIT 0,1); - -#9.查询平均工资最低的部门信息和该部门的平均工资(相关子查询) -#方式:先查最低平均工资的部门,再根据其id去select中再子查询 - - # 连表查 - select d.*,avg(e.salary) 平均工资 from departments d right join employees e on d.department_id = e.department_id group by d.department_id order by 平均工资 limit 0,1; - # 子查询 - select d.*,a.平均工资 from departments d right join - (select department_id,avg(salary) 平均工资 from employees group by department_id having avg(salary) = - (select avg(salary) 平均工资 from employees group by department_id order by 平均工资 limit 0,1)) a - on d.department_id = a.department_id; - - -#10.查询平均工资最高的 job 信息 - -#方式1:平均工资=最大 -#方式2:平均工资>=所有平均工资 - select j.*,avg(e.salary) 平均工资 - from jobs j right join employees e on j.job_id = e.job_id group by j.job_id order by 平均工资 desc limit 0,1; - -#11.查询平均工资高于公司平均工资的部门有哪些? - select d.department_name 部门名,avg(e.salary) 平均工资 - from departments d right join employees e on d.department_id = e.department_id - group by d.department_id having 平均工资 > (select avg(salary) from employees); - -#12.查询出公司中所有 manager 的详细信息 - -#方式1:自连接 自己连自己 - select * from employees where employee_id in - (select distinct(a.employee_id) from - (select e2.* from employees e1 left join employees e2 on e1.manager_id = e2.employee_id) a); - -#方式2:子查询 -#员工编号=(管理员编号有哪些) - select * from employees where employee_id in - (select distinct manager_id from employees); - -#13.各个部门中 最高工资中 最低的那个部门的 最低工资是多少? - select min(e.salary) 最低工资 from employees e right join - (select department_id,max(salary) 最高工资 from employees group by department_id order by 最高工资 limit 0,1) a - on e.department_id = a.department_id ; - -#14.查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary -#方式1: - select last_name, department_id, email, salary from employees where employee_id = - (select employee_id from employees e right join - (select department_id,avg(salary) 平均工资 from employees group by department_id order by 平均工资 desc limit 0,1) a - on e.department_id = a.department_id limit 0,1); - -#15. 查询部门的部门号,其中不包括job_id是"ST_CLERK"的部门号 -#方式1: - select job_id from jobs where job_id != 'ST_CLERK'; - -#16. 选择所有没有管理者的员工的last_name - select last_name from employees where manager_id is null; - -#17.查询员工号、姓名、雇用时间、工资,其中员工的管理者为 'De Haan' -#方式1: - select * from employees where last_name = 'De Haan' - -#方式2: - -#18.查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资(相关子查询) - -#方式1:使用相关子查询 - select e.employee_id 员工号,e.last_name 姓名,e.salary 工资,a.平均工资 from employees e left join - (select department_id,avg(salary) 平均工资 from employees group by department_id) a - on e.department_id = a.department_id and e.salary > a.平均工资; - -#方式2:在FROM中声明子查询 - -#19.查询每个部门下的部门人数大于 5 的部门名称(相关子查询) - select department_name from departments where department_id in - (select distinct department_id from employees where employee_id in - (select manager_id from employees group by manager_id having count(manager_id)>5)); - - -#20.查询每个国家下的部门个数大于 2 的国家编号(相关子查询) - select country_id from locations where location_id in - (select location_id from departments group by location_id having count(location_id) > 2); -/* -子查询的编写技巧(或步骤):① 从里往外写 ② 从外往里写 - -如何选择? -① 如果子查询相对较简单,建议从外往里写。一旦子查询结构较复杂,则建议从里往外写 -② 如果是相关子查询的话,通常都是从外往里写。 - -*/ - -~~~ - diff --git "a/08 \345\256\230\346\226\207\350\257\232/20230920 \347\254\224\350\256\260.md" "b/08 \345\256\230\346\226\207\350\257\232/20230920 \347\254\224\350\256\260.md" deleted file mode 100644 index 3c85fd0..0000000 --- "a/08 \345\256\230\346\226\207\350\257\232/20230920 \347\254\224\350\256\260.md" +++ /dev/null @@ -1,153 +0,0 @@ -### 笔记 - - - -RBAC (Role-BasedAccess cotrd) (主流方案) - -1.业务数据表:用户,商品 - -2.功能资源表:菜单信息表,页面代码表 - -### 权限使用场景 - -网页不一样,网页一样,但可以用的菜单不一样,但一个菜单下的网页元素可能不一样(按钮,数据不一样,权限不一样) - - - -按钮权限:不同的用户查看同一个对象时 展示的按钮不一样 - -数据权限:不同的用户查看同一个对象时,可见的数据不一样 - -操作权限:看得到,点不了 - - - -#### RBAC由三个部分组成 - -1. 用户 2. 角色 3. 权限 - -2. - User(用户):每个用户都有唯一的UID识别,并被授予不同的角色 - - - - Role(角色):不同角色具有不同的权限 - - - Permission(权限):访问权限 - 用户-角色映射:用户和角色之间的映射关系 - 角色-权限映射:角色和权限之间的映射 - - - -~~~ sql -/*==============================================================*/ /* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-20 15:29:51 */ -/*==============================================================*/ -CREATE DATABASE liunian charset utf8; -USE liunian; -DROP TABLE -IF - EXISTS jurisdiction; -DROP TABLE -IF - EXISTS role; -DROP TABLE -IF - EXISTS role_qx; -DROP TABLE -IF - EXISTS USER; -DROP TABLE -IF - EXISTS user_role; -/*==============================================================*/ -/* Table: jurisdiction */ -/*==============================================================*/ -CREATE TABLE jurisdiction ( - juri_id INT NOT NULL auto_increment, - juri_name CHAR ( 20 ) NOT NULL, - juri_register VARCHAR ( 20 ) NOT NULL, - juri_address VARCHAR ( 20 ) NOT NULL, - PRIMARY KEY ( juri_id ) -); - -INSERT INTO `jurisdiction` VALUES (1, '总指挥', '随地登录', '78星'); -INSERT INTO `jurisdiction` VALUES (2, '指挥', '随地登录', '火星'); -INSERT INTO `jurisdiction` VALUES (3, '支队长', '本地登录', '地球'); -INSERT INTO `jurisdiction` VALUES (4, '教练', '本地登录', '地球'); -INSERT INTO `jurisdiction` VALUES (5, '小丑', '无', '月球'); -INSERT INTO `jurisdiction` VALUES (6, '变态', '无', '地球'); -/*==============================================================*/ -/* Table: role */ -/*==============================================================*/ -CREATE TABLE role ( role_id INT ( 20 ) NOT NULL auto_increment, role_name CHAR ( 20 ) NOT NULL, PRIMARY KEY ( role_id ) ); - -INSERT INTO `role` VALUES (1, '迪迦'); -INSERT INTO `role` VALUES (2, '泰罗'); -INSERT INTO `role` VALUES (3, '赛罗'); -INSERT INTO `role` VALUES (4, '赛文'); -/*==============================================================*/ -/* Table: role_qx */ -/*==============================================================*/ -CREATE TABLE role_qx ( juri_id INT NOT NULL, role_id INT NOT NULL, PRIMARY KEY ( juri_id, role_id ) ); - -INSERT INTO `role_qx` VALUES (5, 1); -INSERT INTO `role_qx` VALUES (6, 1); -INSERT INTO `role_qx` VALUES (2, 2); -INSERT INTO `role_qx` VALUES (4, 2); -INSERT INTO `role_qx` VALUES (3, 3); -INSERT INTO `role_qx` VALUES (4, 3); -INSERT INTO `role_qx` VALUES (1, 4); -INSERT INTO `role_qx` VALUES (2, 4); -INSERT INTO `role_qx` VALUES (3, 4); -/*==============================================================*/ -/* Table: user */ -/*==============================================================*/ -CREATE TABLE USER ( - user_id INT NOT NULL auto_increment, - user_name CHAR ( 20 ) NOT NULL, - user_pwd CHAR ( 20 ) NOT NULL, - PRIMARY KEY ( user_id ) -); - -INSERT INTO `user` VALUES (1, '时学安', '222222'); -INSERT INTO `user` VALUES (2, '周富', '111111'); -INSERT INTO `user` VALUES (3, '肖钟凯韩', '333333'); -INSERT INTO `user` VALUES (4, '叶子豪', '444444'); - -/*==============================================================*/ -/* Table: user_role */ -/*==============================================================*/ -CREATE TABLE user_role ( role_id INT NOT NULL, user_id INT NOT NULL, PRIMARY KEY ( role_id, user_id ) ); - -INSERT INTO `user_role` VALUES (1, 1); -INSERT INTO `user_role` VALUES (2, 2); -INSERT INTO `user_role` VALUES (3, 3); -INSERT INTO `user_role` VALUES (4, 4); - -ALTER TABLE role_qx ADD CONSTRAINT FK_role_qx FOREIGN KEY ( juri_id ) REFERENCES jurisdiction ( juri_id ) ON DELETE RESTRICT ON UPDATE RESTRICT; -ALTER TABLE role_qx ADD CONSTRAINT FK_role_qx2 FOREIGN KEY ( role_id ) REFERENCES role ( role_id ) ON DELETE RESTRICT ON UPDATE RESTRICT; -ALTER TABLE user_role ADD CONSTRAINT FK_user_role FOREIGN KEY ( role_id ) REFERENCES role ( role_id ) ON DELETE RESTRICT ON UPDATE RESTRICT; -ALTER TABLE user_role ADD CONSTRAINT FK_user_role2 FOREIGN KEY ( user_id ) REFERENCES USER ( user_id ) ON DELETE RESTRICT ON UPDATE RESTRICT; - - - -SELECT - u.user_name, - r.role_name, - j.juri_name, - j.juri_register, - j.juri_address -FROM - `user` u, - user_role us, - role r, - role_qx qx, - jurisdiction j -WHERE - u.user_id = us.user_id -AND - us.role_id=r.role_id - and - r.role_id=qx.role_id - and - qx.juri_id=j.juri_id - and u.user_pwd='2b2b2b2b' - and u.user_name='时学安' - ; -~~~ - diff --git "a/08 \345\256\230\346\226\207\350\257\232/20230921 \344\275\234\344\270\232.md" "b/08 \345\256\230\346\226\207\350\257\232/20230921 \344\275\234\344\270\232.md" deleted file mode 100644 index c2ed58b..0000000 --- "a/08 \345\256\230\346\226\207\350\257\232/20230921 \344\275\234\344\270\232.md" +++ /dev/null @@ -1,185 +0,0 @@ -### 笔记 - -sku:规格 (最小库存的单位) - -SKU是指一款商品,每款都有出现一个SKU。 - -一款商品多色,则是有多个SKU, - - 例:一件衣服,有红色、白色、蓝色。 对一种商品而言,当其品牌、型号、配置、等级、花色、包装容量、单位、生产日期、保质期、用途、价格、产地等属性与其他商品存在不同时,可称为一个单品。 - -## SPU与SKU的区别 - -一般SPU 与SKU 是一对一,或者一对多的关系;如果一对多的话就是不同的规格 例子:SPU就是商品的“款”;SKU就是商品的“件” SPU指一个商品集合,一般来说就是一个集合链。 - -一个服装的集合链会包括相似款式和不同的尺码,SKU则是最小品类单元,同一个款式的衣服不同的尺码也算不同的SKU。SKU多见于前台的商品编号,SPU多见于后台的商品管理 - -~~~ SQL - -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/21 17:34:09 */ -/*==============================================================*/ - - -CREATE DATABASE scgo charset utf8; -use scgo; - -drop table if exists ability; - -drop table if exists attributes; - -drop table if exists sku; - -drop table if exists sku_spe; - -drop table if exists spu; - -/*==============================================================*/ -/* Table: ability */ -/*==============================================================*/ -create table ability -( - ab_id int not null auto_increment, - ab_name char(20) not null, - primary key (ab_id) -); - -/*==============================================================*/ -/* Table: attributes */ -/*==============================================================*/ -create table attributes -( - att_id int not null auto_increment, - att_name char(20) not null, - primary key (att_id) -); - -/*==============================================================*/ -/* Table: sku */ -/*==============================================================*/ -create table sku -( - sku_id int not null auto_increment, - spu_id int not null, - sku_title varchar(100) not null, - price decimal(8,2) not null, - repertory int not null, - primary key (sku_id) -); - -/*==============================================================*/ -/* Table: sku_spe */ -/*==============================================================*/ -create table sku_spe -( - se_id int not null auto_increment, - sku_id int, - att_id int, - ab_id int, - primary key (se_id) -); - -/*==============================================================*/ -/* Table: spu */ -/*==============================================================*/ -create table spu -( - spu_id int not null auto_increment, - spu_name varchar(20) not null, - spu_details varchar(100) not null, - primary key (spu_id) -); - -alter table sku add constraint FK_Relationship_1 foreign key (spu_id) - references spu (spu_id) on delete restrict on update restrict; - -alter table sku_spe add constraint FK_Relationship_2 foreign key (sku_sku_id) - references sku (sku_id) on delete restrict on update restrict; - -alter table sku_spe add constraint FK_Relationship_3 foreign key (att_id) - references attributes (att_id) on delete restrict on update restrict; - -alter table sku_spe add constraint FK_Relationship_4 foreign key (ab_id) - references ability (ab_id) on delete restrict on update restrict; - - --- 数据 -INSERT INTO `spu` VALUES (1, 'Awp狙击枪', '直架中路'); - -INSERT INTO `attributes` VALUES (1, '崭新出厂'); -INSERT INTO `attributes` VALUES (2, '略有磨损'); -INSERT INTO `attributes` VALUES (3, '野火'); -INSERT INTO `attributes` VALUES (4, '永恒之枪'); -INSERT INTO `attributes` VALUES (5, '巨龙传说'); - -INSERT INTO `sku` VALUES (1, 1, 'Awp|野火(崭新出厂)', 1085.50, 100); -INSERT INTO `sku` VALUES (2, 1, 'Awp|野火(略有磨损)', 624.00, 200); -INSERT INTO `sku` VALUES (3, 1, 'Awp|永恒之枪(崭新出厂)', 90448.00, 287); -INSERT INTO `sku` VALUES (4, 1, 'Awp|永恒之枪(略有磨损)', 76666.00, 101); -INSERT INTO `sku` VALUES (5, 1, 'Awp|巨龙传说(崭新出厂)', 99999.00, 111); -INSERT INTO `sku` VALUES (6, 1, 'Awp|巨龙传说(略有磨损)', 84625.00, 11); - -INSERT INTO `ability` VALUES (1, '皮肤'); -INSERT INTO `ability` VALUES (2, '磨损'); - - -INSERT INTO `sku_spe` VALUES (1, 1, 1, 2); -INSERT INTO `sku_spe` VALUES (2, 1, 3, 1); -INSERT INTO `sku_spe` VALUES (3, 2, 2, 2); -INSERT INTO `sku_spe` VALUES (4, 2, 3, 1); -INSERT INTO `sku_spe` VALUES (5, 3, 1, 2); -INSERT INTO `sku_spe` VALUES (6, 3, 4, 1); -INSERT INTO `sku_spe` VALUES (7, 4, 2, 2); -INSERT INTO `sku_spe` VALUES (8, 4, 4, 1); -INSERT INTO `sku_spe` VALUES (9, 5, 1, 2); -INSERT INTO `sku_spe` VALUES (10, 5, 5, 1); -INSERT INTO `sku_spe` VALUES (11, 6, 2, 2); -INSERT INTO `sku_spe` VALUES (12, 6, 5, 1); - --- 查询1 - -SELECT - spu.spu_name, - sku.sku_title, - price, - ab_name, - att_name -FROM - spu, - sku, - sku_spe sp, - ability ab, - attributes att -WHERE - spu.spu_id = sku.spu_id - AND sku.sku_id = sp.sku_id - AND sp.ab_id = ab.ab_id - AND sp.att_id = att.att_id; - - --- 查询2 - SELECT - spu.spu_name, - sku.sku_title, - price, - ab_name, - att_name -FROM - spu, - sku, - sku_spe sp, - ability ab, - attributes att -WHERE - spu.spu_id = sku.spu_id - AND sku.sku_id = sp.sku_id - AND sp.ab_id = ab.ab_id - AND sp.att_id = att.att_id - and sku.sku_id=( -SELECT aa.sku_id FROM -(SELECT sku_id FROM sku_spe sp,attributes att where sp.att_id=att.att_id and att_name='野火') aa, -(SELECT sku_id FROM sku_spe sp,attributes att where sp.att_id=att.att_id and att_name='略有磨损') bb -where aa.sku_id=bb.sku_id); -~~~ - diff --git "a/08 \345\256\230\346\226\207\350\257\232/20230924 \351\242\204\344\271\240.md" "b/08 \345\256\230\346\226\207\350\257\232/20230924 \351\242\204\344\271\240.md" deleted file mode 100644 index c3c3358..0000000 --- "a/08 \345\256\230\346\226\207\350\257\232/20230924 \351\242\204\344\271\240.md" +++ /dev/null @@ -1,30 +0,0 @@ -### 预习 - - #### 1.事务 - -为了完成某个业务而对数据库进行一系列操作,这些操作要么全部成功,要么全部失败。 - - #### 事务的四个特性 - -1.原子性:事务包含的这一系列操作,要么全部成功,要么全部失败 2.一致性:事务完成之后,不会将非法的数据写入数据库。 - -3.隔离性:多个事务可以在一定程度上并发执行 - -​ 4.持久性:事务完成之后,数据要永久保存 - -#### 2.视图 在已有的表或者视图上创建的虚拟表 - -创建视图: create view 视图名 asselect 可以对(单表)视图进行一些增删改查的操作,这些操作会影响到原始的表 删除视图:drop view 视图名 - -#### 3.索引 - -为了提高查询的速度而在数据库断创建的一种排序的数据结构 - -#### 4.储存过程 - -存储在数据库端的一组为了完成特点功能的sql语句 - -存储过程:create procedure 存储过程名(【参数】) - -参数格式(参数类型 参数名 数据类型) - diff --git "a/08 \345\256\230\346\226\207\350\257\232/20230927 \350\247\206\345\233\276.md" "b/08 \345\256\230\346\226\207\350\257\232/20230927 \350\247\206\345\233\276.md" deleted file mode 100644 index f1d7ca2..0000000 --- "a/08 \345\256\230\346\226\207\350\257\232/20230927 \350\247\206\345\233\276.md" +++ /dev/null @@ -1,136 +0,0 @@ -## 笔记 - -### check约束 - -作用:检查某个字段是否符合要求,一般指的是值的范围 age int age>0 - -~~~ sql -语法:create table 表名( - -sex char(1), - -check (sex in ('男','女')) - -); -~~~ - - - -### 在utf8中一个汉字等于一个字符,等于三个字节 - - - -# 视图 - -1.视图是一种虚拟表,本身是不具有数据的,占用很少的内存空间,它是sql中一个重要概念。 - -2.视图建立在已有表的基础上,视图赖从建立的这些表为基表。 - -### 创建视图 - -~~~ sql -create view 视图名 as 查询语句 ---- 将过滤后的数据,保存成一个视图,有利于数据的安全性 -~~~ - -### 基于视图建立视图 - -建立好一个视图后,在这个视图的基础上,继续建视图 - -### 查看表格的创建过程 - -~~~sql -show create table 表名 -show create table 视图名 -~~~ - -### 更新视图数据 - -视图中的行和底层基表中的行之间必须存在一对一的关系(视图虽然可以更新,但总得来说视图作为虚拟表 不建议更新) - -~~~sql -方法一: -create or replace view 视图名 ---- (有这个视图就更新,没有就创建) -方法二: -alter view ---- (前提是这个修改的视图一定有在) - -~~~ - -### 删除视图 - -语法: - -drop view 视图名 - -drop view if exists 视图名 - -## 作业 - -~~~ sql -#第14章_视图的课后练习 - -USE dbtest14; -#练习1: -#1. 使用表emps创建视图employee_vu, -#其中包括姓名(LAST_NAME),员工号(EMPLOYEE_ID),部门号(DEPARTMENT_ID) -CREATE VIEW employee_vu as -SELECT last_name 姓名,employee_id 员工号 , department_id 部门号 FROM employees; - - -#2. 显示视图的结构 - -show CREATE TABLE employee_vu; -#3. 查询视图中的全部内容 - -SELECT * FROM employee_vu; -#4. 将视图中的数据限定在部门号是80的范围内 - -SELECT * FROM employee_vu WHERE 部门号 >=0 and 部门号 <=80; - -#练习2: - - -#1. 创建视图emp_v1,要求查询电话号码以‘011’开头的员工姓名和工资、邮箱 -CREATE VIEW emp_v1 AS -SELECT last_name 员工姓名,salary 工资,email 邮箱 FROM employees where phone_number like '011%'; - - -SELECT * FROM emp_v1; - -#2. 要求将视图 emp_v1 修改为查询电话号码以‘011’开头的并且邮箱中包含 e 字符 -#的员工姓名和邮箱、电话号码,工资 - -ALTER VIEW emp_v1 as SELECT last_name 员工姓名,salary 工资,phone_number 电话号码, email 邮箱 FROM employees where phone_number like '011%' and email like '%e%'; - -SELECT * FROM emp_v1; - - -#3. 向 emp_v1 插入一条记录,是否可以? - -不可以 - - -#4. 修改emp_v1中员工的工资,每人涨薪1000 -UPDATE emp_v1 set 工资 = 工资+1000; -#5. 删除emp_v1中姓名为Olsen的员工 - -DELETE from emp_v1 where 员工姓名 ='Olsen'; - -#6. 创建视图emp_v2,要求查询部门的最高工资高于 12000 的部门id和其最高工资 -CREATE view emp_v2 as -SELECT d.department_id,max(salary) FROM employees e,departments d WHERE e.department_id=d.department_id and e.salary > 12000 GROUP BY d.department_id; - - -SELECT * FROM emp_v2; -#7. 向 emp_v2 中插入一条记录,是否可以? - -不可以 - - -#8. 删除刚才的emp_v2 和 emp_v1 -DROP VIEW if exists emp_v2; -DROP VIEW if exists emp_v1; -~~~ - diff --git "a/09 \346\233\271\346\255\243\346\263\242/20230905 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" "b/09 \346\233\271\346\255\243\346\263\242/20230905 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" deleted file mode 100644 index 3c97d8f..0000000 --- "a/09 \346\233\271\346\255\243\346\263\242/20230905 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" +++ /dev/null @@ -1,51 +0,0 @@ -# 笔记 - -​ 新学期,意味着新的目标,充满着新的期待。我们应该以更加积极向上的态度投入到自主学习中,持续发扬软工学子的守正务实、但当实干的精神。 - -​ 新学期、新奋斗、新开始、新起点。 - -​ 我们应当多关注招聘网站,多以我们所学的专业招聘职位的岗位要求,为我们的学习目标;这样可以使我们更好的适应今后的工作。 - -## 例如: - -**前端部分:** -  1)HTML:网页的核心语言,构成网页的基础 -  2)CSS:使网页更加丰富多彩灿烂的利器 -  3)JavaScript:使网页动起来的根本,加强了网页和用户之间的交互 -  4)HTML DOM:换一种更加形象化的角度来看待网页,让我们更加方便的控制 网页 -  5)HTML BOM:与浏览器交互不可或缺的工具 -  6)JavaScript库,主要是:jQuery及其插件、YUI及其插件,使编写网页更加的方便快捷和健壮的强大工具 -  7)AJAX:异步提交,增强了用户使用网页的良好交互体验 -  8)JSON: 比 XML 更小、更快,更易解析的数据传输工具 -  9)FLEX:提供丰富多彩的动画效果 -  10)普元工作流:更加清晰明了的帮助用户处理业务流程上面的工作 -  11)JSP:Servlet的展示层,使网页逻辑与网页设计的显示分离 -  12)JSTL:加强和简化了JSP页面的开发 -  13)EL:使JSP页面写起来更加简单 -**后台部分:** -  1)JAVA语言编程基础部分:内容丰富是Java知识体系结构的核心和基础 -  2)JDBC:提供了一种基准,据此可以构建更高级的工具和接口,使Java开发人员能够编写数据库应用程序 -  3)JavaMail:用于电子邮件的相关的编程工作 -  4)JUnit:单元测试,整个变成工作测试的地位始终非常重要 -  5)Log4j:使我们能够更加细致地控制日志的生成过程 -  6)Servlet:JavaWeb的核心 -  7)Struts2:JavaWeb编程中明星级的框架,优点多功能强使编程工作更简单,主要用于控制跳转 -  8)Spring:JavaWeb编程中明星级的框架,同样优点多功能强使编程工作更简单,主要用于管理对象 -  9)iBatis:JavaWeb编程中明星级的框架,同样也是优点多功能强使编程工作更简单,主要用于程序和数据库之间的交互 -  10)SQL:与数据库交互式编程的必备工具 - **版本控制:** -  1)SVN:版本控制,方便团队协同工作 - - - **WEB服务器:** -  1)Tomcat:优秀免费的中小型WEB服务器 -  2)Weblogic:功能很强大的WEB服务器 - **开发工具:** -  1)Eclipse:开源强大的Java编程工具 -  2)MyEclipse:在eclipse 基础上加上自己的插件开发而成的功能强大的企业级集成开发环境 -**数据库:** -  1)Oracle:数据库业界老大,这个常用一点当然,也仅仅是常用一些常用的功能而已,需要加强 -  2)MySQL:最好的关系型数据库之一 -  3)SqlServer:最好的关系型数据库之一 -**数据库客户端:** -  1)Toad:非常棒的数据库客户端软件 diff --git "a/09 \346\233\271\346\255\243\346\263\242/20230906 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" "b/09 \346\233\271\346\255\243\346\263\242/20230906 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" deleted file mode 100644 index 92840d1..0000000 --- "a/09 \346\233\271\346\255\243\346\263\242/20230906 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" +++ /dev/null @@ -1,166 +0,0 @@ -# 笔记 - -## 数据库设计 - -可以根据用户需求和开发的系统的需求,设计出符合对应的DBMS的需求的数据库结构,使其能有效的存储和管理数据。 - - - -### 表之间的关系: - -1、一对一的关系 - -将其一个表的主键,另一个表当主键 - -2、一对多的关系 - -将一所在的表的主键,放到多的表当外键 - -3、多对多的关系 - -必须有第三张表,将前面两个表的主键放到这当主键 - - - -### E-R图(实体关系图) - -要素:实体(表)、属性(字段)和关系(类似外键约束) - -实体:用矩形、主键:加下划线、外键;横线中间加菱形 - - - -## 数据库设计的步骤 - -设计阶股 - -需求分析 - -概念结构设计 - -逻相结构设计 - -物理结构设计 - -数据库的实施 - -数据库的维护 - -# 作业 - -``` mysql -create database tnfb charset utf8; - -use tnfb; - -##院系表 -create table department( - d_id int primary key, - d_name varchar(20) -); -insert into department values -(112,'软件工程学院'), -(113,'财经商贸学院'), -(114,'医疗医护学院'); - -##专业表 -create table speciality( - s_id int primary key, - s_name varchar(20), - d_id int, - foreign key (d_id) references department(d_id) -); -insert into speciality values -(11,'软件技术',112), -(22,'会计',113), -(33,'护理',114); - -##教室表 -create table classroom( -r_id int PRIMARY KEY, -r_name varchar(10) -); -insert into classroom values -(1,'实训八'), -(2,'实训五'), -(3,'实训三'); - -##班级表 -create table class( - c_id int primary key, - c_name varchar(20), - s_id int, - foreign key (s_id) references speciality(s_id) -); -insert into class values -(1,'软件技术2班',11), -(2,'软件技术8班',11), -(3,'软件技术4班',11); - -##课程 -CREATE TABLE course( - couseId int PRIMARY key, - courseName varchar(10), - credit int, - c_id int,##班级编号 - r_id int,##教室编号 - foreign key (c_id) references class(c_id), - foreign key (r_id) references classroom(r_id) -); -insert into course VALUES -(1,'java',78,1,2), -(2,'html',90,2,3), -(3,'php',80,3,1); - -##教师表 -create table teacher( - t_id int primary key, - t_name varchar(20), - sex varchar(20), - d_id int,##院系编号 - couseId int,##课程编号 - foreign key (d_id) references department(d_id), - foreign key (couseId) references course(couseId) -); -insert into teacher values -(1,'老代','男',123,1), -(2,'老二','女',456,2), -(3,'小六','女',789,3); - -##课程表 -create table `select` ( - selectId int primary key, - couseId int,##课程编号 - time varchar(20), - t_id int,##教师编号 - r_id int,##班级编号 - foreign key (couseId) references course(couseId), - foreign key (t_id) references teacher(t_id), - foreign key (r_id) references classroom(r_id) -); -insert into `select` values -(1,1,'星期一上午',2,3), -(2,2,'星期二下午',1,2), -(3,3,'星期三上午',3,1); - -##学生表 -create table student ( - id int primary key, - name varchar(20), - sex varchar(10), - age int, - address varchar(20), - d_id int,##院系编号 - c_id int,## 课程编号 - selectId int,##选修表的编号 - foreign key (d_id) references department(d_id), - foreign key (c_id) references class(c_id), - foreign key (selectId) references `select`(selectId) -); -insert into student values -(01,'小代','男',18,'团结里3',11,1,1), -(02,'小二','女',28,'团结里4',12,2,2), -(03,'老六','女',38,'团结里5',13,3,3); - -``` - diff --git "a/09 \346\233\271\346\255\243\346\263\242/20230907 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" "b/09 \346\233\271\346\255\243\346\263\242/20230907 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" deleted file mode 100644 index 00348b6..0000000 --- "a/09 \346\233\271\346\255\243\346\263\242/20230907 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" +++ /dev/null @@ -1,90 +0,0 @@ -# 笔记 - -## 数据库的范式 - -1.第一范式:要求字段的内容,不可分割,为的是保证数据的原子性。 - -2.第二范式:要求满足第一范式的基础上,要求非主键字段要完全依赖主键(非主键要依赖整个联合主键),而不能只依赖部分。 - -3.第三范式:满足第二范式的前提上,要求非主键属性要直接依赖于主键。 - - - -# 练习 - -```mysql -create database tnfb charset utf8; -use tnfb; - -#院系表 -create table college( - cll_id int primary key auto_increment, - cll_name varchar(10), - cll_tel char(11) -); - -#专业表 -create table major( - m_id int primary key auto_increment, - m_name varchar(10), - cll_id int, - foreign key(cll_id) references college(cll_id) -); - -#班级表 -create table clazz( - c_id int primary key auto_increment, - c_name varchar(10), - c_grabe int, - m_id int, - foreign key(m_id) references major(m_id) -); - -#教室表 -create table classroom( - cl_id int primary key auto_increment, - cl_name varchar(10) -); -#教师表 -create table teacher( - t_id int primary key auto_increment, - t_name varchar(10), - cll_id int, - foreign key(cll_id) REFERENCES college(cll_id) -); -#课程信息表 -create table message( - me_id int primary key auto_increment, - me_time varchar(20) -); -#课程表 (教室号,上课时间,上课时间段,教师号,课程号,院系号) -create table course( - co_id int primary key auto_increment, - co_name varchar(10), - co_credit int, - cll_id int, - cl_id int, - me_id int, - t_id int, - foreign key(cl_id) REFERENCES classroom(cl_id), - foreign key(cll_id) REFERENCES college(cll_id), - foreign key(me_id) REFERENCES message(me_id), - foreign key(t_id) REFERENCES teacher(t_id) -); - -#学生表 -create table student( - st_id int primary key auto_increment, - st_name varchar(10), - st_grabe int, - c_id int, - co_id int, - foreign key(co_id) references course(co_id), - foreign key(c_id) references clazz(c_id) -); - - - - -``` - diff --git "a/09 \346\233\271\346\255\243\346\263\242/20230908 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" "b/09 \346\233\271\346\255\243\346\263\242/20230908 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" deleted file mode 100644 index e972e71..0000000 --- "a/09 \346\233\271\346\255\243\346\263\242/20230908 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" +++ /dev/null @@ -1,106 +0,0 @@ -# 笔记 - -## 操作步骤 - -1.创建概念模型(E-R图) CDM - -2.转换成逻辑模型 LDM - -3.转换成物理模型 PDM - -4.生成DDL - - - -# 作业 - -```mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/10 19:49:40 */ -/*==============================================================*/ -create database tsglxt charset utf8; -use tsglxt; - -drop table if exists Books; - -drop table if exists Borrowing; - -drop table if exists Borrowing2; - -drop table if exists publishinghouse; - -/*==============================================================*/ -/* Table: Books */ -/*==============================================================*/ -create table publishinghouse ##出版社 -( - pu_id varchar(10) not null, - pu_call char(11) not null, - pu_zip char(6) not null, - primary key (pu_id) -); -insert into publishinghouse values -(1001,'人民出版社','666666'), -(1002,'清华出版社','777777'), -(1003,'代哥出版社','888888'); - -create table Books ##图书 -( - bo_id varchar(20) not null, - pu_id varchar(10) not null, - bo_name varchar(10) not null, - bo_loc varchar(20) not null, - primary key (bo_id) -); -insert into Books values -(01,1001,'简爱','五楼二号柜第一排'), -(02,1002,'三国演义','四楼二号柜第二排'), -(03,1003,'神墓','三楼三号柜第一排'); - -/*==============================================================*/ -/* Table: Borrowing */ -/*==============================================================*/ -create table Borrowing ##借阅者 -( - borr_id varchar(2) not null, - borr_name varchar(6) not null, - primary key (borr_id) -); -insert into Borrowing values -(01,'代总'), -(02,'代副总'), -(03,'小代总'); - -/*==============================================================*/ -/* Table: Borrowing2 */ -/*==============================================================*/ -create table Borrowing2 -( - bo_id varchar(20) not null, - borr_id varchar(2) not null, - borr_date varchar(10) not null, - "Return" varchar(10) not null, - primary key (bo_id, borr_id, borr_date) -); -insert into Borrowing2 values -(01,01,'2023.2.1','2023.2.3'), -(02,02,'2023.7.1','2023.7.3'), -(03,03,'2023.6.1','2023.6.3'); -/*==============================================================*/ -/* Table: publishinghouse */ -/*==============================================================*/ - - -alter table Books add constraint FK_publication foreign key (pu_id) - references publishinghouse (pu_id) on delete restrict on update restrict; - -alter table Borrowing2 add constraint FK_Borrowing foreign key (bo_id) - references Books (bo_id) on delete restrict on update restrict; - -alter table Borrowing2 add constraint FK_Borrowing2 foreign key (borr_id) - references Borrowing (borr_id) on delete restrict on update restrict; - - -``` - diff --git "a/09 \346\233\271\346\255\243\346\263\242/20230912 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" "b/09 \346\233\271\346\255\243\346\263\242/20230912 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" deleted file mode 100644 index ecc63b3..0000000 --- "a/09 \346\233\271\346\255\243\346\263\242/20230912 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" +++ /dev/null @@ -1,187 +0,0 @@ -# 笔记 - -2023年9月12日 天晴 心情一般! - -# 作业 - - - -```mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/12 17:37:52 */ -/*==============================================================*/ -create database movie charset utf8; -use movie; - -drop table if exists Directorinformation; - -drop table if exists address; - -drop table if exists audience; - -drop table if exists booklist; - -drop table if exists film; - -drop table if exists filmreview; - -drop table if exists introq; - -drop table if exists language; - -drop table if exists phrase; - -drop table if exists type; - -/*==============================================================*/ -/* Table: Directorinformation */ -/*==============================================================*/ -create table Directorinformation #详细信息 -( - d_id int not null, - i_id int not null, - d_name varchar(5) not null, - d_sex char(2) not null, - d_age varchar(3) not null, - d_add varchar(50) not null, - primary key (d_id) -); - -/*==============================================================*/ -/* Table: address */ -/*==============================================================*/ -create table address #地址 -( - a_id int not null, - f_id int not null, - a_name varchar(5) not null, - primary key (a_id) -); - -/*==============================================================*/ -/* Table: audience */ -/*==============================================================*/ -create table audience #观众 -( - a_ticketnumber int not null, - f_id int not null, - a_name varchar(5) not null, - a_phone char(11) not null, - primary key (a_ticketnumber) -); - -/*==============================================================*/ -/* Table: booklist */ -/*==============================================================*/ -create table booklist #书单 -( - bo_id int not null, - a_ticketnumber int not null, - bo_list varchar(10) not null, - bo_recommend varchar(50) not null, - primary key (bo_id) -); - -/*==============================================================*/ -/* Table: film */ -/*==============================================================*/ -create table film #电影信息 -( - f_id int not null, - f_name varchar(10) not null, - f_date date not null, - f_time time not null, - primary key (f_id) -); - -/*==============================================================*/ -/* Table: filmreview */ -/*==============================================================*/ -create table filmreview #影评 -( - fi_id int not null, - f_id int not null, - fi_class int not null, - fi_headline varchar(10) not null, - fi_content varchar(100) not null, - primary key (fi_id) -); - -/*==============================================================*/ -/* Table: introq */ -/*==============================================================*/ -create table introq #简介 -( - i_id int not null, - f_id int not null, - i_director varchar(5) not null, - i_scriptwriter varchar(20) not null, - i_protagonist varchar(50) not null, - i_score decimal(3,1) not null, - primary key (i_id) -); - -/*==============================================================*/ -/* Table: language */ -/*==============================================================*/ -create table language #语言 -( - l_id int not null, - f_id int not null, - l_name varchar(10) not null, - primary key (l_id) -); - -/*==============================================================*/ -/* Table: phrase */ -/*==============================================================*/ -create table phrase#短评 -( - p_id int not null, - f_id int not null, - p_content varchar(100) not null, - primary key (p_id) -); - -/*==============================================================*/ -/* Table: type */ -/*==============================================================*/ -create table type #类型 -( - t_modelcodet int not null, - f_id int not null, - t_name varchar(5) not null, - primary key (t_modelcodet) -); - -alter table Directorinformation add constraint FK_indetail foreign key (i_id) - references introq (i_id) on delete restrict on update restrict; - -alter table address add constraint FK_e foreign key (f_id) - references film (f_id) on delete restrict on update restrict; - -alter table audience add constraint FK_watch foreign key (f_id) - references film (f_id) on delete restrict on update restrict; - -alter table booklist add constraint FK_g foreign key (a_ticketnumber) - references audience (a_ticketnumber) on delete restrict on update restrict; - -alter table filmreview add constraint FK_a foreign key (f_id) - references film (f_id) on delete restrict on update restrict; - -alter table introq add constraint FK_include foreign key (f_id) - references film (f_id) on delete restrict on update restrict; - -alter table language add constraint FK_h foreign key (f_id) - references film (f_id) on delete restrict on update restrict; - -alter table phrase add constraint FK_b foreign key (f_id) - references film (f_id) on delete restrict on update restrict; - -alter table type add constraint FK_f foreign key (f_id) - references film (f_id) on delete restrict on update restrict; - - -``` - diff --git "a/09 \346\233\271\346\255\243\346\263\242/20230913 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" "b/09 \346\233\271\346\255\243\346\263\242/20230913 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" deleted file mode 100644 index 13f1e40..0000000 --- "a/09 \346\233\271\346\255\243\346\263\242/20230913 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" +++ /dev/null @@ -1,114 +0,0 @@ -# 作业 - - - -```mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-13 17:26:56 */ -/*==============================================================*/ - -create database hospital charset utf8; -use hospital; - -drop table if exists cure; - -drop table if exists doctor; - -drop table if exists drug; - -drop table if exists grab; - -drop table if exists patient; - -/*==============================================================*/ -/* Table: cure */ -/*==============================================================*/ - -/*==============================================================*/ -/* Table: doctor */ -/*==============================================================*/ -create table doctor #医生 -( - d_id int(2) not null auto_increment, # 医生编号 - d_name varchar(5) not null, # 医生姓名 - d_type varchar(10) not null, # 医生类型 - d_sex varchar(2) not null, # 医生性别 - d_age varchar(2) not null, # 医生年龄 - primary key (d_id) -); -insert into doctor (d_id,d_name,d_type,d_sex,d_age) values -('1','陈佳炜','胃科','男','18'), -('2','林俊伟','妇产科','女','18'), -('3','代瑞','脑科','男','18'); - -/*==============================================================*/ -/* Table: drug */ -/*==============================================================*/ -create table drug #药品 -( - dr_id int(2) not null auto_increment, # 药品编号 - dr_name varchar(5) not null, # 药品名称 - primary key (dr_id) -); -insert into drug (dr_id,dr_name) values -('1','止泻药'), -('2','阿司匹林'), -('3','胃炎药'); - -/*==============================================================*/ -/* Table: grab */ -/*==============================================================*/ - -/*==============================================================*/ -/* Table: patient */ -/*==============================================================*/ -create table patient #病人 -( - p_id int(2) not null auto_increment, #病人病号 - p_name varchar(5) not null, #病人姓名 - p_symptom varchar(10) not null, #病人症状 - p_sex varchar(2) not null, #病人性别 - p_age varchar(2) not null, #病人年龄 - primary key (p_id) -); -insert into patient (p_id,p_name,p_symptom,p_sex,p_age) values -('1','张三','头疼','男','18'), -('2','李四','肚子疼','男','18'), -('3','王五','胃炎','男','18'); -create table cure #开药单 -( - p_id int not null, #病人病号 - d_id int not null, #医生编号 - primary key (p_id, d_id) -); - -insert into cure (p_id,d_id)values -('1','2'), -('2','1'), -('3','1'); -create table grab #抓 -( - p_id int not null, #病人病号 - dr_id int not null, #药品编号 - primary key (p_id, dr_id) -); -insert into grab (p_id,dr_id) values -('1','2'), -('2','1'), -('3','3'); -alter table cure add constraint FK_cure foreign key (p_id) - references patient (p_id) on delete restrict on update restrict; - -alter table cure add constraint FK_cure2 foreign key (d_id) - references doctor (d_id) on delete restrict on update restrict; - -alter table grab add constraint FK_grab foreign key (p_id) - references patient (p_id) on delete restrict on update restrict; - -alter table grab add constraint FK_grab2 foreign key (dr_id) - references drug (dr_id) on delete restrict on update restrict; - - -``` - diff --git "a/09 \346\233\271\346\255\243\346\263\242/20230914 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" "b/09 \346\233\271\346\255\243\346\263\242/20230914 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" deleted file mode 100644 index 51124cb..0000000 --- "a/09 \346\233\271\346\255\243\346\263\242/20230914 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" +++ /dev/null @@ -1,11 +0,0 @@ -# 笔记 - -软件:PowerDesigner 的使用方法 - -1、创建概念模型(类型er图) CDM - -2、将概念模型转换成逻辑模型 LDM - -3、将逻辑模型转换成物理模型 PDM - -4用物理模型生成DDL代码 \ No newline at end of file diff --git "a/09 \346\233\271\346\255\243\346\263\242/20230915 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" "b/09 \346\233\271\346\255\243\346\263\242/20230915 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" deleted file mode 100644 index 510f634..0000000 --- "a/09 \346\233\271\346\255\243\346\263\242/20230915 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" +++ /dev/null @@ -1,165 +0,0 @@ -# 笔记 - -多注意表与表之间的关系 - -# 作业 - - - -```mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/17 18:11:14 */ -/*==============================================================*/ -create database qiche charset utf8; -use qiche; - -drop table if exists automobile; - -drop table if exists client; - -drop table if exists record; - -drop table if exists salesman; - -/*==============================================================*/ -/* Table: automobile */ -/*==============================================================*/ -create table automobile #汽车 -( - a_id int(3) not null auto_increment, #汽车编号 - a_name varchar(10) not null, #汽车名称 - a_sellingprice decimal(7,1) not null, #汽车售价 - a_brand varchar(10) not null, #汽车品牌 - primary key (a_id) -); -insert into automobile values -(01,'五菱神光mini',20000.0,'五菱宏光'), -(02,'玛拉莎蒂2023',900000.0,'玛莎拉蒂'), -(03,'宝牛SUV',250000.0,'宝马'), -(04,'五菱宏光2077',10000.0,'五菱宏光'); - -/*==============================================================*/ -/* Table: client */ -/*==============================================================*/ -create table client #顾客 -( - c_id int(2) not null auto_increment, #顾客编号 - c_name varchar(10) not null, #顾客姓名 - c_sex varchar(2) not null, #顾客性别 - primary key (c_id) -); -insert into client values -(2001,'德莱厄斯','男'), -(2002,'塞恩','男'), -(2003,'蒙多','男'); -/*==============================================================*/ -/* Table: record */ -/*==============================================================*/ - - -/*==============================================================*/ -/* Table: salesman */ -/*==============================================================*/ -create table salesman #销售员 -( - s_id int(2) not null auto_increment, #工号 - s_name varchar(5) not null, #姓名 - s_sex varchar(2) not null, #性别 - primary key (s_id) -); -insert into salesman values -(1001,'梦泪','男'), -(1002,'坤哥','男'), -(1003,'厄斐琉斯','男'); - -create table record #销售记录 -( - r_id int(2) not null auto_increment, #销售编号 - s_id int not null, #工号 - c_id int not null, #顾客编号 - a_id int not null, #汽车编号 - primary key (r_id) -); -insert into record values -(3001,1001,2002,02), -(3002,1002,2001,01), -(3003,1001,2002,03), -(3004,1003,2003,04); - -alter table record add constraint FK_Relationship_2 foreign key (s_id) - references salesman (s_id) on delete restrict on update restrict; - -alter table record add constraint FK_Relationship_3 foreign key (c_id) - references client (c_id) on delete restrict on update restrict; - -alter table record add constraint FK_Relationship_4 foreign key (a_id) - references automobile (a_id) on delete restrict on update restrict; - -- 1.查询特定销售员的销售记录 -SELECT - s.s_id 工号, - s_name 销售员, - r_id 销售编号, - a_name 汽车型号, - a_sellingprice 售价, - a_brand 汽车品牌 -FROM - salesman s - JOIN record r - JOIN automobile a ON s.s_id = r.s_id - AND a.a_id = r.a_id -WHERE - s.s_id =( - SELECT - s_id - FROM - salesman - WHERE - s_name = '梦泪' - ); - -- 2.查找销售记录中销售价格最高的汽车 - select a.* from record r join automobile a on r.a_id=a.a_id where r.a_id = (select a_id from automobile where a_brand=(select max(a_brand) from automobile)); - -- 3.统计某个销售员的销售总额 -SELECT - s_name 销售员, - sum(a_sellingprice) 销售总额 -FROM - salesman s - JOIN record r - JOIN automobile a ON s.s_id = r.s_id - AND a.a_id = r.a_id - group by s.s_name having s.s_name='梦泪'; - -- 4.根据客户信息查询其购买过的汽车 - select c_name 顾客,c_sex 性别,a_name 汽车型号, a_sellingprice 售价,a_brand 型号 from client c join record r join automobile a on c.c_id=r.c_id and r.a_id = a.a_id where c.c_name='塞恩'; - -- 5.分析特定品牌汽车的销售情况,统计每个品牌的销售数量和总销售额 -SELECT - a_brand 品牌, - count( r.a_id) 销售数量, - sum( a.a_sellingprice ) 销售总额 -FROM - record r - JOIN automobile a ON r.a_id = a.a_id -GROUP BY - a_brand; - -- 6.检索特定日期范围内的销售了哪些汽车 - -- 7.查找某车型的销售历史。 - SELECT - a_name 汽车型号, - a_brand 品牌, - r.a_id 销售数量, - a.a_sellingprice 销售总额 -FROM - record r - JOIN automobile a ON r.a_id = a.a_id where a.a_name='五菱神光mini'; - -- 8.统计每个销售员的销售数量 -SELECT - s_name 销售员, - count(r.a_id) 销售总额 -FROM - salesman s - JOIN record r - JOIN automobile a ON s.s_id = r.s_id - AND a.a_id = r.a_id - group by s.s_name; -``` - diff --git "a/09 \346\233\271\346\255\243\346\263\242/20230919 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" "b/09 \346\233\271\346\255\243\346\263\242/20230919 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" deleted file mode 100644 index aa807ac..0000000 --- "a/09 \346\233\271\346\255\243\346\263\242/20230919 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" +++ /dev/null @@ -1,338 +0,0 @@ -# 笔记 - -得多复习,多学习,学无止尽,学有所成 - -# 作业 - -```mysql -#第03章_基本的SELECT语句的课后练习 - -# 1.查询所有员工12个月的工资总和,并起别名为工资总和 - -#理解1:计算12月的基本工资 - -#SELECT sum(salary*12) as 工资总和 FROM employees; - -#理解2:计算12月的基本工资和奖金 -# ifnull(原值,新值) 判断一个原值是否为null,如果原值是null,就用一个新值代替 -select * from employees; -SELECT sum((ifnull(commission_pct,0)*salary+salary)*12) as 工资总和 FROM employees; - -# 2.查询employees表中去除重复的job_id以后的数据 -#去除重复 distinct -select * from employees; -select DISTINCT job_id from employees; - -# 3.查询工资大于12000的员工姓名和工资 -select * from employees; -select first_name,salary from employees where salary>12000; -# 4.查询员工号为176的员工的姓名和部门号 -select * from employees; -select first_name,department_id from employees WHERE employee_id=176; -#; - -# 5.显示表 departments 的结构,并查询其中的全部数据 -desc employees; -select * from employees; -# 第04章_运算符课后练习 - -# 1.选择工资不在5000到12000的员工的姓名和工资 -select * from employees; -select first_name,salary from employees where salary not between 5000 and 12000; - -# 2.选择在20或50号部门工作的员工姓名和部门号 -select * from employees; -select first_name,department_id from employees where department_id in (20,50); -# 3.选择公司中没有管理者的员工姓名及job_id -select * from employees; -select first_name,job_id from employees where manager_id is null; - - - -# 4.选择公司中有奖金的员工姓名,工资和奖金级别 -select * from employees; -select first_name,salary,g.grade_level from employees e join job_grades g on e.salary between g.lowest_sal and g.highest_sal where commission_pct is not null; - - -# 5.选择员工姓名的第三个字是 尔 的员工姓名 -select * from employees; -select * from employees where last_name like '__尔%'; - - -# 6.选择姓名中有 特 字和 尔 字的员工姓名 -select * from employees; -select * from employees where last_name like '%尔%' and last_name like '%特%'; - - -# 7.显示出表 employees 表中 first_name 以 '尔'结尾的员工信息 -select * from employees; -select * from employees where first_name like '%尔'; - - -# 8.显示出表 employees 部门编号在 80-100 之间的姓名、工种 -select * from employees; -select first_name,j.job_title from employees e join jobs j on e.job_id=j.job_id where department_id between 80 and 100; -# 9.显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、工资、管理者id -select * from employees; -select first_name,salary,manager_id from employees where manager_id in(100,101,110); - -#第05章_排序与分页的课后练习 - - -#1. 查询员工的姓名和部门号和年薪,按年薪降序显示 --- order by 年薪 asc/desc -select * from employees ; -SELECT (ifnull(commission_pct,0)*salary+salary)*12 aaa FROM employees ORDER BY aaa desc; -# - -#2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据 -select * from employees ; -select first_name,salary from employees where salary not between 8000 and 17000 ORDER BY salary desc limit 20,20; - -#3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序 -select * from employees ; - -select * from employees where email like '%e%' ORDER BY length(email) desc,department_id; - - -# 第06章_多表查询的课后练习 - - -# 1.显示所有员工的姓名,部门号和部门名称。 -select first_name,d.department_id,department_name from employees e join departments d on e.department_id=d.department_id; - -# 2.查询90号部门员工的job_id和90号部门的location_id -select job_id,location_id from employees e join departments d on e.department_id=d.department_id where e.employee_id=90 or d.department_id=90; - - - -# 3.选择所有 有奖金的员工 的 last_name , department_name , location_id , city - -SELECT last_name,department_name,l.location_id,city FROM employees e join departments d join locations l on e.department_id=d.department_id and d.location_id=l.location_id; - - -# 4.选择city在 多伦多 工作的员工的 last_name , job_id , department_id , department_name -SELECT last_name , job_id , d.department_id , department_name FROM employees e join departments d join locations l on e.department_id=d.department_id and d.location_id=l.location_id where city='多伦多'; - - -#sql92语法(自然连接): - -SELECT last_name , job_id , d.department_id , department_name FROM employees e,departments d,locations l where city='多伦多' and e.department_id=d.department_id and d.location_id=l.location_id ; - - - -# 5.查询行政部门员工的部门名称、部门地址、姓名、工作、工资 - -select * from employees e join departments d join locations l on e.department_id=d.department_id and d.location_id=l.location_id where d.department_name='行政部'; - - - - -# 6.显示所有员工的姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式 --- 员工姓名 员工编号 上级姓名 上级的员工编号 --- 德哈恩 102 金 100 - -select a.last_name,a.employee_id,b.last_name,b.employee_id from employees a inner join employees b on a.employee_id=b.manager_id; - - -# 7.查询哪些部门没有员工 -select d.department_name from employees e right join departments d on e.department_id=d.department_id where employee_id is null; -# 8. 查询哪个城市没有部门 - -select city from departments dep right join locations loc on dep.location_id=loc.location_id where department_id is null; - - -# 9. 查询部门名为 销售部 或 信息技术部 的员工信息 -select * from employees e join departments d on e.department_id=d.department_id where department_name in ('销售部','信息技术部'); - - -# 第08章_聚合函数的课后练习 - - - -#2.查询公司员工工资的最大值,最小值,平均值,总和 -select max(salary) 最大值,min(salary) 最小值,avg(salary) 平均值,sum(salary) 总和 from employees; - -#3.查询各job_id的员工工资的最大值,最小值,平均值,总和 - -select job_id,max(salary) 最大值,min(salary) 最小值,avg(salary) 平均值,sum(salary) 总和 from employees GROUP BY job_id; -#4.选择各个job_id的员工人数 -select job_id,count(job_id) from employees GROUP BY job_id; -# 5.查询员工最高工资和最低工资的差距 -select max(salary)-min(salary) from employees; - -# 6.查询各个管理者 手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内 -select * from employees where manager_id is not null group by manager_id having min(salary)>=6000; - - - - - -# 7.查询所有部门的名字,location_id,员工数量和平均工资,并按平均工资降序 - -select d.department_name 部门名称,d.location_id 地点编号,count(employee_id) 员工数量,avg(salary) 平均工资 from employees e left join departments d on e.department_id=d.department_id GROUP by d.department_id ORDER BY 平均工资 desc; - - - -# 8.查询每个工种、每个部门的部门名、工种名和最低工资 - - -select job_title,department_name,min(salary) from employees emp -left join departments dep on emp.department_id=dep.department_id -left join jobs on emp.job_id=jobs.job_id group by job_title,department_name; - - - -# 第09章_子查询的课后练习 - - - -#1.查询和 兹洛特基 相同部门的员工姓名和工资 -; -select department_id from employees where last_name='兹洛特基'; -select last_name,salary from employees where department_id=(select department_id from employees where last_name='兹洛特基'); - -#2.查询工资比公司平均工资高的员工的员工号,姓名和工资。 -select avg(salary) from employees; -select employee_id,last_name,salary from employees where salary>(select avg(salary) from employees); - - -#3.选择工资大于所有JOB_ID = 'SA_MAN'的员工的工资的员工的last_name, job_id, salary - -select max(salary) from employees left join jobs on employees.job_id=jobs.job_id where jobs.job_id='SA_MAN'; -select employees.last_name, jobs.job_id, employees.salary from employees left join jobs on employees.job_id=jobs.job_id where salary>(select max(salary) from employees left join jobs on employees.job_id=jobs.job_id where jobs.job_id='SA_MAN'); - - -#4.查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名 - -SELECT employee_id,last_name -FROM employees -SELECT department_id FROM employees where last_name like '%u%' or first_name like '%u%'; - - -#5.查询部门的location_id为1700的部门的工作的员工的员工号 -select d.department_id from employees e right join departments d on e.department_id=d.department_id where location_id=1700 GROUP BY d.department_id; -select employee_id from employees e left join departments d on e.department_id=d.department_id where e.department_id in (select d.department_id from employees e right join departments d on e.department_id=d.department_id where location_id=1700 GROUP BY d.department_id); - - - -#6.查询管理者是 金 的员工姓名和工资 - -select employee_id from employees where last_name='金'; -select last_name,salary from employees where manager_id in (select employee_id from employees where last_name='金'); - - - -#7.查询工资最低的员工信息: last_name, salary -select min(salary) from employees; -select last_name, salary from employees where salary=(select min(salary) from employees); - - - -#8.查询平均工资最低的部门信息 -select * from employees a left join departments b on a.department_id=b.department_id where salary=(select min(salary)from employees); -#方式1: -# 部门最低工资=全司最低 -#方式2: -# 部门平均<= 公司所有平均 - - - - - -#9.查询平均工资最低的部门信息和该部门的平均工资(相关子查询) -#方式:先查最低平均工资的部门,再根据其id去select中再子查询 -select b.*,avg(salary) from employees a left join departments b on a.department_id=b.department_id where salary=(select min(salary) from employees) group by department_id; - -#10.查询平均工资最高的 job 信息 - -#方式1:平均工资=最大 - -#方式2:平均工资>=所有平均工资 -select jobs.job_id,avg(salary) from employees left join jobs on employees.job_id=jobs.job_id GROUP BY job_id; -select * from employees a left join jobs b on a.job_id=b.job_id group by b.job_id having salary=(select max(salary) from employees) ; - - - -#11.查询平均工资高于公司平均工资的部门有哪些? - -select department_id,avg(salary) from employees group by department_id having avg(salary)>(select avg(salary) from employees) ; - - -#12.查询出公司中所有 manager 的详细信息 - -#方式1:自连接 自己连自己 - -select * from employees a left join employees b on a.employee_id=b.manager_id; -#方式2:子查询 -#员工编号=(管理员编号有哪些) - - - - - -#13.各个部门中 最高工资中 最低的那个部门的 最低工资是多少? - - - -#方式: - -select department_id,min(最高工资) from (select max(salary) 最高工资,department_id from employees group by department_id) as a group by department_id; - - - - -#14.查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary -#方式1: -select avg(salary) 平均工资 from employees group by department_id ; -select last_name,department_id,email,salary from employees group by department_id having avg(salary)=(select max(平均工资)from (select avg(salary) 平均工资 from employees group by department_id) as a); - - -#15. 查询部门的部门号,其中不包括job_id是"ST_CLERK"的部门号 -#方式1: - -select department_id from employees where job_id !='ST_CLERK'; - - - -#16. 选择所有没有管理者的员工的last_name - -select last_name from employees where manager_id is null; - -#17.查询员工号、姓名、雇用时间、工资,其中员工的管理者为 'De Haan' -#方式1: - - -#方式2: - - -#18.查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资(相关子查询) - -#方式1:使用相关子查询 -select avg(salary) 平均工资,department_id from employees group by department_id; -select * from employees a left join (select avg(salary) 平均工资,department_id from employees group by department_id) -b on a.department_id=b.department_id where a.salary>b.平均工资; - -#方式2:在FROM中声明子查询 - - - -#19.查询每个部门下的部门人数大于 5 的部门名称(相关子查询) -select department_id from employees group by department_id having count(department_id)>5; -select * from departments where department_id in(select department_id from employees group by department_id having count(department_id)>5); - - -#20.查询每个国家下的部门个数大于 2 的国家编号(相关子查询) - -select country_id,count(department_id) from departments a left join locations b on a.location_id=b.location_id group by country_id -having count(department_id)>2; -/* -子查询的编写技巧(或步骤):① 从里往外写 ② 从外往里写 - -如何选择? -① 如果子查询相对较简单,建议从外往里写。一旦子查询结构较复杂,则建议从里往外写 -② 如果是相关子查询的话,通常都是从外往里写。 - -*/ -``` - diff --git "a/09 \346\233\271\346\255\243\346\263\242/20230920 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" "b/09 \346\233\271\346\255\243\346\263\242/20230920 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" deleted file mode 100644 index 715913c..0000000 --- "a/09 \346\233\271\346\255\243\346\263\242/20230920 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" +++ /dev/null @@ -1,161 +0,0 @@ -# 笔记 - -基于角色的权限访问控制RBAC - -RBAC核心是角色 - -3个基础组成部分:分别是:用户、角色和权限 - -sku=stuock keeping unit(库存量单位) - -# 作业 - -```mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-20 15:32:12 */ -/*==============================================================*/ -create database ultram charset utf8; -use ultram; - -drop table if exists clas; - -drop table if exists clasVSmon; - -drop table if exists monster; - -drop table if exists ult_clas; - -drop table if exists ultraman; - -/*==============================================================*/ -/* Table: clas */ -/*==============================================================*/ -create table clas -( - clas_id int(2) not null auto_increment, - clas_name varchar(10) not null, - primary key (clas_id) -); -insert into clas values -("1", "总指挥"), -("2", "队长"), -("3", "队员"); - -/*==============================================================*/ -/* Table: clasVSmon */ -/*==============================================================*/ -create table clasVSmon -( - monster_id int not null, - clas_id int not null, - primary key (monster_id, clas_id) -); -insert into clasVSmon values -("1", "1"), -("2", "1"), -("3", "1"), -("1" ,"2"), -("2", "2"), -("1" ,"3"); -/*==============================================================*/ -/* Table: monster */ -/*==============================================================*/ -create table monster -( - monster_id int(2) not null auto_increment, - monster_name varchar(10) not null, - monster_address varchar(20) not null, - primary key (monster_id) -); -insert into monster values -("1", "食油超兽 尤多林卡", "太平洋"), -("2", "宇宙阿斯托罗姆斯", "东京湾"), -("3", "吸血植物乔古里斯花 ", "菲律宾"); - -/*==============================================================*/ -/* Table: ult_clas */ -/*==============================================================*/ -create table ult_clas -( - clas_id int not null, - ultraman_id int not null, - primary key (clas_id, ultraman_id) -); -insert into ult_clas values -("1", "1"), -("2" ,"2"), -("3", "3"); - -/*==============================================================*/ -/* Table: ultraman */ -/*==============================================================*/ -create table ultraman -( - ultraman_id int(2) not null auto_increment, - ultraman_name varchar(10) not null, - ultraman_skill varchar(10) not null, - primary key (ultraman_id) -); -insert into ultraman values -("1", "初代", "斯派修姆光线"), -("2", "泰罗" ,"斯特里姆光线"), -("3", "梦比优斯", "梦比姆骑士光剑​"); -alter table clasVSmon add constraint FK_clasVSmon foreign key (monster_id) - references monster (monster_id) on delete restrict on update restrict; - -alter table clasVSmon add constraint FK_clasVSmon2 foreign key (clas_id) - references clas (clas_id) on delete restrict on update restrict; - -alter table ult_clas add constraint FK_ult_clas foreign key (clas_id) - references clas (clas_id) on delete restrict on update restrict; - -alter table ult_clas add constraint FK_ult_clas2 foreign key (ultraman_id) - references ultraman (ultraman_id) on delete restrict on update restrict; - - - - - - - - - - - - - - - - - - - - - - - -select * from ultraman; #奥特曼 -select * from clas; #职称 -select * from monster; #怪兽 - - -SELECT - u.ultraman_name 奥特名称, - u.ultraman_skill 奥特技能, - c.clas_name 奥特职称, - m.monster_name 可以殴打的怪兽, - m.monster_address 怪兽位置 -FROM - ultraman u - JOIN ult_clas uc - JOIN clas c - JOIN clasvsmon cm - JOIN monster m ON - u.ultraman_id=uc.ultraman_id AND - uc.clas_id=c.clas_id and - c.clas_id=cm.clas_id and - cm.monster_id=m.monster_id -where u.ultraman_id=1; -``` - diff --git "a/09 \346\233\271\346\255\243\346\263\242/20230921 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" "b/09 \346\233\271\346\255\243\346\263\242/20230921 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" deleted file mode 100644 index c7b4f07..0000000 --- "a/09 \346\233\271\346\255\243\346\263\242/20230921 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" +++ /dev/null @@ -1,126 +0,0 @@ -# 笔记 - -sku适用于区别这些不同商品的属性,又称sku属性,因为它决定了sku的绝对数量 - -一个产品只属于一个品类。一个产品有多个高层 - -# 作业 - -```mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-21 16:37:36 */ -/*==============================================================*/ -CREATE DATABASE computer charset utf8; -use computer; - -drop table if exists goods; - -drop table if exists parameter; - -drop table if exists property; - -drop table if exists spe_attr; - -drop table if exists specification; - -/*==============================================================*/ -/* Table: goods */ -/*==============================================================*/ -create table goods ## 商品表 -( - goods_id int not null auto_increment, - goods_name varchar(50) not null, - goods_indetail text not null, - primary key (goods_id) -); -insert into goods values -(1,'华硕','玩家国度'); -/*==============================================================*/ -/* Table: parameter */ -/*==============================================================*/ -create table parameter ## 参数表 -( - pa_id int not null auto_increment, - pa_attr varchar(10) not null, - primary key (pa_id) -); -insert into parameter values -(1,'银白色'), -(2,'墨绿色'), -(3,'酷黑色'), -(4,'256G'), -(5,'512G'), -(6,'1024G'), -(7,'标准版'), -(8,'豪华版'), -(9,'至臻版'); -/*==============================================================*/ -/* Table: property */ -/*==============================================================*/ -create table property ## 属性表 -( - p_id int not null auto_increment, - p_name varchar(10) not null, - primary key (p_id) -); -insert into property values -(1,'颜色'), -(2,'内存'), -(3,'版本'); -/*==============================================================*/ -/* Table: spe_attr */ -/*==============================================================*/ -create table specification ## 规格表 -( - s_id int not null auto_increment, - goods_id int not null, - s_name varchar(50) not null, - s_price decimal(8,2) not null, - s_inventory int not null, - primary key (s_id) -); -insert into specification values -(1,1,'天选1 银白色 256G 标准版',5599.00,10), -(2,1,'天选2 酷黑色 256G 标准版',6599.00,24), -(3,1,'天选3 墨绿色 512G 豪华版',7999.00,6), -(4,1,'天选3 银白色 512G 豪华版',7999.00,1), -(5,1,'天选3 银白色 1024G 至臻版',8999.00,13), -(6,1,'天选4 银白色 1024G 至臻版',9999.00,5); - - -create table spe_attr ## 归属表 -( - sp_id int not null auto_increment, - s_id int not null, - p_id int not null, - pa_id int not null, - primary key (sp_id) -); -insert into spe_attr values -(1,1,1,1), -(2,2,1,2), -(3,3,2,5), -(4,4,2,5), -(5,5,3,9), -(6,6,3,9); -/*==============================================================*/ -/* Table: specification */ -/*==============================================================*/ - - -alter table spe_attr add constraint FK_Relationship_2 foreign key (s_id) - references specification (s_id) on delete restrict on update restrict; - -alter table spe_attr add constraint FK_Relationship_3 foreign key (p_id) - references property (p_id) on delete restrict on update restrict; - -alter table spe_attr add constraint FK_Relationship_4 foreign key (pa_id) - references parameter (pa_id) on delete restrict on update restrict; - -alter table specification add constraint FK_Relationship_1 foreign key (goods_id) - references goods (goods_id) on delete restrict on update restrict; - - -``` - diff --git "a/09 \346\233\271\346\255\243\346\263\242/20230922 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" "b/09 \346\233\271\346\255\243\346\263\242/20230922 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" deleted file mode 100644 index e04b7ca..0000000 --- "a/09 \346\233\271\346\255\243\346\263\242/20230922 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" +++ /dev/null @@ -1,163 +0,0 @@ -# 笔记 - -商品管理系统是电商系统中核心系统。商品管理又可以分为商品品类管理模块、SPU与SKU管理、商品资质管理、商品属性管理、商品价格管理、商品库存的管理等等。首先先区分一个商品的概念,spu和sku: - - SPU:标准化产品单元(Standard Product Unit),是商品信息聚合的最小单位,是一组可复用标准化信息的集合,主要也是为了在交易端对一组同类型商品做页面的聚合展示,解决的是一品多型号多规格等等多属性的问题; - -SKU:最小的库存单位(StockKeeping Unit),sku是库存存贮的最小单位,商品的进货、销售、售价、库存等最终都是打在sku身上的,最终的交易都决定在一个sku个体上; - -# 作业 - -```mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-22 08:44:25 */ -/*==============================================================*/ -create database marui charset utf8; -use marui; - -drop table if exists category; - -drop table if exists host; - -drop table if exists paramete; - -drop table if exists specify; - -drop table if exists together; - -/*==============================================================*/ -/* Table: category */ -/*==============================================================*/ -create table `host` # 主机 -( - host_id int not null auto_increment, #主机编号 - host_name varchar(10) not null, #主机名称 - host_indetail text not null, #主机详细 - primary key (host_id) -); -insert into `host` values -(1,'联想','联想,连想都不敢想'), -(2,'华硕','华硕品质,坚若磐石 感动世界的科技'), -(3,'华为','遥遥领先!遥遥领先!遥遥领先!'); -/*==============================================================*/ -/* Table: host */ -/*==============================================================*/ -create table specify #规格 -( - sp_id int not null auto_increment, #规格编号 - host_id int not null, #主机编号 - sp_title varchar(50) not null, #规格标题 - sp_price DOUBLE(9,2) not null, #规格价格 - sp_stock int not null, #规格库存 - primary key (sp_id) -); -insert into specify values -(1,1,'拯救者Y9000P i9-13900k 4090猛禽 宏碁16×2 雷神1200W',39823.00,1), -(2,1,'小新十四2023 R5-5500 5600xt 海力士8×2 长城65W',4999.00,5), -(3,2,'玩家国度 i9-13900H 4090猛禽 宏碁16×2 酷冷900W',24993.00,0), -(4,3,'MateBoos i7-1360P 核显 宏碁16×2 长城65W',9900.00,100); -/*==============================================================*/ -/* Table: paramete */ -/*==============================================================*/ -create table category #品类 -( - cat_id int not null auto_increment, - cat_name varchar(10) not null, - primary key (cat_id) -); -insert into category values -(1,'CPU'), -(2,'显卡'), -(3,'内存'), -(4,'电源'); -/*==============================================================*/ -/* Table: specify */ -/*==============================================================*/ -create table paramete #参数 -( - pa_id int not null auto_increment, #参数编号 - pa_name varchar(10) not null, #参数名称 - primary key (pa_id) -); -insert into paramete values -(1,'i9-13900k'), -(2,'R5-5500'), -(3,'i9-13900H'), -(4,'i7-1360P'), -(5,'4090猛禽'), -(6,'5600xt'), -(7,'核显'), -(8,'宏碁16×2'), -(9,'海力士8×2'), -(11,'雷神1200W'), -(12,'长城65W'), -(13,'酷冷900W'); -/*==============================================================*/ -/* Table: together */ -/*==============================================================*/ -create table together #关联 -( - to_id int not null auto_increment, #关联编号 - sp_id int not null, #规格编号 - cat_id int not null, #品类编号 - pa_id int not null, #参数编号 - primary key (to_id) -); -insert into together values -(1,1,1,1), -(2,1,2,5), -(3,1,3,8), -(4,1,4,11), -(5,2,1,2), -(6,2,2,6), -(7,2,3,9), -(8,2,4,12), -(9,3,1,3), -(10,3,2,5), -(11,3,3,8), -(12,3,4,13), -(13,4,1,4), -(14,4,2,7), -(15,4,3,8), -(16,4,4,12); - - - -alter table specify add constraint FK_Relationship_1 foreign key (host_id) - references host (host_id) on delete restrict on update restrict; - -alter table together add constraint FK_Relationship_2 foreign key (sp_id) - references specify (sp_id) on delete restrict on update restrict; - -alter table together add constraint FK_Relationship_3 foreign key (pa_id) - references paramete (pa_id) on delete restrict on update restrict; - -alter table together add constraint FK_Relationship_4 foreign key (cat_id) - references category (cat_id) on delete restrict on update restrict; - - -SELECT -DISTINCT h.host_name 品牌, - h.host_indetail 详细, - s.sp_title 电脑名, - s.sp_price 一般售价 -from - `host` h, - specify s, - together t, - paramete p, - category c -where - h.host_id=s.host_id and - s.sp_id=t.sp_id and - t.pa_id=p.pa_id and - t.cat_id=c.cat_id ; - - - - - - -``` - diff --git "a/09 \346\233\271\346\255\243\346\263\242/20230926 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" "b/09 \346\233\271\346\255\243\346\263\242/20230926 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" deleted file mode 100644 index 7d17c00..0000000 --- "a/09 \346\233\271\346\255\243\346\263\242/20230926 \346\225\260\346\215\256\345\272\223\351\253\230\347\272\247.md" +++ /dev/null @@ -1,119 +0,0 @@ -# 笔记 - -数据库视图是一种虚拟表,本身是不具备数据的。 关键字(view) - -格式:create view 视图名 as 查询语句 - -view 整合一张或多张表的数据 - - - -修改视图(更新) - -alter view 视图名 as select语句 - -create or replace view 视图名 as 语句 - -视图可看作为一张表 - -# 作业 - -```mysql - -#第14章_视图的课后练习 - -USE dbtest14; -use view_db; -#练习1: -#1. 使用表emps创建视图employee_vu, -#其中包括姓名(LAST_NAME),员工号(EMPLOYEE_ID),部门号(DEPARTMENT_ID) - -create view employee_vu(姓名,员工号,部门号) as -select LAST_NAME,EMPLOYEE_ID,DEPARTMENT_ID from employees; - -select * from employee_vu; -#2. 显示视图的结构 -desc employee_vu; - -#3. 查询视图中的全部内容 -select * from employee_vu; - -#4. 将视图中的数据限定在部门号是80的范围内 -CREATE - OR REPLACE VIEW employee_vu (姓名,员工号,部门号) AS SELECT - LAST_NAME, - EMPLOYEE_ID, - DEPARTMENT_ID -FROM - employees -WHERE - DEPARTMENT_ID BETWEEN 0 - AND 80; - -select * from employee_vu; - -#练习2: - - -#1. 创建视图emp_v1,要求查询电话号码以‘011’开头的员工姓名和工资、邮箱 - -CREATE - OR REPLACE VIEW emp_v1 (姓名,员工号,邮箱) AS SELECT - first_name, - EMPLOYEE_ID, - email -FROM - employees -WHERE - phone_number like '011%'; - -select * from employee_vu; - - - -#2. 要求将视图 emp_v1 修改为查询电话号码以‘011’开头的并且邮箱中包含 e 字符 -#的员工姓名和邮箱、电话号码,工资 -CREATE - OR REPLACE VIEW emp_v1 (姓名,邮箱,电话号码,工资) AS SELECT - first_name, - email, - phone_number, - salary -FROM - employees -WHERE - phone_number like '011%' and email like '%e%'; - -select * from emp_v1; - - - -#3. 向 emp_v1 插入一条记录,是否可以? - -# 不可以 - - - -#4. 修改emp_v1中员工的工资,每人涨薪1000 -update emp_v1 set 工资 =工资+1000; -select * from emp_v1; -#5. 删除emp_v1中姓名为Olsen的员工 -delete from emp_v1 where 姓名='Olsen'; -#6. 创建视图emp_v2,要求查询部门的最高工资高于 12000 的部门id和其最高工资 - -CREATE or replace view emp_v2 as -select max(max_salary) 最高工资,department_id 部门 from employees e,jobs j where e.job_id=j.job_id and max_salary>12000 GROUP BY department_id; - -select * from emp_v2; - - -#7. 向 emp_v2 中插入一条记录,是否可以? - -# 不可以 - - -#8. 删除刚才的emp_v2 和 emp_v1 -drop view emp_v2; -drop view emp_v1; -``` - diff --git "a/0906\346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\344\275\234\344\270\232.md" "b/0906\346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\344\275\234\344\270\232.md" deleted file mode 100644 index 7de2bdd..0000000 --- "a/0906\346\225\260\346\215\256\345\272\223\351\253\230\347\272\247\344\275\234\344\270\232.md" +++ /dev/null @@ -1,95 +0,0 @@ -create database school charset utf8; - -use school; - --- 院系 -create table department( - d_id int primary key, - d_name varchar(10), - d_address varchar(10) -); -insert into department values -(1,'软件工程学院','望云楼'); - --- 专业 -create table speciality( - s_id int primary key, - s_name varchar(10), - d_id int, - foreign key (d_id) references department(d_id) -); -insert into speciality values -(100,'软件技术',1); - --- 教室 -create table classroom( -r_id int PRIMARY KEY, -r_name varchar(10) -); -insert into classroom values -(1,'实训四'), -(2,'实训八'); - --- 班级 -create table class( - c_id int primary key, - c_name varchar(10), - s_id int, - foreign key (s_id) references speciality(s_id) -); -insert into class values -(1,'软件技术1班',100), -(2,'软件技术2班',100); - --- 课程 -CREATE TABLE course( - couseId int PRIMARY key, - courseName varchar(10), - c_id int, - r_id int, - foreign key (c_id) references class(c_id), - foreign key (r_id) references classroom(r_id) -); -insert into course VALUES -(1,'Java',1,1), -(2,'MySQL',2,2); - --- 教师 -create table teacher( - t_id int primary key, - t_name varchar(10), - couseId int, - foreign key (couseId) references course(couseId) -); -insert into teacher values -(1,'一一',1), -(2,'阿九',2); - --- 课程表 -create table `select` ( - selectId int primary key, - couseId int, - time varchar(20), - t_id int, - r_id int, - foreign key (couseId) references course(couseId), - foreign key (t_id) references teacher(t_id), - foreign key (r_id) references classroom(r_id) -); -insert into `select` values -(1,1,'周一8:00-11:40',2,1), -(2,2,'周一14:00-17:40',1,2); - --- 学生 -create table student ( - id int primary key, - name varchar(10), - c_id int, - selectId int, - foreign key (c_id) references class(c_id), - foreign key (selectId) references `select`(selectId) -); -insert into student values -(2201,'张三',1,1), -(2202,'李四',2,2), -(2203,'王五',1,1); \ No newline at end of file diff --git "a/10 \346\270\251\350\264\265\351\233\257/20230905 \347\254\254\344\270\200\350\257\276\347\254\224\350\256\260.md" "b/10 \346\270\251\350\264\265\351\233\257/20230905 \347\254\254\344\270\200\350\257\276\347\254\224\350\256\260.md" deleted file mode 100644 index 5dd6be4..0000000 --- "a/10 \346\270\251\350\264\265\351\233\257/20230905 \347\254\254\344\270\200\350\257\276\347\254\224\350\256\260.md" +++ /dev/null @@ -1,29 +0,0 @@ -# 大二学习路线 - -1. MySQL进阶(存储引擎、索引、SQL优化、存储过程、锁) - -2. JavaScript (Ajax) - -3. MVC框架(Maven,Spring,SpringMVC,MyBatis) - -4. Node.js - -5. Vue.js - -6. SpringBoot (Redis,WebAPI) - - # 实训 - - 1.Linux 服务器 - - #### 2.中间件(项目中可能实现的技术) - - 小程序 ,uniapp移动端开发 - - ### 技术栈: - - ​ 一个项目需要用什么技术实现,可以称为技术栈。** - - ### 技能数: - - ​ 个人具备的技能,称为技能树。 diff --git "a/10 \346\270\251\350\264\265\351\233\257/20230907\350\241\250\344\271\213\351\227\264\347\232\204\345\205\263\347\263\273.md" "b/10 \346\270\251\350\264\265\351\233\257/20230907\350\241\250\344\271\213\351\227\264\347\232\204\345\205\263\347\263\273.md" deleted file mode 100644 index 0ec6dd2..0000000 --- "a/10 \346\270\251\350\264\265\351\233\257/20230907\350\241\250\344\271\213\351\227\264\347\232\204\345\205\263\347\263\273.md" +++ /dev/null @@ -1,144 +0,0 @@ -# 数据库高级 - -## 表之间的关系: - -### 1.一对一的关系: - - 一个学生(学号,编号,身份证寒外键),只有一个身份证(身份证号)将其中任一表中的主键,放到另一个表当外健 - -### 2.一对多的关系(多对一的关系): - -一个班级 (班级编号),有多个学生(学生编号)班级编号将一所在的表的主键,放到多的表当外键 - -### 3.多对多的关系: - - 一个学生可以选修多门课程,一门课程可以被多个学生选修必须第三张表,将前面两个表的主键放进来当外健 - - - -## 作业 - -以我们学院的组织框架,及学习的课程来做系统,院系,专业,班级,学生,教师,课程,课程表,教室 - -```java - -create database student charset utf8; -use student; - -create table college( - co_id int primary key, - co_name varchar(50) not null -); -insert into college values -(1,"软件工程"), -(2,"医疗护理"), -(3,"信息工程"), -(4,"智能制造"); - -create table major( - m_id int primary key, - m_name varchar(20) not null, - co_id int, - foreign key(co_id) references college(co_id) -); - -insert into major values -(1,"前端",1), -(2,"后端",1), -(3,"财务管理",2), -(4,"大数据技术",3), -(5,"电气自动化技术",4); - - -create table class( - c_id int primary key, - c_name varchar(20) not null, - m_id int, - foreign key(m_id) references major(m_id) -); - -insert intoclass values -(1,"软件技术2班",2), -(2,"软件技术7班",1), -(3,"人力财务管理1班",3), -(4,"大数据技术4班",4), -(5,"电气自动化技术3班",5); - - -create table student( - s_id int primary key, - s_name varchar(10) not null, - sex varchar(2) not null, - c_id int, - foreign key(c_id) references class(c_id) -); - -insert into student values -(1,"张三","男",1), -(2,"李四","男",2), -(3,"王","女",3), -(4,"锅","男",4), -(5,"刘","女",5); - - -create table course_inf( - c_id int primary key, - c_name varchar(10) not null -); - -insert into course_inf values -(1,"MySQL"), -(2,"java"), -(3,"财务管理"), -(4,"大数据"), -(5,"电气自动化"); - - -create table classroom( - cr_id int primary key, - address varchar(20) not null -); -# 插入数据 -insert into classroom values -(1,"望云楼实训室8"), -(2,"望云楼阶"), -(3,"岩声楼"), -(4,"辛耕楼"), -(5,"辛耕楼二楼"); - - -create table teacher( - t_id int primary key, - t_name varchar(5) not null, - sex varchar(2) not null, - co_id int, - foreign key(co_id) references college(co_id) -); - -insert into teacher values -(001,"丘老师","男",1), -(002,"丘老师","男",1), -(003,"刘老师","女",2), -(004,"王老师","男",3), -(005,"李老师","女",4); - - -create table course( - c_id int, - cr_id int, - t_id int, - s_id int, - foreign key(c_id) references course_inf(c_id), - foreign key(cr_id) references classroom(cr_id), - foreign key(t_id) references teacher(t_id), - foreign key(s_id) references student(s_id) -); -insert into course values -(1,1,1,1), -(2,2,2,2), -(3,3,3,3), -(4,4,4,4), -(5,5,5,5); - - -``` diff --git "a/10 \346\270\251\350\264\265\351\233\257/20230908 \346\225\260\346\215\256\345\272\223\350\214\203\345\274\217.md" "b/10 \346\270\251\350\264\265\351\233\257/20230908 \346\225\260\346\215\256\345\272\223\350\214\203\345\274\217.md" deleted file mode 100644 index 9a257f0..0000000 --- "a/10 \346\270\251\350\264\265\351\233\257/20230908 \346\225\260\346\215\256\345\272\223\350\214\203\345\274\217.md" +++ /dev/null @@ -1,19 +0,0 @@ -# 数据库的范式 - -#### 1.第一范式: - -​ 要求字段的内容,不可再分割,为的是保证数据的原子性 - -​ 例:姓名,省份、城市、区具、地址址 - -#### 2.第二范式: - -​ 要求在满足第一范式的基础上,要求非主键字投要完全依赖主健(非主键雪完全依赖整个联合主键,而不只很赖部分) - -​ 例:小明的存在,必须要依靠父亲和母亲的存在 - -#### 3.第三范式: - -​ 满足第二范式的前提下,要求非主键属性要有接依赖于主键 - -​ 例:儿子依赖爸爸,爸爸依赖爷爷。其中儿子与爷爷属于间接依赖,则不属于第三范式,学生表中建议不要写专业,院级系,将他们分开写,否则将很难修改,还占内存 diff --git "a/10 \346\270\251\350\264\265\351\233\257/20230910 \345\233\276\344\271\246\351\246\206\351\207\214\347\263\273\347\273\237.md" "b/10 \346\270\251\350\264\265\351\233\257/20230910 \345\233\276\344\271\246\351\246\206\351\207\214\347\263\273\347\273\237.md" deleted file mode 100644 index a425012..0000000 --- "a/10 \346\270\251\350\264\265\351\233\257/20230910 \345\233\276\344\271\246\351\246\206\351\207\214\347\263\273\347\273\237.md" +++ /dev/null @@ -1,96 +0,0 @@ -# 笔记 - -## powerdesigner - -1:创建概念模型图(CDM)以用户角度 - -2:转换逻辑模型图(LDM)以计算机角度 - -3:转换物理模型图(PDM)以数据角度 - -4:生成DDL - -数据库范式在实际中不会完全按照范式,根据需求实际操作 - -## 作业:图书管理系统 - -```java -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/11 23:10:39 */ -/*==============================================================*/ - - -drop table if exists book_borrowing; - -drop table if exists book_retrieval; - -drop table if exists return_books; - -drop table if exists user; - -/*==============================================================*/ -/* Table: book_borrowing */ -/*==============================================================*/ -create table book_borrowing -( - bb_id int not null auto_increment, - b_id int not null, - borrow_date date not null, - expiry_date date not null, - primary key (bb_id) -); - -/*==============================================================*/ -/* Table: book_retrieval */ -/*==============================================================*/ -create table book_retrieval -( - b_id int not null auto_increment, - u_id int not null, - b_name char(20) not null, - author char(20) not null, - quantity int not null, - floor char(5) not null, - price numeric(110,2), - shelf_number int, - primary key (b_id) -); - -/*==============================================================*/ -/* Table: return_books */ -/*==============================================================*/ -create table return_books -( - rb_id int not null auto_increment, - u_id int not null, - b_id int not null, - return_book date, - primary key (rb_id) -); - -/*==============================================================*/ -/* Table: user */ -/*==============================================================*/ -create table user -( - u_id int not null auto_increment, - u_name char(10) not null, - u_password char(10) not null, - primary key (u_id) -); - -alter table book_borrowing add constraint FK_borrow foreign key (b_id) - references book_retrieval (b_id) on delete restrict on update restrict; - -alter table book_retrieval add constraint FK_check foreign key (u_id) - references user (u_id) on delete restrict on update restrict; - -alter table return_books add constraint FK_return foreign key (u_id) - references user (u_id) on delete restrict on update restrict; - -alter table return_books add constraint FK_return_books foreign key (b_id) - references book_retrieval (b_id) on delete restrict on update restrict; - - -``` diff --git "a/10 \346\270\251\350\264\265\351\233\257/20230912 \347\224\265\345\275\261\347\275\221\347\253\231\350\256\276\350\256\241.md" "b/10 \346\270\251\350\264\265\351\233\257/20230912 \347\224\265\345\275\261\347\275\221\347\253\231\350\256\276\350\256\241.md" deleted file mode 100644 index 747f199..0000000 --- "a/10 \346\270\251\350\264\265\351\233\257/20230912 \347\224\265\345\275\261\347\275\221\347\253\231\350\256\276\350\256\241.md" +++ /dev/null @@ -1,201 +0,0 @@ -# 作业 - -```java -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-12 11:33:30 */ -/*==============================================================*/ - - -drop table if exists actor; - -drop table if exists director; - -drop table if exists film; - -drop table if exists "film language"; - -drop table if exists "film review"; - -drop table if exists "film types"; - -drop table if exists film_region; - -drop table if exists language; - -drop table if exists protagonist; - -drop table if exists region; - -drop table if exists scriptwriter; - -drop table if exists type; - -/*==============================================================*/ -/* Table: actor */ -/*==============================================================*/ -create table actor -( - actor_id int not null auto_increment, - actor_name varchar(4) not null, - primary key (actor_id) -); - -/*==============================================================*/ -/* Table: director */ -/*==============================================================*/ -create table director -( - film_id int not null, - actor_id int not null, - primary key (film_id, actor_id) -); - -/*==============================================================*/ -/* Table: film */ -/*==============================================================*/ -create table film -( - film_id int not null auto_increment, - film_name varchar(10) not null, - film_date date not null, - film_time time not null, - primary key (film_id) -); - -/*==============================================================*/ -/* Table: "film language" */ -/*==============================================================*/ -create table "film language" -( - film_id int not null, - lgg_id char(10) not null, - primary key (film_id, lgg_id) -); - -/*==============================================================*/ -/* Table: "film review" */ -/*==============================================================*/ -create table "film review" -( - fr_id char(10) not null, - film_id int not null, - fr_grade char(1) not null, - fr_title varchar(10), - fr_text text, - primary key (fr_id) -); - -/*==============================================================*/ -/* Table: "film types" */ -/*==============================================================*/ -create table "film types" -( - film_id int not null, - type_id int not null, - primary key (film_id, type_id) -); - -/*==============================================================*/ -/* Table: film_region */ -/*==============================================================*/ -create table film_region -( - film_id int not null, - region_id int not null, - primary key (film_id, region_id) -); - -/*==============================================================*/ -/* Table: language */ -/*==============================================================*/ -create table language -( - lgg_id char(10) not null, - lgg_name varchar(10) not null, - primary key (lgg_id) -); - -/*==============================================================*/ -/* Table: protagonist */ -/*==============================================================*/ -create table protagonist -( - film_id int not null, - actor_id int not null, - primary key (film_id, actor_id) -); - -/*==============================================================*/ -/* Table: region */ -/*==============================================================*/ -create table region -( - region_id int not null auto_increment, - region_name varchar(10) not null, - primary key (region_id) -); - -/*==============================================================*/ -/* Table: scriptwriter */ -/*==============================================================*/ -create table scriptwriter -( - film_id int not null, - actor_id int not null, - primary key (film_id, actor_id) -); - -/*==============================================================*/ -/* Table: type */ -/*==============================================================*/ -create table type -( - type_id int not null auto_increment, - type_name varchar(2) not null, - primary key (type_id) -); - -alter table director add constraint FK_director foreign key (film_id) - references film (film_id) on delete restrict on update restrict; - -alter table director add constraint FK_director2 foreign key (actor_id) - references actor (actor_id) on delete restrict on update restrict; - -alter table "film language" add constraint "FK_film language" foreign key (film_id) - references film (film_id) on delete restrict on update restrict; - -alter table "film language" add constraint "FK_film language2" foreign key (lgg_id) - references language (lgg_id) on delete restrict on update restrict; - -alter table "film review" add constraint "FK_movie evaluation" foreign key (film_id) - references film (film_id) on delete restrict on update restrict; - -alter table "film types" add constraint "FK_film types" foreign key (film_id) - references film (film_id) on delete restrict on update restrict; - -alter table "film types" add constraint "FK_film types2" foreign key (type_id) - references type (type_id) on delete restrict on update restrict; - -alter table film_region add constraint FK_film_region foreign key (film_id) - references film (film_id) on delete restrict on update restrict; - -alter table film_region add constraint FK_film_region2 foreign key (region_id) - references region (region_id) on delete restrict on update restrict; - -alter table protagonist add constraint FK_protagonist foreign key (film_id) - references film (film_id) on delete restrict on update restrict; - -alter table protagonist add constraint FK_protagonist2 foreign key (actor_id) - references actor (actor_id) on delete restrict on update restrict; - -alter table scriptwriter add constraint FK_scriptwriter foreign key (film_id) - references film (film_id) on delete restrict on update restrict; - -alter table scriptwriter add constraint FK_scriptwriter2 foreign key (actor_id) - references actor (actor_id) on delete restrict on update restrict; - - -``` - -![微信图片_20230913121457](D:\develop\数据库高级\database-advanced\10%20温贵雯\图片\微信图片_20230913121457.png) diff --git "a/10 \346\270\251\350\264\265\351\233\257/20230913 \345\214\273\351\231\242\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" "b/10 \346\270\251\350\264\265\351\233\257/20230913 \345\214\273\351\231\242\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" deleted file mode 100644 index 363543d..0000000 --- "a/10 \346\270\251\350\264\265\351\233\257/20230913 \345\214\273\351\231\242\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.md" +++ /dev/null @@ -1,87 +0,0 @@ -```java -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/14 12:37:15 */ -/*==============================================================*/ - - -drop table if exists doctor; - -drop table if exists "get the medicine"; - -drop table if exists medicine; - -drop table if exists patient; - -drop table if exists registration; - -/*==============================================================*/ -/* Table: doctor */ -/*==============================================================*/ -create table doctor -( - doctor_id int not null auto_increment, - doctor_name varchar(10) not null, - doctor_age int not null, - doctor_gender char(1) not null, - primary key (doctor_id) -); - -/*==============================================================*/ -/* Table: "get the medicine" */ -/*==============================================================*/ -create table "get the medicine" -( - medicine_id int not null, - patient_id int not null, - primary key (medicine_id, patient_id) -); - -/*==============================================================*/ -/* Table: medicine */ -/*==============================================================*/ -create table medicine -( - medicine_id int not null auto_increment, - medicine_name varchar(20) not null, - primary key (medicine_id) -); - -/*==============================================================*/ -/* Table: patient */ -/*==============================================================*/ -create table patient -( - patient_id int not null auto_increment, - patient_name varchar(10) not null, - patient_gender char(1) not null, - patient_age int not null, - primary key (patient_id) -); - -/*==============================================================*/ -/* Table: registration */ -/*==============================================================*/ -create table registration -( - doctor_id int not null, - patient_id int not null, - primary key (doctor_id, patient_id) -); - -alter table "get the medicine" add constraint "FK_get the medicine" foreign key (medicine_id) - references medicine (medicine_id) on delete restrict on update restrict; - -alter table "get the medicine" add constraint "FK_get the medicine2" foreign key (patient_id) - references patient (patient_id) on delete restrict on update restrict; - -alter table registration add constraint FK_registration foreign key (doctor_id) - references doctor (doctor_id) on delete restrict on update restrict; - -alter table registration add constraint FK_registration2 foreign key (patient_id) - references patient (patient_id) on delete restrict on update restrict; - - -``` - -![32e38aa3f50dcd0bac0c70ecfeb41f5](D:\develop\数据库高级\database-advanced\10%20温贵雯\图片\32e38aa3f50dcd0bac0c70ecfeb41f5.png) diff --git "a/10 \346\270\251\350\264\265\351\233\257/20230915 \346\261\275\350\275\246\351\224\200\345\224\256\347\256\241\347\220\206.md" "b/10 \346\270\251\350\264\265\351\233\257/20230915 \346\261\275\350\275\246\351\224\200\345\224\256\347\256\241\347\220\206.md" deleted file mode 100644 index c79a2e9..0000000 --- "a/10 \346\270\251\350\264\265\351\233\257/20230915 \346\261\275\350\275\246\351\224\200\345\224\256\347\256\241\347\220\206.md" +++ /dev/null @@ -1,136 +0,0 @@ -```java -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/17 23:09:29 */ -/*==============================================================*/ - - -drop table if exists brand; - -drop table if exists customer; - -drop table if exists model_number; - -drop table if exists order_for_goods; - -drop table if exists sell; - -/*==============================================================*/ -/* Table: brand */ -/*==============================================================*/ -create table brand -( - brand_id int not null auto_increment, - brand_name varchar(20) not null, - primary key (brand_id) -); -insert into brand values - (1,"法拉利"), - (2,"宾利"), - (3,"保时捷"), - (4,"兰博基尼"), - (5,"五菱宏光"); -/*==============================================================*/ -/* Table: customer */ -/*==============================================================*/ -/*==============================================================*/ -/* Table: model_number */ -/*==============================================================*/ -create table model_number -( - model_id int not null auto_increment, - brand_id int not null, - model_name varchar(20) not null, - model_color varchar(5) not null, - primary key (model_id) -); -insert into model_number values - (1,1,"SF90","黑色"), - (2,1,"488pista","黄色"), - (3,2,"欧陆GT","白色"), - (4,2,"添越","蓝色"), - (5,3,"911卡雷拉s","黑色"), - (6,3,"帕拉梅拉","白色"), - (7,3,"帕拉梅拉","黑色"), - (8,4,"Aventador SVJ","绿色"), - (9,4,"urus","黄色"), - (10,5,"Mini ev","粉色"), - (11,5,"六座面包","原色"); -create table customer -( - customer_id int not null auto_increment, - customer_name varchar(20) not null, - customer_age int not null, - customer_gender char(1) not null, - primary key (customer_id) -); -insert into customer values - (1,"涛",20,"男"), - (2,"黄",50,"女"), - (3,"温",18,"男"), - (4,"石",25,"男"), - (5,"朱",30,"女"); - -/*==============================================================*/ -/* Table: sell */ -/*==============================================================*/ -create table sell -( - sell_id int not null auto_increment, - sell_name varchar(20) not null, - sell_age int not null, - sell_gender char(1) not null, - primary key (sell_id) -); -insert into sell values - (1,"小刘",28,"女"), - (1,"小陈",19,"女"), - (1,"小石",45,"男"), - (1,"小郭",22,"男"); -/*==============================================================*/ -/* Table: order_for_goods */ -/*==============================================================*/ -create table order_for_goods -( - sell_id int not null, - model_id int not null, - customer_id int not null, - odg_id int not null auto_increment, - odg_money int not null, - primary key (sell_id, model_id, customer_id, odg_id) -); -insert into order_for_goods values - (2,1,2,1,9000000), - (1,2,2,2,4500000), - (1,6,1,3,1200000), - (1,4,1,4,3500000), - (1,10,1,5,55000), - (1,7,1,6,1200000), - (1,5,1,7,3800000), - (1,9,1,8,6000000), - (1,8,1,9,8000000), - (1,11,1,10,12000), - (1,3,1,11,4000000); -alter table model_number add constraint FK_screening foreign key (brand_id) - references brand (brand_id) on delete restrict on update restrict; - -alter table order_for_goods add constraint FK_buy_car foreign key (customer_id) - references customer (customer_id) on delete restrict on update restrict; - -alter table order_for_goods add constraint FK_order_for_goods foreign key (sell_id) - references sell (sell_id) on delete restrict on update restrict; - -alter table order_for_goods add constraint FK_order_for_goods2 foreign key (model_id) - references model_number (model_id) on delete restrict on update restrict; - - delete restrict on update restrict; - -id) - references model_number (model_id) on delete restrict on update restrict; - - -``` - -```java - -``` diff --git "a/10 \346\270\251\350\264\265\351\233\257/20230919 \346\237\245\350\257\242\345\244\215\344\271\240\347\273\203\344\271\240.md" "b/10 \346\270\251\350\264\265\351\233\257/20230919 \346\237\245\350\257\242\345\244\215\344\271\240\347\273\203\344\271\240.md" deleted file mode 100644 index d92084d..0000000 --- "a/10 \346\270\251\350\264\265\351\233\257/20230919 \346\237\245\350\257\242\345\244\215\344\271\240\347\273\203\344\271\240.md" +++ /dev/null @@ -1,579 +0,0 @@ -```mysql -#第03章_基本的select语句的课后练习 -# 1.查询所有员工12个月的工资总和,并起别名为工资总和 -#理解1:计算12月的基本工资 -select - sum( salary * 12 ) 工资总和 -from - employees;#select sum(salary*12) as 工资总和 from employees; -#理解2:计算12月的基本工资和奖金 -# ifnull(原值,新值) 判断一个原值是否为null,如果原值是null,就用一个新值代替 -select - ifnull( commission_pct, 0 )* salary * 12 奖金, - salary * 12 基本工资 -from - employees;# 2.查询employees表中去除重复的job_id以后的数据 -#去除重复 distinct -select distinct - job_id -from - employees;# 3.查询工资大于12000的员工姓名和工资 -select - last_name 姓名, - salary 工资 -from - employees -where - salary > 12000;# 4.查询员工号为176的员工的姓名和部门号 -select - first_name 姓名, - department_id 部门号 -from - employees -where - employee_id = 176;#; -# 5.显示表 departments 的结构,并查询其中的全部数据 -desc departments; -select - * -from - departments;# 第04章_运算符课后练习 -# 1.选择工资不在5000到12000的员工的姓名和工资 -select - last_name 姓名, - salary 工资 -from - employees -where - salary < 5000 or salary > 12000;# 2.选择在20或50号部门工作的员工姓名和部门号 -select - last_name, - department_id -from - employees -where - department_id in ( 20, 50 ); -select - last_name, - department_id -from - employees -where - department_id = 20 - or department_id = 50;# 3.选择公司中没有管理者的员工姓名及job_id -select - last_name, - job_id -from - employees -where - manager_id is null;# 4.选择公司中有奖金的员工姓名,工资和奖金级别 -select - * -from - job_grades; -select - first_name, - salary -from - employees -where - commission_pct is not null;# 5.选择员工姓名的第三个字是 尔 的员工姓名 -select - last_name -from - employees -where - last_name like '__尔%';# 6.选择姓名中有 特 字和 尔 字的员工姓名 -select - * -from - employees -where - last_name like '%特%' - or last_name like '%尔%';# 7.显示出表 employees 表中 first_name 以 '尔'结尾的员工信息 -select - * -from - employees -where - first_name like '%尔';# 8.显示出表 employees 部门编号在 80-100 之间的姓名、工种 -select - first_name, - job_id -from - employees -where - department_id between 80 - and 100;# 9.显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、工资、管理者id -select - last_name, - salary, - manager_id -from - employees -where - manager_id in ( 100, 101, 110 );#第05章_排序与分页的课后练习 -#1. 查询员工的姓名和部门号和年薪,按年薪降序显示 --- order by 年薪 asc/desc -select - first_name, - department_id, - salary * 12 nianxin -from - employees -order by - nianxin desc;# -#2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据 -select - first_name, - salary -from - employees -where - salary < 8000 or salary > 17000 -order by - salary desc - limit 20, - 20;#3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序 -select - * -from - employees -where - email like '%e%' -order by - length( email ) desc, - department_id asc;# 第06章_多表查询的课后练习 -# 1.显示所有员工的姓名,部门号和部门名称。 -select - last_name, - e.department_id, - d.department_name -from - employees e - left join departments d on e.department_id = d.department_id;# 2.查询90号部门员工的job_id和90号部门的location_id -select - * -from - locations; -select - * -from - employees; -select - * -from - departments; -select - job_id, - location_id -from - employees e - join locations l on e.department_id = department_id -where - department_id = 90;# 3.选择所有 有奖金的员工 的 last_name , department_name , location_id , city -select - last_name, - department_name, - d.location_id, - city -from - employees e, - departments d, - locations l -where - e.department_id = d.department_id - and d.location_id = l.location_id - and commission_pct is not null; -select - last_name, - d.department_name, - l.location_id, - city -from - employees e - left join departments d on e.department_id = d.department_id - left join locations l on d.location_id = l.location_id -where - commission_pct is not null;# 4.选择city在 多伦多 工作的员工的 last_name , job_id , department_id , department_name -select - last_name, - job_id, - e.department_id, - city -from - employees e, - departments d, - locations l -where - e.department_id = d.department_id - and city = '多伦多';#sql92语法(自然连接): -# 5.查询行政部门员工的部门名称、部门地址、姓名、工作、工资 -select - department_name, - street_address, - last_name, - salary -from - employees e, - departments d, - locations l -where - e.department_id = d.department_id - and d.location_id = l.location_id;# 6.显示所有员工的姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式 --- 员工姓名 员工编号 上级姓名 上级的员工编号 --- 德哈恩 102 金 100 -select - e.first_name, - e.department_id, - e.last_name, - e.employee_id -from - employees e - inner join employees s on e.employee_id = s.employee_id;# 7.查询哪些部门没有员工 -select - department_name -from - departments d - left join employees e on e.department_id = e.department_id -where - d.manager_id is null;# 8. 查询哪个城市没有部门 -select - city -from - locations l - left join departments d on l.location_id = d.location_id -where - d.location_id is null;# 9. 查询部门名为 销售部 或 信息技术部 的员工信息 -select - * -from - employees e - left join departments d on e.department_id = d.department_id -where - d.department_name = '销售部' - or d.department_name = '信息技术部';# 第08章_聚合函数的课后练习 -#2.查询公司员工工资的最大值,最小值,平均值,总和 -select - max( salary ), - min( salary ), - avg( salary ), - sum( salary ) -from - employees;#3.查询各job_id的员工工资的最大值,最小值,平均值,总和 -select - job_id, - max( salary ), - min( salary ), - avg( salary ), - sum( salary ) -from - employees -group by - job_id;#4.选择各个job_id的员工人数 -select - job_id, - count(*) -from - employees -group by - job_id;# 5.查询员工最高工资和最低工资的差距 -select - ( - max( salary )- min( salary )) 最高工资和最低工资的差距 -from - employees;# 6.查询各个管理者 手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内 -select - min( salary ) -from - employees -group by - manager_id -having - min( salary ) > 6000 - and manager_id is not null; -select - manager_id, - min( salary ) -from - employees -where - manager_id is not null -group by - manager_id -having - min( salary ) > 6000;# 7.查询所有部门的名字,location_id,员工数量和平均工资,并按平均工资降序 -select - department_name, - location_id, - count( employee_id ), - avg( salary ) -from - employees e - right join departments d on e.department_id = d.department_id -group by - department_name, - location_id -order by - avg( salary ) desc;# 8.查询每个工种、每个部门的部门名、工种名和最低工资 -# 第09章_子查询的课后练习 -#1.查询和 兹洛特基 相同部门的员工姓名和工资 -select - last_name, - salary -from - employees -where - department_id = ( select department_id from employees where last_name = '兹洛特基' ) #2.查询工资比公司平均工资高的员工的员工号,姓名和工资。 -select - employee_id, - last_name, - salary -from - employees -where - salary > ( select avg( salary ) from employees ) #3.选择工资大于所有job_id = 'sa_man'的员工的工资的员工的last_name, job_id, salary -select - last_name, - salary -from - employees -where - salary > ( select max( salary ) from employees where job_id = 'sa_man' ) #4.查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名 -select - employee_id, - last_name -from - employees -where - department_id = any ( select distinct department_id from employees where last_name like '%u%' ) #5.查询部门的location_id为1700的部门的工作的员工的员工号 -select - employee_id -from - employees -where - department_id in ( select department_id from departments where location_id = 1700 ) #6.查询管理者是 金 的员工姓名和工资 -select - last_name, - salary -from - employees -where - manager_id in ( select employee_id from employees where last_name = '金' ) #7.查询工资最低的员工信息: last_name, salary -select - last_name, - salary -from - employees -where - salary = ( select min( salary ) from employees );#8.查询平均工资最低的部门信息 -#方式1: -# 部门最低工资=全司最低 -select - * -from - departments -where - department_id = ( - select - department_id - from - employees - group by - department_id - having - avg( salary ) = ( select min( dept_avgsal ) from ( select avg( salary ) dept_avgsal from employees group by department_id ) avg_sal ) - );#方式2: -# 部门平均<= 公司所有平均 -select - d.*,( - select - avg( salary ) - from - employees - where - department_id = d.department_id - ) -from - departments d -where - department_id = ( - select - department_id - from - employees - group by - department_id - having - avg( salary ) = ( select min( dept_avgsal ) from ( select avg( salary ) dept_avgsal from employees group by department_id ) avg_sal ) - );#9.查询平均工资最低的部门信息和该部门的平均工资(相关子查询) -#方式:先查最低平均工资的部门,再根据其id去select中再子查询 -select - d.*,( - select - avg( salary ) - from - employees - where - department_id = d.department_id - ) -from - departments d -where - department_id = ( - select - department_id - from - employees - group by - department_id - having - avg( salary ) = ( select min( dept_avgsal ) from ( select avg( salary ) dept_avgsal from employees group by department_id ) avg_sal ) - );#10.查询平均工资最高的 job 信息 -#方式1:平均工资=最大 -#方式2:平均工资>=所有平均工资 -select - * -from - jobs -where - job_id = ( - select - job_id - from - employees - group by - job_id - having - avg( salary ) = ( select max( avg_sal ) from ( select avg( salary ) avg_sal from employees group by job_id ) job_avgsal ) - );#11.查询平均工资高于公司平均工资的部门有哪些? -select - department_id -from - employees -where - department_id is not null -group by - department_id -having - avg( salary ) > ( select avg( salary ) from employees );#12.查询出公司中所有 manager 的详细信息 -#方式1:自连接 自己连自己 -#方式2:子查询 -#员工编号=(管理员编号有哪些) -select - employee_id, - last_name, - salary -from - employees -where - employee_id in ( select distinct manager_id from employees );#13.各个部门中 最高工资中 最低的那个部门的 最低工资是多少? -#方式: -select - min( salary ) -from - employees -where - department_id = ( - select - department_id - from - employees - group by - department_id - having - max( salary ) = ( select min( dept_maxsal ) from ( select max( salary ) dept_maxsal from employees group by department_id ) max_sal ) - );#14.查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary -#方式1: -select - employee_id, - last_name, - department_id, - email, - salary -from - employees -where - employee_id in ( - select distinct - manager_id - from - employees - where - department_id = ( - select - department_id - from - employees - group by - department_id - having - avg( salary ) = ( select max( avg_sal ) from ( select avg( salary ) avg_sal from employees group by department_id ) dept_sal ) - ) - );#方式二 -select - employee_id, - last_name, - department_id, - email, - salary -from - employees -where - employee_id in ( - select distinct - manager_id - from - employees - where - department_id = ( select department_id from employees e group by department_id having avg( salary )>= all ( select avg( salary ) from employees group by department_id ) ) - );#15. 查询部门的部门号,其中不包括job_id是"st_clerk"的部门号 -#方式1: -#16. 选择所有没有管理者的员工的last_name -#17.查询员工号、姓名、雇用时间、工资,其中员工的管理者为 'de haan' -#方式1: -#方式2: -#18.查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资(相关子查询) -#方式1:使用相关子查询 -#方式2:在from中声明子查询 -#19.查询每个部门下的部门人数大于 5 的部门名称(相关子查询) -select - department_name -from - employees e, - departments d -where - d.department_id = e.department_id -group by - department_name -having - count( 1 )> 5;#20.查询每个国家下的部门个数大于 2 的国家编号(相关子查询) -select - country_id, - count( 1 ) -from - ( - select distinct - country_id, - d.department_id - from - departments d, - employees e, - locations l - where - d.manager_id = e.manager_id - and l.location_id = d.location_id - ) a -group by - country_id; -/* -子查询的编写技巧(或步骤):① 从里往外写 ② 从外往里写 - -如何选择? -① 如果子查询相对较简单,建议从外往里写。一旦子查询结构较复杂,则建议从里往外写 -② 如果是相关子查询的话,通常都是从外往里写。 - -*/ -``` - diff --git "a/10 \346\270\251\350\264\265\351\233\257/20230920 RBAC\347\254\224\350\256\260.md" "b/10 \346\270\251\350\264\265\351\233\257/20230920 RBAC\347\254\224\350\256\260.md" deleted file mode 100644 index 6de50df..0000000 --- "a/10 \346\270\251\350\264\265\351\233\257/20230920 RBAC\347\254\224\350\256\260.md" +++ /dev/null @@ -1,18 +0,0 @@ -# RABC(Role-Based Access control) - -### 基于角色的权限访问控制(目前权限控制的主流方案) - -### 数据库能存: - -1.业务数据表 2.功能资源表 - -### 权限使用场景: - -1.菜单权限:不同的用户登录系统后,展现的菜单不一样 - -2.按钮权限:查看同一个对象时展现的按钮不一样(不同用户) - -3.数据权限:查看同一个对象时可见的数据不一样(不同用户) - -4.操作权限:能看到但操作不了 - diff --git "a/10 \346\270\251\350\264\265\351\233\257/20230921 sku.md" "b/10 \346\270\251\350\264\265\351\233\257/20230921 sku.md" deleted file mode 100644 index 6185d5b..0000000 --- "a/10 \346\270\251\350\264\265\351\233\257/20230921 sku.md" +++ /dev/null @@ -1,105 +0,0 @@ -建表 - -```mysql -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-21 16:41:07 */ -/*==============================================================*/ -create database zy charset utf8; -use zy; - -drop table if exists attributes; - -drop table if exists attributes_value; - -drop table if exists relation; - -drop table if exists sku; - -drop table if exists spu; - -/*==============================================================*/ -/* Table: attributes */ -/*==============================================================*/ -create table attributes -( - attributes_id int not null auto_increment, - attributes_name varchar(50) not null, - primary key (attributes_id) -); - -/*==============================================================*/ -/* Table: attributes_value */ -/*==============================================================*/ -create table attributes_value -( - value_id int not null auto_increment, - value_content varchar(50) not null, - primary key (value_id) -); - -/*==============================================================*/ -/* Table: relation */ -/*==============================================================*/ -create table relation -( - relation_id int not null auto_increment, - sku_id int, - attributes_id int, - value_id int, - primary key (relation_id) -); - -/*==============================================================*/ -/* Table: sku */ -/*==============================================================*/ -create table sku -( - sku_id int not null auto_increment, - spu_id int, - sku_name varchar(50) not null, - sku_price decimal(9,2) not null, - sku_kc int not null, - primary key (sku_id) -); - -/*==============================================================*/ -/* Table: spu */ -/*==============================================================*/ -create table spu -( - spu_id int not null auto_increment, - spu_name varchar(50) not null, - spu_content varchar(50) not null, - primary key (spu_id) -); - -alter table relation add constraint FK_Relationship_2 foreign key (sku_id) - references sku (sku_id) on delete restrict on update restrict; - -alter table relation add constraint FK_Relationship_3 foreign key (attributes_id) - references attributes (attributes_id) on delete restrict on update restrict; - -alter table relation add constraint FK_Relationship_4 foreign key (value_id) - references attributes_value (value_id) on delete restrict on update restrict; - -alter table sku add constraint FK_Relationship_1 foreign key (spu_id) - references spu (spu_id) on delete restrict on update restrict; - - -``` - - - -查询 - -```mysql -select * from spu,sku,relation re,attributes_value av,attributes ab where spu.spu_id=sku.spu_id and sku.sku_id=re.sku_id and re.value_id=av.value_id and re.attributes_id=ab.attributes_id; - - -select a.sku_id,a.sku_name,a.sku_price,a.value_content,b.value_content from -(select sku.sku_id,sku_name,sku_price,value_content from spu,sku,relation re,attributes_value av,attributes ab where spu.spu_id=sku.spu_id and sku.sku_id=re.sku_id and re.value_id=av.value_id and re.attributes_id=ab.attributes_id and value_content='白色') as a, - -(select sku.sku_id,sku_name,sku_price,value_content from spu,sku,relation re,attributes_value av,attributes ab where spu.spu_id=sku.spu_id and sku.sku_id=re.sku_id and re.value_id=av.value_id and re.attributes_id=ab.attributes_id and value_content='512g') as b where a.sku_id=b.sku_id; -``` - diff --git "a/10 \346\270\251\350\264\265\351\233\257/20230921 \347\254\224\350\256\260.md" "b/10 \346\270\251\350\264\265\351\233\257/20230921 \347\254\224\350\256\260.md" deleted file mode 100644 index e61c154..0000000 --- "a/10 \346\270\251\350\264\265\351\233\257/20230921 \347\254\224\350\256\260.md" +++ /dev/null @@ -1,201 +0,0 @@ -## RBAC(基于角色的权限访问控制)——主流设计模型(套路) - - - -#### 用于权限之间产生角色 - -1.数据库能存什么? - -业务数据表:用户商品 - -功能资源表:菜单信息表,页面代码表 - -2.权限的使用情景 - -网页不一样: - -1.菜单权限 - -2.按钮权限 - -3.数据权限 - -4.操作权限 - -RBAC角色是核心,设计权限表 - -sku预习 - -sku(属性) 可由多个属性组成 - -spu 一组属性的组合 - -```mysql -/* - Navicat Premium Data Transfer - - Source Server : 1 - Source Server Type : MySQL - Source Server Version : 80034 - Source Host : localhost:3306 - Source Schema : zy - - Target Server Type : MySQL - Target Server Version : 80034 - File Encoding : 65001 - - Date: 20/09/2023 17:41:43 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for power --- ---------------------------- -DROP TABLE IF EXISTS `power`; -CREATE TABLE `power` ( - `power_id` int NOT NULL AUTO_INCREMENT, - `power_name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - PRIMARY KEY (`power_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of power --- ---------------------------- -INSERT INTO `power` VALUES (1, '医生信息'); -INSERT INTO `power` VALUES (2, '护士信息'); -INSERT INTO `power` VALUES (3, '病人信息'); -INSERT INTO `power` VALUES (4, '新增病人'); -INSERT INTO `power` VALUES (5, '保洁信息'); -INSERT INTO `power` VALUES (6, '新增医生'); -INSERT INTO `power` VALUES (7, '新增护士'); -INSERT INTO `power` VALUES (8, '新增保洁'); -INSERT INTO `power` VALUES (9, '医生工资'); -INSERT INTO `power` VALUES (10, '护士工资'); -INSERT INTO `power` VALUES (11, '保洁工资'); - --- ---------------------------- --- Table structure for role --- ---------------------------- -DROP TABLE IF EXISTS `role`; -CREATE TABLE `role` ( - `role_id` int NOT NULL AUTO_INCREMENT, - `role_name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - PRIMARY KEY (`role_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of role --- ---------------------------- -INSERT INTO `role` VALUES (1, '院长'); -INSERT INTO `role` VALUES (2, '医生'); -INSERT INTO `role` VALUES (3, '护士'); -INSERT INTO `role` VALUES (4, '病人'); -INSERT INTO `role` VALUES (5, '保洁'); - --- ---------------------------- --- Table structure for role_power --- ---------------------------- -DROP TABLE IF EXISTS `role_power`; -CREATE TABLE `role_power` ( - `power_id` int NOT NULL, - `role_id` int NOT NULL, - PRIMARY KEY (`power_id`, `role_id`) USING BTREE, - INDEX `FK_role_power2`(`role_id` ASC) USING BTREE, - CONSTRAINT `FK_role_power` FOREIGN KEY (`power_id`) REFERENCES `power` (`power_id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `FK_role_power2` FOREIGN KEY (`role_id`) REFERENCES `role` (`role_id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of role_power --- ---------------------------- -INSERT INTO `role_power` VALUES (1, 1); -INSERT INTO `role_power` VALUES (2, 1); -INSERT INTO `role_power` VALUES (3, 1); -INSERT INTO `role_power` VALUES (4, 1); -INSERT INTO `role_power` VALUES (5, 1); -INSERT INTO `role_power` VALUES (6, 1); -INSERT INTO `role_power` VALUES (7, 1); -INSERT INTO `role_power` VALUES (8, 1); -INSERT INTO `role_power` VALUES (9, 1); -INSERT INTO `role_power` VALUES (10, 1); -INSERT INTO `role_power` VALUES (11, 1); -INSERT INTO `role_power` VALUES (1, 2); -INSERT INTO `role_power` VALUES (2, 2); -INSERT INTO `role_power` VALUES (3, 2); -INSERT INTO `role_power` VALUES (4, 2); -INSERT INTO `role_power` VALUES (2, 3); -INSERT INTO `role_power` VALUES (3, 3); -INSERT INTO `role_power` VALUES (3, 4); -INSERT INTO `role_power` VALUES (5, 5); - --- ---------------------------- --- Table structure for user --- ---------------------------- -DROP TABLE IF EXISTS `user`; -CREATE TABLE `user` ( - `user_id` int NOT NULL AUTO_INCREMENT, - `user_name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - `user_pwd` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, - PRIMARY KEY (`user_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of user --- ---------------------------- -INSERT INTO `user` VALUES (1, '张三', '123456'); -INSERT INTO `user` VALUES (2, '李四', '666666'); -INSERT INTO `user` VALUES (3, '王五', '888888'); -INSERT INTO `user` VALUES (4, '樊小郭', '147258'); -INSERT INTO `user` VALUES (5, '郭悦迎', '333333'); -INSERT INTO `user` VALUES (6, '陈梦梦', '111111'); -INSERT INTO `user` VALUES (7, '画大饼', '777777'); - --- ---------------------------- --- Table structure for user_role --- ---------------------------- -DROP TABLE IF EXISTS `user_role`; -CREATE TABLE `user_role` ( - `role_id` int NOT NULL, - `user_id` int NOT NULL, - PRIMARY KEY (`role_id`, `user_id`) USING BTREE, - INDEX `FK_user_role2`(`user_id` ASC) USING BTREE, - CONSTRAINT `FK_user_role` FOREIGN KEY (`role_id`) REFERENCES `role` (`role_id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `FK_user_role2` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of user_role --- ---------------------------- -INSERT INTO `user_role` VALUES (4, 1); -INSERT INTO `user_role` VALUES (4, 2); -INSERT INTO `user_role` VALUES (4, 3); -INSERT INTO `user_role` VALUES (2, 4); -INSERT INTO `user_role` VALUES (2, 5); -INSERT INTO `user_role` VALUES (1, 6); -INSERT INTO `user_role` VALUES (5, 7); - -SET FOREIGN_KEY_CHECKS = 1; - -``` - -```mysql -select -user_name,role_name,power_name -from - `user` u, - user_role ur, - role r, - role_power rp, - power p - where - u.user_id=ur.user_id - and - ur.role_id=r.role_id - and - r.role_id=rp.role_id - and - rp.power_id=p.power_id; -``` - diff --git "a/10 \346\270\251\350\264\265\351\233\257/20230924 \347\254\224\350\256\260.md" "b/10 \346\270\251\350\264\265\351\233\257/20230924 \347\254\224\350\256\260.md" deleted file mode 100644 index 474021e..0000000 --- "a/10 \346\270\251\350\264\265\351\233\257/20230924 \347\254\224\350\256\260.md" +++ /dev/null @@ -1,256 +0,0 @@ -## 数据库高级部分预习 - -## 一、函数 - -### 1.创建自定义函数 - - (1)DELIMITER $$ 定义结束符。MySQL默认的结束符是分号,但是函数体中可能用到分号。为了避免冲突,需要另外定义结束符。 - - (2)DROP FUNCTION IF EXISTS genPerson$$ 如果函数genPerson已经存在了,就删除掉。 - - (3)CREATE FUNCTION 创建函数genPerson,函数的参数是name,返回值是varchar(50)。 - - (4)函数体放在BEGIN 与 END之间。 - - (5)DECLARE 声明变量,str类型是varchar(50),默认值是空。 - - (6)CONCAT连接多个字符串。 - - (7)RETURN 返回拼接后的字符串str。 - - - - -### 2.执行 - -select 函数名('字段名') - - - -## 二、视图 - -## 视图是虚拟表,本身不存储数据,而是按照指定的方式进行查询 - -创建视图 - -```mysql -CREATE VIEW 视图名(列1,列2...) AS SELECT (列1,列2...) FROM ...; -``` - -使用视图 - -```mysql -当成表使用就好 -``` - - - -修改视图 - -```mysql -CREATE OR REPLACE VIEW 视图名 AS SELECT [...] FROM [...]; -``` - - - -查看数据库已有视图 - -```mysql ->SHOW TABLES [like...];(可以使用模糊查找) -``` - - - -查看视图详情 - -```mysql -DESC 视图名或者SHOW FIELDS FROM 视图名 -``` - - - -视图条件限制 - -```mysql -[WITH CHECK OPTION] -``` - -#### 插入数据 -1. 视图不是表,不直接存储数据,是一张虚拟的表; -2. 一般情况下,在创建有条件限制的视图时,加上“WITH CHECK OPTION”命令*) - -1.通过视图插入数据 - -```mysql ->INSERT INTO v_order(pid,pname,price) VALUES('p010','柴油','34'); -``` - -2.不可以跨表插入数据 - -```mysql -可以通过视图插入数据,但是只能基于一个基础表进行插入,不能跨表更新数据。 -``` - -3.WITH CHECK OPTION -如果在创建视图的时候制定了“WITH CHECK OPTION”,那么更新数据时不能插入或更新不符合视图限制条件的记录。 - -通过视图修改,可能导致数据无故消失,因此: - -> 没有特殊的理由,建议加上“WITH CHECK OPTION”命令。 - -# 百度标准理解 - -#### 1.事务 - -- 原子性:事务包含的这一系列操作,要么全部成功,要么全部失败。(由DBMS的事务管理子系统来实现); -- 一致性:事务完成之后,不会将非法的数据写入数据库。(由DBMS的完整性子系统执行测试任务); -- 隔离性:多个事务可以在一定程度上并发执行。(由DBMS的[并发](https://so.csdn.net/so/search?q=并发&spm=1001.2101.3001.7020)控制子系统实现); - -隔离级别 - -读未提交:一个事务可以读取到另外一个事务尚未提交的数据。该隔离级别可能会产生“脏读”、“不可重复读取”和“幻影读取”问题。 - -读已提交:一个事务只能读取到另外一个事务已经提交的数据。该隔离级别解决了“脏读”问题,但是仍然可能会发生“不可重复读取”和“幻影读取”问题。 - - -可重复读取:在同一个事务当中,多次读取同一份数据,结果一样。该隔离级别解决了“脏读”和“不可重复读取”问题,但是仍然有可能会产生“幻影读取问题”(虚读)。 - -序列化:多个同务只能排队执行,即只有一个事务结束之后,另外一个事务才能开始执行。该隔离级别解决了“脏读”,“不可重复读取”和“幻影读取”问题,但是程序性能会下降。所以只有必要的时候(比如在银行系统里面)才会使用。 - -总结: - - 隔离级别从低到高依次是"读未提交"、“读已提交”、“可重复读取”和“序列化”,隔离级别越高,性能越低。mysql数据库默认隔离级别是“可重复读取”,oracle是“读已提交”。数据库底层使用的“加锁”的机制来实现不同的隔离级别,包括对整个表加锁,对表中的行加锁。 - - mysql数据库开始事务、提交事务、回滚事务 - -```MYSQL -begin; -commit; -rollback; -``` - - mysql数据库必须将数据库引擎设置为"innodb"才能支持事务。 - - - -- 持久性:事务完成之后,数据要永久保存(一般会保存在硬盘上)(由DBMS的恢复管理子系统实现的); - - - -#### 2.视图 - -创建视图 - - create view 视图名 as select(注:可以对单表或者多表进行查询,数据库会将视图的定义保存下来。) - -删除视图 - - drop view 视图名 - -例子 - -```mysql -create table t_emp( - id int primary key auto_increment, - name varchar(50), - salary int, - age int -); - -create view v_emp as select * from t_emp; -create view v_emp2(name,salary) as select name,salary from t_emp; - -insert into v_emp2 values('Jhon',3000); - -create table t_dept( - id int primary key, - name varchar(50), - addr varchar(100) -); -insert into t_dept values(100,'财务部','北京'); -insert into t_dept values(200,'开发部','上海'); - -create table t_staff( - id int primary key auto_increment, - name varchar(30), - age int, - dept_id int -); -insert into t_staff values(null,'张三',33,100); -insert into t_staff values(null,'李四',23,100); -insert into t_staff values(null,'王五',43,200); - -create view v_staff_dept(sname,dname,addr) -as -select s.name sname,d.name dname,d.addr from t_staff s -join t_dept d on s.dept_id = d.id; - -drop view v_emp; - - -``` - -#### 3.索引 - -创建索引 - - create index 索引名 on 表名(字段列表) - -—— 为了提高查询的速度而在数据库端创建的一种排序的数据结构。 - - 注:索引类似于一本书的目录 - -应该将经常作为查询条件的字段加索引,除此以外,还要在分组、过滤、排序及联合查询的字段上加索引 - -删除索引 - - drop index 索引名 on 表名 - -联合索引 - - 所谓联合索引(复合索引),指的是索引字段是多个 - -#### 4.存储过程 - - 存储在数据库端的一组为了完成特定功能的sql语句 - - create procedure 存储过程名([参数]) - - 参数格式 (参数类型 参数名 数据类型) - - 参数类型有三种: - - IN: 输入参数,该参数的值必须在调用该存储过程时指定,在存储过程内部使用, 不能返回。 - - 缺省值是IN。 - - OUT:输出参数,该参数值的值可以在存储过程内部修改,并可返回。 - - INOUT:输入输出参数,该参数需要在调用时指定,并且可以返回。 - -#### 5.约束 - -是一种限制,通过对表的行或者列的数据做出限制来确保数据的完整性和一致性。 - - - -主键:相当于唯一性约束 + 非空约束的组合。 - - 注:一张表只能一个主键,数据库会为主键添加主键索引 - - 外键:用于确保两个表之间的参照完整性。 - -插入记录时,要先插入主表中的记录。 -删除记录时,要先删除从表中的记录。 - - 非空: not null - - 唯一性:unique - - 检查(了解): - - 注:检查约束跟数据库版本有关系,mysql8.0.16之后才支持。 - - - -#### 6.Case表达式 \ No newline at end of file diff --git "a/10 \346\270\251\350\264\265\351\233\257/20230926 \350\247\206\345\233\276.md" "b/10 \346\270\251\350\264\265\351\233\257/20230926 \350\247\206\345\233\276.md" deleted file mode 100644 index 0a2ac83..0000000 --- "a/10 \346\270\251\350\264\265\351\233\257/20230926 \350\247\206\345\233\276.md" +++ /dev/null @@ -1,63 +0,0 @@ -# 作业 - -````mysql - -#第14章_视图的课后练习 - -USE dbtest14; -#练习1: -#1. 使用表emps创建视图employee_vu, -#其中包括姓名(LAST_NAME),员工号(EMPLOYEE_ID),部门号(DEPARTMENT_ID) - -CREATE VIEW employee_vu as - SELECT last_name 姓名,employee_id 员工号,department_id 部门号 FROM employees; - -#2. 显示视图的结构 -SHOW CREATE VIEW employee_vu; - -#3. 查询视图中的全部内容 -SELECT * FROM employee_vu; - -#4. 将视图中的数据限定在部门号是80的范围内 -SELECT * FROM employee_vu WHERE 部门号 = 80; - -#练习2: - -#1. 创建视图emp_v1,要求查询电话号码以‘011’开头的员工姓名和工资、邮箱 - -CREATE VIEW emp_v1 as -SELECT last_name 员工姓名, salary 工资,email 邮箱 FROM employees WHERE phone_number LIKE "011%"; - -#2. 要求将视图 emp_v1 修改为查询电话号码以‘011’开头的并且邮箱中包含 e 字符 -#的员工姓名和邮箱、电话号码,工资 - -ALTER VIEW emp_v1 AS -SELECT last_name 员工姓名, salary 工资,email 邮箱 FROM employees WHERE phone_number LIKE "011%" AND email like "%e%"; - -#3. 向 emp_v1 插入一条记录,是否可以? - --- 可以 - -#4. 修改emp_v1中员工的工资,每人涨薪1000 -UPDATE emp_v1 set 工资=工资+1000; - -#5. 删除emp_v1中姓名为Olsen的员工 -DELETE FROM emp_v1 WHERE 员工姓名="Olsen"; - -#6. 创建视图emp_v2,要求查询部门的最高工资高于 12000 的部门id和其最高工资 - -CREATE VIEW emp_v2 as - SELECT d.department_id 部门,max(e.salary)最高工资 FROM employees e left JOIN departments d on e.department_id=d.department_id WHERE e.salary>12000 GROUP BY d.department_id; - -#7. 向 emp_v2 中插入一条记录,是否可以? - --- 不可以 - -#8. 删除刚才的emp_v2 和 emp_v1 -DROP VIEW emp_v2,emp_v1; -```` - - - - - diff --git "a/10 \346\270\251\350\264\265\351\233\257/\345\233\276\347\211\207/32e38aa3f50dcd0bac0c70ecfeb41f5.png" "b/10 \346\270\251\350\264\265\351\233\257/\345\233\276\347\211\207/32e38aa3f50dcd0bac0c70ecfeb41f5.png" deleted file mode 100644 index aefa9194543e633fd42d602420342de81a458429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60937 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%0AA}j<5;DLwbR}tzgk&p9kxH_6E9HLNl@lDI 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 diff --git "a/11 \351\202\271\344\272\250\344\274\237/1.PNG" "b/11 \351\202\271\344\272\250\344\274\237/1.PNG" deleted file mode 100644 index b73784eb4ca367ca096ff64b19d0cff1644027c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67175 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 diff --git "a/11 \351\202\271\344\272\250\344\274\237/20239.24.md" "b/11 \351\202\271\344\272\250\344\274\237/20239.24.md" deleted file mode 100644 index aef1554..0000000 --- "a/11 \351\202\271\344\272\250\344\274\237/20239.24.md" +++ /dev/null @@ -1,27 +0,0 @@ -# - - - -#### 事务的特性 - - 原子性隔离性持久性 - -#### 2.视图 - - 在已有的表或者视图上创建的虚拟表 - - 创建视图: create view 视图名 asselect - - 删除视图:drop view 视图名 - -#### 3.索引 - - 为了提高查询的速度而在数据库断创建的一种排序的数据结构 - -#### 参数类型有三种 - -IN:输入参数,改参数的值必须在调用该存储过程时指定,在存储过程内部使用,不能返回。缺省值是IN - -OUT:输出参数,该参数值的值可以在存储过程内部修改,并可返回 - -INOUT:输入输出参数,该参数需要在调用时指定,并且可以返回 diff --git "a/11 \351\202\271\344\272\250\344\274\237/3.PNG" "b/11 \351\202\271\344\272\250\344\274\237/3.PNG" deleted file mode 100644 index 87359ecc6c92ee6678658bffa1c3bb8a7011d11f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56509 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 diff --git "a/11 \351\202\271\344\272\250\344\274\237/9.10\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" "b/11 \351\202\271\344\272\250\344\274\237/9.10\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" deleted file mode 100644 index cb0e9bb..0000000 --- "a/11 \351\202\271\344\272\250\344\274\237/9.10\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.md" +++ /dev/null @@ -1,184 +0,0 @@ -## 图书馆管理系统 - - - -``` - - - -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/11 10:47:30 */ -/*==============================================================*/ - - -drop table if exists Book; - -drop table if exists Bookshelf; - -drop table if exists Floor; - -drop table if exists Librarian; - -drop table if exists Library; - -drop table if exists Return_book; - -drop table if exists borrower; - -drop table if exists type; - -drop table if exists 借书; - -drop table if exists 入库; - -drop table if exists 分类; - -/*==============================================================*/ -/* Table: Book */ -/*==============================================================*/ -create table Book -( - book_id int not null, - Li_num int not null, - book_name char(255) not null, - primary key (book_id) -); - -/*==============================================================*/ -/* Table: Bookshelf */ -/*==============================================================*/ -create table Bookshelf -( - Bo_shelf_id int not null auto_increment, - Fl_num int not null, - Bo_shelf_name char(255) not null, - primary key (Bo_shelf_id) -); - -/*==============================================================*/ -/* Table: Floor */ -/*==============================================================*/ -create table Floor -( - Fl_num int not null auto_increment, - Lib_num int not null, - Fl_belong char(255) not null, - primary key (Fl_num) -); - -/*==============================================================*/ -/* Table: Librarian */ -/*==============================================================*/ -create table Librarian -( - Li_num int not null, - Li_name char(255) not null, - primary key (Li_num) -); - -/*==============================================================*/ -/* Table: Library */ -/*==============================================================*/ -create table Library -( - Lib_num int not null, - Lib_name char(255) not null, - primary key (Lib_num) -); - -/*==============================================================*/ -/* Table: Return_book */ -/*==============================================================*/ -create table Return_book -( - Re_book int not null, - Re_name char(255) not null, - primary key (Re_book) -); - -/*==============================================================*/ -/* Table: borrower */ -/*==============================================================*/ -create table borrower -( - borr_num int not null, - borr_name char(255) not null, - borr_date date not null, - borr_add char(255) not null, - primary key (borr_num) -); - -/*==============================================================*/ -/* Table: type */ -/*==============================================================*/ -create table type -( - Book_type_id int not null, - Bo_shelf_id int not null, - Book_type_name char(255) not null, - primary key (Book_type_id) -); - -/*==============================================================*/ -/* Table: 借书 */ -/*==============================================================*/ -create table 借书 -( - borr_num int not null, - book_id int not null, - primary key (borr_num, book_id) -); - -/*==============================================================*/ -/* Table: 入库 */ -/*==============================================================*/ -create table 入库 -( - Re_book int not null, - Li_num int not null, - primary key (Re_book, Li_num) -); - -/*==============================================================*/ -/* Table: 分类 */ -/*==============================================================*/ -create table 分类 -( - book_id int not null, - Book_type_id int not null, - primary key (book_id, Book_type_id) -); - -alter table Book add constraint FK_管理 foreign key (Li_num) - references Librarian (Li_num) on delete restrict on update restrict; - -alter table Bookshelf add constraint FK_包含 foreign key (Fl_num) - references Floor (Fl_num) on delete restrict on update restrict; - -alter table Floor add constraint FK_包括 foreign key (Lib_num) - references Library (Lib_num) on delete restrict on update restrict; - -alter table type add constraint FK_下级 foreign key (Bo_shelf_id) - references Bookshelf (Bo_shelf_id) on delete restrict on update restrict; - -alter table 借书 add constraint FK_借书 foreign key (borr_num) - references borrower (borr_num) on delete restrict on update restrict; - -alter table 借书 add constraint FK_借书2 foreign key (book_id) - references Book (book_id) on delete restrict on update restrict; - -alter table 入库 add constraint FK_入库 foreign key (Re_book) - references Return_book (Re_book) on delete restrict on update restrict; - -alter table 入库 add constraint FK_入库2 foreign key (Li_num) - references Librarian (Li_num) on delete restrict on update restrict; - -alter table 分类 add constraint FK_分类 foreign key (book_id) - references Book (book_id) on delete restrict on update restrict; - -alter table 分类 add constraint FK_分类2 foreign key (Book_type_id) - references type (Book_type_id) on delete restrict on update restrict; - - -``` \ No newline at end of file diff --git "a/11 \351\202\271\344\272\250\344\274\237/9.10\347\254\224\350\256\260 .md" "b/11 \351\202\271\344\272\250\344\274\237/9.10\347\254\224\350\256\260 .md" deleted file mode 100644 index f56cccd..0000000 --- "a/11 \351\202\271\344\272\250\344\274\237/9.10\347\254\224\350\256\260 .md" +++ /dev/null @@ -1,54 +0,0 @@ -## 9.5 - - - -今天学到了表之间的关系 - -1.一对一的关系 类如一个学生(学号,编号,身份证寒外键),只有一个身份证(身份证号) -就可以将其中任一表中的主键,放到另一个表当外健 -2.一对多的关系(多对一的关系)类如一个班级 (班级编号),有多个学生(学生编号)班级编号 -将一所在的表的主键,放到多的表当外键 -3.多对多的关系:一个学生可以选修多门课程,一门课程可以被多个学生选修 -需求分析 - -## 9.6 - -学到了ER图 - -(1)ER图的概念 - -用visio这个软件来创造概念 - -ER图:实体关系图,简记E-R图,是指以实体、关系、属性三个基木概念概括数据的基木结构,从而描 -(2)要素 -3要素:实体(表)、属性(字段)和关系(类似外键 -(3)表示 -实体型 -属性: -用椭圆形或圆角矩形表示,与相应的实体连接起来; -主属性名称下加下划线; -联系(关系): -用菱形表示,姜形框内写明联系的名称 -用线与实体相连,可标上联系的类型 -联系也可以有自己的属性 -用矩形表示,矩形框内写明实体名; - -## 9.8 - -学了数据库的范式 - -第一范式:要求之端的内容 不可在分割为的是保证数据的原子性 - -第二范式:在满足第一是的基础上要求非组建字段要完全依赖主键(非主键要完全依赖整个联合主键)不能依赖部分 - -第三范式 :满足第二范式的前提下 要求非主键属性要求直接依赖于主键 - -建表 - -10.先做需求分析。明确需要的数据 - -## 9.9 - -第一步:创建概念模型(类似ER图),以用户的角度。简称 CDM - -第二步:将转概念模型换成逻辑模型,以计算机的角度。简称 LDM 第三步:将逻辑模型转换成物理模型,以数据库的角度。简称 PDM第四步:生成DDL(生成数据库代码) diff --git "a/11 \351\202\271\344\272\250\344\274\237/9.15\347\254\224\350\256\260.md" "b/11 \351\202\271\344\272\250\344\274\237/9.15\347\254\224\350\256\260.md" deleted file mode 100644 index bc17342..0000000 --- "a/11 \351\202\271\344\272\250\344\274\237/9.15\347\254\224\350\256\260.md" +++ /dev/null @@ -1,10 +0,0 @@ -## 9.15 - -#### 数据库的范式 - -##### 1.第一范式:要求字段的内容不可再分割,为的是保证数据的原子性 - -##### 2.第二范式:要求在满足第一范式的基础上,要求非主键字段完全依赖主键(非主键要依赖整个联合主键)而不能只依赖部分 - -##### 3.第三范式:满足第二范式的前提上,要求非主键属性要直接依赖于主键 - diff --git "a/11 \351\202\271\344\272\250\344\274\237/9.20\345\244\215\344\271\240.md" "b/11 \351\202\271\344\272\250\344\274\237/9.20\345\244\215\344\271\240.md" deleted file mode 100644 index 15d8be8..0000000 --- "a/11 \351\202\271\344\272\250\344\274\237/9.20\345\244\215\344\271\240.md" +++ /dev/null @@ -1,768 +0,0 @@ -1. /* - Navicat Premium Data Transfer - - Source Server : local - Source Server Type : MySQL - Source Server Version : 80034 (8.0.34) - Source Host : localhost:3306 - Source Schema : mxdxdb - - Target Server Type : MySQL - Target Server Version : 80034 (8.0.34) - File Encoding : 65001 - - Date: 17/09/2023 22:21:02 - */ - CREATE DATABASE ssa CHARSET utf8; - USE ssa; - SET NAMES utf8mb4; - SET FOREIGN_KEY_CHECKS = 0; - - -- ---------------------------- - -- Table structure for countries - -- ---------------------------- - DROP TABLE IF EXISTS `countries`; - CREATE TABLE `countries` ( - `country_id` char(2) NOT NULL, - `country_name` varchar(40) DEFAULT NULL, - `region_id` int DEFAULT NULL, - PRIMARY KEY (`country_id`), - KEY `countr_reg_fk` (`region_id`), - CONSTRAINT `countr_reg_fk` FOREIGN KEY (`region_id`) REFERENCES `regions` (`region_id`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - - -- ---------------------------- - -- Records of countries - -- ---------------------------- - BEGIN; - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('AR', '阿根廷', 2); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('AU', '澳大利亚', 3); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('BE', '比利时', 1); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('BR', '巴西', 2); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CA', '加拿大', 2); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CH', '瑞士', 1); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('CN', '中国', 3); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('DE', '德国', 1); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('DK', '丹麦', 1); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('EG', '埃及', 4); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('FR', '法国', 1); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('HK', '香港', 3); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IL', '以色列', 4); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IN', '印度', 3); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('IT', '意大利', 1); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('JP', '日本', 3); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('KW', '科威特', 4); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('MX', '墨西哥', 2); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('NG', '尼日利亚', 4); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('NL', '荷兰', 1); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('SG', '新加坡', 3); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('UK', '英国', 1); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('US', '美国', 2); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('ZM', '赞比亚', 4); - INSERT INTO `countries` (`country_id`, `country_name`, `region_id`) VALUES ('ZW', '津巴布韦', 4); - COMMIT; - - -- ---------------------------- - -- Table structure for departments - -- ---------------------------- - DROP TABLE IF EXISTS `departments`; - CREATE TABLE `departments` ( - `department_id` int NOT NULL DEFAULT '0', - `department_name` varchar(30) NOT NULL, - `manager_id` int DEFAULT NULL, - `location_id` int DEFAULT NULL, - PRIMARY KEY (`department_id`), - UNIQUE KEY `dept_id_pk` (`department_id`), - KEY `dept_loc_fk` (`location_id`), - KEY `dept_mgr_fk` (`manager_id`), - CONSTRAINT `dept_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`location_id`), - CONSTRAINT `dept_mgr_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - - -- ---------------------------- - -- Records of departments - -- ---------------------------- - BEGIN; - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (10, '行政部', 200, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (20, '营销部', 201, 1800); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (30, '采购部', 114, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (40, '人力资源部', 203, 2400); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (50, '物流部', 121, 1500); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (60, '信息技术部', 103, 1400); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (70, '公共关系部', 204, 2700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (80, '销售部', 145, 2500); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (90, '执行部门', 100, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (100, '财务部', 108, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (110, '会计部', 205, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (120, '财务部门1', NULL, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (130, '企业税务部门', NULL, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (140, '控制和信用部门', NULL, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (150, '股东服务部门', NULL, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (160, '员工福利部门', NULL, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (170, '制造部门', NULL, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (180, '建筑部门', NULL, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (190, '承包部门', NULL, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (200, '运营部', NULL, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (210, '信息技术支持部门', NULL, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (220, '网络运营中心', NULL, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (230, '信息技术帮助台', NULL, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (240, '政府销售部门', NULL, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (250, '零售销售部门', NULL, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (260, '招聘部门', NULL, 1700); - INSERT INTO `departments` (`department_id`, `department_name`, `manager_id`, `location_id`) VALUES (270, '工资单部门', NULL, 1700); - COMMIT; - - -- ---------------------------- - -- Table structure for employees - -- ---------------------------- - DROP TABLE IF EXISTS `employees`; - CREATE TABLE `employees` ( - `employee_id` int NOT NULL DEFAULT '0', - `first_name` varchar(20) DEFAULT NULL, - `last_name` varchar(25) NOT NULL, - `email` varchar(25) NOT NULL, - `phone_number` varchar(20) DEFAULT NULL, - `hire_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `salary` double(8,2) DEFAULT NULL, - `commission_pct` double(2,2) DEFAULT NULL, - `manager_id` int DEFAULT NULL, - `department_id` int DEFAULT NULL, - PRIMARY KEY (`employee_id`), - UNIQUE KEY `emp_email_uk` (`email`), - UNIQUE KEY `emp_emp_id_pk` (`employee_id`), - KEY `emp_dept_fk` (`department_id`), - KEY `emp_job_fk` (`job_id`), - KEY `emp_manager_fk` (`manager_id`), - CONSTRAINT `emp_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `emp_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`), - CONSTRAINT `emp_manager_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - - -- ---------------------------- - -- Records of employees - -- ---------------------------- - BEGIN; - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (100, '史蒂文', '金', 'SKING', '515.123.4567', '1987-06-17', 'AD_PRES', 24000.00, NULL, NULL, 90); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (101, '尼娜', '科查尔', 'NKOCHHAR', '515.123.4568', '1989-09-21', 'AD_VP', 17000.00, NULL, 100, 90); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (102, '雷克斯', '德哈恩', 'LDEHAAN', '515.123.4569', '1993-01-13', 'AD_VP', 17000.00, NULL, 100, 90); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (103, '亚历山大', '胡诺尔德', 'AHUNOLD', '590.423.4567', '1990-01-03', 'IT_PROG', 9000.00, NULL, 102, 60); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (104, '布鲁斯', '恩斯特', 'BERNST', '590.423.4568', '1991-05-21', 'IT_PROG', 6000.00, NULL, 103, 60); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (105, '大卫', '奥斯汀', 'DAUSTIN', '590.423.4569', '1997-06-25', 'IT_PROG', 4800.00, NULL, 103, 60); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (106, '瓦利', '帕塔巴拉', 'VPATABAL', '590.423.4560', '1998-02-05', 'IT_PROG', 4800.00, NULL, 103, 60); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (107, '黛安娜', '洛伦茨', 'DLORENTZ', '590.423.5567', '1999-02-07', 'IT_PROG', 4200.00, NULL, 103, 60); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (108, '南希', '格林伯格', 'NGREENBE', '515.124.4569', '1994-08-17', 'FI_MGR', 12000.00, NULL, 101, 100); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (109, '丹尼尔', '法维特', 'DFAVIET', '515.124.4169', '1994-08-16', 'FI_ACCOUNT', 9000.00, NULL, 108, 100); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (110, '约翰', '陈', 'JCHEN', '515.124.4269', '1997-09-28', 'FI_ACCOUNT', 8200.00, NULL, 108, 100); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (111, '伊斯梅尔', '斯基亚拉', 'ISCIARRA', '515.124.4369', '1997-09-30', 'FI_ACCOUNT', 7700.00, NULL, 108, 100); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (112, '何塞·曼努埃尔', '乌尔曼', 'JMURMAN', '515.124.4469', '1998-03-07', 'FI_ACCOUNT', 7800.00, NULL, 108, 100); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (113, '路易斯', '波普', 'LPOPP', '515.124.4567', '1999-12-07', 'FI_ACCOUNT', 6900.00, NULL, 108, 100); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (114, '丹', '拉法艾利', 'DRAPHEAL', '515.127.4561', '1994-12-07', 'PU_MAN', 11000.00, NULL, 100, 30); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (115, '亚历山大', '胡', 'AKHOO', '515.127.4562', '1995-05-18', 'PU_CLERK', 3100.00, NULL, 114, 30); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (116, '雪莉', '拜达', 'SBAIDA', '515.127.4563', '1997-12-24', 'PU_CLERK', 2900.00, NULL, 114, 30); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (117, '西加尔', '托比亚斯', 'STOBIAS', '515.127.4564', '1997-07-24', 'PU_CLERK', 2800.00, NULL, 114, 30); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (118, '盖伊', '火室', 'GHIMURO', '515.127.4565', '1998-11-15', 'PU_CLERK', 2600.00, NULL, 114, 30); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (119, '卡伦', '科尔门纳雷斯', 'KCOLMENA', '515.127.4566', '1999-08-10', 'PU_CLERK', 2500.00, NULL, 114, 30); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (120, '马修', '韦斯', 'MWEISS', '650.123.1234', '1996-07-18', 'ST_MAN', 8000.00, NULL, 100, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (121, '亚当', '弗里普', 'AFRIPP', '650.123.2234', '1997-04-10', 'ST_MAN', 8200.00, NULL, 100, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (122, '帕亚姆', '考夫林', 'PKAUFLIN', '650.123.3234', '1995-05-01', 'ST_MAN', 7900.00, NULL, 100, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (123, '珊塔', '沃尔曼', 'SVOLLMAN', '650.123.4234', '1997-10-10', 'ST_MAN', 6500.00, NULL, 100, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (124, '凯文', '莫尔戈斯', 'KMOURGOS', '650.123.5234', '1999-11-16', 'ST_MAN', 5800.00, NULL, 100, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (125, '朱莉娅', '内耶尔', 'JNAYER', '650.124.1214', '1997-07-16', 'ST_CLERK', 3200.00, NULL, 120, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (126, '艾琳', '米基利内尼', 'IMIKKILI', '650.124.1224', '1998-09-28', 'ST_CLERK', 2700.00, NULL, 120, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (127, '詹姆斯', '兰德里', 'JLANDRY', '650.124.1334', '1999-01-14', 'ST_CLERK', 2400.00, NULL, 120, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (128, '史蒂文', '马克尔', 'SMARKLE', '650.124.1434', '2000-03-08', 'ST_CLERK', 2200.00, NULL, 120, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (129, '劳拉', '比索特', 'LBISSOT', '650.124.5234', '1997-08-20', 'ST_CLERK', 3300.00, NULL, 121, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (130, '莫兹', '阿特金森', 'MATKINSO', '650.124.6234', '1997-10-30', 'ST_CLERK', 2800.00, NULL, 121, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (131, '詹姆斯', '马洛', 'JAMRLOW', '650.124.7234', '1997-02-16', 'ST_CLERK', 2500.00, NULL, 121, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (132, 'TJ', '奥尔森', 'TJOLSON', '650.124.8234', '1999-04-10', 'ST_CLERK', 2100.00, NULL, 121, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (133, '贾森', '马林', 'JMALLIN', '650.127.1934', '1996-06-14', 'ST_CLERK', 3300.00, NULL, 122, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (134, '迈克尔', '罗杰斯', 'MROGERS', '650.127.1834', '1998-08-26', 'ST_CLERK', 2900.00, NULL, 122, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (135, '基', '吉', 'KGEE', '650.127.1734', '1999-12-12', 'ST_CLERK', 2400.00, NULL, 122, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (136, '海泽尔', '菲尔坦克', 'HPHILTAN', '650.127.1634', '2000-02-06', 'ST_CLERK', 2200.00, NULL, 122, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (137, '伦斯克', '拉德维格', 'RLADWIG', '650.121.1234', '1995-07-14', 'ST_CLERK', 3600.00, NULL, 123, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (138, '斯蒂芬', '斯泰尔斯', 'SSTILES', '650.121.2034', '1997-10-26', 'ST_CLERK', 3200.00, NULL, 123, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (139, '约翰', '西奥', 'JSEO', '650.121.2019', '1998-02-12', 'ST_CLERK', 2700.00, NULL, 123, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (140, '乔舒亚', '帕特尔', 'JPATEL', '650.121.1834', '1998-04-06', 'ST_CLERK', 2500.00, NULL, 123, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (141, '特蕾娜', '拉杰斯', 'TRAJS', '650.121.8009', '1995-10-17', 'ST_CLERK', 3500.00, NULL, 124, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (142, '柯蒂斯', '戴维斯', 'CDAVIES', '650.121.2994', '1997-01-29', 'ST_CLERK', 3100.00, NULL, 124, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (143, '兰德尔', '马托斯', 'RMATOS', '650.121.2874', '1998-03-15', 'ST_CLERK', 2600.00, NULL, 124, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (144, '彼得', '瓦加斯', 'PVARGAS', '650.121.2004', '1998-07-09', 'ST_CLERK', 2500.00, NULL, 124, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (145, '约翰', '罗素', 'JRUSSEL', '011.44.1344.429268', '1996-10-01', 'SA_MAN', 14000.00, 0.40, 100, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (146, '卡伦', '帕特纳斯', 'KPARTNER', '011.44.1344.467268', '1997-01-05', 'SA_MAN', 13500.00, 0.30, 100, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (147, '阿尔贝托', '埃拉苏里斯', 'AERRAZUR', '011.44.1344.429278', '1997-03-10', 'SA_MAN', 12000.00, 0.30, 100, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (148, '杰拉德', '坎布劳特', 'GCAMBRAU', '011.44.1344.619268', '1999-10-15', 'SA_MAN', 11000.00, 0.30, 100, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (149, '埃莱妮', '兹洛特基', 'EZLOTKEY', '011.44.1344.429018', '2000-01-29', 'SA_MAN', 10500.00, 0.20, 100, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (150, '彼得', '塔克', 'PTUCKER', '011.44.1344.129268', '1997-01-30', 'SA_REP', 10000.00, 0.30, 145, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (151, '大卫', '伯恩斯坦', 'DBERNSTE', '011.44.1344.345268', '1997-03-24', 'SA_REP', 9500.00, 0.25, 145, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (152, '彼得', '霍尔', 'PHALL', '011.44.1344.478968', '1997-08-20', 'SA_REP', 9000.00, 0.25, 145, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (153, '克里斯托弗', '奥尔森', 'COLSEN', '011.44.1344.498718', '1998-03-30', 'SA_REP', 8000.00, 0.20, 145, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (154, '娜妮特', '坎布劳特', 'NCAMBRAU', '011.44.1344.987668', '1998-12-09', 'SA_REP', 7500.00, 0.20, 145, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (155, '奥利弗', '图沃尔特', 'OTUVAULT', '011.44.1344.486508', '1999-11-23', 'SA_REP', 7000.00, 0.15, 145, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (156, '詹妮特', '金', 'JKING', '011.44.1345.429268', '1996-01-30', 'SA_REP', 10000.00, 0.35, 146, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (157, '帕特里克', '萨利', 'PSULLY', '011.44.1345.929268', '1996-03-04', 'SA_REP', 9500.00, 0.35, 146, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (158, '艾伦', '麦克尤恩', 'AMCEWEN', '011.44.1345.829268', '1996-08-01', 'SA_REP', 9000.00, 0.35, 146, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (159, '林赛', '史密斯', 'LSMITH', '011.44.1345.729268', '1997-03-10', 'SA_REP', 8000.00, 0.30, 146, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (160, '路易斯', '多兰', 'LDORAN', '011.44.1345.629268', '1997-12-15', 'SA_REP', 7500.00, 0.30, 146, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (161, '萨拉特', '肖尔', 'SSEWALL', '011.44.1345.529268', '1998-11-03', 'SA_REP', 7000.00, 0.25, 146, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (162, '克拉拉', '维什尼', 'CVISHNEY', '011.44.1346.129268', '1997-11-11', 'SA_REP', 10500.00, 0.25, 147, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (163, '丹妮尔', '格林', 'DGREENE', '011.44.1346.229268', '1999-03-19', 'SA_REP', 9500.00, 0.15, 147, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (164, '玛蒂亚', '马文斯', 'MMARVINS', '011.44.1346.329268', '2000-01-24', 'SA_REP', 7200.00, 0.10, 147, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (165, '大卫', '李', 'DLEE', '011.44.1346.529268', '2000-02-23', 'SA_REP', 6800.00, 0.10, 147, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (166, '桑达尔', '安迪', 'SANDE', '011.44.1346.629268', '2000-03-24', 'SA_REP', 6400.00, 0.10, 147, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (167, '阿米特', '班达', 'ABANDA', '011.44.1346.729268', '2000-04-21', 'SA_REP', 6200.00, 0.10, 147, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (168, '丽莎', '奥泽尔', 'LOZER', '011.44.1343.929268', '1997-03-11', 'SA_REP', 11500.00, 0.25, 148, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (169, '哈里森', '布鲁姆', 'HBLOOM', '011.44.1343.829268', '1998-03-23', 'SA_REP', 10000.00, 0.20, 148, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (170, '泰勒', '福克斯', 'TFOX', '011.44.1343.729268', '1998-01-24', 'SA_REP', 9600.00, 0.20, 148, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (171, '威廉', '史密斯', 'WSMITH', '011.44.1343.629268', '1999-02-23', 'SA_REP', 7400.00, 0.15, 148, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (172, '伊丽莎白', '贝茨', 'EBATES', '011.44.1343.529268', '1999-03-24', 'SA_REP', 7300.00, 0.15, 148, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (173, '桑迪塔', '库马尔', 'SKUMAR', '011.44.1343.329268', '2000-04-21', 'SA_REP', 6100.00, 0.10, 148, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (174, '艾伦', '阿贝尔', 'EABEL', '011.44.1644.429267', '1996-05-11', 'SA_REP', 11000.00, 0.30, 149, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (175, '阿莉莎', '哈顿', 'AHUTTON', '011.44.1644.429266', '1997-03-19', 'SA_REP', 8800.00, 0.25, 149, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (176, '乔纳森', '泰勒', 'JTAYLOR', '011.44.1644.429265', '1998-03-24', 'SA_REP', 8600.00, 0.20, 149, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (177, '杰克', '利文斯顿', 'JLIVINGS', '011.44.1644.429264', '1998-04-23', 'SA_REP', 8400.00, 0.20, 149, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (178, '金柏莉', '格兰特', 'KGRANT', '011.44.1644.429263', '1999-05-24', 'SA_REP', 7000.00, 0.15, 149, NULL); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (179, '查尔斯', '约翰逊', 'CJOHNSON', '011.44.1644.429262', '2000-01-04', 'SA_REP', 6200.00, 0.10, 149, 80); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (180, '温斯顿', '泰勒', 'WTAYLOR', '650.507.9876', '1998-01-24', 'SH_CLERK', 3200.00, NULL, 120, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (181, '简', '弗勒尔', 'JFLEAUR', '650.507.9877', '1998-02-23', 'SH_CLERK', 3100.00, NULL, 120, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (182, '玛莎', '沙利文', 'MSULLIVA', '650.507.9878', '1999-06-21', 'SH_CLERK', 2500.00, NULL, 120, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (183, '吉拉德', '格奥尼', 'GGEONI', '650.507.9879', '2000-02-03', 'SH_CLERK', 2800.00, NULL, 120, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (184, '南迪塔', '萨尔钦德', 'NSARCHAN', '650.509.1876', '1996-01-27', 'SH_CLERK', 4200.00, NULL, 121, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (185, '亚历克西斯', '布尔', 'ABULL', '650.509.2876', '1997-02-20', 'SH_CLERK', 4100.00, NULL, 121, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (186, '朱莉娅', '戴林格', 'JDELLING', '650.509.3876', '1998-06-24', 'SH_CLERK', 3400.00, NULL, 121, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (187, '安东尼', '卡布里奥', 'ACABRIO', '650.509.4876', '1999-02-07', 'SH_CLERK', 3000.00, NULL, 121, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (188, '凯莉', '钟', 'KCHUNG', '650.505.1876', '1997-06-14', 'SH_CLERK', 3800.00, NULL, 122, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (189, '詹妮弗', '迪利', 'JDILLY', '650.505.2876', '1997-08-13', 'SH_CLERK', 3600.00, NULL, 122, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (190, '蒂莫西', '盖茨', 'TGATES', '650.505.3876', '1998-07-11', 'SH_CLERK', 2900.00, NULL, 122, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (191, '兰达尔', '珀金斯', 'RPERKINS', '650.505.4876', '1999-12-19', 'SH_CLERK', 2500.00, NULL, 122, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (192, '萨拉', '贝尔', 'SBELL', '650.501.1876', '1996-02-04', 'SH_CLERK', 4000.00, NULL, 123, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (193, '布里特尼', '埃弗雷特', 'BEVERETT', '650.501.2876', '1997-03-03', 'SH_CLERK', 3900.00, NULL, 123, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (194, '塞缪尔', '麦凯恩', 'SMCCAIN', '650.501.3876', '1998-07-01', 'SH_CLERK', 3200.00, NULL, 123, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (195, '范斯', '琼斯', 'VJONES', '650.501.4876', '1999-03-17', 'SH_CLERK', 2800.00, NULL, 123, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (196, '阿兰娜', '沃尔什', 'AWALSH', '650.507.9811', '1998-04-24', 'SH_CLERK', 3100.00, NULL, 124, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (197, '凯文', '费尼', 'KFEENEY', '650.507.9822', '1998-05-23', 'SH_CLERK', 3000.00, NULL, 124, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (198, '唐纳德', '奥康奈尔', 'DOCONNEL', '650.507.9833', '1999-06-21', 'SH_CLERK', 2600.00, NULL, 124, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (199, '道格拉斯', '格兰特', 'DGRANT', '650.507.9844', '2000-01-13', 'SH_CLERK', 2600.00, NULL, 124, 50); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (200, '詹妮弗', '韦伦', 'JWHALEN', '515.123.4444', '1987-09-17', 'AD_ASST', 4400.00, NULL, 101, 10); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (201, '迈克尔', '哈滕斯坦', 'MHARTSTE', '515.123.5555', '1996-02-17', 'MK_MAN', 13000.00, NULL, 100, 20); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (202, '帕特', '费伊', 'PFAY', '603.123.6666', '1997-08-17', 'MK_REP', 6000.00, NULL, 201, 20); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (203, '苏珊', '马夫里斯', 'SMAVRIS', '515.123.7777', '1994-06-07', 'HR_REP', 6500.00, NULL, 101, 40); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (204, '赫尔曼', '拜尔', 'HBAER', '515.123.8888', '1994-06-07', 'PR_REP', 10000.00, NULL, 101, 70); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (205, '谢莉', '希金斯', 'SHIGGINS', '515.123.8080', '1994-06-07', 'AC_MGR', 12000.00, NULL, 101, 110); - INSERT INTO `employees` (`employee_id`, `first_name`, `last_name`, `email`, `phone_number`, `hire_date`, `job_id`, `salary`, `commission_pct`, `manager_id`, `department_id`) VALUES (206, '威廉', '吉茨', 'WGIETZ', '515.123.8181', '1994-06-07', 'AC_ACCOUNT', 8300.00, NULL, 205, 110); - COMMIT; - - -- ---------------------------- - -- Table structure for job_grades - -- ---------------------------- - DROP TABLE IF EXISTS `job_grades`; - CREATE TABLE `job_grades` ( - `grade_level` varchar(3) DEFAULT NULL, - `lowest_sal` int DEFAULT NULL, - `highest_sal` int DEFAULT NULL - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - - -- ---------------------------- - -- Records of job_grades - -- ---------------------------- - BEGIN; - INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('A', 1000, 2999); - INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('B', 3000, 5999); - INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('C', 6000, 9999); - INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('D', 10000, 14999); - INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('E', 15000, 24999); - INSERT INTO `job_grades` (`grade_level`, `lowest_sal`, `highest_sal`) VALUES ('F', 25000, 40000); - COMMIT; - - -- ---------------------------- - -- Table structure for job_history - -- ---------------------------- - DROP TABLE IF EXISTS `job_history`; - CREATE TABLE `job_history` ( - `employee_id` int NOT NULL, - `start_date` date NOT NULL, - `end_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `department_id` int DEFAULT NULL, - PRIMARY KEY (`employee_id`,`start_date`), - UNIQUE KEY `jhist_emp_id_st_date_pk` (`employee_id`,`start_date`), - KEY `jhist_job_fk` (`job_id`), - KEY `jhist_dept_fk` (`department_id`), - CONSTRAINT `jhist_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `jhist_emp_fk` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`employee_id`), - CONSTRAINT `jhist_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - - -- ---------------------------- - -- Records of job_history - -- ---------------------------- - BEGIN; - INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (101, '1989-09-21', '1993-10-27', 'AC_ACCOUNT', 110); - INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (101, '1993-10-28', '1997-03-15', 'AC_MGR', 110); - INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (102, '1993-01-13', '1998-07-24', 'IT_PROG', 60); - INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (114, '1998-03-24', '1999-12-31', 'ST_CLERK', 50); - INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (122, '1999-01-01', '1999-12-31', 'ST_CLERK', 50); - INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (176, '1998-03-24', '1998-12-31', 'SA_REP', 80); - INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (176, '1999-01-01', '1999-12-31', 'SA_MAN', 80); - INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (200, '1987-09-17', '1993-06-17', 'AD_ASST', 90); - INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (200, '1994-07-01', '1998-12-31', 'AC_ACCOUNT', 90); - INSERT INTO `job_history` (`employee_id`, `start_date`, `end_date`, `job_id`, `department_id`) VALUES (201, '1996-02-17', '1999-12-19', 'MK_REP', 20); - COMMIT; - - -- ---------------------------- - -- Table structure for jobs - -- ---------------------------- - DROP TABLE IF EXISTS `jobs`; - CREATE TABLE `jobs` ( - `job_id` varchar(10) NOT NULL DEFAULT '', - `job_title` varchar(35) NOT NULL, - `min_salary` int DEFAULT NULL, - `max_salary` int DEFAULT NULL, - PRIMARY KEY (`job_id`), - UNIQUE KEY `job_id_pk` (`job_id`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - - -- ---------------------------- - -- Records of jobs - -- ---------------------------- - BEGIN; - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AC_ACCOUNT', '公共会计师', 4200, 9000); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AC_MGR', '会计经理', 8200, 16000); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_ASST', '行政助理', 3000, 6000); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_PRES', '总裁', 20000, 40000); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('AD_VP', '行政副总裁', 15000, 30000); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('FI_ACCOUNT', '会计', 4200, 9000); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('FI_MGR', '财务经理', 8200, 16000); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('HR_REP', '人力资源代表', 4000, 9000); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('IT_PROG', '程序员', 4000, 10000); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('MK_MAN', '市场营销经理', 9000, 15000); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('MK_REP', '市场营销代表', 4000, 9000); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PR_REP', '公共关系代表', 4500, 10500); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PU_CLERK', '采购文员', 2500, 5500); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('PU_MAN', '采购经理', 8000, 15000); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SA_MAN', '销售经理', 10000, 20000); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SA_REP', '销售代表', 6000, 12000); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('SH_CLERK', '发货文员', 2500, 5500); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('ST_CLERK', '库存文员', 2000, 5000); - INSERT INTO `jobs` (`job_id`, `job_title`, `min_salary`, `max_salary`) VALUES ('ST_MAN', '库存经理', 5500, 8500); - COMMIT; - - -- ---------------------------- - -- Table structure for locations - -- ---------------------------- - DROP TABLE IF EXISTS `locations`; - CREATE TABLE `locations` ( - `location_id` int NOT NULL DEFAULT '0', - `street_address` varchar(40) DEFAULT NULL, - `postal_code` varchar(12) DEFAULT NULL, - `city` varchar(30) NOT NULL, - `state_province` varchar(25) DEFAULT NULL, - `country_id` char(2) DEFAULT NULL, - PRIMARY KEY (`location_id`), - UNIQUE KEY `loc_id_pk` (`location_id`), - KEY `loc_c_id_fk` (`country_id`), - CONSTRAINT `loc_c_id_fk` FOREIGN KEY (`country_id`) REFERENCES `countries` (`country_id`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - - -- ---------------------------- - -- Records of locations - -- ---------------------------- - BEGIN; - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1000, '1297 Via Cola di Rie', '00989', '罗马', NULL, 'IT'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1100, '93091 Calle della Testa', '10934', '威尼斯', NULL, 'IT'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1200, '2017 Shinjuku-ku', '1689', '东京', '东京都', 'JP'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1300, '9450 Kamiya-cho', '6823', '广岛', NULL, 'JP'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1400, '2014 Jabberwocky Rd', '26192', '南湖', '德克萨斯', 'US'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1500, '2011 Interiors Blvd', '99236', '南旧金山', '加利福尼亚', 'US'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1600, '2007 Zagora St', '50090', '南布朗斯维克', '新泽西', 'US'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1700, '2004 Charade Rd', '98199', '西雅图', '华盛顿', 'US'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1800, '147 Spadina Ave', 'M5V 2L7', '多伦多', '安大略', 'CA'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (1900, '6092 Boxwood St', 'YSW 9T2', '怀特霍斯', '育空', 'CA'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2000, '40-5-12 Laogianggen', '190518', '北京', NULL, 'CN'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2100, '1298 Vileparle (E)', '490231', '孟买', '马哈拉施特拉邦', 'IN'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2200, '12-98 Victoria Street', '2901', '悉尼', '新南威尔士', 'AU'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2300, '198 Clementi North', '540198', '新加坡', NULL, 'SG'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2400, '8204 Arthur St', NULL, '伦敦', NULL, 'UK'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2500, 'Magdalen Centre, The Oxford Science Park', 'OX9 9ZB', '牛津', '牛津', 'UK'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2600, '9702 Chester Road', '09629850293', '斯特雷福德', '曼彻斯特', 'UK'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2700, 'Schwanthalerstr. 7031', '80925', '慕尼黑', '巴伐利亚', 'DE'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2800, 'Rua Frei Caneca 1360 ', '01307-002', '圣保罗', '圣保罗', 'BR'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (2900, '20 Rue des Corps-Saints', '1730', '日内瓦', '日内瓦', 'CH'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3000, 'Murtenstrasse 921', '3095', '伯尔尼', 'BE', 'CH'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3100, 'Pieter Breughelstraat 837', '3029SK', '乌得勒支', '乌得勒支', 'NL'); - INSERT INTO `locations` (`location_id`, `street_address`, `postal_code`, `city`, `state_province`, `country_id`) VALUES (3200, 'Mariano Escobedo 9991', '11932', '墨西哥城', '联邦区', 'MX'); - COMMIT; - - -- ---------------------------- - -- Table structure for order - -- ---------------------------- - DROP TABLE IF EXISTS `order`; - CREATE TABLE `order` ( - `order_id` int DEFAULT NULL, - `order_name` varchar(15) DEFAULT NULL - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - - -- ---------------------------- - -- Records of order - -- ---------------------------- - BEGIN; - INSERT INTO `order` (`order_id`, `order_name`) VALUES (1, 'shkstart'); - INSERT INTO `order` (`order_id`, `order_name`) VALUES (2, 'tomcat'); - INSERT INTO `order` (`order_id`, `order_name`) VALUES (3, 'dubbo'); - COMMIT; - - -- ---------------------------- - -- Table structure for regions - -- ---------------------------- - DROP TABLE IF EXISTS `regions`; - CREATE TABLE `regions` ( - `region_id` int NOT NULL, - `region_name` varchar(25) DEFAULT NULL, - PRIMARY KEY (`region_id`), - UNIQUE KEY `reg_id_pk` (`region_id`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; - - -- ---------------------------- - -- Records of regions - -- ---------------------------- - BEGIN; - INSERT INTO `regions` (`region_id`, `region_name`) VALUES (1, '欧洲'); - INSERT INTO `regions` (`region_id`, `region_name`) VALUES (2, '美洲'); - INSERT INTO `regions` (`region_id`, `region_name`) VALUES (3, '亚洲'); - INSERT INTO `regions` (`region_id`, `region_name`) VALUES (4, '中东和非洲'); - COMMIT; - - -- ---------------------------- - -- View structure for emp_details_view - -- ---------------------------- - DROP VIEW IF EXISTS `emp_details_view`; - CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `emp_details_view` AS select `e`.`employee_id` AS `employee_id`,`e`.`job_id` AS `job_id`,`e`.`manager_id` AS `manager_id`,`e`.`department_id` AS `department_id`,`d`.`location_id` AS `location_id`,`l`.`country_id` AS `country_id`,`e`.`first_name` AS `first_name`,`e`.`last_name` AS `last_name`,`e`.`salary` AS `salary`,`e`.`commission_pct` AS `commission_pct`,`d`.`department_name` AS `department_name`,`j`.`job_title` AS `job_title`,`l`.`city` AS `city`,`l`.`state_province` AS `state_province`,`c`.`country_name` AS `country_name`,`r`.`region_name` AS `region_name` from (((((`employees` `e` join `departments` `d`) join `jobs` `j`) join `locations` `l`) join `countries` `c`) join `regions` `r`) where ((`e`.`department_id` = `d`.`department_id`) and (`d`.`location_id` = `l`.`location_id`) and (`l`.`country_id` = `c`.`country_id`) and (`c`.`region_id` = `r`.`region_id`) and (`j`.`job_id` = `e`.`job_id`)); - - SET FOREIGN_KEY_CHECKS = 1; - - - - - - - - - - - - #第03章_基本的SELECT语句的课后练习 - - # 1.查询所有员工12个月的工资总和,并起别名为工资总和 - SELECT sum(salary*12)员工工资总和 FROM employees; - - #理解1:计算12月的基本工资 - - #SELECT sum(salary*12) as 工资总和 FROM employees; - SELECT (sum(salary)+sum(commission_pct*salary))*12 FROM employees; - #理解2:计算12月的基本工资和奖金 - # ifnull(原值,新值) 判断一个原值是否为null,如果原值是null,就用一个新值代替 - - - - # 2.查询employees表中去除重复的job_id以后的数据 - #去除重复 distinct - - SELECT DISTINCT job_id FROM employees; - - # 3.查询工资大于12000的员工姓名和工资 - SELECT * FROM employees WHERE salary>12000; - - # 4.查询员工号为176的员工的姓名和部门号 - SELECT first_name 姓名,job_id 部门号 FROM employees WHERE employee_id =176; - - #; - - # 5.显示表 departments 的结构,并查询其中的全部数据 - DESC departments; - SELECT * FROM departments; - # 第04章_运算符课后练习 - - # 1.选择工资不在5000到12000的员工的姓名和工资 - SELECT *FROM employees WHERE salary BETWEEN 5000 AND 12000; - - - # 2.选择在20或50号部门工作的员工姓名和部门号 - SELECT * FROM employees WHERE department_id IN(20,50); - - # 3.选择公司中没有管理者的员工姓名及job_id - - SELECT first_name,job_id from employees where manager_id is null; - - - - # 4.选择公司中有奖金的员工姓名,工资和奖金级别 - - - - - # 5.选择员工姓名的第三个字是 尔 的员工姓名 - - SELECT * FROM employees WHERE first_name LIKE '%尔'; - - - # 6.选择姓名中有 特 字和 尔 字的员工姓名 - -- SELECT * FROM employees WHERE first_name LIKE '%尔%' AND first_name '%特%'; - SELECT * from employees WHERE last_name like '%特%' and last_name like '%尔%'; - - # 7.显示出表 employees 表中 first_name 以 '尔'结尾的员工信息 - - SELECT * FROM employees where first_name like '%尔'; - - # 8.显示出表 employees 部门编号在 80-100 之间的姓名、工种 - - SELECT first_name 姓名, j.job_title 工种 FROM employees e LEFT JOIN jobs j on e.job_id=j.job_id where e.department_id BETWEEN 80 and 100; - # 9.显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、工资、管理者id - - SELECT first_name 员工姓名, salary 工资,manager_id 管理者id from employees where manager_id in (100,101,110); - - #第05章_排序与分页的课后练习 - - - #1. 查询员工的姓名和部门号和年薪,按年薪降序显示 - -- order by 年薪 asc/desc - - SELECT first_name 姓名 ,department_id 部门号,salary*12 年薪 from employees ORDER BY 年薪 DESC; - - #2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据 - - - - #3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序 - - - SELECT * FROM employees where email like '%e%' ORDER BY LENGTH(email) desc , department_id asc; - - - # 第06章_多表查询的课后练习 - - - # 1.显示所有员工的姓名,部门号和部门名称。 - - SELECT e.first_name 姓名,d.department_id 部门号, d.department_name 部门名称 FROM employees e LEFT JOIN departments d on d.department_id=e.department_id - # 2.查询90号部门员工的job_id和90号部门的location_id - # 2.查询90号部门员工的job_id和90号部门的location_id - - SELECT job_id,location_id FROM employees e LEFT JOIN departments d on d.department_id=e.department_id where d.department_id=90; - - - - # 3.选择所有 有奖金的员工 的 last_name , department_name , location_id , city - - SELECT e.last_name , d.department_name , l.location_id,l.city FROM employees e LEFT JOIN departments d on d.department_id=e.department_id LEFT JOIN locations l on l.location_id=d.location_id where commission_pct is not null; - - - - # 4.选择city在 多伦多 工作的员工的 last_name , job_id , department_id , department_name - - SELECT e.last_name , e.job_id , d.department_id , d.department_name FROM employees e LEFT JOIN departments d on d.department_id=e.department_id LEFT JOIN locations l on l.location_id=d.location_id where l.city='多伦多'; - - #sql92语法(自然连接): - - - - - # 5.查询行政部门员工的部门名称、部门地址、姓名、工作、工资 - - SELECT department_name 部门名称, city 部门地址, e.last_name 姓名, j.job_title 工作, e.salary 工资 FROM employees e,departments d,locations l,jobs j where e.department_id=d.department_id and d.location_id=l.location_id and j.job_id=e.job_id; - - - - - # 6.显示所有员工的姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式 - -- 员工姓名 员工编号 上级姓名 上级的员工编号 - -- 德哈恩 102 金 100 - - SELECT b.first_name 员工姓名,b.department_id 员工编号,a.last_name 上级姓名,a.manager_id 上级的员工编号 FROM employees a JOIN employees b where a.department_id=b.department_id; - - - # 7.查询哪些部门没有员工 - SELECT * FROM departments d LEFT JOIN employees e on d.department_id=e.department_id where e.department_id is null; - - # 8. 查询哪个城市没有部门 - SELECT * FROM departments d LEFT JOIN locations l on d.location_id=l.location_id where state_province is null ; - - - - # 9. 查询部门名为 销售部 或 信息技术部 的员工信息 - SELECT * FROM employees e JOIN departments d ON e.department_id = d.department_id WHERE d.department_name like '销售部' or d.department_name like '信息技术部'; - - - # 第08章_聚合函数的课后练习 - - - - #2.查询公司员工工资的最大值,最小值,平均值,总和 - - SELECT MAX(salary) 最大值,MIN(salary) 最小值,AVG(salary) 平均值,SUM(salary) 总和 FROM employees; - #3.查询各job_id的员工工资的最大值,最小值,平均值,总和 - SELECT MAX(salary) 最大值,MIN(salary) 最小值,AVG(salary) 平均值,SUM(salary) 总和,job_id FROM employees GROUP BY job_id; - #4.选择各个job_id的员工人数 - - SELECT count(job_id) FROM employees GROUP BY job_id; - - # 5.查询员工最高工资和最低工资的差距 - SELECT MAX(salary) - MIN(salary) 差距 FROM employees; - - # 6.查询各个管理者 手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内 - - SELECT MAX(salary) 最大值,MIN(salary) 最小值 FROM employees WHERE salary>6000 and manager_id is not null GROUP BY manager_id; - - - ​ - - - # 7.查询所有部门的名字,location_id,员工数量和平均工资,并按平均工资降序 - - - SELECT d.department_name,AVG(salary),count(job_id) FROM employees e JOIN departments d ON e.department_id = d.department_id GROUP BY d.department_name ORDER BY AVG(salary) DESC; - - - # 8.查询每个工种、每个部门的部门名、工种名和最低工资 - - SELECT job_title,department_name,min_salary FROM jobs j JOIN employees e on j.job_id=e.job_id join departments d on e.department_id=d.department_id - - - - - # 第09章_子查询的课后练习 - - - - #1.查询和 兹洛特基 相同部门的员工姓名和工资 - - - SELECT last_name,salary FROM employees WHERE department_id= (SELECT department_id FROM employees WHERE last_name like '兹洛特基'); - - #2.查询工资比公司平均工资高的员工的员工号,姓名和工资。 - - - SELECT employee_id,last_name,salary FROM employees WHERE salary>(SELECT AVG(salary) FROM employees); - #3.选择工资大于所有JOB_ID = 'SA_MAN'的员工的工资的员工的last_name, job_id, salary - SELECT last_name, job_id, salary FROM employees WHERE salary>(SELECT MAX(salary) FROM employees WHERE JOB_ID = 'SA_MAN'); - - - #4.查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名 - - SELECT employee_id FROM employees where first_name like "%u%"; - SELECT employee_id 员工号,first_name 姓名 FROM employees where employee_id = (SELECT employee_id FROM employees where first_name like "%u%"); - - - #5.查询部门的location_id为1700的部门的工作的员工的员工号 - - SELECT location_id FROM departments where location_id = 1700; - SELECT first_name,department_id FROM employees where department_id in (SELECT department_id FROM departments where location_id = 1700); - - - #6.查询管理者是 金 的员工姓名和工资 - SELECT last_name FROM employees WHERE last_name='金'; - - SELECT first_name 员工姓名,salary 工资 FROM employees where last_name in (SELECT last_name FROM employees WHERE last_name='金'); - #7.查询工资最低的员工信息: last_name, salary - - SELECT last_name,salary FROM employees WHERE salary =(SELECT MIN(salary) FROM employees); - - - #8.查询平均工资最低的部门信息 - #方式1: - # 部门最低工资=全司最低 - - #方式2 - # 部门平均<= 公司所有平均 - - SELECT department_id FROM employees GROUP BY department_id ORDER BY avg(salary) LIMIT 0,1; - - SELECT DISTINCT d.* FROM employees e LEFT JOIN departments d on e.department_id=d.department_id where d.department_id = (SELECT department_id FROM employees GROUP BY department_id ORDER BY avg(salary) LIMIT 0,1); - - #9.查询平均工资最低的部门信息和该部门的平均工资(相关子查询) - #方式:先查最低平均工资的部门,再根据其id去select中再子查询 - - # 连表查 - select d.*,avg(e.salary) 平均工资 from departments d right join employees e on d.department_id = e.department_id group by d.department_id order by 平均工资 limit 0,1; - # 子查询 - select d.*,a.平均工资 from departments d right join - (select department_id,avg(salary) 平均工资 from employees group by department_id having avg(salary) = - (select avg(salary) 平均工资 from employees group by department_id order by 平均工资 limit 0,1)) a - on d.department_id = a.department_id; - - - #10.查询平均工资最高的 job 信息 - - #方式1:平均工资=最大 - #方式2:平均工资>=所有平均工资 - select j.*,avg(e.salary) 平均工资 - from jobs j right join employees e on j.job_id = e.job_id group by j.job_id order by 平均工资 desc limit 0,1; - - #11.查询平均工资高于公司平均工资的部门有哪些? - select d.department_name 部门名,avg(e.salary) 平均工资 - from departments d right join employees e on d.department_id = e.department_id - group by d.department_id having 平均工资 > (select avg(salary) from employees); - - #12.查询出公司中所有 manager 的详细信息 - - #方式1:自连接 自己连自己 - select * from employees where employee_id in - (select distinct(a.employee_id) from - (select e2.* from employees e1 left join employees e2 on e1.manager_id = e2.employee_id) a); - - #方式2:子查询 - #员工编号=(管理员编号有哪些) - select * from employees where employee_id in - (select distinct manager_id from employees); - - #13.各个部门中 最高工资中 最低的那个部门的 最低工资是多少? - select min(e.salary) 最低工资 from employees e right join - (select department_id,max(salary) 最高工资 from employees group by department_id order by 最高工资 limit 0,1) a - on e.department_id = a.department_id ; - - #14.查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary - #方式1: - select last_name, department_id, email, salary from employees where employee_id = - (select employee_id from employees e right join - (select department_id,avg(salary) 平均工资 from employees group by department_id order by 平均工资 desc limit 0,1) a - on e.department_id = a.department_id limit 0,1); - - #15. 查询部门的部门号,其中不包括job_id是"ST_CLERK"的部门号 - #方式1: - select job_id from jobs where job_id != 'ST_CLERK'; - - #16. 选择所有没有管理者的员工的last_name - select last_name from employees where manager_id is null; - - #17.查询员工号、姓名、雇用时间、工资,其中员工的管理者为 'De Haan' - #方式1: - select * from employees where last_name = 'De Haan' - - #方式2: - - select e.employee_id 员工号,e.last_name 姓名,e.salary 工资,a.平均工资 from employees e left join - (select department_id,avg(salary) 平均工资 from employees group by department_id) a - on e.department_id = a.department_id and e.salary > a.平均工资; - #18.查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资(相关子查询) - - #方式1:使用相关子查询 - - - #方式2:在FROM中声明子查询 - - - - #19.查询每个部门下的部门人数大于 5 的部门名称(相关子查询) - - - - #20.查询每个国家下的部门个数大于 2 的国家编号(相关子查询) - - - /* - 子查询的编写技巧(或步骤):① 从里往外写 ② 从外往里写 - - 如何选择? - ① 如果子查询相对较简单,建议从外往里写。一旦子查询结构较复杂,则建议从里往外写 - ② 如果是相关子查询的话,通常都是从外往里写。 - - */ diff --git "a/11 \351\202\271\344\272\250\344\274\237/9.21\344\275\234\344\270\232\347\254\224\350\256\260.md" "b/11 \351\202\271\344\272\250\344\274\237/9.21\344\275\234\344\270\232\347\254\224\350\256\260.md" deleted file mode 100644 index b5261df..0000000 --- "a/11 \351\202\271\344\272\250\344\274\237/9.21\344\275\234\344\270\232\347\254\224\350\256\260.md" +++ /dev/null @@ -1,92 +0,0 @@ -今天学到了sku,spu - -sku是库存量单位一个项目可能有多个SKU - -spu: 是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以称为一个spu - -``` -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-21 16:41:07 */ -/*==============================================================*/ -create database zy charset utf8; -use zy; - -drop table if exists attributes; - -drop table if exists attributes_value; - -drop table if exists relation; - -drop table if exists sku; - -drop table if exists spu; - -/*==============================================================*/ -/* Table: attributes */ -/*==============================================================*/ -create table attributes -( - attributes_id int not null auto_increment, - attributes_name varchar(50) not null, - primary key (attributes_id) -); - -/*==============================================================*/ -/* Table: attributes_value */ -/*==============================================================*/ -create table attributes_value -( - value_id int not null auto_increment, - value_content varchar(50) not null, - primary key (value_id) -); - -/*==============================================================*/ -/* Table: relation */ -/*==============================================================*/ -create table relation -( - relation_id int not null auto_increment, - sku_id int, - attributes_id int, - value_id int, - primary key (relation_id) -); - -/*==============================================================*/ -/* Table: sku */ -/*==============================================================*/ -create table sku -( - sku_id int not null auto_increment, - spu_id int, - sku_name varchar(50) not null, - sku_price decimal(9,2) not null, - sku_kc int not null, - primary key (sku_id) -); - -/*==============================================================*/ -/* Table: spu */ -/*==============================================================*/ -create table spu -( - spu_id int not null auto_increment, - spu_name varchar(50) not null, - spu_content varchar(50) not null, - primary key (spu_id) -); - -alter table relation add constraint FK_Relationship_2 foreign key (sku_id) - references sku (sku_id) on delete restrict on update restrict; - -alter table relation add constraint FK_Relationship_3 foreign key (attributes_id) - references attributes (attributes_id) on delete restrict on update restrict; - -alter table relation add constraint FK_Relationship_4 foreign key (value_id) - references attributes_value (value_id) on delete restrict on update restrict; - -alter table sku add constraint FK_Relationship_1 foreign key (spu_id) - references spu (spu_id) on delete restrict on update restrict; -``` diff --git "a/11 \351\202\271\344\272\250\344\274\237/9.21\347\254\224\350\256\260 .md" "b/11 \351\202\271\344\272\250\344\274\237/9.21\347\254\224\350\256\260 .md" deleted file mode 100644 index 8dc3ba5..0000000 --- "a/11 \351\202\271\344\272\250\344\274\237/9.21\347\254\224\350\256\260 .md" +++ /dev/null @@ -1,9 +0,0 @@ -## 9.21 - - - -``` -RBAC是基于角色的权限访问控制模型。 -RBAC允许您通过分配一组权限来创建和实施高级访问。权限基于特定用户类别执行其职责所需的访问级别。 -RBAC0(Core RBAC):基本模型有三个元素:用户、角色和权限。模型设计基于“多对多”原则,即多个用户可以具有相同的角色,一个用户可以具有多个角色。同样,您可以将同一权限分配给多个角色,也可以将同一角色分配给多个权限 -``` diff --git "a/11 \351\202\271\344\272\250\344\274\237/9.27\344\275\234\344\270\232.txt" "b/11 \351\202\271\344\272\250\344\274\237/9.27\344\275\234\344\270\232.txt" deleted file mode 100644 index 7d7421a..0000000 --- "a/11 \351\202\271\344\272\250\344\274\237/9.27\344\275\234\344\270\232.txt" +++ /dev/null @@ -1,285 +0,0 @@ - -/* -SQLyog Ultimate v12.08 (64 bit) -MySQL - 5.7.28-log : Database - view_db -********************************************************************* -*/ - - -/*!40101 SET NAMES utf8 */; - -/*!40101 SET SQL_MODE=''*/; - -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -CREATE DATABASE /*!32312 IF NOT EXISTS*/`view_db` /*!40100 DEFAULT CHARACTER SET utf8 */; - -USE `view_db`; - -/*Table structure for table `countries` */ - -DROP TABLE IF EXISTS `countries`; - -CREATE TABLE `countries` ( - `country_id` char(2) NOT NULL, - `country_name` varchar(40) DEFAULT NULL, - `region_id` int(11) DEFAULT NULL, - PRIMARY KEY (`country_id`), - KEY `countr_reg_fk` (`region_id`), - CONSTRAINT `countr_reg_fk` FOREIGN KEY (`region_id`) REFERENCES `regions` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `countries` */ - -insert into `countries`(`country_id`,`country_name`,`region_id`) values ('AR','Argentina',2),('AU','Australia',3),('BE','Belgium',1),('BR','Brazil',2),('CA','Canada',2),('CH','Switzerland',1),('CN','China',3),('DE','Germany',1),('DK','Denmark',1),('EG','Egypt',4),('FR','France',1),('HK','HongKong',3),('IL','Israel',4),('IN','India',3),('IT','Italy',1),('JP','Japan',3),('KW','Kuwait',4),('MX','Mexico',2),('NG','Nigeria',4),('NL','Netherlands',1),('SG','Singapore',3),('UK','United Kingdom',1),('US','United States of America',2),('ZM','Zambia',4),('ZW','Zimbabwe',4); - -/*Table structure for table `departments` */ - -DROP TABLE IF EXISTS `departments`; - -CREATE TABLE `departments` ( - `department_id` int(4) NOT NULL DEFAULT '0', - `department_name` varchar(30) NOT NULL, - `manager_id` int(6) DEFAULT NULL, - `location_id` int(4) DEFAULT NULL, - PRIMARY KEY (`department_id`), - UNIQUE KEY `dept_id_pk` (`department_id`), - KEY `dept_loc_fk` (`location_id`), - KEY `dept_mgr_fk` (`manager_id`), - CONSTRAINT `dept_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`location_id`), - CONSTRAINT `dept_mgr_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `departments` */ - -insert into `departments`(`department_id`,`department_name`,`manager_id`,`location_id`) values (10,'Administration',200,1700),(20,'Marketing',201,1800),(30,'Purchasing',114,1700),(40,'Human Resources',203,2400),(50,'Shipping',121,1500),(60,'IT',103,1400),(70,'Public Relations',204,2700),(80,'Sales',145,2500),(90,'Executive',100,1700),(100,'Finance',108,1700),(110,'Accounting',205,1700),(120,'Treasury',NULL,1700),(130,'Corporate Tax',NULL,1700),(140,'Control And Credit',NULL,1700),(150,'Shareholder Services',NULL,1700),(160,'Benefits',NULL,1700),(170,'Manufacturing',NULL,1700),(180,'Construction',NULL,1700),(190,'Contracting',NULL,1700),(200,'Operations',NULL,1700),(210,'IT Support',NULL,1700),(220,'NOC',NULL,1700),(230,'IT Helpdesk',NULL,1700),(240,'Government Sales',NULL,1700),(250,'Retail Sales',NULL,1700),(260,'Recruiting',NULL,1700),(270,'Payroll',NULL,1700); - -/*Table structure for table `employees` */ - -DROP TABLE IF EXISTS `employees`; - -CREATE TABLE `employees` ( - `employee_id` int(6) NOT NULL DEFAULT '0', - `first_name` varchar(20) DEFAULT NULL, - `last_name` varchar(25) NOT NULL, - `email` varchar(25) NOT NULL, - `phone_number` varchar(20) DEFAULT NULL, - `hire_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `salary` double(8,2) DEFAULT NULL, - `commission_pct` double(2,2) DEFAULT NULL, - `manager_id` int(6) DEFAULT NULL, - `department_id` int(4) DEFAULT NULL, - PRIMARY KEY (`employee_id`), - UNIQUE KEY `emp_email_uk` (`email`), - UNIQUE KEY `emp_emp_id_pk` (`employee_id`), - KEY `emp_dept_fk` (`department_id`), - KEY `emp_job_fk` (`job_id`), - KEY `emp_manager_fk` (`manager_id`), - CONSTRAINT `emp_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `emp_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`), - CONSTRAINT `emp_manager_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `employees` */ - -insert into `employees`(`employee_id`,`first_name`,`last_name`,`email`,`phone_number`,`hire_date`,`job_id`,`salary`,`commission_pct`,`manager_id`,`department_id`) values (100,'Steven','King','SKING','515.123.4567','1987-06-17','AD_PRES',24000.00,NULL,NULL,90),(101,'Neena','Kochhar','NKOCHHAR','515.123.4568','1989-09-21','AD_VP',17000.00,NULL,100,90),(102,'Lex','De Haan','LDEHAAN','515.123.4569','1993-01-13','AD_VP',17000.00,NULL,100,90),(103,'Alexander','Hunold','AHUNOLD','590.423.4567','1990-01-03','IT_PROG',9000.00,NULL,102,60),(104,'Bruce','Ernst','BERNST','590.423.4568','1991-05-21','IT_PROG',6000.00,NULL,103,60),(105,'David','Austin','DAUSTIN','590.423.4569','1997-06-25','IT_PROG',4800.00,NULL,103,60),(106,'Valli','Pataballa','VPATABAL','590.423.4560','1998-02-05','IT_PROG',4800.00,NULL,103,60),(107,'Diana','Lorentz','DLORENTZ','590.423.5567','1999-02-07','IT_PROG',4200.00,NULL,103,60),(108,'Nancy','Greenberg','NGREENBE','515.124.4569','1994-08-17','FI_MGR',12000.00,NULL,101,100),(109,'Daniel','Faviet','DFAVIET','515.124.4169','1994-08-16','FI_ACCOUNT',9000.00,NULL,108,100),(110,'John','Chen','JCHEN','515.124.4269','1997-09-28','FI_ACCOUNT',8200.00,NULL,108,100),(111,'Ismael','Sciarra','ISCIARRA','515.124.4369','1997-09-30','FI_ACCOUNT',7700.00,NULL,108,100),(112,'Jose Manuel','Urman','JMURMAN','515.124.4469','1998-03-07','FI_ACCOUNT',7800.00,NULL,108,100),(113,'Luis','Popp','LPOPP','515.124.4567','1999-12-07','FI_ACCOUNT',6900.00,NULL,108,100),(114,'Den','Raphaely','DRAPHEAL','515.127.4561','1994-12-07','PU_MAN',11000.00,NULL,100,30),(115,'Alexander','Khoo','AKHOO','515.127.4562','1995-05-18','PU_CLERK',3100.00,NULL,114,30),(116,'Shelli','Baida','SBAIDA','515.127.4563','1997-12-24','PU_CLERK',2900.00,NULL,114,30),(117,'Sigal','Tobias','STOBIAS','515.127.4564','1997-07-24','PU_CLERK',2800.00,NULL,114,30),(118,'Guy','Himuro','GHIMURO','515.127.4565','1998-11-15','PU_CLERK',2600.00,NULL,114,30),(119,'Karen','Colmenares','KCOLMENA','515.127.4566','1999-08-10','PU_CLERK',2500.00,NULL,114,30),(120,'Matthew','Weiss','MWEISS','650.123.1234','1996-07-18','ST_MAN',8000.00,NULL,100,50),(121,'Adam','Fripp','AFRIPP','650.123.2234','1997-04-10','ST_MAN',8200.00,NULL,100,50),(122,'Payam','Kaufling','PKAUFLIN','650.123.3234','1995-05-01','ST_MAN',7900.00,NULL,100,50),(123,'Shanta','Vollman','SVOLLMAN','650.123.4234','1997-10-10','ST_MAN',6500.00,NULL,100,50),(124,'Kevin','Mourgos','KMOURGOS','650.123.5234','1999-11-16','ST_MAN',5800.00,NULL,100,50),(125,'Julia','Nayer','JNAYER','650.124.1214','1997-07-16','ST_CLERK',3200.00,NULL,120,50),(126,'Irene','Mikkilineni','IMIKKILI','650.124.1224','1998-09-28','ST_CLERK',2700.00,NULL,120,50),(127,'James','Landry','JLANDRY','650.124.1334','1999-01-14','ST_CLERK',2400.00,NULL,120,50),(128,'Steven','Markle','SMARKLE','650.124.1434','2000-03-08','ST_CLERK',2200.00,NULL,120,50),(129,'Laura','Bissot','LBISSOT','650.124.5234','1997-08-20','ST_CLERK',3300.00,NULL,121,50),(130,'Mozhe','Atkinson','MATKINSO','650.124.6234','1997-10-30','ST_CLERK',2800.00,NULL,121,50),(131,'James','Marlow','JAMRLOW','650.124.7234','1997-02-16','ST_CLERK',2500.00,NULL,121,50),(132,'TJ','Olson','TJOLSON','650.124.8234','1999-04-10','ST_CLERK',2100.00,NULL,121,50),(133,'Jason','Mallin','JMALLIN','650.127.1934','1996-06-14','ST_CLERK',3300.00,NULL,122,50),(134,'Michael','Rogers','MROGERS','650.127.1834','1998-08-26','ST_CLERK',2900.00,NULL,122,50),(135,'Ki','Gee','KGEE','650.127.1734','1999-12-12','ST_CLERK',2400.00,NULL,122,50),(136,'Hazel','Philtanker','HPHILTAN','650.127.1634','2000-02-06','ST_CLERK',2200.00,NULL,122,50),(137,'Renske','Ladwig','RLADWIG','650.121.1234','1995-07-14','ST_CLERK',3600.00,NULL,123,50),(138,'Stephen','Stiles','SSTILES','650.121.2034','1997-10-26','ST_CLERK',3200.00,NULL,123,50),(139,'John','Seo','JSEO','650.121.2019','1998-02-12','ST_CLERK',2700.00,NULL,123,50),(140,'Joshua','Patel','JPATEL','650.121.1834','1998-04-06','ST_CLERK',2500.00,NULL,123,50),(141,'Trenna','Rajs','TRAJS','650.121.8009','1995-10-17','ST_CLERK',3500.00,NULL,124,50),(142,'Curtis','Davies','CDAVIES','650.121.2994','1997-01-29','ST_CLERK',3100.00,NULL,124,50),(143,'Randall','Matos','RMATOS','650.121.2874','1998-03-15','ST_CLERK',2600.00,NULL,124,50),(144,'Peter','Vargas','PVARGAS','650.121.2004','1998-07-09','ST_CLERK',2500.00,NULL,124,50),(145,'John','Russell','JRUSSEL','011.44.1344.429268','1996-10-01','SA_MAN',14000.00,0.40,100,80),(146,'Karen','Partners','KPARTNER','011.44.1344.467268','1997-01-05','SA_MAN',13500.00,0.30,100,80),(147,'Alberto','Errazuriz','AERRAZUR','011.44.1344.429278','1997-03-10','SA_MAN',12000.00,0.30,100,80),(148,'Gerald','Cambrault','GCAMBRAU','011.44.1344.619268','1999-10-15','SA_MAN',11000.00,0.30,100,80),(149,'Eleni','Zlotkey','EZLOTKEY','011.44.1344.429018','2000-01-29','SA_MAN',10500.00,0.20,100,80),(150,'Peter','Tucker','PTUCKER','011.44.1344.129268','1997-01-30','SA_REP',10000.00,0.30,145,80),(151,'David','Bernstein','DBERNSTE','011.44.1344.345268','1997-03-24','SA_REP',9500.00,0.25,145,80),(152,'Peter','Hall','PHALL','011.44.1344.478968','1997-08-20','SA_REP',9000.00,0.25,145,80),(153,'Christopher','Olsen','COLSEN','011.44.1344.498718','1998-03-30','SA_REP',8000.00,0.20,145,80),(154,'Nanette','Cambrault','NCAMBRAU','011.44.1344.987668','1998-12-09','SA_REP',7500.00,0.20,145,80),(155,'Oliver','Tuvault','OTUVAULT','011.44.1344.486508','1999-11-23','SA_REP',7000.00,0.15,145,80),(156,'Janette','King','JKING','011.44.1345.429268','1996-01-30','SA_REP',10000.00,0.35,146,80),(157,'Patrick','Sully','PSULLY','011.44.1345.929268','1996-03-04','SA_REP',9500.00,0.35,146,80),(158,'Allan','McEwen','AMCEWEN','011.44.1345.829268','1996-08-01','SA_REP',9000.00,0.35,146,80),(159,'Lindsey','Smith','LSMITH','011.44.1345.729268','1997-03-10','SA_REP',8000.00,0.30,146,80),(160,'Louise','Doran','LDORAN','011.44.1345.629268','1997-12-15','SA_REP',7500.00,0.30,146,80),(161,'Sarath','Sewall','SSEWALL','011.44.1345.529268','1998-11-03','SA_REP',7000.00,0.25,146,80),(162,'Clara','Vishney','CVISHNEY','011.44.1346.129268','1997-11-11','SA_REP',10500.00,0.25,147,80),(163,'Danielle','Greene','DGREENE','011.44.1346.229268','1999-03-19','SA_REP',9500.00,0.15,147,80),(164,'Mattea','Marvins','MMARVINS','011.44.1346.329268','2000-01-24','SA_REP',7200.00,0.10,147,80),(165,'David','Lee','DLEE','011.44.1346.529268','2000-02-23','SA_REP',6800.00,0.10,147,80),(166,'Sundar','Ande','SANDE','011.44.1346.629268','2000-03-24','SA_REP',6400.00,0.10,147,80),(167,'Amit','Banda','ABANDA','011.44.1346.729268','2000-04-21','SA_REP',6200.00,0.10,147,80),(168,'Lisa','Ozer','LOZER','011.44.1343.929268','1997-03-11','SA_REP',11500.00,0.25,148,80),(169,'Harrison','Bloom','HBLOOM','011.44.1343.829268','1998-03-23','SA_REP',10000.00,0.20,148,80),(170,'Tayler','Fox','TFOX','011.44.1343.729268','1998-01-24','SA_REP',9600.00,0.20,148,80),(171,'William','Smith','WSMITH','011.44.1343.629268','1999-02-23','SA_REP',7400.00,0.15,148,80),(172,'Elizabeth','Bates','EBATES','011.44.1343.529268','1999-03-24','SA_REP',7300.00,0.15,148,80),(173,'Sundita','Kumar','SKUMAR','011.44.1343.329268','2000-04-21','SA_REP',6100.00,0.10,148,80),(174,'Ellen','Abel','EABEL','011.44.1644.429267','1996-05-11','SA_REP',11000.00,0.30,149,80),(175,'Alyssa','Hutton','AHUTTON','011.44.1644.429266','1997-03-19','SA_REP',8800.00,0.25,149,80),(176,'Jonathon','Taylor','JTAYLOR','011.44.1644.429265','1998-03-24','SA_REP',8600.00,0.20,149,80),(177,'Jack','Livingston','JLIVINGS','011.44.1644.429264','1998-04-23','SA_REP',8400.00,0.20,149,80),(178,'Kimberely','Grant','KGRANT','011.44.1644.429263','1999-05-24','SA_REP',7000.00,0.15,149,NULL),(179,'Charles','Johnson','CJOHNSON','011.44.1644.429262','2000-01-04','SA_REP',6200.00,0.10,149,80),(180,'Winston','Taylor','WTAYLOR','650.507.9876','1998-01-24','SH_CLERK',3200.00,NULL,120,50),(181,'Jean','Fleaur','JFLEAUR','650.507.9877','1998-02-23','SH_CLERK',3100.00,NULL,120,50),(182,'Martha','Sullivan','MSULLIVA','650.507.9878','1999-06-21','SH_CLERK',2500.00,NULL,120,50),(183,'Girard','Geoni','GGEONI','650.507.9879','2000-02-03','SH_CLERK',2800.00,NULL,120,50),(184,'Nandita','Sarchand','NSARCHAN','650.509.1876','1996-01-27','SH_CLERK',4200.00,NULL,121,50),(185,'Alexis','Bull','ABULL','650.509.2876','1997-02-20','SH_CLERK',4100.00,NULL,121,50),(186,'Julia','Dellinger','JDELLING','650.509.3876','1998-06-24','SH_CLERK',3400.00,NULL,121,50),(187,'Anthony','Cabrio','ACABRIO','650.509.4876','1999-02-07','SH_CLERK',3000.00,NULL,121,50),(188,'Kelly','Chung','KCHUNG','650.505.1876','1997-06-14','SH_CLERK',3800.00,NULL,122,50),(189,'Jennifer','Dilly','JDILLY','650.505.2876','1997-08-13','SH_CLERK',3600.00,NULL,122,50),(190,'Timothy','Gates','TGATES','650.505.3876','1998-07-11','SH_CLERK',2900.00,NULL,122,50),(191,'Randall','Perkins','RPERKINS','650.505.4876','1999-12-19','SH_CLERK',2500.00,NULL,122,50),(192,'Sarah','Bell','SBELL','650.501.1876','1996-02-04','SH_CLERK',4000.00,NULL,123,50),(193,'Britney','Everett','BEVERETT','650.501.2876','1997-03-03','SH_CLERK',3900.00,NULL,123,50),(194,'Samuel','McCain','SMCCAIN','650.501.3876','1998-07-01','SH_CLERK',3200.00,NULL,123,50),(195,'Vance','Jones','VJONES','650.501.4876','1999-03-17','SH_CLERK',2800.00,NULL,123,50),(196,'Alana','Walsh','AWALSH','650.507.9811','1998-04-24','SH_CLERK',3100.00,NULL,124,50),(197,'Kevin','Feeney','KFEENEY','650.507.9822','1998-05-23','SH_CLERK',3000.00,NULL,124,50),(198,'Donald','OConnell','DOCONNEL','650.507.9833','1999-06-21','SH_CLERK',2600.00,NULL,124,50),(199,'Douglas','Grant','DGRANT','650.507.9844','2000-01-13','SH_CLERK',2600.00,NULL,124,50),(200,'Jennifer','Whalen','JWHALEN','515.123.4444','1987-09-17','AD_ASST',4400.00,NULL,101,10),(201,'Michael','Hartstein','MHARTSTE','515.123.5555','1996-02-17','MK_MAN',13000.00,NULL,100,20),(202,'Pat','Fay','PFAY','603.123.6666','1997-08-17','MK_REP',6000.00,NULL,201,20),(203,'Susan','Mavris','SMAVRIS','515.123.7777','1994-06-07','HR_REP',6500.00,NULL,101,40),(204,'Hermann','Baer','HBAER','515.123.8888','1994-06-07','PR_REP',10000.00,NULL,101,70),(205,'Shelley','Higgins','SHIGGINS','515.123.8080','1994-06-07','AC_MGR',12000.00,NULL,101,110),(206,'William','Gietz','WGIETZ','515.123.8181','1994-06-07','AC_ACCOUNT',8300.00,NULL,205,110); - -/*Table structure for table `job_grades` */ - -DROP TABLE IF EXISTS `job_grades`; - -CREATE TABLE `job_grades` ( - `grade_level` varchar(3) DEFAULT NULL, - `lowest_sal` int(11) DEFAULT NULL, - `highest_sal` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `job_grades` */ - -insert into `job_grades`(`grade_level`,`lowest_sal`,`highest_sal`) values ('A',1000,2999),('B',3000,5999),('C',6000,9999),('D',10000,14999),('E',15000,24999),('F',25000,40000); - -/*Table structure for table `job_history` */ - -DROP TABLE IF EXISTS `job_history`; - -CREATE TABLE `job_history` ( - `employee_id` int(6) NOT NULL, - `start_date` date NOT NULL, - `end_date` date NOT NULL, - `job_id` varchar(10) NOT NULL, - `department_id` int(4) DEFAULT NULL, - PRIMARY KEY (`employee_id`,`start_date`), - UNIQUE KEY `jhist_emp_id_st_date_pk` (`employee_id`,`start_date`), - KEY `jhist_job_fk` (`job_id`), - KEY `jhist_dept_fk` (`department_id`), - CONSTRAINT `jhist_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`), - CONSTRAINT `jhist_emp_fk` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`employee_id`), - CONSTRAINT `jhist_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `job_history` */ - -insert into `job_history`(`employee_id`,`start_date`,`end_date`,`job_id`,`department_id`) values (101,'1989-09-21','1993-10-27','AC_ACCOUNT',110),(101,'1993-10-28','1997-03-15','AC_MGR',110),(102,'1993-01-13','1998-07-24','IT_PROG',60),(114,'1998-03-24','1999-12-31','ST_CLERK',50),(122,'1999-01-01','1999-12-31','ST_CLERK',50),(176,'1998-03-24','1998-12-31','SA_REP',80),(176,'1999-01-01','1999-12-31','SA_MAN',80),(200,'1987-09-17','1993-06-17','AD_ASST',90),(200,'1994-07-01','1998-12-31','AC_ACCOUNT',90),(201,'1996-02-17','1999-12-19','MK_REP',20); - -/*Table structure for table `jobs` */ - -DROP TABLE IF EXISTS `jobs`; - -CREATE TABLE `jobs` ( - `job_id` varchar(10) NOT NULL DEFAULT '', - `job_title` varchar(35) NOT NULL, - `min_salary` int(6) DEFAULT NULL, - `max_salary` int(6) DEFAULT NULL, - PRIMARY KEY (`job_id`), - UNIQUE KEY `job_id_pk` (`job_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `jobs` */ - -insert into `jobs`(`job_id`,`job_title`,`min_salary`,`max_salary`) values ('AC_ACCOUNT','Public Accountant',4200,9000),('AC_MGR','Accounting Manager',8200,16000),('AD_ASST','Administration Assistant',3000,6000),('AD_PRES','President',20000,40000),('AD_VP','Administration Vice President',15000,30000),('FI_ACCOUNT','Accountant',4200,9000),('FI_MGR','Finance Manager',8200,16000),('HR_REP','Human Resources Representative',4000,9000),('IT_PROG','Programmer',4000,10000),('MK_MAN','Marketing Manager',9000,15000),('MK_REP','Marketing Representative',4000,9000),('PR_REP','Public Relations Representative',4500,10500),('PU_CLERK','Purchasing Clerk',2500,5500),('PU_MAN','Purchasing Manager',8000,15000),('SA_MAN','Sales Manager',10000,20000),('SA_REP','Sales Representative',6000,12000),('SH_CLERK','Shipping Clerk',2500,5500),('ST_CLERK','Stock Clerk',2000,5000),('ST_MAN','Stock Manager',5500,8500); - -/*Table structure for table `locations` */ - -DROP TABLE IF EXISTS `locations`; - -CREATE TABLE `locations` ( - `location_id` int(4) NOT NULL DEFAULT '0', - `street_address` varchar(40) DEFAULT NULL, - `postal_code` varchar(12) DEFAULT NULL, - `city` varchar(30) NOT NULL, - `state_province` varchar(25) DEFAULT NULL, - `country_id` char(2) DEFAULT NULL, - PRIMARY KEY (`location_id`), - UNIQUE KEY `loc_id_pk` (`location_id`), - KEY `loc_c_id_fk` (`country_id`), - CONSTRAINT `loc_c_id_fk` FOREIGN KEY (`country_id`) REFERENCES `countries` (`country_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `locations` */ - -insert into `locations`(`location_id`,`street_address`,`postal_code`,`city`,`state_province`,`country_id`) values (1000,'1297 Via Cola di Rie','00989','Roma',NULL,'IT'),(1100,'93091 Calle della Testa','10934','Venice',NULL,'IT'),(1200,'2017 Shinjuku-ku','1689','Tokyo','Tokyo Prefecture','JP'),(1300,'9450 Kamiya-cho','6823','Hiroshima',NULL,'JP'),(1400,'2014 Jabberwocky Rd','26192','Southlake','Texas','US'),(1500,'2011 Interiors Blvd','99236','South San Francisco','California','US'),(1600,'2007 Zagora St','50090','South Brunswick','New Jersey','US'),(1700,'2004 Charade Rd','98199','Seattle','Washington','US'),(1800,'147 Spadina Ave','M5V 2L7','Toronto','Ontario','CA'),(1900,'6092 Boxwood St','YSW 9T2','Whitehorse','Yukon','CA'),(2000,'40-5-12 Laogianggen','190518','Beijing',NULL,'CN'),(2100,'1298 Vileparle (E)','490231','Bombay','Maharashtra','IN'),(2200,'12-98 Victoria Street','2901','Sydney','New South Wales','AU'),(2300,'198 Clementi North','540198','Singapore',NULL,'SG'),(2400,'8204 Arthur St',NULL,'London',NULL,'UK'),(2500,'Magdalen Centre, The Oxford Science Park','OX9 9ZB','Oxford','Oxford','UK'),(2600,'9702 Chester Road','09629850293','Stretford','Manchester','UK'),(2700,'Schwanthalerstr. 7031','80925','Munich','Bavaria','DE'),(2800,'Rua Frei Caneca 1360 ','01307-002','Sao Paulo','Sao Paulo','BR'),(2900,'20 Rue des Corps-Saints','1730','Geneva','Geneve','CH'),(3000,'Murtenstrasse 921','3095','Bern','BE','CH'),(3100,'Pieter Breughelstraat 837','3029SK','Utrecht','Utrecht','NL'),(3200,'Mariano Escobedo 9991','11932','Mexico City','Distrito Federal,','MX'); - -/*Table structure for table `order` */ - -DROP TABLE IF EXISTS `order`; - -CREATE TABLE `order` ( - `order_id` int(11) DEFAULT NULL, - `order_name` varchar(15) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `order` */ - -insert into `order`(`order_id`,`order_name`) values (1,'shkstart'),(2,'tomcat'),(3,'dubbo'); - -/*Table structure for table `regions` */ - -DROP TABLE IF EXISTS `regions`; - -CREATE TABLE `regions` ( - `region_id` int(11) NOT NULL, - `region_name` varchar(25) DEFAULT NULL, - PRIMARY KEY (`region_id`), - UNIQUE KEY `reg_id_pk` (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `regions` */ - -insert into `regions`(`region_id`,`region_name`) values (1,'Europe'),(2,'Americas'),(3,'Asia'),(4,'Middle East and Africa'); - -/*Table structure for table `emp_details_view` */ - -DROP TABLE IF EXISTS `emp_details_view`; - -/*!50001 DROP VIEW IF EXISTS `emp_details_view` */; -/*!50001 DROP TABLE IF EXISTS `emp_details_view` */; - -/*!50001 CREATE TABLE `emp_details_view`( - `employee_id` int(6) , - `job_id` varchar(10) , - `manager_id` int(6) , - `department_id` int(4) , - `location_id` int(4) , - `country_id` char(2) , - `first_name` varchar(20) , - `last_name` varchar(25) , - `salary` double(8,2) , - `commission_pct` double(2,2) , - `department_name` varchar(30) , - `job_title` varchar(35) , - `city` varchar(30) , - `state_province` varchar(25) , - `country_name` varchar(40) , - `region_name` varchar(25) -)*/; - -/*View structure for view emp_details_view */ - -/*!50001 DROP TABLE IF EXISTS `emp_details_view` */; -/*!50001 DROP VIEW IF EXISTS `emp_details_view` */; - -/*!50001 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `emp_details_view` AS select `e`.`employee_id` AS `employee_id`,`e`.`job_id` AS `job_id`,`e`.`manager_id` AS `manager_id`,`e`.`department_id` AS `department_id`,`d`.`location_id` AS `location_id`,`l`.`country_id` AS `country_id`,`e`.`first_name` AS `first_name`,`e`.`last_name` AS `last_name`,`e`.`salary` AS `salary`,`e`.`commission_pct` AS `commission_pct`,`d`.`department_name` AS `department_name`,`j`.`job_title` AS `job_title`,`l`.`city` AS `city`,`l`.`state_province` AS `state_province`,`c`.`country_name` AS `country_name`,`r`.`region_name` AS `region_name` from (((((`employees` `e` join `departments` `d`) join `jobs` `j`) join `locations` `l`) join `countries` `c`) join `regions` `r`) where ((`e`.`department_id` = `d`.`department_id`) and (`d`.`location_id` = `l`.`location_id`) and (`l`.`country_id` = `c`.`country_id`) and (`c`.`region_id` = `r`.`region_id`) and (`j`.`job_id` = `e`.`job_id`)) */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - -#第14章_视图的课后练习 - -#练习1: -#1. 使用表emps创建视图employee_vu, -#其中包括姓名(LAST_NAME),员工号(EMPLOYEE_ID),部门号(DEPARTMENT_ID) - -CREATE view employee_vu(姓名,员工号,部门号) as SELECT LAST_NAME,EMPLOYEE_ID,DEPARTMENT_ID from employees; - - -#2. 显示视图的结构 - -DESC employee_vu; -#3. 查询视图中的全部内容 -SELECT * FROM employee_vu; - -#4. 将视图中的数据限定在部门号是80的范围内 -SELECT *FROM employee_vu WHERE 部门号 BETWEEN 0 AND 80; - -#练习2: - - -#1. 创建视图emp_v1,要求查询电话号码以‘011’开头的员工姓名和工资、邮箱 -CREATE view emp_v1 AS SELECT * FROM employees; - -SELECT first_name 员工姓名,salary 工资,email 邮箱 FROM emp_v1 WHERE phone_number LIKE '011%'; - -#2. 要求将视图 emp_v1 修改为查询电话号码以‘011’开头的并且邮箱中包含 e 字符 -#的员工姓名和邮箱、电话号码,工资 - SELECT first_name 姓名,salary 工资,email 邮箱 FROM emp_v1 WHERE phone_number LIKE '011%'AND email like '%e%'; - -#3. 向 emp_v1 插入一条记录,是否可以? -NO - - - - - - -#4. 修改emp_v1中员工的工资,每人涨薪1000 -UPDATE emp_v1 set salary=salary + 1000; -#5. 删除emp_v1中姓名为Olsen的员工 -delete FROM emp_v1 WHERE last_name = 'Olsen'; - -#6. 创建视图emp_v2,要求查询部门的最高工资高于 12000 的部门id和其最高工资 -CREATE VIEW emp_v2 as SELECT max(salary),d.department_id FROM employees e,departments d WHERE e.department_id=d.department_id AND salary>12000 GROUP BY department_id; - - - -#7. 向 emp_v2 中插入一条记录,是否可以? - - - - -#8. 删除刚才的emp_v2 和 emp_v1 -DROP VIEW if EXISTS emp_v1; \ No newline at end of file diff --git "a/11 \351\202\271\344\272\250\344\274\237/9.7\347\254\224\350\256\260.md" "b/11 \351\202\271\344\272\250\344\274\237/9.7\347\254\224\350\256\260.md" deleted file mode 100644 index 2d23f53..0000000 --- "a/11 \351\202\271\344\272\250\344\274\237/9.7\347\254\224\350\256\260.md" +++ /dev/null @@ -1,35 +0,0 @@ -## 9.5 - - - -今天学到了表之间的关系 - -1.一对一的关系 类如一个学生(学号,编号,身份证寒外键),只有一个身份证(身份证号) -就可以将其中任一表中的主键,放到另一个表当外健 -2.一对多的关系(多对一的关系)类如一个班级 (班级编号),有多个学生(学生编号)班级编号 -将一所在的表的主键,放到多的表当外键 -3.多对多的关系:一个学生可以选修多门课程,一门课程可以被多个学生选修 -需求分析 - -## 9.6 - -学到了ER图 - -(1)ER图的概念 - -用visio这个软件来创造概念 - -ER图:实体关系图,简记E-R图,是指以实体、关系、属性三个基木概念概括数据的基木结构,从而描 -(2)要素 -3要素:实体(表)、属性(字段)和关系(类似外键 -(3)表示 -实体型 -属性: -用椭圆形或圆角矩形表示,与相应的实体连接起来; -主属性名称下加下划线; -联系(关系): -用菱形表示,姜形框内写明联系的名称 -用线与实体相连,可标上联系的类型 -联系也可以有自己的属性 -用矩形表示,矩形框内写明实体名; - diff --git "a/11 \351\202\271\344\272\250\344\274\237/9.7\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.md" "b/11 \351\202\271\344\272\250\344\274\237/9.7\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.md" deleted file mode 100644 index 0c49049..0000000 --- "a/11 \351\202\271\344\272\250\344\274\237/9.7\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.md" +++ /dev/null @@ -1,70 +0,0 @@ -``` -CREATE DATABASE student charset utf8; -use student; - - 院系表 -CREATE TABLE faculties( -faculties_id INT PRIMARY KEY, -- 院系编号 -faculties_name VARCHAR(10) -- 院系名称 -); - - 专业表 -CREATE TABLE specialized( -faculties_id INT, -- 院系编号 -specialized_id INT PRIMARY KEY, -- 专业编号 -specialized_name VARCHAR(10), -- 专业名称 -FOREIGN KEY (faculties_id) REFERENCES faculties (faculties_id) -- 外键 -); - - 班级表 -CREATE TABLE class ( -specialized_id INT, -- 专业编号 -class_id INT PRIMARY KEY, -- 班级编号 -class_name VARCHAR(10), -- 班级名称 -class_year int, -- 年段 -FOREIGN KEY (specialized_id) REFERENCES specialized (specialized_id) -- 外键 -); - - 学生表 -CREATE TABLE student ( -class_id INT, -- 班级编号 -student_id INT PRIMARY KEY, -- 学号 -student_name VARCHAR(10), -- 姓名 -student_sex char, -- 性别 -FOREIGN KEY (class_id) REFERENCES class (class_id) -- 外键 -); - - 教师表 -CREATE TABLE teacher( -teacher_id INT PRIMARY KEY, -- 教师编号 -teacher_name VARCHAR(10), -- 姓名 -teacher_sex char -- 性别 -); - - 课表 -CREATE TABLE schedul( -schedul_id INT PRIMARY KEY, -- 课表编号 -schedul_week VARCHAR(10), -- 星期 -schedul_section VARCHAR(10) -- 节次 -); - - 课程表 -CREATE TABLE course( -teacher_id INT, -- 教师工号 -schedul_id INT, -- 课表编号 -course_id INT PRIMARY KEY, -- 课程编号 -course_name VARCHAR(10), -- 课程名称 -course_credits int, -- 学分 -FOREIGN KEY (teacher_id) REFERENCES teacher (teacher_id), -- 外键 -FOREIGN KEY (schedul_id) REFERENCES schedul (schedul_id) -- 外键 -); - - 教室表 -CREATE TABLE classroom( -classroom_id INT PRIMARY KEY, -- 教室编号 -classroom_name VARCHAR(10), -- 名称 -classroom_add VARCHAR(10) -- 地址 -); - - -``` \ No newline at end of file diff --git "a/11 \351\202\271\344\272\250\344\274\237/9.8\347\254\224\350\256\260.md" "b/11 \351\202\271\344\272\250\344\274\237/9.8\347\254\224\350\256\260.md" deleted file mode 100644 index 5679407..0000000 --- "a/11 \351\202\271\344\272\250\344\274\237/9.8\347\254\224\350\256\260.md" +++ /dev/null @@ -1,48 +0,0 @@ -## 9.5 - - - -今天学到了表之间的关系 - -1.一对一的关系 类如一个学生(学号,编号,身份证寒外键),只有一个身份证(身份证号) -就可以将其中任一表中的主键,放到另一个表当外健 -2.一对多的关系(多对一的关系)类如一个班级 (班级编号),有多个学生(学生编号)班级编号 -将一所在的表的主键,放到多的表当外键 -3.多对多的关系:一个学生可以选修多门课程,一门课程可以被多个学生选修 -需求分析 - -## 9.6 - -学到了ER图 - -(1)ER图的概念 - -用visio这个软件来创造概念 - -ER图:实体关系图,简记E-R图,是指以实体、关系、属性三个基木概念概括数据的基木结构,从而描 -(2)要素 -3要素:实体(表)、属性(字段)和关系(类似外键 -(3)表示 -实体型 -属性: -用椭圆形或圆角矩形表示,与相应的实体连接起来; -主属性名称下加下划线; -联系(关系): -用菱形表示,姜形框内写明联系的名称 -用线与实体相连,可标上联系的类型 -联系也可以有自己的属性 -用矩形表示,矩形框内写明实体名; - -## 9.8 - -学了数据库的范式 - -第一范式:要求之端的内容 不可在分割为的是保证数据的原子性 - -第二范式:在满足第一是的基础上要求非组建字段要完全依赖主键(非主键要完全依赖整个联合主键)不能依赖部分 - -第三范式 :满足第二范式的前提下 要求非主键属性要求直接依赖于主键 - -建表 - -10.先做需求分析。明确需要的数据 diff --git "a/11 \351\202\271\344\272\250\344\274\237/\345\214\273\351\231\242.md" "b/11 \351\202\271\344\272\250\344\274\237/\345\214\273\351\231\242.md" deleted file mode 100644 index 03453fd..0000000 --- "a/11 \351\202\271\344\272\250\344\274\237/\345\214\273\351\231\242.md" +++ /dev/null @@ -1,157 +0,0 @@ -## 医院 - - - -``` - -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023/9/13 21:56:43 */ -/*==============================================================*/ - - -drop table if exists doctor; - -drop table if exists drug; - -drop table if exists hospital; - -drop table if exists pharmacy; - -drop table if exists subject; - -drop table if exists 拿药; - -drop table if exists 病人; - -drop table if exists 诊断; - -drop table if exists 诊断表; - -/*==============================================================*/ -/* Table: doctor */ -/*==============================================================*/ -create table doctor -( - ho_id int not null, - ho_name char(255) not null, - Attribute_9 char(10), - primary key (ho_id) -); - -/*==============================================================*/ -/* Table: drug */ -/*==============================================================*/ -create table drug -( - drug_names char(255) not null, - dug_id int not null, - phar_id int, - primary key (dug_id) -); - -/*==============================================================*/ -/* Table: hospital */ -/*==============================================================*/ -create table hospital -( - hos_name char(255) not null, - hos_id char(255) not null, - sub_id int not null, - primary key (hos_id) -); - -/*==============================================================*/ -/* Table: pharmacy */ -/*==============================================================*/ -create table pharmacy -( - phar_id int not null, - hos_id char(255) not null, - phar_name char(255) not null, - primary key (phar_id) -); - -/*==============================================================*/ -/* Table: subject */ -/*==============================================================*/ -create table subject -( - sub_id int not null, - ho_id int not null, - sub_name char(255) not null, - primary key (sub_id) -); - -/*==============================================================*/ -/* Table: 拿药 */ -/*==============================================================*/ -create table 拿药 -( - diagnostic_list int not null, - pat_id int not null, - primary key (diagnostic_list, pat_id) -); - -/*==============================================================*/ -/* Table: 病人 */ -/*==============================================================*/ -create table 病人 -( - pat_id int not null, - pat_name char(255) not null, - pat_sex char(10) not null, - primary key (pat_id) -); - -/*==============================================================*/ -/* Table: 诊断 */ -/*==============================================================*/ -create table 诊断 -( - pat_id int not null, - ho_id int not null, - primary key (pat_id, ho_id) -); - -/*==============================================================*/ -/* Table: 诊断表 */ -/*==============================================================*/ -create table 诊断表 -( - diagnostic_list int not null, - dug_id int not null, - "Diagnostic table_content" char(255) not null, - primary key (diagnostic_list) -); - -alter table drug add constraint FK_Relationship_5 foreign key (phar_id) - references pharmacy (phar_id) on delete restrict on update restrict; - -alter table hospital add constraint FK_Relationship_10 foreign key (sub_id) - references subject (sub_id) on delete restrict on update restrict; - -alter table pharmacy add constraint FK_Relationship_4 foreign key (hos_id) - references hospital (hos_id) on delete restrict on update restrict; - -alter table subject add constraint FK_Relationship_9 foreign key (ho_id) - references doctor (ho_id) on delete restrict on update restrict; - -alter table 拿药 add constraint FK_拿药 foreign key (diagnostic_list) - references 诊断表 (diagnostic_list) on delete restrict on update restrict; - -alter table 拿药 add constraint FK_拿药2 foreign key (pat_id) - references 病人 (pat_id) on delete restrict on update restrict; - -alter table 诊断 add constraint FK_诊断 foreign key (pat_id) - references 病人 (pat_id) on delete restrict on update restrict; - -alter table 诊断 add constraint FK_诊断2 foreign key (ho_id) - references doctor (ho_id) on delete restrict on update restrict; - -alter table 诊断表 add constraint FK_Relationship_7 foreign key (dug_id) - references drug (dug_id) on delete restrict on update restrict; - - - -``` \ No newline at end of file diff --git "a/11 \351\202\271\344\272\250\344\274\237/\346\261\275\350\275\246\346\237\245\350\257\242.md" "b/11 \351\202\271\344\272\250\344\274\237/\346\261\275\350\275\246\346\237\245\350\257\242.md" deleted file mode 100644 index b3da26d..0000000 --- "a/11 \351\202\271\344\272\250\344\274\237/\346\261\275\350\275\246\346\237\245\350\257\242.md" +++ /dev/null @@ -1,89 +0,0 @@ -/*==============================================================*/ -/* DBMS name: MySQL 5.0 */ -/* Created on: 2023-09-15 08:48:14 */ -/*==============================================================*/ - - -drop table if exists automobile; - -drop table if exists client; - -drop table if exists sale; - -drop table if exists salesman; - -/*==============================================================*/ -/* Table: automobile */ -/*==============================================================*/ -create table automobile -( - auto_type char(20) not null, - auto_id int not null, - auto_price int not null, - primary key (auto_id) -); - -/*==============================================================*/ -/* Table: client */ -/*==============================================================*/ -create table client -( - client_name char(20) not null, - client_id int not null auto_increment, - client_sex char(10) not null, - client_number int not null, - primary key (client_id) -); - -/*==============================================================*/ -/* Table: sale */ -/*==============================================================*/ -create table sale -( - salec_id int not null, - auto_id int, - client_id int, - sale_id int, - salec_date char(10) not null, - primary key (salec_id) -); - -/*==============================================================*/ -/* Table: salesman */ -/*==============================================================*/ -create table salesman -( - sale_id int not null auto_increment, - sale_name char(20) not null, - sale_sex char(5) not null, - sale_number int not null, - primary key (sale_id) -); - -alter table sale add constraint FK_Relationship_2 foreign key (sale_id) - references salesman (sale_id) on delete restrict on update restrict; - -alter table sale add constraint FK_Relationship_3 foreign key (client_id) - references client (client_id) on delete restrict on update restrict; - -alter table sale add constraint FK_Relationship_4 foreign key (auto_id) - references automobile (auto_id) on delete restrict on update restrict; --- 1.ѯضԱۼ¼ -SELECT * from contract a LEFT JOIN salesman b on a.salesman_id=b.salesman_id WHERE salesman_name=""; - -- 2.ۼ¼ۼ۸ߵ - SELECT car_type , contract_money FROM contract a LEFT JOIN car b on a.car_id = b.car_id WHERE contract_money in( SELECT max(contract_money) FROM contract ) ; - - -- 3.ͳijԱܶ -SELECT salesman_name Ա,sum(contract_money) ܶ from contract a LEFT JOIN salesman b on a.salesman_id=b.salesman_id WHERE salesman_name in (SELECT salesman_name FROM salesman WHERE salesman_name = ""); - - -- 4.ݿͻϢѯ乺 - SELECT client_name,car_type FROM client a LEFT JOIN contract b on a.client_id = b.client_id LEFT JOIN car c on b.car_id = c.car_id; - -- 5.ضƷͳÿƷƵ۶ - SELECT car_type Ʒ,sum(contract_money) ܶ,count(c.car_id) FROM contract b LEFT JOIN car c on b.car_id = c.car_id GROUP BY car_type; - -- 6.ضڷΧڵЩ - SELECT * FROM contract a LEFT JOIN car c on a.car_id = c.car_id WHERE contract_date between "2022-10-1" and "2022-12-30"; - -- 7.ij͵ʷ - SELECT car_type,contract_date FROM contract a LEFT JOIN car c on a.car_id = c.car_id WHERE car_type = "µ" ; - -- 8.ͳÿԱ - SELECT salesman_name Ա, count(b.salesman_id) from contract a LEFT JOIN salesman b on a.salesman_id = b.salesman_id GROUP BY salesman_name; - diff --git "a/11 \351\202\271\344\272\250\344\274\237/\347\224\265\345\275\261.PNG" "b/11 \351\202\271\344\272\250\344\274\237/\347\224\265\345\275\261.PNG" deleted file mode 100644 index a96fdae316f7bdf1e42524e5c47e97dd0dd3abcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48407 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