Monthly Archives: Ноябрь 2009

тагын берничә таблитса һәм урын төрләре

сәләм. “ескуель” турында озак йазмадым инде.

мин бу “sql” турында йазмаларны http://dev.mysql.com/doc/refman/5.1/en/tutorial.html дан карап өйрәнә-өйрәнә йазып барам.

тагын бер ничә төрле таблитса йасап карайсы килә: “балтаси ру“дагы avil.php шикелле программа өчен, намаз вакытлары өчен койаш бату, койаш чыгыу вакытларын йазып барыу өчен. тагын шул мин моны өйрәнә торган иңглизчә дәреслектә күргән “BLOB” йазма төре турында әйтәсем килә.

узган йазмадагы бер таблитса йасау әмерене карыйм: create table xaywan ( isim varchar(30), xujaso varchar(30), porodaso varchar(30), jinisi char(1), tugankono date, ulgankono date); . шуның шикелле итеп “авылдашлар сөйләшүе” таблитсасыны уйлап карыйм: create table awol ( isim varchar(30) …. монда йазымталар таблитсасы кирәк икән: awolyazmaso ( tartipsano …. , isim varchar(30) …. монда авыл исемен йазымта сайын күрсәтү дөрес булмай. tartipsano …. дип төрне монда күп нокта белән йазып куйдым, чөнки мин хәзер гади сан төр исемене белмәйм, хәтердә түгел. авыл исеме урынынга авыл тамга саны куйам: awolyazmaso ( tartipsano …. , awoltamgasano …. . тагын һәр йазмага бер рәсем беркетеп була, аның өчен файл исеме урыны куйам: awolyazmaso ( tartipsano …. , awoltamgasano …. , rasimfaylourono varchar(50)); . >(кире кайтып өстәп, кыстырып йазам:) тагын “tartipsano” ны махсус билгеләп аны да йазма тамгасы, “идентификатор” итеп куйып була, авыллар таблитсасында авыл тамгасыны да шулай күрсәтеп була.<

бу awoltamgasano кебек урын исемнәрен кириллица белән йазып буламы икән, тикшереп карармын алла бирса. тикшерер өчен болай итим: create table сынау( тәртипсаны char(5) ); – шулай ук таблитса исемене кириллица белән йазып булуыны да тикшерә. йаздым, хата чыгарды: ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘�ынау( тәртипсаны char(5) )’ at line 1 . “ERROR” – хата дигән сүз. “You have” – “синнең бар”. “an error” – “бер хата”. “SQL syntax” – “ескуель теле тәртибе”. “your” – “синнең”. “in” – “ечендә”. “in your SQL syntax” – “синең ескуель теле тәртибе ечендә”. “check” – “тикшер”. “the manual” – “теге инструкция”. “that” – урысча “который”, татарча улның урынында “кайсы” дип әйтүчеләр бар… . “corresponds” йә “correspond” – “туры килә”. “to” – урысча “к”, татарча “ка” кушымчасы. “your” – әйттем инде: “синнең”. “MySQL server” – “майсиквель хезмәт күрсәткече”. “version” – “төре, чыгарылыш тәртип саны”. “for” – урысча “для”, татарча мәгънәсе – “өчен:”. the – “теге, конкрет, шул” мәгънәсенле. “right” – “дөрес”. “syntax” – әйттем инде: “тел тәртибе, төзелеше, кагыйдәсе”. “to” – “өчен:” мәгънәсендә, әл генә ул “ка” кушымчасы кебек дигән идем, шулай, “ка” да “өчен” мәгънәсенле була. “use” – елеккерәк йазымталарда әйткән идем: “куллан…”. “near” – урысча “около”, татарча “йанында” мәгънәсендә. шул хата хәбәрендә күренә: “с” хәрефе урынында сорау, ә башка хәрефләр дөрес. бәлки беренче хәреф латин хәрефе булса ешләйдер. create table sынау( тәртипсаны char(5) ); бары бер хата: “check the manual that corresponds to your MySQL server version for the right syntax to use near ‘�нау( тәртипсаны char(5) )’ at line 1”. “at” – урысча “на”, татарча “да” кушымчасы мәгънәсенле. “line” – йазгандагы “йул”, урысча “строка”. йарар хәзер таблитса исемен тлысынча латин йазуынча итәм: create table sonaw( тәртипсаны char(5) ); хата: “You have an … to use near ‘�әртипсаны char(5) )’ at line 1”. шулай булгач ешләмәй инде мон, урын исеменең беренче хәрефене генә латинча йазып тормайм, ешләмәйдер, ешләсә дә кирәк түгел.

хәзер намаз вакытлары таблитсасыны башламакчымын. ә, “авылдашлар” таблитсасында да вакыт урыны кирәк бит әле: create table awolyazmaso ( tartipsano …. , awoltamgasano …. , rasimfaylourono varchar(50) , waqoto date ); . тагын әле авыл исемнәре таблитсасы кирәк: create table awolisimnari ( awoltamgaso …. ); монда “awoltamgaso”ны махсус ескуель сүзе өстәп тамга итеп билгеләп була. монда урын исеме “awoltamgaso” булмаса да йарай, йагъни: “awolyazmaso”ндагы авылны күрсәтә торган сан урыны исеме кебек булмаса да йарай.

намаз вакытлары таблитсасы өчен: create table namazwaqoto () … әй ул бит әле койаш чыгыу, батыу таблитсасы: create table qoyascigowwabatow( toro char(1) , waqoto date , urontamgaso … ); . моңа урыннар таблитсасы да өстәйм. create table qoyascigowyabatowkuronganuron (tamgaso …, uronisimi varchar(50) ); .

“create table” белән йазылган урын төрләрене соңыннан “alter table ….” әмере белән төзәтеп була икән.

мондагы авылдашлар йазымталары һәм койаш вакытларында йалгыш төр кулланганмын. “date” көнне генә күрсәтә икән, секундка хәтле күренсен өчен “datetime” кулланасы.

“BLOB” йазма төрендә теләсә-ниндәй код саклап була, аның озынлыгы 65535 кә чаклы була ала. озынракны саклар өчен mediumblob һәм тагы да зуррагы өчене бар. бу төрдә файлларны да саклап була. 65535 байттан кечкенәрәк ул бер фото була ала. blob ны икенче төрле “TEXT CHARACTER SET binary” дийеп тә йазырга була икән. йазманың кодировкасыны күрсәтер өчен “CHARACTER SET” сүзене кулланасы икән, татарча йазыр өчен кирәк булуы мөмкин, әмма мин уйлыйм, таблитсаны тулысынча utf-8 гә әйләндереп буладыр, аннары һәр бер урында “CHARACTER SET” дийеп күрсәтмәс өчен. ә күрсәтәсе булса монлай икән, мисал: CREATE TABLE t ( c1 VARCHAR(20) CHARACTER SET utf8 ); .

мин әйткән “гади сан” төре, авыл тамгасы һәм урын тамгасы булсын өчен һәм йазма тәртип саны өчен, ул “INTEGER” дыр, улны кыскартып “INT” дийеп йазырга да була икән. улның ечендә -2147483648 тән алып 2147483647 га хәтле булган сан йазыла. улдай зур сан кирәк булмаса кимрәк урын ала торган mediumint, smallint, tinyint бар икән. smallint тагы сан -32768 дан алып 32767 гача була ала. тагын шушы төрләрнең “-” саннарны кулланмай торган әмма “+” саннары зуррак була ала торган итеп була, “unsigned” өстәйсе: “smallint unsigned” та 0 дән 65535 кә хәтлеге сан була ала. аһ! бәлки төрки телләрдәге “лек” кушмчасы ул “ле-ге” дер? “integer” – математикадагы “бөтен сан”. “unsigned” – “тамгаланмаган”. “sign” – “тамга, ишарә”, “un” – ешләнмәгәнлекне белдерә, “ed” кушымчасы – татарча “ган” кушымчасы шикелле.

авылдашлар таблитсасында рәсем файлы исемене кулланасы урынга рәсемнең үзене “blob” төре белән таблитсага йазып та була.

хәзер теге таблитса йасау әмерләрене дөресләбрәк, “җиренгә җиткеребрәк” йазып карыйм: >дөресләбрәк… кенә түгел, ә дөресләп һәм “җиренә җиткеребрәк”. “дата” төре дөрес түгел иде.<

create table awolyazmaso ( tartipsano INT unsigned , awoltamgasano tinyint unsigned , rasimfaylourono varchar(50) , waqoto datetime );

create table awolisimnari ( awoltamgaso tinyint unsigned ,  isimi varchar(40) character set utf-8 );

create table qoyascigowwabatow( toro char(1) , waqoto datetime , urontamgaso smallint unsigned );

create table qoyascigowyabatowkuronganuron (tamgaso smallint unsigned, isimi varchar(50) character set utf-8); .

бетте, шул. character set utf-8 дип тә өстәп куйдым инде, чөнки башкача ничек йасайсы икәнене белмәйм әле.

фото саклар өчен blob лы таблитса йасау әмере йазып карыйм:

create table awolyazmaso ( tartipsano INT unsigned , awoltamgasano tinyint unsigned , rasimfaylo blob , waqoto datetime );

бетте. мин монларны mysql да кертеп карамадым әле. хәзергә җитеп торыр.