1 00:00:00,000 --> 00:00:03,493 >> [RIPRODUZIONE DI BRANI MUSICALI] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 DOUG LLOYD: in nostri video su temi di sviluppo web, 4 00:00:07,100 --> 00:00:10,560 abbiamo menzionato il concetto di un database di un paio di volte, giusto? 5 00:00:10,560 --> 00:00:12,700 Quindi un database sei probabilmente familiarità con da 6 00:00:12,700 --> 00:00:15,780 dire utilizzando Microsoft Excel o Google Spreadsheets. 7 00:00:15,780 --> 00:00:20,650 E 'davvero solo un organizzato set di tabelle, righe e colonne. 8 00:00:20,650 --> 00:00:23,140 >> E un database in cui i nostri negozi sito 9 00:00:23,140 --> 00:00:26,760 informazioni importanti per il nostro sito per funzionare correttamente. 10 00:00:26,760 --> 00:00:30,150 Ancora una volta, un esempio molto comune qui è la memorizzazione di nomi utente e password 11 00:00:30,150 --> 00:00:32,824 in un database, in modo che quando un utente accede a nostro sito web, 12 00:00:32,824 --> 00:00:36,690 il database può essere interrogato da vedere se l'utente esiste nel database. 13 00:00:36,690 --> 00:00:39,260 E se lo sono, controllare che la loro password è corretta. 14 00:00:39,260 --> 00:00:43,420 E se la loro password è corretta, allora possiamo dare loro qualunque pagina 15 00:00:43,420 --> 00:00:45,370 che stanno chiedendo. 16 00:00:45,370 --> 00:00:48,590 >> Quindi probabilmente stai, di nuovo, familiare con questa idea da Excel o Google 17 00:00:48,590 --> 00:00:49,430 Fogli di calcolo. 18 00:00:49,430 --> 00:00:52,980 Abbiamo basi di dati, tabelle, righe e colonne. 19 00:00:52,980 --> 00:00:56,450 E questo è davvero sorta del set fondamentale 20 00:00:56,450 --> 00:00:58,470 di ripartizione gerarchica qui. 21 00:00:58,470 --> 00:00:59,800 Quindi, ecco un foglio di calcolo di Excel. 22 00:00:59,800 --> 00:01:02,640 E se hai mai aperto questa o un altro programma simile 23 00:01:02,640 --> 00:01:06,780 si sa che questi qui sono rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 Queste sono le colonne. 25 00:01:08,760 --> 00:01:11,790 >> Forse qui, anche se si può Non utilizzare questa funzione terribilmente much-- 26 00:01:11,790 --> 00:01:15,370 Io zoom dentro-- abbiamo questa idea di un foglio. 27 00:01:15,370 --> 00:01:17,930 Così forse questi fogli, se Alterno avanti e indietro, 28 00:01:17,930 --> 00:01:21,600 sono diverse tabelle che esiste nel mio database. 29 00:01:21,600 --> 00:01:25,210 E se continuiamo l'esempio tutto A proposito, il nome di questo database 30 00:01:25,210 --> 00:01:26,940 è Book 1. 31 00:01:26,940 --> 00:01:28,710 Forse ho Book 2 e 3 Libro. 32 00:01:28,710 --> 00:01:33,270 Così ogni file di Excel è un database, ogni foglio è una tabella, 33 00:01:33,270 --> 00:01:39,530 e all'interno di ciascuna tabella ho questa idea di righe e colonne. 34 00:01:39,530 --> 00:01:41,900 >> Allora, come faccio a lavorare con questa banca dati? 35 00:01:41,900 --> 00:01:43,630 Come faccio ad avere informazioni da esso? 36 00:01:43,630 --> 00:01:47,540 Beh, c'è un linguaggio chiamato SQL-- che di solito basta chiamare Sequel-- 37 00:01:47,540 --> 00:01:50,010 e si distingue per la Structured Query Language. 38 00:01:50,010 --> 00:01:52,981 Ed è un linguaggio di programmazione, ma si tratta di una programmazione abbastanza limitato 39 00:01:52,981 --> 00:01:53,480 lingua. 40 00:01:53,480 --> 00:01:56,407 Non è abbastanza come gli altri che abbiamo lavorato con. 41 00:01:56,407 --> 00:01:58,240 Ma lo scopo di questo linguaggio di programmazione 42 00:01:58,240 --> 00:02:01,570 è quello di interrogare un database, a chiedere informazioni di un database, 43 00:02:01,570 --> 00:02:04,480 trovare le informazioni in un database e così via. 44 00:02:04,480 --> 00:02:08,449 >> Inoltre, in CS50-- ed è un molto piattaforma comune, si chiama MySQL. 45 00:02:08,449 --> 00:02:10,600 Questo è quello che usiamo in corso. 46 00:02:10,600 --> 00:02:12,880 Si tratta di un open source piattaforma che stabilisce 47 00:02:12,880 --> 00:02:16,732 un cosiddetto database-- relazionale un database, in modo efficace. 48 00:02:16,732 --> 00:02:18,440 Non abbiamo bisogno di ottenere entrare troppo nel dettaglio 49 00:02:18,440 --> 00:02:20,930 su ciò che è un database relazionale. 50 00:02:20,930 --> 00:02:24,650 Ma il linguaggio SQL è molto abile nel lavoro 51 00:02:24,650 --> 00:02:29,760 con MySQL e altri simili stili di database relazionali. 52 00:02:29,760 --> 00:02:34,010 >> E molte installazioni di MySQL venire con qualcosa 53 00:02:34,010 --> 00:02:37,760 chiamato phpMyAdmin, che è un utente grafica 54 00:02:37,760 --> 00:02:40,970 interface-- un GUI-- che rende un po 'più 55 00:02:40,970 --> 00:02:44,410 facile da usare per eseguire query di database, 56 00:02:44,410 --> 00:02:48,980 perché i database non sono solo utilizzati da programmatori avanzati, giusto? 57 00:02:48,980 --> 00:02:51,510 A volte ci sono queste piccole imprese, 58 00:02:51,510 --> 00:02:53,900 e non possono permettersi di assumere un team di programmatori, 59 00:02:53,900 --> 00:02:56,700 ma hanno ancora bisogno di memorizzare informazioni in un database. 60 00:02:56,700 --> 00:02:59,300 >> Qualcosa come phpMyAdmin lo rende molto facile per qualcuno 61 00:02:59,300 --> 00:03:03,630 che non ha mai programmato prima di raccogliere e acquisire familiarità con il modo 62 00:03:03,630 --> 00:03:07,710 lavorare con un database. 63 00:03:07,710 --> 00:03:11,800 Il problema è, phpMyAdmin, mentre è uno strumento fantastico per l'apprendimento 64 00:03:11,800 --> 00:03:14,850 sui database, esso è manuale. 65 00:03:14,850 --> 00:03:18,050 Stai andando ad avere per accedere esso ed eseguire i comandi e il tipo 66 00:03:18,050 --> 00:03:19,910 le cose in mano. 67 00:03:19,910 --> 00:03:23,160 >> E come sappiamo dal nostro esempio su PHP programmazione web, 68 00:03:23,160 --> 00:03:26,550 doverlo fare manualmente cose sul nostro sito web, 69 00:03:26,550 --> 00:03:30,970 se vogliamo una dinamica, attiva reattiva sito web, forse non è l'approccio migliore. 70 00:03:30,970 --> 00:03:33,980 Vorremmo trovare un modo per forse automatizzare questo in qualche modo. 71 00:03:33,980 --> 00:03:37,864 E SQL ci permetterà di fare questo. 72 00:03:37,864 --> 00:03:39,780 Così quando stiamo andando a iniziare a lavorare con SQL, 73 00:03:39,780 --> 00:03:41,220 abbiamo prima bisogno di avere una database da lavorare. 74 00:03:41,220 --> 00:03:42,510 Creazione di un database è qualcosa che probabilmente 75 00:03:42,510 --> 00:03:45,350 farà in phpMyAdmin, perché avrete solo bisogno di farlo una volta, 76 00:03:45,350 --> 00:03:49,690 e la sintassi per farlo è molto più semplice. 77 00:03:49,690 --> 00:03:51,940 E 'molto più facile per farlo in un'interfaccia utente grafica 78 00:03:51,940 --> 00:03:53,520 di digitare fuori come un comando. 79 00:03:53,520 --> 00:03:55,186 Il comando può ottenere un po 'ingombrante. 80 00:03:55,186 --> 00:03:58,889 Allo stesso modo, la creazione di un tavolo può ottenere un bel po 'ingombrante pure. 81 00:03:58,889 --> 00:04:01,930 E così le cose come creazione di un database e la creazione di un tavolo, che si è 82 00:04:01,930 --> 00:04:06,270 probabilmente solo andando a fare once-- una volta al tavolo, una volta per database-- 83 00:04:06,270 --> 00:04:09,040 va bene a farlo in un'interfaccia grafica. 84 00:04:09,040 --> 00:04:11,570 Nel processo di la creazione di una tabella, si ti 85 00:04:11,570 --> 00:04:14,840 hanno anche specificare tutti i colonne che saranno in tale tabella. 86 00:04:14,840 --> 00:04:18,149 Che tipo di informazioni fare si desidera memorizzare nella tabella? 87 00:04:18,149 --> 00:04:24,520 Forse il nome di un utente e la data di nascita, password, numero di ID utente, e forse 88 00:04:24,520 --> 00:04:26,170 città e stato, giusto? 89 00:04:26,170 --> 00:04:30,080 >> E per tutte le volte che vogliamo aggiungere un utente al database, vogliamo ottenere tutti e sei 90 00:04:30,080 --> 00:04:31,890 di questi pezzi di informazioni. 91 00:04:31,890 --> 00:04:34,840 E lo facciamo con l'aggiunta di righe alla tabella. 92 00:04:34,840 --> 00:04:37,800 Quindi per prima cosa creiamo un database, viene creato un tavolo. 93 00:04:37,800 --> 00:04:40,100 Durante la creazione un tavolo, ci viene chiesto 94 00:04:40,100 --> 00:04:44,280 per specificare ogni colonna vorremmo in questa tabella. 95 00:04:44,280 --> 00:04:47,247 E poi, come si comincia a aggiungere informazioni nel database 96 00:04:47,247 --> 00:04:49,580 e interrogare il database di più generally-- non solo l'aggiunta, 97 00:04:49,580 --> 00:04:51,610 ma tutto il resto siamo fare-- saremo trattare 98 00:04:51,610 --> 00:04:58,870 con righe della tabella, che è uno informazioni dell'utente da l'intero set. 99 00:04:58,870 --> 00:05:03,210 >> Così ogni colonna SQL è in grado di in possesso dei dati di un particolare tipo di dati. 100 00:05:03,210 --> 00:05:06,560 Così abbiamo eliminato questo tipo di idea di tipi di dati in PHP, 101 00:05:06,560 --> 00:05:08,747 ma sono di nuovo qui in SQL. 102 00:05:08,747 --> 00:05:10,080 E ci sono un sacco di tipi di dati. 103 00:05:10,080 --> 00:05:13,420 Qui è solo 20 di loro, ma non è nemmeno tutti. 104 00:05:13,420 --> 00:05:16,240 Quindi abbiamo idee come INTs-- Integers-- probabilmente conosciamo 105 00:05:16,240 --> 00:05:17,760 che questa colonna può contenere numeri interi. 106 00:05:17,760 --> 00:05:21,077 E ci sono variazioni thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. 107 00:05:21,077 --> 00:05:22,660 Forse non sempre bisogno di quattro morsi. 108 00:05:22,660 --> 00:05:26,800 Forse abbiamo bisogno di otto byte, e quindi abbiamo possono utilizzare queste variazioni su interi 109 00:05:26,800 --> 00:05:28,510 per essere un po 'più efficiente dello spazio. 110 00:05:28,510 --> 00:05:31,899 Siamo in grado di fare numeri decimali, abbiamo può fare numeri in virgola mobile. 111 00:05:31,899 --> 00:05:32,940 Questi sono piuttosto simili. 112 00:05:32,940 --> 00:05:34,773 Vi sono alcune differenze, e se si farebbe 113 00:05:34,773 --> 00:05:37,330 da cercare il Tipo SQL di guida, 114 00:05:37,330 --> 00:05:40,670 può vedere ciò che il leggero differenze tra loro. 115 00:05:40,670 --> 00:05:43,250 >> Forse vogliamo memorizzare informazioni su data e ora. 116 00:05:43,250 --> 00:05:47,047 Forse stiamo tenendo traccia di quando l'utente si è unito il nostro sito web, 117 00:05:47,047 --> 00:05:48,880 e così forse vogliamo di avere una colonna che è 118 00:05:48,880 --> 00:05:52,820 una volta data o un timestamp che indica quando l'utente in realtà 119 00:05:52,820 --> 00:05:54,130 iscritto. 120 00:05:54,130 --> 00:05:56,132 Possiamo fare geometrie e stringhe lineari. 121 00:05:56,132 --> 00:05:57,340 Questo è in realtà piuttosto fresco. 122 00:05:57,340 --> 00:06:01,410 Potremmo tracciare un area geografica utilizzando 123 00:06:01,410 --> 00:06:05,110 GIS coordinate per tracciare fuori area. 124 00:06:05,110 --> 00:06:08,580 Quindi può effettivamente memorizzare questo tipo di informazioni in una colonna SQL. 125 00:06:08,580 --> 00:06:11,390 >> TEXT è solo blob gigante di testo, forse. 126 00:06:11,390 --> 00:06:12,840 ENUM sono piuttosto interessante. 127 00:06:12,840 --> 00:06:16,080 In realtà esistono in C. Noi non parlare di loro perché non sono 128 00:06:16,080 --> 00:06:19,110 terribilmente comunemente usato, almeno CS50. 129 00:06:19,110 --> 00:06:22,680 Ma è un tipo di dati enumerato, che è in grado di contenere valori limitati. 130 00:06:22,680 --> 00:06:25,940 >> Un buon esempio qui sarebbe per creare un enum dove i sette 131 00:06:25,940 --> 00:06:29,394 i valori possibili sono Domenica, Lunedi, Martedì, Mercoledì, Giovedi, Venerdì, 132 00:06:29,394 --> 00:06:30,060 Sabato, giusto? 133 00:06:30,060 --> 00:06:33,311 Che tipo di dati Giorno di Settimana non esiste, 134 00:06:33,311 --> 00:06:35,310 ma potremmo creare un tipo di dati enumerato come 135 00:06:35,310 --> 00:06:39,400 che tale colonna può sempre e solo contenere uno di questi sette valori possibili. 136 00:06:39,400 --> 00:06:44,300 Abbiamo enumerato tutte dei valori possibili. 137 00:06:44,300 --> 00:06:47,630 >> Poi abbiamo CHAR e VARCHAR, e ho colorare questi verde 138 00:06:47,630 --> 00:06:49,505 perché siamo in realtà andando a prendere un secondo 139 00:06:49,505 --> 00:06:51,950 per parlare della differenza tra queste due cose. 140 00:06:51,950 --> 00:06:55,780 Così CAR, a differenza di C dove CHAR era un singolo carattere, 141 00:06:55,780 --> 00:07:00,730 in SQL un CHAR si riferisce a una stringa di lunghezza fissa. 142 00:07:00,730 --> 00:07:02,620 E quando creiamo questo Colonna, in realtà 143 00:07:02,620 --> 00:07:05,070 può specificare la lunghezza della stringa. 144 00:07:05,070 --> 00:07:08,080 >> Quindi in questo esempio, potremmo dire CHAR (10). 145 00:07:08,080 --> 00:07:11,190 Ciò significa che ogni elemento di quella colonna 146 00:07:11,190 --> 00:07:13,910 sarà composto da 10 byte di informazione. 147 00:07:13,910 --> 00:07:15,770 Né più, né meno. 148 00:07:15,770 --> 00:07:21,780 Quindi, se proviamo e messo in una 15 bit o un elemento di 15 caratteri 149 00:07:21,780 --> 00:07:25,340 o il valore in questa colonna, stiamo solo ottenere i primi 10. 150 00:07:25,340 --> 00:07:27,290 Se mettiamo in due valore lungo di carattere, 151 00:07:27,290 --> 00:07:30,700 stiamo andando ad avere i due personaggi, e poi otto morsi nulli. 152 00:07:30,700 --> 00:07:34,990 Non saremo mai più efficiente di quello. 153 00:07:34,990 --> 00:07:37,727 >> Un VARCHAR è un po 'come la nostra idea di una stringa 154 00:07:37,727 --> 00:07:39,560 che siamo familiare con da C o da PHP. 155 00:07:39,560 --> 00:07:40,830 Si tratta di una stringa di lunghezza variabile. 156 00:07:40,830 --> 00:07:42,560 E quando si crea questa colonna, basta 157 00:07:42,560 --> 00:07:44,860 specificare le lunghezze massime possibili. 158 00:07:44,860 --> 00:07:49,065 Quindi, forse 99, o comunemente 255. 159 00:07:49,065 --> 00:07:50,440 Questa sarebbe la lunghezza massima. 160 00:07:50,440 --> 00:07:52,890 E così se fossimo memorizzando 15 stringa di caratteri, 161 00:07:52,890 --> 00:07:56,157 useremmo 15 byte, forse 16 byte per il terminatore null. 162 00:07:56,157 --> 00:07:57,990 Se fossimo la memorizzazione di un tre stringa di caratteri, 163 00:07:57,990 --> 00:08:01,120 useremmo tre o quattro byte. 164 00:08:01,120 --> 00:08:03,050 Ma non avremmo utilizzare l'intero 99. 165 00:08:03,050 --> 00:08:05,190 >> Allora perché dovremmo avere entrambi? 166 00:08:05,190 --> 00:08:08,210 Beh, se abbiamo bisogno di capire come lungo qualcosa è con un VARCHAR, 167 00:08:08,210 --> 00:08:10,680 dobbiamo tipo di iterate attraverso di esso, proprio come abbiamo fatto in C 168 00:08:10,680 --> 00:08:12,230 e capire dove si ferma. 169 00:08:12,230 --> 00:08:15,920 Mentre se sappiamo che tutto in questa colonna è di 10 byte, forse 170 00:08:15,920 --> 00:08:19,220 sappiamo che le informazioni, si può saltare 10 byte, 10 byte, 10 byte, 10 byte, 171 00:08:19,220 --> 00:08:21,790 e sempre trovare il inizio della stringa. 172 00:08:21,790 --> 00:08:25,210 >> Quindi possiamo avere un po ' sprecato spazio con un CHAR, 173 00:08:25,210 --> 00:08:28,510 ma forse c'è un commercio off di avere una migliore velocità 174 00:08:28,510 --> 00:08:30,160 nella navigazione del database. 175 00:08:30,160 --> 00:08:32,330 Ma forse vogliamo che il flessibilità di un VARCHAR 176 00:08:32,330 --> 00:08:36,710 invece di having-- Se il nostro CHAR era 255, ma la maggior parte dei nostri utenti 177 00:08:36,710 --> 00:08:40,537 sono stati solo inserendo tre o quattro byte valore di informazioni o tre o quattro 178 00:08:40,537 --> 00:08:41,870 caratteri vale la pena di informazioni. 179 00:08:41,870 --> 00:08:44,324 >> Ma alcuni utenti stavano utilizzando l'intero 255, forse 180 00:08:44,324 --> 00:08:45,990 VARCHAR sarebbe più appropriato lì. 181 00:08:45,990 --> 00:08:49,840 Si tratta di una sorta di compromesso, e generalmente, a fini di CS50, 182 00:08:49,840 --> 00:08:54,107 non c'è bisogno di preoccuparsi troppo se si utilizza un CHAR o un VARCHAR. 183 00:08:54,107 --> 00:08:57,190 Ma nel mondo reale, queste cose non importa perché tutte queste colonne 184 00:08:57,190 --> 00:08:59,300 occupano spazio fisico effettivo. 185 00:08:59,300 --> 00:09:04,150 E spazio fisico, in mondo reale, arriva ad un premio. 186 00:09:04,150 --> 00:09:06,800 >> Quindi un'altra considerazione quando si sta costruendo un tavolo 187 00:09:06,800 --> 00:09:09,840 è quello di scegliere una colonna di essere quello che chiama una chiave primaria. 188 00:09:09,840 --> 00:09:14,350 E una chiave primaria è una colonna dove ogni singolo valore è unico. 189 00:09:14,350 --> 00:09:19,980 E ciò significa che si può facilmente scegliere una singola riga solo guardando 190 00:09:19,980 --> 00:09:22,450 alla chiave primaria di quella riga. 191 00:09:22,450 --> 00:09:24,580 Così, per esempio, è in generale, con gli utenti, 192 00:09:24,580 --> 00:09:27,210 non voglio due utenti che avere lo stesso numero ID utente. 193 00:09:27,210 --> 00:09:28,960 E così forse avete un sacco di informazioni, 194 00:09:28,960 --> 00:09:30,793 e forse due utenti possono hanno la stessa nome-- 195 00:09:30,793 --> 00:09:32,650 avete John Smith e John Smith. 196 00:09:32,650 --> 00:09:34,520 Questo non è necessariamente un problema, perché ci sono più persone 197 00:09:34,520 --> 00:09:35,830 nel mondo di nome John Smith. 198 00:09:35,830 --> 00:09:40,766 Ma abbiamo solo il numero ID di un utente 10, un utente numero 11, 12, 13 ID. 199 00:09:40,766 --> 00:09:42,640 Non abbiamo due utenti con lo stesso numero, 200 00:09:42,640 --> 00:09:46,010 e così forse numeri ID utente sarebbe una buona chiave primaria. 201 00:09:46,010 --> 00:09:48,610 >> Non abbiamo doppioni, e possiamo ora univocamente 202 00:09:48,610 --> 00:09:52,619 identificare ogni singola riga solo cercando in quella colonna. 203 00:09:52,619 --> 00:09:55,410 La scelta di chiavi primarie possono effettivamente effettuare operazioni della tabella successive 204 00:09:55,410 --> 00:09:59,710 molto più facile perché è possibile sfruttare il fatto che alcune righe sarà 205 00:09:59,710 --> 00:10:02,720 essere unico, o una determinata colonna del database o una tabella 206 00:10:02,720 --> 00:10:06,030 sarà unico per raccogliere righe di particolari. 207 00:10:06,030 --> 00:10:08,790 >> Si può anche avere un primario comune chiave, che si possono trovare occasione 208 00:10:08,790 --> 00:10:11,720 da usare, che è solo una combinazione di due colonne 209 00:10:11,720 --> 00:10:13,280 è garantito per essere unico. 210 00:10:13,280 --> 00:10:16,410 Così forse ne hai uno colonna che è As e B, 211 00:10:16,410 --> 00:10:19,290 una colonna che è uno, due, e tre, ma avrete sempre e solo 212 00:10:19,290 --> 00:10:23,660 avere un singolo A1, un'unica A2, e così via e così via. 213 00:10:23,660 --> 00:10:28,980 Ma si potrebbe avere un B2, un C2, o un A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 Così si potrebbe avere più come, multipla B, quelli più, più due a due, 215 00:10:32,840 --> 00:10:38,567 ma si può sempre e solo avere un singola A1, B2, C3, e così via. 216 00:10:38,567 --> 00:10:40,400 Così come ho detto, SQL è un linguaggio di programmazione, 217 00:10:40,400 --> 00:10:42,024 ma ha un vocabolario piuttosto limitato. 218 00:10:42,024 --> 00:10:44,880 E non è così estesa come C e PHP e altri linguaggi 219 00:10:44,880 --> 00:10:46,350 che si parla nel corso. 220 00:10:46,350 --> 00:10:49,960 E 'più prolisso un lingua di quello che siamo 221 00:10:49,960 --> 00:10:52,789 andando a parlare in questo video, perché in questo video 222 00:10:52,789 --> 00:10:54,830 stiamo andando a parlare quattro operazioni che 223 00:10:54,830 --> 00:10:55,720 può eseguire su un tavolo. 224 00:10:55,720 --> 00:10:56,761 >> Ci sono più di questo. 225 00:10:56,761 --> 00:10:58,730 Possiamo fare più di questo, ma per i nostri scopi, 226 00:10:58,730 --> 00:11:02,250 stiamo generalmente intenzione di utilizzare solo quattro inserto operations--, 227 00:11:02,250 --> 00:11:05,360 selezionare, aggiornare e cancellare. 228 00:11:05,360 --> 00:11:08,750 E si può probabilmente intuire intuitivamente ciò che tutti e quattro di queste cose fanno. 229 00:11:08,750 --> 00:11:12,520 Ma noi andremo in un po ' di dettaglio su ciascuno. 230 00:11:12,520 --> 00:11:15,780 >> Così, per fini di questa video, supponiamo 231 00:11:15,780 --> 00:11:18,870 abbiamo i seguenti due tabelle in un unico database. 232 00:11:18,870 --> 00:11:23,460 Abbiamo una tabella chiamata Users che ha quattro il numero ID columns--, nome utente, 233 00:11:23,460 --> 00:11:25,350 password e il nome completo. 234 00:11:25,350 --> 00:11:27,430 E abbiamo un secondo tabella nello stesso database 235 00:11:27,430 --> 00:11:32,129 chiamato Moms che memorizza solo le informazioni su un nome utente e di una madre. 236 00:11:32,129 --> 00:11:33,920 Così per tutti gli esempi in questo video, faremo 237 00:11:33,920 --> 00:11:37,945 stia usando questa banca dati e successivi aggiornamenti ad esso. 238 00:11:37,945 --> 00:11:40,070 Quindi diciamo che vogliamo aggiungere informazioni a un tavolo. 239 00:11:40,070 --> 00:11:44,460 Questo è ciò che fa l'operazione di inserimento. 240 00:11:44,460 --> 00:11:46,550 Nello spiegare tutti questi comandi, io vado 241 00:11:46,550 --> 00:11:48,860 per darvi uno scheletro generale per l'uso. 242 00:11:48,860 --> 00:11:51,661 Perché in fondo, le query stanno andando sguardo piuttosto simili, 243 00:11:51,661 --> 00:11:54,660 stiamo solo andando stia cambiando leggermente diverse informazioni 244 00:11:54,660 --> 00:11:56,750 a fare cose diverse con il tavolo. 245 00:11:56,750 --> 00:11:59,200 >> Così per INSERT, lo scheletro sembra un po 'come questo. 246 00:11:59,200 --> 00:12:02,230 Vogliamo inserire nel una particolare tabella. 247 00:12:02,230 --> 00:12:05,290 Poi abbiamo una parentesi aperta e un elenco di colonne 248 00:12:05,290 --> 00:12:08,070 che vogliamo mettere i valori in. 249 00:12:08,070 --> 00:12:10,974 Chiudere parentesi, il i seguenti valori, e quindi 250 00:12:10,974 --> 00:12:13,390 ancora una volta, si elencano i valori vogliamo mettere nella tabella. 251 00:12:13,390 --> 00:12:15,950 >> Così un esempio di questo sarebbe il seguente. 252 00:12:15,950 --> 00:12:19,170 Voglio inserire nella tabella agli utenti la seguente columns-- 253 00:12:19,170 --> 00:12:21,010 nome utente, password, e nome completo. 254 00:12:21,010 --> 00:12:25,282 Quindi una nuova riga in cui sto mettendo in queste tre colonne e siamo 255 00:12:25,282 --> 00:12:30,030 andando a mettere nei valori Newman, USMAIL, e Newman. 256 00:12:30,030 --> 00:12:32,730 Quindi, in questo caso, sono mettendo il newman minuscolo 257 00:12:32,730 --> 00:12:38,710 nella colonna nome utente, la password USMAIL, e il nome completo del capitale N 258 00:12:38,710 --> 00:12:41,940 Newman nella colonna fullname. 259 00:12:41,940 --> 00:12:44,240 >> Quindi, ecco cosa il database sembrava come prima. 260 00:12:44,240 --> 00:12:48,250 Ecco ciò che il tavolo utenti sul top sembrava come prima abbiamo fatto questo. 261 00:12:48,250 --> 00:12:50,760 Dopo eseguiamo questo interrogazione, otteniamo questo. 262 00:12:50,760 --> 00:12:54,790 Abbiamo aggiunto una nuova riga alla tabella. 263 00:12:54,790 --> 00:12:56,810 Ma notare questo una cosa che non ho specificato, 264 00:12:56,810 --> 00:12:59,880 ma in qualche modo ho un valore di per, che è il 12 proprio qui. 265 00:12:59,880 --> 00:13:02,820 Non ho detto che volevo mettere il numero ID in là. 266 00:13:02,820 --> 00:13:04,900 Ho voluto mettere il nome utente, Password, fullname. 267 00:13:04,900 --> 00:13:06,440 E l'ho fatto, va bene. 268 00:13:06,440 --> 00:13:07,760 >> Ma ho anche avuto questa 12. 269 00:13:07,760 --> 00:13:09,490 Perché ho questo 12? 270 00:13:09,490 --> 00:13:12,904 Beh, si scopre che quando si definisce 271 00:13:12,904 --> 00:13:15,570 una colonna che sta per essere il vostro chiave primaria, che è di solito, 272 00:13:15,570 --> 00:13:16,510 come ho detto, un numero di identificazione. 273 00:13:16,510 --> 00:13:18,718 Non è sempre necessariamente sta per essere un numero di identificazione, 274 00:13:18,718 --> 00:13:22,380 ma di solito è una buona idea essere una sorta di valore intero. 275 00:13:22,380 --> 00:13:25,950 Avete un'opzione in phpMyAdmin quando si sta creando il database 276 00:13:25,950 --> 00:13:31,130 o il vostro tavolo per impostare che colonna come auto di incremento. 277 00:13:31,130 --> 00:13:34,520 >> Che è davvero una buona idea quando si sta lavorando con una chiave primaria, 278 00:13:34,520 --> 00:13:39,330 perché si vuole ogni valore in quella colonna essere unico. 279 00:13:39,330 --> 00:13:43,310 E se si dimentica di specificare per più di una persona, 280 00:13:43,310 --> 00:13:46,240 ora avete una situazione in cui tale colonna non è più unico. 281 00:13:46,240 --> 00:13:50,200 Si hanno due spazi vuoti, in modo da non può più identificare univocamente un column-- 282 00:13:50,200 --> 00:13:54,150 o non è più univoco possibile identificare una riga basata su quella colonna. 283 00:13:54,150 --> 00:13:57,010 Ha perso tutta la sua valore come chiave primaria. 284 00:13:57,010 --> 00:14:02,010 >> E così apparentemente quello che ho fatto Qui non è stato configurato l'ID utente 285 00:14:02,010 --> 00:14:07,790 colonna di incremento automatico in modo che ogni volta che aggiungere informazioni alla tabella, 286 00:14:07,790 --> 00:14:12,220 mi darà automaticamente un valore per la chiave primaria. 287 00:14:12,220 --> 00:14:15,570 Così posso mai dimenticare di farlo perché il database lo farà per me. 288 00:14:15,570 --> 00:14:16,587 Ecco, questo è una specie di piacevole. 289 00:14:16,587 --> 00:14:18,670 Ed ecco perché otteniamo 12 in là, perché ho 290 00:14:18,670 --> 00:14:21,772 impostare la colonna fino a incremento automatico. 291 00:14:21,772 --> 00:14:23,730 Se ho aggiunto qualcun altro sarebbe 13, se ho aggiunto 292 00:14:23,730 --> 00:14:27,890 qualcun altro sarebbe 14, e così via. 293 00:14:27,890 --> 00:14:30,190 >> Quindi cerchiamo di fare solo un altro inserimento. 294 00:14:30,190 --> 00:14:34,530 Noi inseriremo nella tabella mamme, in particolare, il nome utente e la madre 295 00:14:34,530 --> 00:14:37,390 colonna, i valori Kramer e Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 E così abbiamo avuto prima. 297 00:14:39,140 --> 00:14:41,800 Dopo eseguiamo che Query SQL, abbiamo questo. 298 00:14:41,800 --> 00:14:47,290 Abbiamo aggiunto Kramer e Babs Kramer alla tabella mamme. 299 00:14:47,290 --> 00:14:48,350 >> Ecco, questo è l'inserimento. 300 00:14:48,350 --> 00:14:51,850 SELECT è quello che usiamo per l'estrazione informazioni dalla tabella. 301 00:14:51,850 --> 00:14:54,390 Quindi questo è come si ottiene informazioni dal database. 302 00:14:54,390 --> 00:14:59,589 E così i comandi SELEZIONA stanno per essere molto frequentemente utilizzato nella programmazione. 303 00:14:59,589 --> 00:15:02,130 Il generale framework-- il scheletro generale simile a questa. 304 00:15:02,130 --> 00:15:06,550 Selezionare un set di colonne da una tabella, e quindi opzionalmente 305 00:15:06,550 --> 00:15:11,090 è possibile specificare un condition-- o quello che noi chiamiamo di solito un predicato, 306 00:15:11,090 --> 00:15:13,010 di solito è il termine che usiamo in SQL. 307 00:15:13,010 --> 00:15:16,490 >> Ma è fondamentalmente quello che particolari righe che si desidera ottenere. 308 00:15:16,490 --> 00:15:19,100 Se si vuole, invece di ottenere tutto, restringere il campo, 309 00:15:19,100 --> 00:15:20,060 è qui che l'hai fatto. 310 00:15:20,060 --> 00:15:22,777 E poi opzionalmente, si può anche ordinare per una particolare colonna. 311 00:15:22,777 --> 00:15:25,860 Così forse si desidera avere le cose in ordine alfabetico basata su una colonna 312 00:15:25,860 --> 00:15:27,540 o in ordine alfabetico basato su un altro. 313 00:15:27,540 --> 00:15:30,610 >> Ancora una volta, WHERE e ORDER BY sono opzionali. 314 00:15:30,610 --> 00:15:32,681 Ma probabilmente sarà useful-- particolarmente 315 00:15:32,681 --> 00:15:34,680 DOVE sarà utile a restringere in modo da non fare 316 00:15:34,680 --> 00:15:37,460 ottenere il vostro intero database schiena e deve elaborare esso, basta ottenere 317 00:15:37,460 --> 00:15:39,300 i pezzi di esso che si preoccupano. 318 00:15:39,300 --> 00:15:44,932 Così, per esempio, potrei voler selezionare Numero ID e il nome completo da parte degli utenti. 319 00:15:44,932 --> 00:15:46,140 Che cosa potrebbe questo aspetto? 320 00:15:46,140 --> 00:15:48,270 Quindi, ecco la mia tabella utenti. 321 00:15:48,270 --> 00:15:51,080 Voglio selezionare IDNUM e il nome completo da parte degli utenti. 322 00:15:51,080 --> 00:15:52,300 Che cosa farò a ottenere? 323 00:15:52,300 --> 00:15:53,580 Ho intenzione di ottenere questo. 324 00:15:53,580 --> 00:15:56,930 Io non restringere il campo, quindi sono ottenere il numero di ID per ogni riga 325 00:15:56,930 --> 00:16:00,850 e sto ottenendo il pieno nome da ogni riga. 326 00:16:00,850 --> 00:16:02,210 >> OK. 327 00:16:02,210 --> 00:16:05,640 Che cosa devo fare per selezionare la password da parte degli utenti WHERE-- così ora 328 00:16:05,640 --> 00:16:10,370 Sto aggiungendo una condizione, un predicate-- dove IDNUM è inferiore a 12. 329 00:16:10,370 --> 00:16:13,660 Quindi, ecco di nuovo il mio database, mio tavolo utenti la cima. 330 00:16:13,660 --> 00:16:17,030 Che cosa sono io che vado ottenere se voglio selezionare tali informazioni, la password, 331 00:16:17,030 --> 00:16:21,550 dove ID utente o IDNUM è inferiore a 12? 332 00:16:21,550 --> 00:16:24,910 Ho intenzione di ottenere questo informazioni indietro, giusto? 333 00:16:24,910 --> 00:16:29,170 Succede che IDNUM è 10, meno di 12, il numero ID 11 a meno di 12. 334 00:16:29,170 --> 00:16:32,160 Sto diventando la password per le righe. 335 00:16:32,160 --> 00:16:33,914 Questo è quello che ho chiesto. 336 00:16:33,914 --> 00:16:34,580 Che dire di questo? 337 00:16:34,580 --> 00:16:39,170 Che cosa devo fare per selezionare stella dal tavolo mamme dove username è uguale a Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, selezionare stella è lo speciale sorta di wild card cosiddetti 339 00:16:43,780 --> 00:16:45,670 che usiamo per ottenere tutto. 340 00:16:45,670 --> 00:16:48,620 Così che stanno dicendo di selezione nomeutente madre virgola, che 341 00:16:48,620 --> 00:16:51,060 è capitato di essere l'unico due colonne di questa tabella, 342 00:16:51,060 --> 00:16:53,260 Posso solo selezionare stelle e ottenere tutto 343 00:16:53,260 --> 00:16:55,030 dove il nome utente è uguale a Jerry. 344 00:16:55,030 --> 00:16:59,380 Ed è quello che vorrei ottenere se ho fatto quella query particolare. 345 00:16:59,380 --> 00:17:01,810 >> Ora, database sono grandi perché consentono 346 00:17:01,810 --> 00:17:06,074 di organizzare le informazioni forse un po 'più efficiente di quanto ci 347 00:17:06,074 --> 00:17:06,740 potrebbe altrimenti. 348 00:17:06,740 --> 00:17:10,240 Non necessariamente per memorizzare ogni pezzo rilevante di informazioni 349 00:17:10,240 --> 00:17:12,230 su un utente nella stessa tabella. 350 00:17:12,230 --> 00:17:13,730 Abbiamo avuto due tavoli lì. 351 00:17:13,730 --> 00:17:15,734 >> Abbiamo bisogno di memorizzare il nome della madre di tutti, 352 00:17:15,734 --> 00:17:18,900 e forse non abbiamo la sicurezza sociale numero, abbiamo la loro data di nascita. 353 00:17:18,900 --> 00:17:21,819 Che non sempre bisogno essere nella stessa tabella. 354 00:17:21,819 --> 00:17:25,339 Finché possiamo definire le relazioni tra la tables-- 355 00:17:25,339 --> 00:17:28,440 ed è lì che relazionale termine banca dati viene tipo di 356 00:17:28,440 --> 00:17:32,130 in play-- fintanto che possiamo definire relazioni tra le tabelle, 357 00:17:32,130 --> 00:17:35,545 possiamo sorta di compartimentalizzare o cose astratte un modo, 358 00:17:35,545 --> 00:17:37,670 dove abbiamo solo il informazioni veramente importanti 359 00:17:37,670 --> 00:17:39,270 abbiamo a cuore nella tabella degli utenti. 360 00:17:39,270 --> 00:17:43,220 E poi abbiamo informazioni accessorie o informazioni supplementari in altre tabelle 361 00:17:43,220 --> 00:17:48,260 che siamo in grado di riconnettersi al principale tabella utenti in un modo particolare. 362 00:17:48,260 --> 00:17:52,200 >> Quindi qui abbiamo queste due tabelle, ma c'è una relazione tra di loro, 363 00:17:52,200 --> 00:17:53,010 destra? 364 00:17:53,010 --> 00:17:55,070 Sembra che il nome utente potrebbe essere qualcosa 365 00:17:55,070 --> 00:17:59,909 che esiste in comune tra queste due diverse tabelle. 366 00:17:59,909 --> 00:18:01,700 Che importa se ora abbiamo una situazione in cui 367 00:18:01,700 --> 00:18:06,046 vuole ottenere il nome completo di un utente da tavolo dell'utente, e la loro madre 368 00:18:06,046 --> 00:18:07,170 nome dal tavolo madre? 369 00:18:07,170 --> 00:18:10,960 Non abbiamo un modo per ottenere che così com'è, giusto? 370 00:18:10,960 --> 00:18:17,790 Non c'è alcun tavolo singolo che contiene sia il nome completo e il nome della madre. 371 00:18:17,790 --> 00:18:20,400 Non abbiamo questa opzione da quello che abbiamo visto finora. 372 00:18:20,400 --> 00:18:22,950 >> E così dobbiamo introdurre l'idea di un JOIN. 373 00:18:22,950 --> 00:18:24,857 E si unisce sono probabilmente il più complex-- 374 00:18:24,857 --> 00:18:27,940 è davvero più complessa operazione stiamo andando a parlare nel video. 375 00:18:27,940 --> 00:18:30,040 Sono un po 'complicato, ma una volta a ottenere il blocco di esso, 376 00:18:30,040 --> 00:18:31,248 non sono in realtà troppo male. 377 00:18:31,248 --> 00:18:32,820 E 'solo un caso particolare di una SELECT. 378 00:18:32,820 --> 00:18:37,120 Stiamo andando a selezionare un insieme di colonne di una tabella di giunzione 379 00:18:37,120 --> 00:18:40,650 in una seconda tabella su alcuni predicato. 380 00:18:40,650 --> 00:18:45,340 >> In questo caso, pensare come questo-- tavolo uno è un cerchio qui, 381 00:18:45,340 --> 00:18:47,530 tavolo due è un altro cerchio qui. 382 00:18:47,530 --> 00:18:49,410 E quella parte predicato nel mezzo, è 383 00:18:49,410 --> 00:18:51,701 un po 'come se si pensa su come un diagramma di Venn, cosa 384 00:18:51,701 --> 00:18:52,670 cosa hanno in comune? 385 00:18:52,670 --> 00:18:55,960 Vogliamo collegare queste due tabelle sulla base di ciò che hanno in comune 386 00:18:55,960 --> 00:19:01,230 e creare questa tabella ipotetica cioè la fusione dei due insieme. 387 00:19:01,230 --> 00:19:03,480 Quindi vedremo questo in un esempio e forse ti aiuto 388 00:19:03,480 --> 00:19:04,521 chiarirlo un po '. 389 00:19:04,521 --> 00:19:09,260 Così forse si desidera selezionare USER.FULLNAME e moms.mother 390 00:19:09,260 --> 00:19:13,220 da utenti che entrano nel tavolo mamme in ogni situazione 391 00:19:13,220 --> 00:19:16,790 dove la colonna nome utente è lo stesso tra di loro. 392 00:19:16,790 --> 00:19:19,240 E questo è un nuovo sintassi qui, questo utente. 393 00:19:19,240 --> 00:19:20,460 e mamme .. 394 00:19:20,460 --> 00:19:26,697 Se io sto facendo più tabelle insieme, posso specificare un tavolo. 395 00:19:26,697 --> 00:19:29,530 Posso distinguere in particolare su che sulla in fondo lì. 396 00:19:29,530 --> 00:19:33,220 Posso distinguere il nome utente colonna della tabella utenti 397 00:19:33,220 --> 00:19:36,010 dalla colonna username tavolo le mamme, che sono otherwise-- 398 00:19:36,010 --> 00:19:38,070 se abbiamo appena detto nome utente uguale nome utente, che in realtà non 399 00:19:38,070 --> 00:19:38,970 significa nulla. 400 00:19:38,970 --> 00:19:41,440 Vogliamo farlo in cui corrispondono. 401 00:19:41,440 --> 00:19:46,080 >> Così posso specificare la tabella e il nome della colonna in caso di una situazione 402 00:19:46,080 --> 00:19:48,370 dove sarebbe poco chiaro di che cosa sto parlando. 403 00:19:48,370 --> 00:19:51,880 Ecco, questo è tutto quello che sto facendo non è che io sono dicendo questa colonna da questa tabella, 404 00:19:51,880 --> 00:19:54,020 ed essendo molto esplicito. 405 00:19:54,020 --> 00:19:56,810 Quindi, di nuovo, sto selezionando la nome, cognome e il nome della madre 406 00:19:56,810 --> 00:20:00,950 dalla tabella degli utenti collegati tra loro con il tavolo mamme in ogni situazione 407 00:20:00,950 --> 00:20:05,960 dove condividono che column-- essi condividono tale nome utente nozione. 408 00:20:05,960 --> 00:20:08,580 >> Così qui sono le tabelle che avevamo prima. 409 00:20:08,580 --> 00:20:12,210 Questo è lo stato della nostra database come esiste adesso. 410 00:20:12,210 --> 00:20:16,390 Le informazioni che stiamo estraendo è questo per cominciare. 411 00:20:16,390 --> 00:20:19,820 Questa è la nuova tabella che andremo per creare combinando questi insieme. 412 00:20:19,820 --> 00:20:23,585 E accorgiamo che non stiamo mettendo in evidenza Fila di Newman nella tabella degli utenti, 413 00:20:23,585 --> 00:20:25,960 e non stiamo mettendo in evidenza Fila di Kramer nella tabella mamme 414 00:20:25,960 --> 00:20:31,250 perché nessuno dei due esiste in sia sets-- in entrambe le tabelle. 415 00:20:31,250 --> 00:20:36,260 >> L'unica informazione che è in comune tra loro è Jerry è in entrambe le tabelle 416 00:20:36,260 --> 00:20:39,100 e gcostanza è in entrambe le tabelle. 417 00:20:39,100 --> 00:20:42,620 E così quando facciamo la SQL JOIN, quello che abbiamo get-- e stiamo facendo realmente ottenere questo. 418 00:20:42,620 --> 00:20:44,830 E 'una sorta di una variabile temporanea. 419 00:20:44,830 --> 00:20:47,330 E 'come un ipotetico fusione tra le due tabelle. 420 00:20:47,330 --> 00:20:49,930 Abbiamo effettivamente ottenere qualcosa come questo, dove 421 00:20:49,930 --> 00:20:54,730 Abbiamo unito insieme i tavoli sulla informazioni che hanno in comune. 422 00:20:54,730 --> 00:20:58,334 >> Così notare che users.username e la colonna moms.username, 423 00:20:58,334 --> 00:20:59,250 è esattamente lo stesso. 424 00:20:59,250 --> 00:21:01,820 Quella era l'informazione che era costante da parte degli utenti 425 00:21:01,820 --> 00:21:02,890 tabella e la tabella mamme. 426 00:21:02,890 --> 00:21:04,270 E così li abbiamo fusi insieme. 427 00:21:04,270 --> 00:21:06,919 Abbiamo scartato Kramer perché lui non esisteva nella tabella utenti, 428 00:21:06,919 --> 00:21:09,710 e abbiamo scartato Newman, perché egli non esiste nella tabella mamme. 429 00:21:09,710 --> 00:21:16,450 Quindi questa è la fusione ipotetica utilizzando l'operazione JOIN di SELECT. 430 00:21:16,450 --> 00:21:21,250 >> E poi cercavamo il il nome completo dell'utente e la madre dell'utente, 431 00:21:21,250 --> 00:21:24,999 e quindi questo è l'informazione che otterremmo dalla query globale 432 00:21:24,999 --> 00:21:26,040 che abbiamo fatto con SELECT. 433 00:21:26,040 --> 00:21:28,873 Così ci siamo uniti ai tavoli insieme e abbiamo estratto quelle due colonne, 434 00:21:28,873 --> 00:21:31,610 e quindi questo è quello che vorremmo ottenere. 435 00:21:31,610 --> 00:21:33,370 Ma SQL si unisce ad una specie di complicato. 436 00:21:33,370 --> 00:21:36,770 Probabilmente non fare loro troppo, ma solo avere un'idea dello scheletro 437 00:21:36,770 --> 00:21:41,992 che si potrebbe usare per unire due tavoli insieme se è necessario. 438 00:21:41,992 --> 00:21:43,700 Gli ultimi due sono un po 'più semplice lo prometto. 439 00:21:43,700 --> 00:21:48,040 Quindi l'aggiornamento, possiamo usare UPDATE per modificare le informazioni in una tabella. 440 00:21:48,040 --> 00:21:53,880 Il formato generale è un po 'UPDATE tavolo, impostare alcuni colonna a un valore 441 00:21:53,880 --> 00:21:55,540 DOVE qualche predicato è soddisfatto. 442 00:21:55,540 --> 00:21:57,850 Così, per esempio, potremmo voler per aggiornare la tabella utenti 443 00:21:57,850 --> 00:22:04,400 e impostare la password di yada bla, dove il numero ID è 10. 444 00:22:04,400 --> 00:22:06,400 >> Quindi, in questo caso, siamo aggiornamento della tabella utenti. 445 00:22:06,400 --> 00:22:08,275 Il numero di identificazione è 10 per che prima fila là, 446 00:22:08,275 --> 00:22:10,690 e vogliamo aggiornare il password bla bla. 447 00:22:10,690 --> 00:22:12,170 Ed è quello che sarebbe accaduto. 448 00:22:12,170 --> 00:22:13,628 E 'piuttosto semplice, giusto? 449 00:22:13,628 --> 00:22:17,990 E 'solo una molto semplice modifica della tabella. 450 00:22:17,990 --> 00:22:22,250 >> DELETE è l'operazione che abbiamo usato per rimuovere le informazioni da una tabella. 451 00:22:22,250 --> 00:22:24,817 DELETE FROM tabella WHERE alcuni predicato è soddisfatto. 452 00:22:24,817 --> 00:22:26,900 Vogliamo eliminare dal tabella utenti, per esempio 453 00:22:26,900 --> 00:22:28,254 dove il nome utente è Newman. 454 00:22:28,254 --> 00:22:31,420 Probabilmente si può intuire quello che sta succedendo a succederà qui dopo eseguiamo che SQL 455 00:22:31,420 --> 00:22:35,790 interrogazione, Newman è andato dal tavolo. 456 00:22:35,790 --> 00:22:40,460 >> Così tutte queste operazioni, come ho detto, sono molto facili da fare in phpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 Si tratta di una interfaccia molto facile da usare. 458 00:22:43,020 --> 00:22:45,930 Ma richiede sforzo manuale. 459 00:22:45,930 --> 00:22:47,840 Non vogliamo impiegare sforzo manuale. 460 00:22:47,840 --> 00:22:51,280 Vogliamo che i nostri programmi alle fare questo per noi, giusto? 461 00:22:51,280 --> 00:22:53,190 Così si potrebbe desiderare di fare questo livello di programmazione. 462 00:22:53,190 --> 00:22:56,410 Vogliamo integrare SQL e hanno qualcos'altro per fare questo per noi. 463 00:22:56,410 --> 00:23:02,710 >> Ma che cosa abbiamo visto che permette noi di fare qualcosa a livello di programmazione? 464 00:23:02,710 --> 00:23:03,690 Abbiamo visto PHP, giusto? 465 00:23:03,690 --> 00:23:05,760 Esso introduce alcuni dinamismo nei nostri programmi. 466 00:23:05,760 --> 00:23:10,430 E così per fortuna, SQL e PHP giocare molto bene insieme. 467 00:23:10,430 --> 00:23:13,230 C'è una funzione in PHP chiamato interrogazione, che può essere utilizzato. 468 00:23:13,230 --> 00:23:15,870 E si può passare come la parametro o l'argomento 469 00:23:15,870 --> 00:23:19,210 per interrogare una query SQL che si desidera eseguire. 470 00:23:19,210 --> 00:23:23,250 E PHP lo farà per conto vostro. 471 00:23:23,250 --> 00:23:25,564 >> Così, dopo aver collegato al database con PHP, 472 00:23:25,564 --> 00:23:26,980 ci sono due cose principali che fate questo. 473 00:23:26,980 --> 00:23:29,230 C'è qualcosa chiamato MySQLi e qualcosa chiamato DOP. 474 00:23:29,230 --> 00:23:31,063 Non entreremo in un enorme importo particolare lì. 475 00:23:31,063 --> 00:23:32,957 In CS50 usiamo DOP. 476 00:23:32,957 --> 00:23:34,790 Dopo aver collegato al database, è 477 00:23:34,790 --> 00:23:40,980 possono poi rendere le query del database passando le query come argomenti 478 00:23:40,980 --> 00:23:42,730 di funzioni PHP. 479 00:23:42,730 --> 00:23:46,460 E quando lo fate, si memorizza la set di risultati in un array associativo. 480 00:23:46,460 --> 00:23:50,290 >> E sappiamo come lavorare con array associativi in ​​PHP. 481 00:23:50,290 --> 00:23:52,630 Quindi potrei dire qualcosa come questo-- $ results-- 482 00:23:52,630 --> 00:23:55,470 questo è in PHP-- uguale query. 483 00:23:55,470 --> 00:23:57,660 E poi all'interno della funzione di query che l'argomento 484 00:23:57,660 --> 00:24:00,130 che sto passando per interrogare che assomiglia a SQL. 485 00:24:00,130 --> 00:24:01,160 E nel fatto che è SQL. 486 00:24:01,160 --> 00:24:05,700 Ecco la stringa di query che avrei come eseguire il mio database. 487 00:24:05,700 --> 00:24:09,250 >> E così in rosso, questo è PHP. 488 00:24:09,250 --> 00:24:11,890 Questo è SQL che sono integrando in PHP facendo 489 00:24:11,890 --> 00:24:15,020 è l'argomento per la funzione di query. 490 00:24:15,020 --> 00:24:19,640 Voglio selezionare FullName da gli utenti dove identificativo uguale 10. 491 00:24:19,640 --> 00:24:22,560 E poi magari dopo che ho fatto che, Potrei dire qualcosa di simile. 492 00:24:22,560 --> 00:24:25,550 Voglio stampare il messaggio Grazie per il login. 493 00:24:25,550 --> 00:24:32,530 >> E voglio che interpolate-- Voglio interpolare $ fullname risultati. 494 00:24:32,530 --> 00:24:36,280 E così è così che io lavoro con quella array associativo che sono tornato. 495 00:24:36,280 --> 00:24:39,730 $ fullname risultati sarebbero fondamentalmente finire stampare, 496 00:24:39,730 --> 00:24:42,870 grazie per l'accesso, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 Quello era il nome completo dove IDNUM uguale 10. 498 00:24:46,570 --> 00:24:48,850 >> E così tutto quello che sto facendo è che io sono now-- ho memorizzato 499 00:24:48,850 --> 00:24:52,780 la mia domanda, i risultati della mia ricerca e si traduce in un array associativo, 500 00:24:52,780 --> 00:24:56,330 e fullname è il nome del colonna mi stavo per. 501 00:24:56,330 --> 00:25:01,010 Ecco, questo è il mio chiave nei risultati array associativo che voglio. 502 00:25:01,010 --> 00:25:05,930 Quindi grazie per il login, $ risultati, fullname stamperà fuori, si attacca 503 00:25:05,930 --> 00:25:08,654 proprio tra quelli ricci bretelle, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 E ti piace stampare il messaggio Grazie per l'accesso Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Ora, probabilmente non vogliamo duro cose di codice del genere, giusto? 506 00:25:16,652 --> 00:25:19,860 Si potrebbe desiderare di fare qualcosa di simile stampa f, dove possiamo sostituire e magari 507 00:25:19,860 --> 00:25:22,443 raccogliere informazioni diverse, o forse hanno il processo di query 508 00:25:22,443 --> 00:25:23,370 informazioni diverse. 509 00:25:23,370 --> 00:25:27,920 E così di query, la funzione di query ha questa nozione di genere di sostituzioni 510 00:25:27,920 --> 00:25:32,310 molto simile stampare f cento s e c per cento, è punti interrogativi. 511 00:25:32,310 --> 00:25:34,290 >> E possiamo usare domanda marchi molto analogamente 512 00:25:34,290 --> 00:25:38,400 stampare f per le variabili di sostituzione. 513 00:25:38,400 --> 00:25:44,120 Così forse il tuo utente connesso in precedenza, e si è salvato il loro numero ID utente 514 00:25:44,120 --> 00:25:51,710 in $ _SESSION di PHP super- globale nel ID chiave. 515 00:25:51,710 --> 00:25:55,947 Quindi forse dopo essere loggato, si imposta $ _SESSION ID è uguale a 10, 516 00:25:55,947 --> 00:25:58,280 estrapolando dall'esempio abbiamo appena visto un secondo fa. 517 00:25:58,280 --> 00:26:01,960 >> E così quando abbiamo effettivamente eseguiamo Questa query i risultati ora, 518 00:26:01,960 --> 00:26:08,440 sarebbe collegare 10, o qualsiasi altra cosa il valore ID $ _SESSION è. 519 00:26:08,440 --> 00:26:10,790 E così che ci permette di essere un po 'più dinamico. 520 00:26:10,790 --> 00:26:12,699 Non stiamo duramente codifica le cose in più. 521 00:26:12,699 --> 00:26:14,490 Stiamo salvando le informazioni da qualche parte e poi 522 00:26:14,490 --> 00:26:18,924 possiamo usare ancora una volta che le informazioni a sorta di generalizzare quello che vogliamo fare, 523 00:26:18,924 --> 00:26:21,090 e proprio plug-in e il cambiamento il comportamento della nostra pagina 524 00:26:21,090 --> 00:26:26,489 sulla base di ciò il numero ID dell'utente in realtà è dopo che sono loggato. 525 00:26:26,489 --> 00:26:28,530 E 'anche possibile, però, che impostare i vostri risultati 526 00:26:28,530 --> 00:26:30,840 potrebbe consistere di più righe. 527 00:26:30,840 --> 00:26:33,990 In questo caso, si ha una serie di arrays-- 528 00:26:33,990 --> 00:26:35,334 un array di array associativi. 529 00:26:35,334 --> 00:26:37,000 E solo bisogno di scorrere attraverso di essa. 530 00:26:37,000 --> 00:26:41,950 E sappiamo come eseguire un'iterazione attraverso un array in PHP, giusto? 531 00:26:41,950 --> 00:26:45,600 Così qui è probabilmente il più cosa complessa che abbiamo visto finora. 532 00:26:45,600 --> 00:26:49,640 In realtà integra tre lingue insieme. 533 00:26:49,640 --> 00:26:52,920 >> Qui, in rosso, questo è il linguaggio HTML. 534 00:26:52,920 --> 00:26:56,872 Sto a quanto pare questo è starting-- un frammento di codice HTML che ho. 535 00:26:56,872 --> 00:26:59,580 Sto iniziando un nuovo paragrafo che dice mamme di Seinfeld TV. 536 00:26:59,580 --> 00:27:02,350 E poi subito dopo Sto iniziando un tavolo. 537 00:27:02,350 --> 00:27:06,060 E poi, dopo che, io avere qualche PHP, giusto? 538 00:27:06,060 --> 00:27:08,229 Ho tutto questo codice PHP in là. 539 00:27:08,229 --> 00:27:09,645 A quanto pare ho intenzione fare una query. 540 00:27:09,645 --> 00:27:14,180 E per rendere la query, ho intenzione di essere madri che usano Seleziona da mamme. 541 00:27:14,180 --> 00:27:15,970 >> Quindi questo è getting-- questo è SQL. 542 00:27:15,970 --> 00:27:17,300 Così il blu è SQL. 543 00:27:17,300 --> 00:27:19,680 Il rosso che abbiamo visto un secondo fa era HTML. 544 00:27:19,680 --> 00:27:21,360 E il verde qui è PHP. 545 00:27:21,360 --> 00:27:23,400 Così sto facendo una query al mio database, sono 546 00:27:23,400 --> 00:27:26,040 selezionare tutte le madri nella tabella mamme. 547 00:27:26,040 --> 00:27:30,710 Non solo restringendo il campo a particolari fila, sto chiedendo per tutti loro. 548 00:27:30,710 --> 00:27:33,290 >> Poi controllo se il risultato è Non uguale uguale falso. 549 00:27:33,290 --> 00:27:37,410 Questo è solo il mio modo di verificare genere di se i risultati non è uguale a null, 550 00:27:37,410 --> 00:27:40,260 che avremmo visto c per esempio. 551 00:27:40,260 --> 00:27:44,000 Fondamentalmente questo è solo il controllo per assicurarsi sicuro che in realtà ha dati indietro. 552 00:27:44,000 --> 00:27:47,041 Perché io non voglio iniziare la stampa fuori dati se non ho avuto alcun dato. 553 00:27:47,041 --> 00:27:50,690 Poi per ogni risultati come risultato la sintassi foreach da PHP, tutto quello che sto facendo 554 00:27:50,690 --> 00:27:53,399 è la stampa di madri $ risultato. 555 00:27:53,399 --> 00:27:55,940 E così ho intenzione di ottenere un set di tutte le madri di each-- 556 00:27:55,940 --> 00:27:59,980 è un array associativo di arrays-- e sto stampando 557 00:27:59,980 --> 00:28:03,649 ognuno come una riga di una tabella. 558 00:28:03,649 --> 00:28:05,690 E questo è davvero carina più o meno tutto ciò che devi fare. 559 00:28:05,690 --> 00:28:07,750 So che c'è un po ' bit succedendo qui 560 00:28:07,750 --> 00:28:13,210 in quest'ultimo esempio con array di arrays-- array di array associativi. 561 00:28:13,210 --> 00:28:17,340 Ma in realtà si limita a bollire giù in SQL per fare una query, 562 00:28:17,340 --> 00:28:21,102 di solito la selezione dopo che abbiamo già inserire le informazioni nella tabella, 563 00:28:21,102 --> 00:28:22,310 e poi semplicemente estraendolo. 564 00:28:22,310 --> 00:28:25,710 >> E questo è vorremmo tirarlo in questo caso particolare. 565 00:28:25,710 --> 00:28:31,120 Vorremmo estrarre tutto dell'individuo madri dalla tabella mamme. 566 00:28:31,120 --> 00:28:35,970 Abbiamo ottenuto tutta una serie di loro, e noi voglia di scorrere e stampare 567 00:28:35,970 --> 00:28:37,630 ognuno. 568 00:28:37,630 --> 00:28:40,510 Quindi, di nuovo, questo è probabilmente l'esempio più complicato 569 00:28:40,510 --> 00:28:44,510 abbiamo visto perché stiamo miscelatrice a tre diversi linguaggi insieme, giusto? 570 00:28:44,510 --> 00:28:50,100 >> Ancora una volta, abbiamo HTML qui in rosso, mescolato con qualche SQL qui in blu, 571 00:28:50,100 --> 00:28:52,049 mescolato con un po 'di PHP in verde. 572 00:28:52,049 --> 00:28:53,840 Ma tutti questi giocare bene insieme, è 573 00:28:53,840 --> 00:28:57,060 solo una questione di sviluppo buone abitudini in modo che si può ottenere 574 00:28:57,060 --> 00:28:58,780 loro di lavorare insieme nel modo desiderato. 575 00:28:58,780 --> 00:29:03,790 E l'unico modo per fare davvero è quello di pratica, pratica, pratica. 576 00:29:03,790 --> 00:29:06,740 Sono Doug Lloyd, questo è CS50. 577 00:29:06,740 --> 00:29:08,647