1 00:00:00,000 --> 00:00:03,493 >> [Música tocando] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 DOUG LLOYD: Em nossos vídeos sobre temas de desenvolvimento web, 4 00:00:07,100 --> 00:00:10,560 nós mencionamos o conceito de um banco de dados algumas vezes, certo? 5 00:00:10,560 --> 00:00:12,700 Então você é um banco de dados provavelmente está familiarizado com a partir de 6 00:00:12,700 --> 00:00:15,780 dizer usando o Microsoft Excel ou planilhas do Google. 7 00:00:15,780 --> 00:00:20,650 É realmente apenas uma organizada conjunto de tabelas, linhas e colunas. 8 00:00:20,650 --> 00:00:23,140 >> E um banco de dados é onde nossas lojas site 9 00:00:23,140 --> 00:00:26,760 informação que é importante para o nosso site para funcionar corretamente. 10 00:00:26,760 --> 00:00:30,150 Mais uma vez, um exemplo muito comum aqui está armazenando usernames e senhas 11 00:00:30,150 --> 00:00:32,824 numa base de dados, de modo que quando um usuário se conecta nosso site, 12 00:00:32,824 --> 00:00:36,690 o banco de dados pode ser consultado para ver se o usuário existe no banco de dados. 13 00:00:36,690 --> 00:00:39,260 E se eles são, verificando que sua senha está correta. 14 00:00:39,260 --> 00:00:43,420 E se a sua senha está correta, então nós podemos dar-lhes qualquer página 15 00:00:43,420 --> 00:00:45,370 eles estão pedindo. 16 00:00:45,370 --> 00:00:48,590 >> Então, provavelmente você está, mais uma vez, familiarizado com esta ideia do Excel ou Google 17 00:00:48,590 --> 00:00:49,430 Spreadsheets. 18 00:00:49,430 --> 00:00:52,980 Temos bancos de dados, tabelas, linhas e colunas. 19 00:00:52,980 --> 00:00:56,450 E isso é realmente sorte do conjunto fundamental 20 00:00:56,450 --> 00:00:58,470 de desagregação hierárquica aqui. 21 00:00:58,470 --> 00:00:59,800 Então aqui está uma planilha do Excel. 22 00:00:59,800 --> 00:01:02,640 E se você já abriu este ou outro programa semelhante 23 00:01:02,640 --> 00:01:06,780 você sabe que estes são aqui rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 Estes são colunas. 25 00:01:08,760 --> 00:01:11,790 >> Talvez aqui, embora você possa não usar esse recurso terrivelmente much-- 26 00:01:11,790 --> 00:01:15,370 Vou aumentar em-- temos essa idéia de uma folha. 27 00:01:15,370 --> 00:01:17,930 Então, talvez estas folhas, se Eu alternar frente e para trás, 28 00:01:17,930 --> 00:01:21,600 são diferentes tabelas que existe no meu banco de dados. 29 00:01:21,600 --> 00:01:25,210 E se continuarmos a exemplo tudo A propósito, o nome deste banco de dados 30 00:01:25,210 --> 00:01:26,940 é um livro. 31 00:01:26,940 --> 00:01:28,710 Talvez eu tenha Livro 2 e 3 do livro. 32 00:01:28,710 --> 00:01:33,270 Então, cada arquivo de Excel é uma banco de dados, cada folha é uma tabela, 33 00:01:33,270 --> 00:01:39,530 e dentro de cada tabela eu tenho essa idéia de linhas e colunas. 34 00:01:39,530 --> 00:01:41,900 >> Então, como posso trabalhar com esta base de dados? 35 00:01:41,900 --> 00:01:43,630 Como faço para obter informações a partir dele? 36 00:01:43,630 --> 00:01:47,540 Bem, há uma linguagem chamada SQL-- que eu normalmente apenas chamar Sequel-- 37 00:01:47,540 --> 00:01:50,010 e que defende o Structured Query Language. 38 00:01:50,010 --> 00:01:52,981 E é uma linguagem de programação, mas é uma programação bastante limitado 39 00:01:52,981 --> 00:01:53,480 idioma. 40 00:01:53,480 --> 00:01:56,407 Não é bem como outros que temos trabalhado com. 41 00:01:56,407 --> 00:01:58,240 Mas o objectivo da presente linguagem de programação 42 00:01:58,240 --> 00:02:01,570 é consultar um banco de dados, a pedir informações de um banco de dados, 43 00:02:01,570 --> 00:02:04,480 encontrar informações em um base de dados, e assim por diante. 44 00:02:04,480 --> 00:02:08,449 >> Nós também, em CS50-- e é uma muito plataforma comum, ele é chamado MySQL. 45 00:02:08,449 --> 00:02:10,600 Isso é o que nós usamos no curso. 46 00:02:10,600 --> 00:02:12,880 É uma fonte aberta plataforma que estabelece 47 00:02:12,880 --> 00:02:16,732 um chamado database-- relacional um banco de dados, de forma eficaz. 48 00:02:16,732 --> 00:02:18,440 Nós não precisamos de obter em muitos detalhes 49 00:02:18,440 --> 00:02:20,930 sobre o que um banco de dados relacional é. 50 00:02:20,930 --> 00:02:24,650 Mas a linguagem SQL é muito apto para trabalhar 51 00:02:24,650 --> 00:02:29,760 com MySQL e outros semelhantes estilos de bancos de dados relacionais. 52 00:02:29,760 --> 00:02:34,010 >> E muitas instalações de MySQL vêm com algo 53 00:02:34,010 --> 00:02:37,760 chamada phpMyAdmin, que é uma gráfica de usuário 54 00:02:37,760 --> 00:02:40,970 interface-- um GUI-- que faz com que seja um pouco mais 55 00:02:40,970 --> 00:02:44,410 user friendly para executar consultas de banco de dados, 56 00:02:44,410 --> 00:02:48,980 porque os bancos de dados não são usados ​​apenas por programadores avançados, certo? 57 00:02:48,980 --> 00:02:51,510 Às vezes, há estas pequenas empresas, 58 00:02:51,510 --> 00:02:53,900 e eles não podem dar ao luxo de contratar uma equipe de programadores, 59 00:02:53,900 --> 00:02:56,700 mas eles ainda precisam de armazenar informação numa base de dados. 60 00:02:56,700 --> 00:02:59,300 >> Algo como phpMyAdmin faz com que seja muito fácil para alguém 61 00:02:59,300 --> 00:03:03,630 que nunca programado antes de pegar e se familiarizar com a forma como 62 00:03:03,630 --> 00:03:07,710 a trabalhar com um banco de dados. 63 00:03:07,710 --> 00:03:11,800 O problema é, phpMyAdmin, enquanto é uma ferramenta fantástica para a aprendizagem 64 00:03:11,800 --> 00:03:14,850 sobre bancos de dados, é manual. 65 00:03:14,850 --> 00:03:18,050 Você vai ter que fazer login no -lo e executar comandos e tipo 66 00:03:18,050 --> 00:03:19,910 coisas manualmente. 67 00:03:19,910 --> 00:03:23,160 >> E como nós sabemos de nossa exemplo em programação web PHP, 68 00:03:23,160 --> 00:03:26,550 ter que fazer manualmente coisas em nosso site, 69 00:03:26,550 --> 00:03:30,970 se queremos dinâmico, um responsiva ativa site, talvez não seja a melhor abordagem. 70 00:03:30,970 --> 00:03:33,980 Gostaríamos de encontrar uma maneira de talvez automatizar isso de alguma forma. 71 00:03:33,980 --> 00:03:37,864 E SQL nos permitirá fazer isso. 72 00:03:37,864 --> 00:03:39,780 Então, quando nós vamos começar a trabalhar com SQL, 73 00:03:39,780 --> 00:03:41,220 precisamos primeiro ter uma banco de dados com que trabalhar. 74 00:03:41,220 --> 00:03:42,510 Criação de um banco de dados é algo que você provavelmente 75 00:03:42,510 --> 00:03:45,350 vai fazer no phpMyAdmin, porque você só precisa fazer isso uma vez, 76 00:03:45,350 --> 00:03:49,690 e a sintaxe para fazer isso é muito mais simples. 77 00:03:49,690 --> 00:03:51,940 É muito mais fácil de fazê-lo em uma interface gráfica de usuário 78 00:03:51,940 --> 00:03:53,520 que digitá-lo fora como um comando. 79 00:03:53,520 --> 00:03:55,186 O comando pode ficar um pouco complicado. 80 00:03:55,186 --> 00:03:58,889 Da mesma forma, a criação de uma tabela pode obter um pouco complicado também. 81 00:03:58,889 --> 00:04:01,930 E assim as coisas como a criação de um banco de dados e criação de uma tabela, que você é 82 00:04:01,930 --> 00:04:06,270 provavelmente só vai fazer once-- uma vez por tabela, uma vez por database-- 83 00:04:06,270 --> 00:04:09,040 não há problema em fazer isso em uma interface gráfica. 84 00:04:09,040 --> 00:04:11,570 No processo de criação de uma tabela, você vai 85 00:04:11,570 --> 00:04:14,840 também tem que especificar todos os colunas que estarão nessa tabela. 86 00:04:14,840 --> 00:04:18,149 Que tipo de informação fazer você deseja armazenar na tabela? 87 00:04:18,149 --> 00:04:24,520 Talvez um nome de usuário e data de nascimento, senha, número de ID do usuário, e talvez 88 00:04:24,520 --> 00:04:26,170 cidade e estado, certo? 89 00:04:26,170 --> 00:04:30,080 >> E para cada vez que quiser adicionar um usuário ao banco de dados, queremos obter todos os seis 90 00:04:30,080 --> 00:04:31,890 dessas peças de informação. 91 00:04:31,890 --> 00:04:34,840 E fazemos isso adicionando linhas ao quadro. 92 00:04:34,840 --> 00:04:37,800 Então primeiro criamos um banco de dados, então nós criamos uma tabela. 93 00:04:37,800 --> 00:04:40,100 Como parte da criação uma mesa, somos convidados 94 00:04:40,100 --> 00:04:44,280 para especificar cada coluna que gostaríamos nesta tabela. 95 00:04:44,280 --> 00:04:47,247 E então quando começamos a adicionar informação para a base de dados 96 00:04:47,247 --> 00:04:49,580 e consultar o banco de dados mais generally-- não apenas acrescentando: 97 00:04:49,580 --> 00:04:51,610 mas tudo o resto nós fazer-- estaremos lidando 98 00:04:51,610 --> 00:04:58,870 com linhas da tabela, que é um informações do usuário a partir de todo o conjunto. 99 00:04:58,870 --> 00:05:03,210 >> Assim, cada coluna SQL é capaz de a exploração dos dados de um determinado tipo de dados. 100 00:05:03,210 --> 00:05:06,560 Então nós meio que eliminou este idéia de tipos de dados em PHP, 101 00:05:06,560 --> 00:05:08,747 mas eles estão de volta aqui em SQL. 102 00:05:08,747 --> 00:05:10,080 E há um monte de tipos de dados. 103 00:05:10,080 --> 00:05:13,420 Aqui é apenas 20 deles, mas não é mesmo todos eles. 104 00:05:13,420 --> 00:05:16,240 Portanto, temos idéias como INTs-- Integers-- nós provavelmente sabe 105 00:05:16,240 --> 00:05:17,760 que esta coluna pode conter números inteiros. 106 00:05:17,760 --> 00:05:21,077 E existem variações thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. 107 00:05:21,077 --> 00:05:22,660 Talvez nem sempre precisa de quatro mordidas. 108 00:05:22,660 --> 00:05:26,800 Talvez precisemos de oito bytes, e por isso, pode usar essas variações em números inteiros 109 00:05:26,800 --> 00:05:28,510 para ser um pouco mais eficiente do espaço. 110 00:05:28,510 --> 00:05:31,899 Nós podemos fazer números decimais, nós pode fazer números de ponto flutuante. 111 00:05:31,899 --> 00:05:32,940 Estes são bastante semelhantes. 112 00:05:32,940 --> 00:05:34,773 Existem algumas diferenças, e se você faria 113 00:05:34,773 --> 00:05:37,330 gostaria de procurar o Tipo SQL de guia, você 114 00:05:37,330 --> 00:05:40,670 pode ver o que o ligeiro diferenças entre eles. 115 00:05:40,670 --> 00:05:43,250 >> Talvez a gente quer armazenar informações sobre data e hora. 116 00:05:43,250 --> 00:05:47,047 Talvez nós estamos mantendo o controle de quando o usuário se juntou ao nosso site, 117 00:05:47,047 --> 00:05:48,880 e talvez por isso que queremos para ter uma coluna que é 118 00:05:48,880 --> 00:05:52,820 um tempo de data ou um timestamp que indica quando o utilizador realmente 119 00:05:52,820 --> 00:05:54,130 se inscreveram. 120 00:05:54,130 --> 00:05:56,132 Podemos fazer geometrias e cadeias de linhas. 121 00:05:56,132 --> 00:05:57,340 Este é realmente muito legal. 122 00:05:57,340 --> 00:06:01,410 Poderíamos traçar um área geográfica através 123 00:06:01,410 --> 00:06:05,110 GIS coordenadas para traçar uma área. 124 00:06:05,110 --> 00:06:08,580 Então, realmente pode armazenar esse tipo de informações numa coluna SQL. 125 00:06:08,580 --> 00:06:11,390 >> TEXT é apenas blobs gigantes de texto, talvez. 126 00:06:11,390 --> 00:06:12,840 Enums são uma espécie de interessante. 127 00:06:12,840 --> 00:06:16,080 Eles realmente existem em C. Nós não fazer falar sobre eles porque eles não são 128 00:06:16,080 --> 00:06:19,110 terrivelmente comumente utilizado, pelo menos, CS50. 129 00:06:19,110 --> 00:06:22,680 Mas é um tipo de dados enumerado, que é capaz de manter valores limitados. 130 00:06:22,680 --> 00:06:25,940 >> Um bom exemplo aqui seria para criar um enum onde o sete 131 00:06:25,940 --> 00:06:29,394 valores possíveis são domingo, segunda-feira, Terça-feira, quarta-feira, quinta-feira, sexta-feira, 132 00:06:29,394 --> 00:06:30,060 Sábado, certo? 133 00:06:30,060 --> 00:06:33,311 Que tipo de dados de Day Semana não existe, 134 00:06:33,311 --> 00:06:35,310 mas poderíamos criar uma tipo de dados enumerado como 135 00:06:35,310 --> 00:06:39,400 que essa coluna só pode prender sempre uma dessas sete valores possíveis. 136 00:06:39,400 --> 00:06:44,300 Temos enumerou tudo dos valores possíveis. 137 00:06:44,300 --> 00:06:47,630 >> Então nós temos CHAR e VARCHAR, e eu tenho colorir estas verde 138 00:06:47,630 --> 00:06:49,505 porque nós somos realmente vai levar um segundo 139 00:06:49,505 --> 00:06:51,950 para falar sobre a diferença entre estas duas coisas. 140 00:06:51,950 --> 00:06:55,780 Assim, CHAR, ao contrário do C, onde CHAR foi um único personagem, 141 00:06:55,780 --> 00:07:00,730 em SQL CHAR refere-se a um uma cadeia de comprimento fixo. 142 00:07:00,730 --> 00:07:02,620 E quando nós criar esta coluna, nós, na verdade, 143 00:07:02,620 --> 00:07:05,070 pode especificar o comprimento da corda. 144 00:07:05,070 --> 00:07:08,080 >> Assim, neste exemplo, poderíamos dizer CHAR (10). 145 00:07:08,080 --> 00:07:11,190 Isso significa que todo elemento de coluna 146 00:07:11,190 --> 00:07:13,910 consistirá de 10 bytes de informação. 147 00:07:13,910 --> 00:07:15,770 Nem mais nem menos. 148 00:07:15,770 --> 00:07:21,780 Então, se nós tentamos e colocar em um 15 bit ou um elemento de 15 caracteres 149 00:07:21,780 --> 00:07:25,340 ou valor para esta coluna, nós estamos só obter os 10 primeiros. 150 00:07:25,340 --> 00:07:27,290 Se colocarmos em dois caráter valor longo, 151 00:07:27,290 --> 00:07:30,700 nós vamos ter os dois caracteres e, em seguida oito mordidas nulos. 152 00:07:30,700 --> 00:07:34,990 Nós nunca vamos ser mais eficiente do que isso. 153 00:07:34,990 --> 00:07:37,727 >> Um VARCHAR é tipo como nossa noção de uma string 154 00:07:37,727 --> 00:07:39,560 que estamos familiarizados com de C ou de PHP. 155 00:07:39,560 --> 00:07:40,830 É uma cadeia de comprimento variável. 156 00:07:40,830 --> 00:07:42,560 E quando você cria Nesta coluna, você só 157 00:07:42,560 --> 00:07:44,860 especificar os comprimentos máximos possíveis. 158 00:07:44,860 --> 00:07:49,065 Então, talvez 99, ou comumente 255. 159 00:07:49,065 --> 00:07:50,440 Isso seria o comprimento máximo. 160 00:07:50,440 --> 00:07:52,890 E por isso, se nós estávamos armazenando 15 cadeia de caracteres, 161 00:07:52,890 --> 00:07:56,157 usaríamos 15 bytes, talvez 16 bytes para o terminador nulo. 162 00:07:56,157 --> 00:07:57,990 Se estivéssemos armazenar uma três cadeia de caracteres, 163 00:07:57,990 --> 00:08:01,120 usaríamos três ou quatro bytes. 164 00:08:01,120 --> 00:08:03,050 Mas nós não usaria a completa 99. 165 00:08:03,050 --> 00:08:05,190 >> Então, por que temos tanto? 166 00:08:05,190 --> 00:08:08,210 Bem, se nós precisamos descobrir como tempo alguma coisa é com um VARCHAR, 167 00:08:08,210 --> 00:08:10,680 temos que tipo de iterate através dele, tal como fizemos em C 168 00:08:10,680 --> 00:08:12,230 e descobrir onde ele pára. 169 00:08:12,230 --> 00:08:15,920 Considerando que, se sabemos que tudo nesta coluna é de 10 bytes, talvez 170 00:08:15,920 --> 00:08:19,220 nós sabemos que a informação, podemos saltar 10 bytes, 10 bytes, 10 bytes, 10 bytes, 171 00:08:19,220 --> 00:08:21,790 e sempre encontrar o início da cadeia. 172 00:08:21,790 --> 00:08:25,210 >> Assim, podemos ter algum espaço desperdiçado com um CHAR, 173 00:08:25,210 --> 00:08:28,510 mas talvez haja um comércio off de ter uma melhor velocidade 174 00:08:28,510 --> 00:08:30,160 a navegar no banco de dados. 175 00:08:30,160 --> 00:08:32,330 Mas talvez nós queremos o flexibilidade de um VARCHAR 176 00:08:32,330 --> 00:08:36,710 Se em vez de having-- nosso CHAR foi de 255, mas a maioria de nossos usuários 177 00:08:36,710 --> 00:08:40,537 só se introduzir três ou quatro bytes vale de informações ou três ou quatro 178 00:08:40,537 --> 00:08:41,870 caracteres no valor de informação. 179 00:08:41,870 --> 00:08:44,324 >> Mas alguns usuários estavam usando toda a 255, talvez 180 00:08:44,324 --> 00:08:45,990 VARCHAR seria mais apropriado lá. 181 00:08:45,990 --> 00:08:49,840 É uma espécie de um trade-off, e em geral, para fins de CS50, 182 00:08:49,840 --> 00:08:54,107 você não precisa se preocupar muito sobre se você usar um CHAR ou VARCHAR. 183 00:08:54,107 --> 00:08:57,190 Mas no mundo real, essas coisas não importa, porque todas essas colunas 184 00:08:57,190 --> 00:08:59,300 ocupam espaço físico real. 185 00:08:59,300 --> 00:09:04,150 E espaço físico, na mundo real, vem em um prêmio. 186 00:09:04,150 --> 00:09:06,800 >> Então, uma outra consideração quando você está construindo uma mesa 187 00:09:06,800 --> 00:09:09,840 é escolher uma coluna para ser que é chamado de chave primária. 188 00:09:09,840 --> 00:09:14,350 E uma chave primária é uma coluna onde cada valor único é único. 189 00:09:14,350 --> 00:09:19,980 E isso significa que você pode facilmente escolher uma única linha, só de olhar 190 00:09:19,980 --> 00:09:22,450 na chave primária dessa linha. 191 00:09:22,450 --> 00:09:24,580 Assim, por exemplo, você geralmente, com os usuários, 192 00:09:24,580 --> 00:09:27,210 Não quero que dois usuários têm o mesmo número de ID do usuário. 193 00:09:27,210 --> 00:09:28,960 E talvez por isso você tem muita informação, 194 00:09:28,960 --> 00:09:30,793 e talvez dois usuários podem tem o mesmo nome-- 195 00:09:30,793 --> 00:09:32,650 você tem John Smith e John Smith. 196 00:09:32,650 --> 00:09:34,520 Isso não é necessariamente um problema, porque há várias pessoas 197 00:09:34,520 --> 00:09:35,830 no mundo chamado John Smith. 198 00:09:35,830 --> 00:09:40,766 Mas só temos um número de identificação do usuário 10, um usuário ID número 11, 12, 13. 199 00:09:40,766 --> 00:09:42,640 Não temos dois usuários com o mesmo número, 200 00:09:42,640 --> 00:09:46,010 e talvez por isso os números de ID do usuário seria uma boa chave primária. 201 00:09:46,010 --> 00:09:48,610 >> Não temos qualquer duplicação, e podemos agora unicamente 202 00:09:48,610 --> 00:09:52,619 identificar cada única linha apenas olhando para essa coluna. 203 00:09:52,619 --> 00:09:55,410 Escolhendo as chaves primárias pode realmente fazer operações de tabela subsequentes 204 00:09:55,410 --> 00:09:59,710 muito mais fácil porque você pode aproveitar o fato de que certas linhas serão 205 00:09:59,710 --> 00:10:02,720 ser único, ou uma determinada coluna de seu banco de dados ou tabela 206 00:10:02,720 --> 00:10:06,030 será exclusivo para escolher linhas particulares para fora. 207 00:10:06,030 --> 00:10:08,790 >> Você também pode ter um primário conjunta chave, que você pode achar ocasião 208 00:10:08,790 --> 00:10:11,720 de usar, que é apenas um combinação de duas colunas que 209 00:10:11,720 --> 00:10:13,280 é garantida para ser exclusivo. 210 00:10:13,280 --> 00:10:16,410 Então, talvez você tem um coluna que é como e Bs, 211 00:10:16,410 --> 00:10:19,290 uma coluna que é um, dois, e três, mas você vai sempre apenas 212 00:10:19,290 --> 00:10:23,660 tem um único A1, uma única A2, e assim por diante e assim por diante. 213 00:10:23,660 --> 00:10:28,980 Mas você pode ter um B2, um C2, ou uma A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 Assim, você poderá ter vários Como, múltiplos Bs, os múltiplos, múltiplos pares, 215 00:10:32,840 --> 00:10:38,567 mas você só pode sempre ter um único A1, B2, C3, e assim por diante. 216 00:10:38,567 --> 00:10:40,400 Então, como eu disse, é um SQL linguagem de programação, 217 00:10:40,400 --> 00:10:42,024 mas tem um vocabulário bastante limitado. 218 00:10:42,024 --> 00:10:44,880 Ele não é tão expansivo como C e PHP e outras linguagens 219 00:10:44,880 --> 00:10:46,350 que falamos no curso. 220 00:10:46,350 --> 00:10:49,960 É um mais detalhado língua do que o que nós somos 221 00:10:49,960 --> 00:10:52,789 vai falar neste vídeo, porque neste vídeo 222 00:10:52,789 --> 00:10:54,830 vamos falar sobre quatro operações que nós 223 00:10:54,830 --> 00:10:55,720 pode executar em uma tabela. 224 00:10:55,720 --> 00:10:56,761 >> Existem mais do que isso. 225 00:10:56,761 --> 00:10:58,730 Nós podemos fazer mais do que isso, mas para os nossos propósitos, 226 00:10:58,730 --> 00:11:02,250 nós estamos geralmente vai estar usando apenas quatro inserção operations--, 227 00:11:02,250 --> 00:11:05,360 selecionar, atualizar e excluir. 228 00:11:05,360 --> 00:11:08,750 E você provavelmente pode adivinhar intuitivamente o que todos os quatro destas coisas fazem. 229 00:11:08,750 --> 00:11:12,520 Mas nós vamos entrar em um pouco de detalhe em cada um. 230 00:11:12,520 --> 00:11:15,780 >> Assim, para efeitos da presente vídeo, vamos supor 231 00:11:15,780 --> 00:11:18,870 temos o seguinte dois tabelas em um único banco de dados. 232 00:11:18,870 --> 00:11:23,460 Nós temos uma tabela chamada Usuários que tem quatro columns-- número de identificação, nome de usuário, 233 00:11:23,460 --> 00:11:25,350 senha e nome completo. 234 00:11:25,350 --> 00:11:27,430 E nós temos uma segunda tabela no mesmo banco de dados 235 00:11:27,430 --> 00:11:32,129 chamado Moms que apenas armazena informações sobre um nome de usuário e uma mãe. 236 00:11:32,129 --> 00:11:33,920 Assim, para todos os exemplos Neste vídeo, nós vamos 237 00:11:33,920 --> 00:11:37,945 estar usando esse banco de dados e atualizações posteriores. 238 00:11:37,945 --> 00:11:40,070 Então, vamos dizer que queremos adicionar informações a uma mesa. 239 00:11:40,070 --> 00:11:44,460 Isso é o que faz a operação de inserção. 240 00:11:44,460 --> 00:11:46,550 Ao explicar todos estes comandos, eu vou 241 00:11:46,550 --> 00:11:48,860 para dar-lhe um esqueleto geral de usar. 242 00:11:48,860 --> 00:11:51,661 Porque, basicamente, as consultas vai olhar bastante semelhante, 243 00:11:51,661 --> 00:11:54,660 nós apenas estamos indo para estar mudando ligeiramente diferentes peças de informação 244 00:11:54,660 --> 00:11:56,750 para fazer coisas diferentes com a tabela. 245 00:11:56,750 --> 00:11:59,200 >> Assim, por INSERT, o esqueleto olha o tipo de como este. 246 00:11:59,200 --> 00:12:02,230 Queremos inserir em uma tabela específica. 247 00:12:02,230 --> 00:12:05,290 Então nós temos um parêntese de abertura e uma lista de colunas 248 00:12:05,290 --> 00:12:08,070 que queremos colocar valores em. 249 00:12:08,070 --> 00:12:10,974 Fechar parênteses, o seguintes valores e, em seguida, 250 00:12:10,974 --> 00:12:13,390 novamente, listamos os valores queremos colocar em cima da mesa. 251 00:12:13,390 --> 00:12:15,950 >> Portanto, um exemplo do presente seria a seguinte. 252 00:12:15,950 --> 00:12:19,170 Eu quero inserir na tabela usuários a seguinte columns-- 253 00:12:19,170 --> 00:12:21,010 nome de usuário, senha e nome completo. 254 00:12:21,010 --> 00:12:25,282 Assim, uma nova linha onde eu estou colocando naqueles três colunas e estamos 255 00:12:25,282 --> 00:12:30,030 vai colocar nos valores Newman, USMAIL, e Newman. 256 00:12:30,030 --> 00:12:32,730 Portanto, neste caso, eu sou colocando a Newman minúsculas 257 00:12:32,730 --> 00:12:38,710 na coluna de nome de usuário, a senha USMAIL, bem como a plena capital de nome N 258 00:12:38,710 --> 00:12:41,940 Newman na coluna de nome completo. 259 00:12:41,940 --> 00:12:44,240 >> Então aqui está o que o banco de dados parecia antes. 260 00:12:44,240 --> 00:12:48,250 Aqui está o que a tabela de usuários no top parecia antes que fizemos isso. 261 00:12:48,250 --> 00:12:50,760 Depois de se executar este consulta, nós começamos isso. 262 00:12:50,760 --> 00:12:54,790 Nós adicionamos uma nova linha à tabela. 263 00:12:54,790 --> 00:12:56,810 Mas note uma coisa que eu não especificou, 264 00:12:56,810 --> 00:12:59,880 mas de alguma forma eu tenho um valor para, o que é este 12 aqui. 265 00:12:59,880 --> 00:13:02,820 Eu não disse que eu queria número de identificação colocar lá dentro. 266 00:13:02,820 --> 00:13:04,900 Eu queria colocar nome de usuário, senha, nome completo. 267 00:13:04,900 --> 00:13:06,440 E eu fiz isso, tudo bem. 268 00:13:06,440 --> 00:13:07,760 >> Mas eu também tenho esse 12. 269 00:13:07,760 --> 00:13:09,490 Por que eu recebo este 12? 270 00:13:09,490 --> 00:13:12,904 Bem, acontece que quando você está definindo 271 00:13:12,904 --> 00:13:15,570 uma coluna que vai ser o seu chave primária, que é normalmente, 272 00:13:15,570 --> 00:13:16,510 como eu disse, um número de identificação. 273 00:13:16,510 --> 00:13:18,718 Não é sempre, necessariamente, vai ser um número de identificação, 274 00:13:18,718 --> 00:13:22,380 mas normalmente é uma boa idéia ser algum tipo de valor inteiro. 275 00:13:22,380 --> 00:13:25,950 Você tem uma opção em phpMyAdmin quando você está criando o banco de dados 276 00:13:25,950 --> 00:13:31,130 ou sua mesa para definir que coluna como auto incrementado. 277 00:13:31,130 --> 00:13:34,520 >> Que é realmente uma boa idéia quando você está trabalhando com uma chave primária, 278 00:13:34,520 --> 00:13:39,330 porque você quer todos os valores nessa coluna para ser exclusivo. 279 00:13:39,330 --> 00:13:43,310 E se você esquecer de especificar -lo por mais de uma pessoa, 280 00:13:43,310 --> 00:13:46,240 agora você tem uma situação em que coluna que não é único. 281 00:13:46,240 --> 00:13:50,200 Você tem dois espaços em branco, para que você não pode já o identificar um column-- 282 00:13:50,200 --> 00:13:54,150 ou você já não pode unicamente identificar uma linha com base nessa coluna. 283 00:13:54,150 --> 00:13:57,010 Ele perdeu toda a sua valor como uma chave primária. 284 00:13:57,010 --> 00:14:02,010 >> E assim, aparentemente, o que eu fiz aqui está configurado o ID do usuário 285 00:14:02,010 --> 00:14:07,790 coluna de auto incremento para que cada vez que eu adicionar informações para a mesa, 286 00:14:07,790 --> 00:14:12,220 ele vai me dar automaticamente um valor para a chave primária. 287 00:14:12,220 --> 00:14:15,570 Então, eu nunca posso esquecer de fazê-lo porque o banco de dados vai fazer isso por mim. 288 00:14:15,570 --> 00:14:16,587 Então, isso é bem legal. 289 00:14:16,587 --> 00:14:18,670 E é por isso que nós temos 12 em lá, porque eu tenho 290 00:14:18,670 --> 00:14:21,772 definir essa coluna até incremento automático. 291 00:14:21,772 --> 00:14:23,730 Se eu acrescentei outra pessoa que seria 13, se eu adicionei 292 00:14:23,730 --> 00:14:27,890 outra pessoa seria 14, e assim por diante. 293 00:14:27,890 --> 00:14:30,190 >> Então vamos fazer mais uma inserção. 294 00:14:30,190 --> 00:14:34,530 Nós vamos inserir na tabela de mães, em particular, o nome de usuário e sua mãe 295 00:14:34,530 --> 00:14:37,390 coluna, os valores Kramer e Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 E então tivemos isso antes. 297 00:14:39,140 --> 00:14:41,800 Depois que nós executamos Consulta SQL, nós temos isso. 298 00:14:41,800 --> 00:14:47,290 Nós adicionamos Kramer e Babs Kramer à mesa de mães. 299 00:14:47,290 --> 00:14:48,350 >> Assim que é a inserção. 300 00:14:48,350 --> 00:14:51,850 SELECIONAR é o que usamos para extrair informações da tabela. 301 00:14:51,850 --> 00:14:54,390 Então é assim que chegarmos informações do banco de dados. 302 00:14:54,390 --> 00:14:59,589 E é só selecionar comandos vão ser muito frequentemente usada na programação. 303 00:14:59,589 --> 00:15:02,130 O general framework-- o esqueleto geral se parece com isso. 304 00:15:02,130 --> 00:15:06,550 Selecione um conjunto de colunas de uma mesa, e em seguida, facultativamente 305 00:15:06,550 --> 00:15:11,090 você pode especificar um ou condition-- o que nós normalmente chamamos um predicado, 306 00:15:11,090 --> 00:15:13,010 geralmente é o termo que usamos em SQL. 307 00:15:13,010 --> 00:15:16,490 >> Mas é basicamente o que particulares linhas que você deseja obter. 308 00:15:16,490 --> 00:15:19,100 Se você quiser, em vez de começar tudo, reduzi-lo, 309 00:15:19,100 --> 00:15:20,060 isto é onde você faria isso. 310 00:15:20,060 --> 00:15:22,777 E, em seguida, opcionalmente, você também pode ordenar por uma coluna específica. 311 00:15:22,777 --> 00:15:25,860 Então, talvez você quer ter coisas classificados alfabeticamente com base em uma coluna 312 00:15:25,860 --> 00:15:27,540 ou por ordem alfabética com base em outro. 313 00:15:27,540 --> 00:15:30,610 >> Mais uma vez, WHERE e ORDER BY são opcionais. 314 00:15:30,610 --> 00:15:32,681 Mas eles provavelmente vai ser useful-- particularmente 315 00:15:32,681 --> 00:15:34,680 ONDE será útil para diminuir para que você não 316 00:15:34,680 --> 00:15:37,460 obter todo o seu banco de dados back e tem que processá-lo, você começa apenas 317 00:15:37,460 --> 00:15:39,300 as partes dele que você se preocupa. 318 00:15:39,300 --> 00:15:44,932 Assim, por exemplo, eu poderia querer seleccionar Número de identificação e nome completo dos usuários. 319 00:15:44,932 --> 00:15:46,140 Então, o que pode esta aparência? 320 00:15:46,140 --> 00:15:48,270 Então aqui está a minha tabela de usuários. 321 00:15:48,270 --> 00:15:51,080 Eu quero selecionar idnum e fullname dos usuários. 322 00:15:51,080 --> 00:15:52,300 O que é que eu vou conseguir? 323 00:15:52,300 --> 00:15:53,580 Eu estou indo para obter este. 324 00:15:53,580 --> 00:15:56,930 Eu não reduzi-lo, então eu sou obter o número de identificação para cada linha 325 00:15:56,930 --> 00:16:00,850 e eu estou começando a plena nome de cada linha. 326 00:16:00,850 --> 00:16:02,210 >> ESTÁ BEM. 327 00:16:02,210 --> 00:16:05,640 E se eu quiser selecionar senha dos usuários WHERE-- agora 328 00:16:05,640 --> 00:16:10,370 Eu estou adicionando uma condição, uma predicate-- onde idnum é inferior a 12. 329 00:16:10,370 --> 00:16:13,660 Então aqui está o meu banco de dados novamente, minha tabela de usuários do topo. 330 00:16:13,660 --> 00:16:17,030 O que é que eu vou conseguir, se eu quiser selecione essa informação, a senha, 331 00:16:17,030 --> 00:16:21,550 onde ID do usuário ou idnum é inferior a 12? 332 00:16:21,550 --> 00:16:24,910 Eu estou indo para obter esta informações de volta, certo? 333 00:16:24,910 --> 00:16:29,170 Acontece que idnum é de 10, menos de 12, número de identificação de 11 a menos de 12. 334 00:16:29,170 --> 00:16:32,160 Eu estou começando a senha para as linhas. 335 00:16:32,160 --> 00:16:33,914 Isso é o que eu pedi. 336 00:16:33,914 --> 00:16:34,580 Que tal isso? 337 00:16:34,580 --> 00:16:39,170 E se eu quiser selecionar estrela do moms mesa onde nome de usuário é igual a Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, selecione estrelas é o especial espécie de curinga chamada 339 00:16:43,780 --> 00:16:45,670 que usamos para obter tudo. 340 00:16:45,670 --> 00:16:48,620 Então, eles estão dizendo selecione nome de usuário mãe vírgula, que 341 00:16:48,620 --> 00:16:51,060 passou a ser a única duas colunas desta tabela, 342 00:16:51,060 --> 00:16:53,260 Eu só posso selecionar estrela e começar tudo 343 00:16:53,260 --> 00:16:55,030 onde o nome de usuário é igual a Jerry. 344 00:16:55,030 --> 00:16:59,380 E é isso que eu iria ficar se eu fiz essa consulta particular. 345 00:16:59,380 --> 00:17:01,810 >> Agora, os bancos de dados são grandes porque permitem que 346 00:17:01,810 --> 00:17:06,074 nos a organizar a informação, talvez, um pouco mais eficientemente do que 347 00:17:06,074 --> 00:17:06,740 talvez de outra forma. 348 00:17:06,740 --> 00:17:10,240 Nós não necessariamente para armazenar cada pedaço de informação relevante 349 00:17:10,240 --> 00:17:12,230 sobre um usuário na mesma tabela. 350 00:17:12,230 --> 00:17:13,730 Tivemos duas mesas de lá. 351 00:17:13,730 --> 00:17:15,734 >> Precisamos armazenar nome da mãe de todo mundo, 352 00:17:15,734 --> 00:17:18,900 e talvez nós não temos segurança social número, temos a sua data de nascimento. 353 00:17:18,900 --> 00:17:21,819 Isso nem sempre precisa estar na mesma tabela. 354 00:17:21,819 --> 00:17:25,339 Enquanto podemos definir relações entre o tables-- 355 00:17:25,339 --> 00:17:28,440 e é aí que relacional termo banco de dados tipo de vem 356 00:17:28,440 --> 00:17:32,130 em play-- enquanto podemos definir relações entre as tabelas, 357 00:17:32,130 --> 00:17:35,545 podemos tipo de compartimentar ou coisas abstratas um caminho; 358 00:17:35,545 --> 00:17:37,670 onde só temos a informação realmente importante 359 00:17:37,670 --> 00:17:39,270 nos preocupamos em tabela do usuário. 360 00:17:39,270 --> 00:17:43,220 E então nós temos informações auxiliares ou informação extra em outras tabelas 361 00:17:43,220 --> 00:17:48,260 que podemos ligar de volta para o principal tabela de usuários de uma forma particular. 362 00:17:48,260 --> 00:17:52,200 >> Então aqui nós temos essas duas tabelas, mas há uma relação entre eles, 363 00:17:52,200 --> 00:17:53,010 certo? 364 00:17:53,010 --> 00:17:55,070 Parece nome de usuário pode ser algo 365 00:17:55,070 --> 00:17:59,909 que existe em comum entre estas duas mesas diferentes. 366 00:17:59,909 --> 00:18:01,700 Assim que se nós temos agora uma situação onde 367 00:18:01,700 --> 00:18:06,046 deseja obter o nome completo de um usuário a partir de mesa do usuário, e sua mãe de 368 00:18:06,046 --> 00:18:07,170 nome da tabela mãe? 369 00:18:07,170 --> 00:18:10,960 Não temos uma maneira de obter que tal como está, certo? 370 00:18:10,960 --> 00:18:17,790 Não há uma única tabela que contém tanto nome completo e nome da mãe. 371 00:18:17,790 --> 00:18:20,400 Nós não temos essa opção do que temos visto até agora. 372 00:18:20,400 --> 00:18:22,950 >> E assim temos de introduzir a idéia de um JOIN. 373 00:18:22,950 --> 00:18:24,857 E junta-se são, provavelmente, o mais complex-- 374 00:18:24,857 --> 00:18:27,940 é realmente mais complexa operação vamos falar sobre no vídeo. 375 00:18:27,940 --> 00:18:30,040 Eles são um pouco complicado, mas quando você pegar o jeito dele, 376 00:18:30,040 --> 00:18:31,248 eles realmente não está muito ruim. 377 00:18:31,248 --> 00:18:32,820 É apenas um caso especial de um SELECT. 378 00:18:32,820 --> 00:18:37,120 Nós estamos indo para selecionar um conjunto de colunas de uma tabela de união 379 00:18:37,120 --> 00:18:40,650 em uma segunda tabela em algum predicado. 380 00:18:40,650 --> 00:18:45,340 >> Neste caso, pense nisso como isto-- mesa é um círculo aqui, 381 00:18:45,340 --> 00:18:47,530 mesa dois é um outro círculo aqui. 382 00:18:47,530 --> 00:18:49,410 E essa parte predicado no meio, é 383 00:18:49,410 --> 00:18:51,701 tipo de como se pensa sobre como um diagrama de Venn, o que 384 00:18:51,701 --> 00:18:52,670 que eles têm em comum? 385 00:18:52,670 --> 00:18:55,960 Nós queremos vincular essas duas tabelas com base no que eles têm em comum 386 00:18:55,960 --> 00:19:01,230 e criar essa tabela hipotética que é a fusão dos dois juntos. 387 00:19:01,230 --> 00:19:03,480 Então, vamos ver isso em um exemplo e talvez isso vai ajudá- 388 00:19:03,480 --> 00:19:04,521 esclarecê-lo um pouco. 389 00:19:04,521 --> 00:19:09,260 Então, talvez você deseja selecionar user.fullname e moms.mother 390 00:19:09,260 --> 00:19:13,220 dos utilizadores no que unem mesa mães em todas as situações 391 00:19:13,220 --> 00:19:16,790 onde a coluna nome de usuário é o mesmo entre eles. 392 00:19:16,790 --> 00:19:19,240 E este é um novo sintaxe aqui, esse usuário. 393 00:19:19,240 --> 00:19:20,460 e mães .. 394 00:19:20,460 --> 00:19:26,697 Se eu estou fazendo várias tabelas juntos, posso especificar uma tabela. 395 00:19:26,697 --> 00:19:29,530 Eu posso distinguir, em particular, que em na parte inferior lá. 396 00:19:29,530 --> 00:19:33,220 Eu posso distinguir o nome de usuário coluna da tabela de usuários 397 00:19:33,220 --> 00:19:36,010 da coluna de nome de usuário do moms tabela, que são otherwise-- 398 00:19:36,010 --> 00:19:38,070 se nós apenas dissemos nome de usuário é igual a username, que realmente não 399 00:19:38,070 --> 00:19:38,970 quer dizer nada. 400 00:19:38,970 --> 00:19:41,440 Queremos fazê-lo onde eles combinam. 401 00:19:41,440 --> 00:19:46,080 >> Então eu posso especificar a tabela ea nome da coluna, no caso de uma situação 402 00:19:46,080 --> 00:19:48,370 onde seria incerto o que eu estou falando. 403 00:19:48,370 --> 00:19:51,880 Então, isso é tudo que eu estou fazendo não é que eu sou dizendo que esta coluna desta tabela, 404 00:19:51,880 --> 00:19:54,020 e sendo muito explícito. 405 00:19:54,020 --> 00:19:56,810 Então, novamente, eu estou selecionando o nome completo e nome da mãe 406 00:19:56,810 --> 00:20:00,950 a partir da tabela de utilizadores ligados em conjunto com o quadro de mães em todas as situações 407 00:20:00,950 --> 00:20:05,960 onde eles compartilham que column-- eles compartilham essa noção nome de usuário. 408 00:20:05,960 --> 00:20:08,580 >> Então, aqui estão as tabelas que tínhamos antes. 409 00:20:08,580 --> 00:20:12,210 Este é o estado da nossa banco de dados, tal como existe agora. 410 00:20:12,210 --> 00:20:16,390 A informação que nós estamos extraindo é esta a começar. 411 00:20:16,390 --> 00:20:19,820 Esta é a nova tabela que vamos para criar combinando estes juntos. 412 00:20:19,820 --> 00:20:23,585 E note que não estamos destacando Linha de Newman na tabela do usuário, 413 00:20:23,585 --> 00:20:25,960 e não estamos destacando Linha de Kramer na tabela de mães 414 00:20:25,960 --> 00:20:31,250 porque nem um existe em tanto sets-- em ambas as tabelas. 415 00:20:31,250 --> 00:20:36,260 >> A única informação que é em comum entre eles é Jerry é em ambas as tabelas 416 00:20:36,260 --> 00:20:39,100 e gcostanza é em ambas as tabelas. 417 00:20:39,100 --> 00:20:42,620 E assim, quando nós fazemos o SQL JOIN, o que get-- e estamos fazendo realmente conseguir isso. 418 00:20:42,620 --> 00:20:44,830 É uma espécie de uma variável temporária. 419 00:20:44,830 --> 00:20:47,330 É como uma hipotética fusão das duas tabelas. 420 00:20:47,330 --> 00:20:49,930 Nós realmente obter algo como este, onde 421 00:20:49,930 --> 00:20:54,730 Nós fundiu em conjunto as tabelas no informações que eles têm em comum. 422 00:20:54,730 --> 00:20:58,334 >> Então, observe que users.username e coluna moms.username, 423 00:20:58,334 --> 00:20:59,250 é exatamente o mesmo. 424 00:20:59,250 --> 00:21:01,820 Essa foi a informação que foi consistente dos usuários 425 00:21:01,820 --> 00:21:02,890 mesa e mesa de mães. 426 00:21:02,890 --> 00:21:04,270 E, assim, se fundiu-los juntos. 427 00:21:04,270 --> 00:21:06,919 Foram descartados Kramer porque ele não existe na tabela de usuários, 428 00:21:06,919 --> 00:21:09,710 e descartado Newman, porque ele não existir na tabela de mães. 429 00:21:09,710 --> 00:21:16,450 Portanto, esta é a fusão hipotética usando a operação JOIN de SELECT. 430 00:21:16,450 --> 00:21:21,250 >> E então nós estávamos olhando para o nome completo do usuário e da mãe do usuário, 431 00:21:21,250 --> 00:21:24,999 e por isso esta é a informação que obteríamos a partir da consulta geral 432 00:21:24,999 --> 00:21:26,040 que fizemos com SELECT. 433 00:21:26,040 --> 00:21:28,873 Por isso, juntou as tabelas juntos e extraiu-se estas duas colunas, 434 00:21:28,873 --> 00:21:31,610 e é isso que nós iria ficar. 435 00:21:31,610 --> 00:21:33,370 Mas SQL se junta a uma espécie de complicado. 436 00:21:33,370 --> 00:21:36,770 Você provavelmente não vai fazê-las muito, mas apenas ter alguma idéia do esqueleto 437 00:21:36,770 --> 00:21:41,992 que você pode usar para mesclar dois mesas em conjunto, se você precisasse. 438 00:21:41,992 --> 00:21:43,700 Os dois últimos são uma pouco mais simples eu prometo. 439 00:21:43,700 --> 00:21:48,040 Então atualização, podemos usar o UPDATE para alterar as informações em uma tabela. 440 00:21:48,040 --> 00:21:53,880 O formato geral é atualizar alguns tabela, definir algumas coluna para algum valor 441 00:21:53,880 --> 00:21:55,540 ONDE algum predicado é satisfeita. 442 00:21:55,540 --> 00:21:57,850 Assim, por exemplo, podemos querer para atualizar a tabela de usuários 443 00:21:57,850 --> 00:22:04,400 e definir a senha para yada yada, onde o número de identificação é 10. 444 00:22:04,400 --> 00:22:06,400 >> Portanto, neste caso, estamos atualizando a tabela de usuários. 445 00:22:06,400 --> 00:22:08,275 O número de identificação é de 10 para que existem primeira linha, 446 00:22:08,275 --> 00:22:10,690 e nós queremos atualizar o yada yada senha para. 447 00:22:10,690 --> 00:22:12,170 E é isso que iria acontecer. 448 00:22:12,170 --> 00:22:13,628 É bastante simples, certo? 449 00:22:13,628 --> 00:22:17,990 É apenas uma forma muito simples modificação para a mesa. 450 00:22:17,990 --> 00:22:22,250 >> APAGAR é a operação que costumávamos remover a informação a partir de uma tabela. 451 00:22:22,250 --> 00:22:24,817 DELETE FROM tabela WHERE algum predicado é satisfeita. 452 00:22:24,817 --> 00:22:26,900 Queremos excluir da tabela de usuários, por exemplo, 453 00:22:26,900 --> 00:22:28,254 onde o nome de usuário é Newman. 454 00:22:28,254 --> 00:22:31,420 Você provavelmente pode adivinhar o que vai acontecer aqui depois de executar esse SQL 455 00:22:31,420 --> 00:22:35,790 consulta, Newman está desaparecido desde a mesa. 456 00:22:35,790 --> 00:22:40,460 >> Então, todas essas operações, como eu já disse, são muito fáceis de fazer em phpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 É uma interface muito amigável. 458 00:22:43,020 --> 00:22:45,930 Mas exige esforço manual. 459 00:22:45,930 --> 00:22:47,840 Nós não queremos empregar esforço manual. 460 00:22:47,840 --> 00:22:51,280 Queremos que os nossos programas para fazer isso por nós, certo? 461 00:22:51,280 --> 00:22:53,190 Então, nós pode querer fazer isso programaticamente. 462 00:22:53,190 --> 00:22:56,410 Queremos incorporar SQL e ter outra coisa para fazer isso por nós. 463 00:22:56,410 --> 00:23:02,710 >> Mas o que temos visto que permite nos a fazer algo por meio de programação? 464 00:23:02,710 --> 00:23:03,690 Nós vimos PHP, certo? 465 00:23:03,690 --> 00:23:05,760 Ele apresenta alguns dinamismo em nossos programas. 466 00:23:05,760 --> 00:23:10,430 E assim, felizmente, SQL e PHP jogar muito bem juntos. 467 00:23:10,430 --> 00:23:13,230 Há uma função em PHP chamado de consulta, que pode ser usado. 468 00:23:13,230 --> 00:23:15,870 E você pode passar como o parâmetro ou o argumento 469 00:23:15,870 --> 00:23:19,210 para consultar uma consulta SQL que você gostaria de executar. 470 00:23:19,210 --> 00:23:23,250 E PHP irá fazê-lo em seu nome. 471 00:23:23,250 --> 00:23:25,564 >> Então, depois de ter ligado para seu banco de dados com PHP, 472 00:23:25,564 --> 00:23:26,980 há duas primárias você fazer isso. 473 00:23:26,980 --> 00:23:29,230 Há algo chamado MySQLi e algo chamado DOP. 474 00:23:29,230 --> 00:23:31,063 Não vamos entrar em uma enorme quantidade detalhe lá. 475 00:23:31,063 --> 00:23:32,957 Em CS50 usamos DOP. 476 00:23:32,957 --> 00:23:34,790 Depois de ter ligado para o seu banco de dados, 477 00:23:34,790 --> 00:23:40,980 pode, então, fazer consultas seu banco de dados passando as consultas como argumentos 478 00:23:40,980 --> 00:23:42,730 para funções PHP. 479 00:23:42,730 --> 00:23:46,460 E quando você faz isso, você armazenar o conjunto de resultados em uma matriz associativa. 480 00:23:46,460 --> 00:23:50,290 >> E nós sabemos como trabalhar com arrays associativos em PHP. 481 00:23:50,290 --> 00:23:52,630 Então, eu poderia dizer algo como isto-- $ resultados-- 482 00:23:52,630 --> 00:23:55,470 esta é igual em PHP-- consulta. 483 00:23:55,470 --> 00:23:57,660 E, em seguida, no interior da função de consulta que o argumento 484 00:23:57,660 --> 00:24:00,130 que eu estou passando para consulta que se parece com SQL. 485 00:24:00,130 --> 00:24:01,160 E, de fato, que é SQL. 486 00:24:01,160 --> 00:24:05,700 Essa é a seqüência de consulta que eu faria deseja executar no meu banco de dados. 487 00:24:05,700 --> 00:24:09,250 >> E assim, em vermelho, este é PHP. 488 00:24:09,250 --> 00:24:11,890 Esta é SQL que eu sou integração com o PHP, fazendo 489 00:24:11,890 --> 00:24:15,020 que o argumento para a função de consulta. 490 00:24:15,020 --> 00:24:19,640 Eu quero selecionar fullname de onde os usuários número de identificação é igual a 10. 491 00:24:19,640 --> 00:24:22,560 E então talvez depois de eu ter feito isso, Eu poderia dizer algo como isso. 492 00:24:22,560 --> 00:24:25,550 Eu quero imprimir o Graças mensagem para efetuar login. 493 00:24:25,550 --> 00:24:32,530 >> E eu quero que interpolate-- Eu quero interpolar $ fullname resultados. 494 00:24:32,530 --> 00:24:36,280 E então é assim que eu trabalho com isso matriz associativa que eu voltasse. 495 00:24:36,280 --> 00:24:39,730 $ fullname faria resultados basicamente acabar imprimindo, 496 00:24:39,730 --> 00:24:42,870 obrigado por login, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 Esse era o nome completo onde idnum é igual a 10. 498 00:24:46,570 --> 00:24:48,850 >> E então tudo que eu estou fazendo é que eu estou agora- I armazenado 499 00:24:48,850 --> 00:24:52,780 minha consulta, os resultados de minha pesquisa e resulta em uma matriz associativa, 500 00:24:52,780 --> 00:24:56,330 e fullname é o nome do a coluna que eu estava ficando para. 501 00:24:56,330 --> 00:25:01,010 Então essa é a minha chave para os resultados matriz associativa que eu quero. 502 00:25:01,010 --> 00:25:05,930 Assim Obrigado por login, $ resultados, fullname irá imprimir, vai ficar 503 00:25:05,930 --> 00:25:08,654 mesmo entre aqueles encaracolado cintas, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 E eu vou gostar de imprimir a mensagem Obrigado por fazer o login Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Agora, nós provavelmente não quer para o disco coisas como essa no código, certo? 506 00:25:16,652 --> 00:25:19,860 Podemos querer fazer algo parecido com impressão f, onde podemos substituir e talvez 507 00:25:19,860 --> 00:25:22,443 coletar informações diferentes, ou talvez ter o processo de consulta 508 00:25:22,443 --> 00:25:23,370 informações diferentes. 509 00:25:23,370 --> 00:25:27,920 E assim por consulta, a função de consulta tem essa noção de espécie de substituições 510 00:25:27,920 --> 00:25:32,310 muito semelhantes para imprimir f por cento s e c por cento, é pontos de interrogação. 511 00:25:32,310 --> 00:25:34,290 >> E podemos usar questão marcas muito analogamente 512 00:25:34,290 --> 00:25:38,400 para imprimir f para variáveis ​​de substituição. 513 00:25:38,400 --> 00:25:44,120 Então, talvez o seu usuário logado anteriormente, e guardou o seu número de ID de usuário 514 00:25:44,120 --> 00:25:51,710 em $ _SESSION de PHP super- global na chave ID. 515 00:25:51,710 --> 00:25:55,947 Então, talvez depois de logado, você definir $ _SESSION ID é igual a 10, 516 00:25:55,947 --> 00:25:58,280 Extrapolando a partir do exemplo que acabamos de ver um segundo atrás. 517 00:25:58,280 --> 00:26:01,960 >> E assim, quando nós realmente executar Esta consulta os resultados agora, 518 00:26:01,960 --> 00:26:08,440 ele iria ligar 10, ou o que quer o valor de ID $ _SESSION é. 519 00:26:08,440 --> 00:26:10,790 E assim que nos permite ser um pouco mais dinâmico. 520 00:26:10,790 --> 00:26:12,699 Nós não estamos difícil codificação coisas mais. 521 00:26:12,699 --> 00:26:14,490 Estamos salvando informações em algum lugar e, em seguida, 522 00:26:14,490 --> 00:26:18,924 podemos usar essa informação novamente para tipo de generalizar o que queremos fazer, 523 00:26:18,924 --> 00:26:21,090 e apenas plug-in e mudança o comportamento de nossa página 524 00:26:21,090 --> 00:26:26,489 com base no que ao número de identificação do usuário na verdade, é depois de terem identificado. 525 00:26:26,489 --> 00:26:28,530 Também é possível, porém, que os resultados definido 526 00:26:28,530 --> 00:26:30,840 pode consistir em várias linhas. 527 00:26:30,840 --> 00:26:33,990 Nesse caso, você tem uma matriz de arrays-- 528 00:26:33,990 --> 00:26:35,334 uma matriz de matrizes associativas. 529 00:26:35,334 --> 00:26:37,000 E você só precisa fazer uma iteração através dela. 530 00:26:37,000 --> 00:26:41,950 E nós sabemos como fazer uma iteração através de uma matriz em PHP, certo? 531 00:26:41,950 --> 00:26:45,600 Então aqui é provavelmente a mais coisa complexa que temos visto até agora. 532 00:26:45,600 --> 00:26:49,640 Ele realmente integra três línguas juntos. 533 00:26:49,640 --> 00:26:52,920 >> Aqui em vermelho, isso é algum HTML. 534 00:26:52,920 --> 00:26:56,872 Estou aparentemente este é starting-- um trecho de alguns HTML que eu tenho. 535 00:26:56,872 --> 00:26:59,580 Estou começando um novo parágrafo que diz que as mães de Seinfeld de TV. 536 00:26:59,580 --> 00:27:02,350 E, em seguida, imediatamente a seguir Estou começando uma mesa. 537 00:27:02,350 --> 00:27:06,060 E depois disso, eu ter algum PHP, certo? 538 00:27:06,060 --> 00:27:08,229 Eu tenho todo esse código PHP lá. 539 00:27:08,229 --> 00:27:09,645 Estou aparentemente, vai fazer uma consulta. 540 00:27:09,645 --> 00:27:14,180 E para fazer a consulta, eu vou estar usando mães selecionar a partir de mães. 541 00:27:14,180 --> 00:27:15,970 >> Portanto, este é getting-- este é SQL. 542 00:27:15,970 --> 00:27:17,300 Assim, o azul é o SQL. 543 00:27:17,300 --> 00:27:19,680 O vermelho vimos um segundo atrás era HTML. 544 00:27:19,680 --> 00:27:21,360 E o verde aqui é PHP. 545 00:27:21,360 --> 00:27:23,400 Então, eu estou fazendo uma consulta para meu banco de dados, eu sou 546 00:27:23,400 --> 00:27:26,040 a seleção de todos os mães na tabela de mães. 547 00:27:26,040 --> 00:27:30,710 Não apenas limitando-o a especial seguidos, eu estou pedindo para todos eles. 548 00:27:30,710 --> 00:27:33,290 >> Então eu verificar se o resultado for não é igual a falsa iguais. 549 00:27:33,290 --> 00:27:37,410 Esta é apenas a minha maneira de verificar espécie de se os resultados não é igual a nulo, 550 00:27:37,410 --> 00:27:40,260 que veríamos c por exemplo. 551 00:27:40,260 --> 00:27:44,000 Basicamente, esta é apenas a verificação para fazer Certifique-se de que ele realmente tem dados de volta. 552 00:27:44,000 --> 00:27:47,041 Porque eu não quero começar a imprimir out dados se eu não conseguir nenhum dado. 553 00:27:47,041 --> 00:27:50,690 Em seguida, para cada uma delas resulta, como resultado do sintaxe foreach do PHP, tudo que eu estou fazendo 554 00:27:50,690 --> 00:27:53,399 está imprimindo mães $ resultados. 555 00:27:53,399 --> 00:27:55,940 E então eu estou indo para obter um conjunto de todas as mães de each-- 556 00:27:55,940 --> 00:27:59,980 é uma matriz de associativo arrays-- e eu estou imprimindo 557 00:27:59,980 --> 00:28:03,649 cada um como seu próprio linha de uma tabela. 558 00:28:03,649 --> 00:28:05,690 E isso é realmente bonito muito tudo que existe para ela. 559 00:28:05,690 --> 00:28:07,750 Eu sei que há um pouco bit acontecendo aqui 560 00:28:07,750 --> 00:28:13,210 neste último exemplo com matrizes de arrays-- arrays de arrays associativos. 561 00:28:13,210 --> 00:28:17,340 Mas realmente não apenas ferver para baixo em SQL para fazer uma consulta, 562 00:28:17,340 --> 00:28:21,102 geralmente selecionando depois de nós já colocar informações na tabela, 563 00:28:21,102 --> 00:28:22,310 e depois é só puxá-lo para fora. 564 00:28:22,310 --> 00:28:25,710 >> E isso é que seria retirá- neste caso particular. 565 00:28:25,710 --> 00:28:31,120 Gostaríamos de extrair todo do indivíduo mães da tabela moms. 566 00:28:31,120 --> 00:28:35,970 Temos todo um conjunto deles, e nós quer para percorrer e imprimir 567 00:28:35,970 --> 00:28:37,630 cada um. 568 00:28:37,630 --> 00:28:40,510 Então, novamente, este é, provavelmente, o exemplo mais complicado 569 00:28:40,510 --> 00:28:44,510 nós vimos porque nós estamos misturando três diferentes idiomas juntos, certo? 570 00:28:44,510 --> 00:28:50,100 >> Novamente, temos aqui HTML em vermelho, misturado com algum SQL aqui no azul, 571 00:28:50,100 --> 00:28:52,049 misturado com alguns PHP em verde. 572 00:28:52,049 --> 00:28:53,840 Mas todos estes desempenham bem juntos, é 573 00:28:53,840 --> 00:28:57,060 apenas uma questão de desenvolvimento bons hábitos de modo que você pode começar 574 00:28:57,060 --> 00:28:58,780 los a trabalhar juntos da maneira que quiser. 575 00:28:58,780 --> 00:29:03,790 E a única maneira de realmente fazer isso é praticar, praticar, praticar. 576 00:29:03,790 --> 00:29:06,740 Eu sou Doug Lloyd, este é CS50. 577 00:29:06,740 --> 00:29:08,647