Category Archives: sql

бер таблитсаны күчерү

бер таблитса ны бер майсиквельдан файлга саклап, икенче майсиквельга шул файлдан кертү.

mysqldump -u testscript -p testscript mysql1_tawos > tawos.sql
бу аңлата: “testscript” исемле кулланучы исеменнән “testscript” исемле җыентыдагы “mysql1_tawos” таблитсасыны чыгару. “>” – линукстагы стандарт тамга, команданың җавабын җибәрүне аңлата, бу очракта ул “tawos.sql” файлына яздырыла.

хәзер бу файлны икенче компьтерга копияләдегез ди.
mysql -u script -p script < tawos.sql
“script” исемле кулланучы исеме белән, “script” исемле җыентыга җибәрү. “<" – линукста җибәрүне аңлата, бу очракта "tawos.sql" файлы эчтәлеген. ә аның эчендә майсиквель әмерләре. һәм ул әмерләр "mysql1_tawos" таблитсасын төзей һәм тулдыра.

майэскуэльда кулланучы ясау

майэскуэльда кулланучы ясау:
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';

( http://dev.mysql.com/doc/refman/5.1/en/grant.html дан )

инглиз телен аңласагыз аңлашыла бугай инде бу…

“localhost” – шушы майсиквель эшләгән компьютерның үзен аңлата, “jeffrey” дигән кулланучы шушы компның үзеннән язса гына майсиквельга керә ала булып чыга.
“ALL” – бөтенесе дигән сүз, барча әмерләрне аңлата.
“db1.*” – “db1” мәгълүмат җыентысындагы барча таблитсыларны аңлата.

(июнь-18:) ничек җыентыны ясарга.

mysql да күпләп таблитсы бетерү

mysql да күпләп таблитсы бетерү, мисал өчен, “wp2_” диеп башланган 190 таблитсаны – моны команда язып кына эшләп булмый ди, пыхыпы скрипт язарга була, интернетта бар әзере дә.

майсиквельда язма бетерү

майсиквельда язма бетерү. минем бер скриптта спамнар җыелды. узган язмада әйткән майсиквельга керүем шуларны бетерү өчен.
башта мин ахыргысын гына бетереп карадым:
delete from mysql1_tawos where waqot=2012-03-08 11:09:44;
бу эшләмәй!!
delete * from mysql1_tawos where waqot=2012-03-08 11:09:44;
бу да эшләмәй!!
аннары гуглда “mysql delete” диеп эзләп табып майсиквель сайтыннан карап башкача язасы икәнен белдем:
delete from mysql1_tawos where waqot=’2012-03-08 11:09:44′;
бу эшләде!
аннары бөтенесен бетередем:
delete from mysql1_tawos where waqot ‘2011-12-03’;
эшләде.

инглизчә “delete” – “бетер”. “where” – урысчасы “где”. “from” турында узган язмада әйттем.

таблитса эчтәлеген карау

сәләм. мин майсиквель белән шөгыльләндем, ә блогка язмадым. мин инструкцияләрне карый-карый гына пхп скриптлар ясадым, терминалда эшләмәдем. һәм менә бүген терминалга кереп бер чсаган таблитсамны карамакчы булдым. шунда миңа үземнең язган шушы язмаларым да булышты. һәм менә нинди проблема килеп чыкты: татар, хәтта кириллица хәрефләрен “?” белән күрсәтте. әмма мин моны чиштем. башта ничек таблитса эчтәлеген караганны әйтәм:
узган язмаларда әйткәнчә, кердем, таблитсаны сайладым, аннары таблитса төзәелешен карадым.
аннары болай иттем:
select * from mysql1_tawos;
ләкин, әйткәнемчә, хәрефләр дөрес чыкмады. аннары мин әйттем:
SET CHARACTER SET utf8;
аннары тагы:
select * from mysql1_tawos;
эшләде!

инглиз телен белгән кешегә җайлы аңлашыла бу әмерләр. селект – сайла. фром – урысча “из”. сет – кую. характер – хәреф. сет – җыйылма.

игътибар. кызганыч, сез минем язмаларны укып кына моны тикшереп карай алмайсыз әле, чөнки мин бу эчтәлекне таблитсага ничек язасы икәнен монда язмадым.

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

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

мин бу “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 да кертеп карамадым әле. хәзергә җитеп торыр.

“мускул”да “таблица” йасау

сәләм.

“мускул”да “таблица”ны CREATE TABLE әмере белән йасыйсы була. create – барлыкка килдереү, table – таблица. таблицаны татарча исемлек дийеп тә буладыр…

башта карыйм, м.җ. да ничә таблица бар. бер mysql куллануычысының бер ничә м.җ.сы була ала, һәр бер м.җ. да бер ничә таблица була ала. башта майсиквельга кереү: mysql , улдан ары м.җ.ны сайлап алу, куллана башлау: use dinar; , улдан ары таблицаларны карау: SHOW TABLES; show – күрсәт, tables – таблицаларны. show tables; әйтте: Empty set (0.00 sec) .

сезнең инде алддан әзерләгән м.җ.гыз dinar түгелдер, use dinar; дип керәсе булмай, хәтерләмәсәгез, show databases; дип карагыз, аннары use …..м.җ.исеме…. ; кулланыгыз.

хәзер бер йаңа таблитса йасайсы була. улның өчен create table ……….. ; кулланасы.

create table kitap ( isim varchar(100), aftor varchar(50) );  –  kitap дигән (йагъни китап) таблитса йасау, ул таблитса – китаплар исемлеге була, ул исемлектә һәр бер китапның исеме һәм авторы йазылган була. isim varchar(100) – иң күбе 100 хәрефтән торган, “isim” дип аталган йазыуны аңлата. шуллай итеп, йазыу урыннарының исемнәрене өтер аша тезеп чыгасы, һәр бер йазыу урыны исеменнән соң буш урын белән улның ниндей төрдәге йазыу булуы күрсәтелә. varchar – үзгәрүчән озынлыктагы һәм хәрефләрдән тора дигән сүздән чыккан: var – variable дан, үзгәрүчән, char – character дан, тамга, хәреф. җәйә ечендәге саны иң зур озынлыгы.

create table xaywan ( isim varchar(30), xujaso varchar(30), porodaso varchar(30), jinisi char(1), tugankono date, ulgankono date); – җенесне аңлатыр өчен бер хәреф җитә, мәсьәлән, н – ана, т – ата, шунга күрә бер хәрефле төр кулланылган, char(1). date – вакыт йаза торган урын була. 1 генә хәреф булганда char(1) кулланылган, ә елеккегеләре рәвешенчә varchar(1) түгел, чөнки char(1) varchar(1) дән кимрәк урын алып тора исәпләвечтә. char ның varchar дан айырмасы шунда инде: ул үзгәрүчән озынлыкта түгел, шунга күрә күп вакытта тизрәк ешләргә мөмкин, әмма ул әрәм булырга мөмкин, күп өлеше күп вакытта буш торса, мәсьәлән, char(10) дигән йазыу урынынга һәрвакыт 2 дән алып 6 га кадәр генә озынлыктагы йазыулар кертелсә, “димәк”, char(6) кулланып булган.  әгәр char(10) дигән урында исемлектәге 100 әйбернең 7 сенең генә мон сыйфат-үзлеге-йагы-үзенчәлеге 10 хәрефкә җитсә, калганнары 3 хәрефле булса, бәлки varchar(10) бәлки йахшырактыр.

әйткәнчә xaywan исемлегене йасаттым, “Query OK, 0 rows affected (0.04 sec)” дийде. “0 rows” – 0 “йул” дигән сүз, йәгъни, исемлектә бер әйбер дә йук әле.

хәзер инде “show tables;” башкача җавап бирә:

+-----------------+
| Tables_in_dinar |
+-----------------+
| xaywan          |
+-----------------+
1 row in set (0.00 sec)

“1 row in set” – җыйылмада 1 йул бар дигән. “Tables_in_dinar” – “dinar ечендәге таблитсалар” дигән сүз.

хәзер сез теге әмердә ниндей йазыу урыннары йасаганыңызны онытсаңыз, белергә кирәк булса, йә башка кеше йасаган исемлекнекене беләсеңез килсә, мондай әмер белән була: describe xaywan; монлай җавап йазды:

+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| isim      | varchar(30) | YES  |     | NULL    |       |
| xujaso    | varchar(30) | YES  |     | NULL    |       |
| porodaso  | varchar(30) | YES  |     | NULL    |       |
| jinisi    | char(1)     | YES  |     | NULL    |       |
| tugankono | date        | YES  |     | NULL    |       |
| ulgankono | date        | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
6 rows in set (0.01 sec)

“Field” – “йазыу урыны”, “Type” – йазыу урыны төре, “Null” – буш, йук дигән сүз, мон очракта нәрсә аңлатканыны төгәл белмәйм. “Default” – әйтелмәгәндәгесе. “YES” – “әйе”. “Extra” – өстәмә. “Key” – “ачкыч”. мон чыгарылган исемлек – xaywan таблитсасындагы йазыу урыннары исемлеге.

мон йазма шулның белән тәмам.

“mysql”да м.җ. сыз да ешләй ала торган бер ничә әмер

сәләм.

“мускул”га керү: mysql . шуннан соң м.җ.га кермәйчә дә бер ничә әмер биреп була: select version(); – “мускул”ның версийәсене әйтеп бирә (мәсьәлән, “5.0.69-windows2” кебегрәк). select current_date; – йыл, ай, көн тәртип саннарыны чыгара. мон ике әйберне бергә дә чыгарып була: select version(), current_date; . select now();- йыл, ай, көн, сәгать, минут, секундны күрсәтә. select 2+3; – “5” дип җавап бирә. select pi(); – “3,141593” дийе. select sin(pi()/2); – “1” дийе. select user(); – qdinar@localhost кебек сезнең кайсы компйутердагы кайсы кулланыучы исеменнән кергәнеңезне күрсәтә икән, мон “мускул” кулланучысы түгел, операцион система кулланучысы.

ескуельда кулланучыга мәгълүмат җыйынтысы биреү

сәләм.

алга таба мин мондый әмерләр кертеп карадым ескуель ечендә. ескуельга әмер белән ешләү тәрәзендә mysql әмере белән кердем. mysql ечендә мондый әмер йаздым: show databases; ул минга бер генә мәгълүмат җыйынтысы йагъни database-датабазе ны күрсәтте, анда тагын бар, аларыны йәшерде. сездә башкача булырга мөмкин. минга information_schema ны гына күрсәтте. show – “күрсәт” дигән сүз. аннары мин ул м.җ.(мәгълүмат җыйынтысы ны кыскартып шуллай дип йазыйм) ны куллана башлар өчен use әмерене кулланырга тийеш икән, ешләп карадым: use information_schema; булды. ләкин улның белән нәрсә ешләргә икәнене белмәдем, чыгып киттем, quit; дийеп.

игътибар, use information_schema; бер “йул”да (турыда) йазып бетерелергә тийеш, ике турыга айырып йазасы түгел, йагъни use дигәч интерга басып аннары икенче турыга төшкәч кенә information_schema; дип йазып бетереп булмый. use – куллан дигән сүз.

аннары үзем өчен айырым м.җ. йасап карадым. йагъни тагын mysql дип кердем. йаңа м.җ. йасар өчен create database әмерене кулланасы икән. мин dinar дигән исемлене йасамакчы булдым. create – барлыкка килдер дигән сүз. мин йаздым: create database dinar; булып чыкмады. әйтте: Access denied for user ”@’localhost’ to database ‘dinar’. Access – кереү дигән сүз, denied – тыйылган, for user – кулланучы өчен дигән сүз, to database – м.җ.га дигән сүз. ә минем монда кергән исемем ” йагъни буш сүз икәнене белдем. localhost – бу компьйутерны аңлата. болай м.җ. йасап булмагач, мин чыгып киттем, бу йулы \q дийеп.

хуҗа булып кереп ”@’localhost’ ка м.җ. йасап бирмәкчемен хәзер. монлай кердем: mysql -u root -p дийеп. сер сүзне керттем. булды. хәзер м.җ. бирер өчен grant all әмерене кулланасы икән. grant – бир, бүләк ит дигән сүз, all – бөтенесен дигән сүз. мин йаздым: grant all on dinar.* to ”@’localhost’; дийеп, булды. Query OK, 0 rows affected (0.00 sec) дийде. query – чират дигән сүз, мускулга керткән әмерләрне шуллай атайлар. row – рәт. affected – тәэсирләнде. шуннан соң чыктым.

йаңадан mysql дип кердем, show databases; дип йаздым, ә ул dinar дигән м.җ. ны күрмәдем. бәлки улны барлыкка килдерәседер. йазам: create database dinar; булды!. әйтте: Query OK, 1 row affected (0.00 sec). тагын show databases; , әйтте: information_schema һәм dinar.

булды бу.

sql га әмерләп ешләү тәрәзеннән кереү

миндә куйылган операцион системада “мускул”га болай кереп була: терминалда бу әмерне кертәсе: mysql . аннан чыгыр өчен Ctrl белән d клавишынга бергә басасы йә quit дигән әмер бирәсе, йә \q дип. ctrl белән d га басыу линукс-мазарларда гына ешләй дийе. >18:00:игътибар, quit әмере ул искәрмә шикелле икән, барча әмерләрдән соң нокталы өтер торырга тийеш! Enter га басып кына әмерне җибәреп булмай! ахырынга “;” (нокталы өтер) куйып интерга басасы, ул әмердән баш тартыр өчен \c дип йазып “интер”га басасы. мин монны шушылай “өндәү” белән йазам, чөнки бер вакыт шуллай нишләргә белмәйчә утырган идем. quit искәрмә генә булганга аны quit; дип истә калдырыгыз. 21:37: куштырнак (” йә ‘) йә ” ` ” ечендәге текстны йаза башлаган булсагыз, ул өлешне шундый ук куштырнак-мазар белән йапканчы \c да, quit; та ешләмәй икән!<

башка системаларда алай гына кереп булмаска мөмкин, mysql дан соң аргументлар белән майсиквельдәге исемне дә кертәсе була, аннан шул исем өчен сер сүзне сорай. һәм башка компьйутердагы майсиквельга да тоташып була, “mysql” әмереннән соң тагы ул компның домен исемене йә айпи адресыны күрсәтәсе була. мисал: “mysql -u isem -h bashqakomp -p”, “mysql -u isem -p”.

18:00 : mysql ечендә ешләгәндә әмерләрнең бөтен хәрефләре зур да кечкенә дә була ала: мәсьәлән, quit; , QUIT; , Quit; , qUIt; һәм шулның шикелле башкалар җыйынысы да ешләй һәм барысының да мәгънәсе бер үк.