1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [SQL] 2 00:00:02,000 --> 00:00:04,000 [CHRISTOPHER BARTHOLOMEW] [Harvard University] 3 00:00:04,000 --> 00:00:06,000 [THIS IS CS50] [CS50 TV] 4 00:00:07,950 --> 00:00:11,620 Takže, programátoři používají databáze jako nástroj pro ukládání a organizování 5 00:00:11,620 --> 00:00:13,620 naše přetrvávající údaje v tabulkách. 6 00:00:13,620 --> 00:00:18,960 To znamená, že vaše data jsou uložena na non-volatile mediánů jako je například pevný disk, 7 00:00:18,960 --> 00:00:22,940 a dokonce i když je počítač vypnutý, data se stále neporušené. 8 00:00:22,940 --> 00:00:29,530 A, jako programátoři, naše programy využívají databáze pro scénáře, jako je ukládání 9 00:00:29,530 --> 00:00:32,890 Informace o uživateli z webových formulářů, vzhlédl zásob, 10 00:00:32,890 --> 00:00:36,210 nebo aktualizaci informací o tom, co stránky zobrazují. 11 00:00:37,150 --> 00:00:40,070 Ale jak vlastně pracovat s naší databází, 12 00:00:40,070 --> 00:00:43,150 nebo co používáme ke čtení, ukládání, mazání, 13 00:00:43,150 --> 00:00:46,070 a aktualizovat své údaje v rámci těchto databázových tabulek? 14 00:00:47,280 --> 00:00:49,700 No, odpověď je, že používáme speciální typ databázového jazyka 15 00:00:49,700 --> 00:00:53,400 která spolupracuje přímo s našimi databázových tabulek. 16 00:00:53,400 --> 00:00:56,740 Je to jméno je Structured Query Language, 17 00:00:56,740 --> 00:00:58,740 [Structured Query Language] 18 00:00:58,740 --> 00:01:00,740 nebo co Mám na mysli, jak SQL. 19 00:01:00,740 --> 00:01:05,100 >> Nyní, [Se-Quel], nebo SQL, není programovací jazyk, 20 00:01:05,100 --> 00:01:08,580 ale místo toho, je to jazyk, který poskytuje standardní sadu příkazů 21 00:01:08,580 --> 00:01:13,520 načíst a manipulovat s daty z různých systémů pro správu databází. 22 00:01:13,520 --> 00:01:17,630 Pro účely CS50, půjdeme přes čtyři základní příkazy: 23 00:01:17,630 --> 00:01:21,210 vyberte, vložit, aktualizovat a mazat. 24 00:01:21,210 --> 00:01:26,230 Dále budeme používat databázi webové rozhraní phpMyAdmin, 25 00:01:26,230 --> 00:01:29,890 které instalován na zařízení psát naše příkazy SQL. 26 00:01:30,830 --> 00:01:33,050 Tak, aby vám pomůže si tyto příkazy, 27 00:01:33,050 --> 00:01:37,080 Přinesl jsem nějaké koláčky ve skříni, aby vám pomohl s našimi scénářů. 28 00:01:39,650 --> 00:01:42,210 Řekněme, že máte košíček na databázi, 29 00:01:42,210 --> 00:01:44,490 kam uložit všechny informace o vašem cupcakes. 30 00:01:44,490 --> 00:01:48,220 Nyní, může databáze obsahovat mnoho tabulek 31 00:01:48,220 --> 00:01:50,950 a tabulky sami mohou obsahovat mnoho sloupců. 32 00:01:50,950 --> 00:01:57,020 Uvnitř naší košíček databázi, máme tabulku s názvem cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 Tato tabulka bude použita k ukládání všech informací o cupcakes 34 00:02:00,500 --> 00:02:02,990 které jsou, dobře, ve své skříni. 35 00:02:02,990 --> 00:02:07,770 Sloupce, které jsou uvnitř tabulky představují atributy košíček. 36 00:02:07,770 --> 00:02:14,560 Například, je cupcake_cupboard sloupy jsou 37 00:02:14,560 --> 00:02:15,920 Cake ID, CakeType, CakeColor, a CakeIsNice. 38 00:02:15,920 --> 00:02:23,040 Tento boolean-napsaný sloupec se používá k určení, zda je koláč pěkný nebo ne hezké. 39 00:02:23,040 --> 00:02:26,560 Budeme začít s psaním příkazu SELECT. 40 00:02:26,560 --> 00:02:32,160 Vyberte příkazy se používají k načtení dat z určitého databázové tabulky. 41 00:02:32,160 --> 00:02:34,890 V tomto scénáři, chceme vědět všechno 42 00:02:34,890 --> 00:02:39,080 o všech cupcakes, které existují v naší skříni. 43 00:02:39,080 --> 00:02:48,670 Syntaxe k tomu je "Select" space star, nebo *, prostor od prostoru našeho stolu, 44 00:02:48,670 --> 00:02:52,050 který je cupcake_cupboard. 45 00:02:52,050 --> 00:02:54,640 Pojďme dál a vykonat,. 46 00:02:56,670 --> 00:03:00,140 >> Jak můžeme vidět, to všechno jsou cupcakes v naší skříni. 47 00:03:00,140 --> 00:03:05,110 Je důležité si uvědomit, že *, nebo hvězdičku, je divoká karta znak 48 00:03:05,110 --> 00:03:08,830 , který označuje shromažďování všech sloupců nějaké tabulce. 49 00:03:08,830 --> 00:03:13,650 Normálně, můžeme k určitému sloupec nebo sloupce 50 00:03:13,650 --> 00:03:16,950 nahrazením * se skutečným název sloupce. 51 00:03:16,950 --> 00:03:21,220 Chceme-li více sloupců, ale ne všechny, můžeme dosáhnout 52 00:03:21,220 --> 00:03:25,620 psaním názvy sloupců se vymezují jednotlivé sloupce čárkou. 53 00:03:25,620 --> 00:03:28,620 Například, pojďme Nezískáváme CakeId a CakeType v cupcake_cupboard tabulce. 54 00:03:28,620 --> 00:03:38,370 Syntaxe k tomu je: SELECT prostor CakeID čárkou 55 00:03:38,370 --> 00:03:44,370 CakeType prostor od našeho stolu, cupcake_cupboard. 56 00:03:44,370 --> 00:03:46,370 Pojďme dál a spustit to. 57 00:03:49,340 --> 00:03:52,670 A tady, nyní jen dva sloupce se uvedené 58 00:03:52,670 --> 00:03:54,670 pro každý druh cukroví v naší skříňce. 59 00:03:54,670 --> 00:03:57,710 Můžeme také zpřesnit naše výsledky dotazu zadáním 60 00:03:57,710 --> 00:04:00,910 "Kde" klauzule těsně po název tabulky. 61 00:04:02,000 --> 00:04:05,410 Například, zdá se, že cupcake v naší skříni 62 00:04:05,410 --> 00:04:08,660 že je dobře, ne tak pěkně vypadající. 63 00:04:08,660 --> 00:04:13,950 Pojďme zjistit všechny koláčky v naší skříni, které jsou, no, ne tak pěkně vypadající 64 00:04:13,950 --> 00:04:16,110 pomocí "Kde" klauzule. 65 00:04:16,110 --> 00:04:26,390 Syntaxe k tomu je: SELECT * space space z vesmíru cupcake_cupboard 66 00:04:26,390 --> 00:04:34,080 prostor, kde se prostor naší podmíněné sloupec, v tomto případě CakeIsNice =, 67 00:04:34,080 --> 00:04:36,900 a boolean hodnotu False. 68 00:04:36,900 --> 00:04:42,750 Je důležité si uvědomit, že pokud používáte řetězce, je nutné uzavřít do jednoduchých uvozovek. 69 00:04:42,750 --> 00:04:49,620 To platí pro všechny řetězce v SQL, nebo, v databázových hlediska SQL, varianta znaků 70 00:04:49,620 --> 00:04:51,620 známý jako varchar datový typ. 71 00:04:51,620 --> 00:04:57,660 V tomto případě se používá pravdivé či, což je logická hodnota, a ne řetězec. 72 00:04:59,120 --> 00:05:00,660 Pojďme dál a spusťte tento příkaz. 73 00:05:00,660 --> 00:05:05,340 >> A ejhle, je to pravda, že máme 1 čokoládu 74 00:05:05,340 --> 00:05:07,920 ne tak pěkný košíček v našem skříně. 75 00:05:09,620 --> 00:05:11,460 Dále budeme psát INSERT. 76 00:05:11,460 --> 00:05:15,560 INSERT se používá k vložení nebo přidání 77 00:05:15,560 --> 00:05:17,770 další řádky dat do databázové tabulky. 78 00:05:17,770 --> 00:05:23,160 Přehodnocení náš scénář, předpokládejme, že jsme právě udělal zbrusu nový košíček. 79 00:05:25,910 --> 00:05:30,080 Vzhledem k tomu, jsme velmi organizovaná cupcake jedlíci, budeme muset vložit tento nový košíček 80 00:05:30,080 --> 00:05:32,330 v našem cupcake_cupboard tabulce. 81 00:05:32,330 --> 00:05:40,690 Syntaxe to je to: Vložit mezeru do prostoru našeho stolu, 82 00:05:40,690 --> 00:05:46,830 cupcake_cupboard, prostor (, 83 00:05:46,830 --> 00:05:51,060 a tady zadat sloupce názvy, oddělují čárkou, 84 00:05:51,060 --> 00:05:59,790 CakeType čárka CakeColor čárka CakeIsNice) prostor. 85 00:05:59,790 --> 00:06:06,540 Následovat toto, my píšeme slovo VALUES prostor (a zde 86 00:06:06,540 --> 00:06:12,170 zadáme hodnotu pro každý sloupec, respektive, i oddělují čárkou. 87 00:06:12,170 --> 00:06:17,830 Apostrof, protože jsou všechny Varchar hodnoty budeme obklopují v jednoduchých uvozovkách, 88 00:06:17,830 --> 00:06:26,780 Arašídové máslo "čárku" světle hnědá "čárka True. 89 00:06:26,780 --> 00:06:30,480 Nyní je důležité, aby každý řádek jedinečné číslo k identifikaci sebe. 90 00:06:30,480 --> 00:06:33,660 Autoincrementing sloupec obsahuje toto jako 91 00:06:33,660 --> 00:06:37,410  "Žádné dva stejné ID může někdy existovat v této tabulce." 92 00:06:37,410 --> 00:06:39,480 Pojďme dál a spustit. 93 00:06:39,480 --> 00:06:45,380 Tam jdeme, všechny organizované. 94 00:06:49,720 --> 00:06:52,100 >> Další SQL, který budeme psát, je aktualizace prohlášení. 95 00:06:52,100 --> 00:06:55,650 Aktualizace prohlášení může být použita k úpravě dat v sloupci 96 00:06:55,650 --> 00:06:58,440 pro všechny existující řádek v databázové tabulce. 97 00:06:59,670 --> 00:07:03,420 Dříve v našem scénáři, pomocí příkazu SELECT, jsme identifikovali cupcake 98 00:07:03,420 --> 00:07:08,300 v rámci naší cupcake_cupboard stolu, jehož CakeIsNice hodnota byla False. 99 00:07:08,300 --> 00:07:12,050 Předpokládejme, že zatímco naše arašídové máslo cupcake je v troubě, 100 00:07:12,050 --> 00:07:15,790 jsme naše ne-tak-hezký cupcake velmi pěkné. 101 00:07:18,020 --> 00:07:22,240 Být tak výjimečně organizuje, chceme, aby naše cupcake, aby odrážel tuto hodnotu 102 00:07:22,240 --> 00:07:24,240 v našem cupcake_cupboard tabulce. 103 00:07:24,240 --> 00:07:28,710 Proto, pojďme aktualizovat náš čokoládový košíček v databázi, aby odrážela toto. 104 00:07:28,710 --> 00:07:39,720 Syntaxe je: UPDATE space náš stůl, cupcake_cupboard, prostor SET space 105 00:07:39,720 --> 00:07:44,240 sloupec, který chceme změnit, CakeIsNice =. 106 00:07:44,240 --> 00:07:49,210 Pak zde máme místo naši novou hodnotu Pravda prostor. 107 00:07:49,210 --> 00:07:54,290 Nyní, protože nechceme, aby aktualizovat všechny řádky s touto hodnotou, 108 00:07:54,290 --> 00:07:57,400 Chceme poskytnout ", kde" doložku, která bude přesně určit nás 109 00:07:57,400 --> 00:07:59,830 k přesnému řádku, který chceme upravit. 110 00:07:59,830 --> 00:08:03,690 V tomto případě, víme, že existuje jen jeden košíček 111 00:08:03,690 --> 00:08:06,670 která má CakeIsNice hodnotu False. 112 00:08:06,670 --> 00:08:11,030 Kromě toho bude také zajistit, že se aktualizace správný řádek 113 00:08:11,030 --> 00:08:13,030 pomocí "A" klauzule. 114 00:08:14,340 --> 00:08:17,270 Používáme "A" klauzule pro upřesnění náš dotaz dále. 115 00:08:17,270 --> 00:08:20,380 V tomto případě, protože je známo, že je košíček čokoláda, 116 00:08:20,380 --> 00:08:23,160 budeme používat tento CakeType sloupec. 117 00:08:23,160 --> 00:08:31,500 Kde je prostor naší podmíněno sloupec space CakeIsNice space = False, 118 00:08:31,500 --> 00:08:38,330 a prostor CakeType = 'CHOCOLATE. " 119 00:08:38,330 --> 00:08:41,880 Takže, dávat to všechno dohromady, tato aktualizace prohlášení se uvádí, 120 00:08:41,880 --> 00:08:44,670 najít všechny koláčky v našem cupcake skříň, 121 00:08:44,670 --> 00:08:50,520 a v případě, že je košíček jehož sloupec CakeIsNice obsahuje hodnotu False 122 00:08:50,520 --> 00:08:54,130 a CakeType obsahuje hodnotu CHOCOLATE, 123 00:08:54,130 --> 00:08:58,240 chceme aktualizovat konkrétní řádky CakeIsNice hodnotu True. 124 00:08:58,240 --> 00:09:01,140 Takže, pojďme dál a spustit příkaz. 125 00:09:03,860 --> 00:09:05,860 A teď, že organizovaný jsme. 126 00:09:06,650 --> 00:09:09,220 >> Všechny ty řeči o cupcakes učinil mě trochu hlad. 127 00:09:09,220 --> 00:09:11,360 Myslím, že bych měl pomoct k jednomu. 128 00:09:11,360 --> 00:09:17,670 Ale když jsem vlastně jíst tento košíček, měl jsem alespoň odstranit také její existenci 129 00:09:17,670 --> 00:09:19,670  z naší cupcake_cupboard tabulky. 130 00:09:20,650 --> 00:09:22,590 Chcete-li to provést, budeme používat "Delete" prohlášení. 131 00:09:22,590 --> 00:09:27,400 "Delete" prohlášení může být použit k odstranění všech nebo některých řádky z tabulky. 132 00:09:27,400 --> 00:09:29,920 Pokud chcete odstranit některé specifické řádek z tabulky, 133 00:09:29,920 --> 00:09:34,360 pak musíte zadat "kde" klauzule, tak určení sloupec 134 00:09:34,360 --> 00:09:37,660 které by měly být jedinečné řádku, který si přejete odstranit. 135 00:09:37,660 --> 00:09:47,370 To je syntaxe: DELETE FROM prostor vesmíru náš stůl, cupcake_cupboard, prostor. 136 00:09:47,370 --> 00:09:51,760 Nyní, v tomto okamžiku, pokud jste tak daleko ve svém DELETE 137 00:09:51,760 --> 00:09:54,240 Chcete-li být velmi opatrní. 138 00:09:54,240 --> 00:09:59,970 Například, když chci spustit tento dotaz, jak je bez poskytování určité "kde" klauzule 139 00:09:59,970 --> 00:10:04,500 Já bych ztratit všechna data v této tabulce cupcake_cupboard, 140 00:10:04,500 --> 00:10:09,590 ale proto, že už vím, že moje dorty ID jsou jedinečné, budu používat 141 00:10:09,590 --> 00:10:12,410 Red Velvet dort ID pro můj ", kde" klauzule. 142 00:10:14,550 --> 00:10:20,670 Kde je prostor naší sloupec, CakeID = 1. 143 00:10:20,670 --> 00:10:25,010 Vzhledem k tomu, to je celé číslo, které není třeba, aby ho obklopují v apostrofech. 144 00:10:25,010 --> 00:10:27,020 Takže, pojďme spustit příkaz. 145 00:10:33,560 --> 00:10:35,990 No, teď, když jsme si otřel existenci tohoto košíček 146 00:10:35,990 --> 00:10:40,360 z naší cupcake_cupboard stolu, máme jen jednu věc levé: 147 00:10:41,680 --> 00:10:43,680 Ať je to zmizí. 148 00:10:43,680 --> 00:10:46,990 Jsem Christopher Bartoloměje. To je CS50.