420 likes | 611 Views
My SQL. Programim ne Web Leksion 8. MySQL. MySQL (http://www.mysql.com) eshte nje server databaze i fuqishem , zhvilluar dhe mirembajtur nga T.c.X DataKonsultAB of Stockholm, Sweden.
E N D
My SQL Programim ne Web Leksion 8 Iralda Mitro
MySQL • MySQL(http://www.mysql.com) eshtenje server databazeifuqishem, zhvilluardhemirembajturngaT.c.XDataKonsultAB of Stockholm, Sweden. • Qe ne 1995, MySQLeshteberenjengaserverat me popullore ne bote, kjofaleshpejtesise se serverit, fuqisedhepolitikavefleksibelteliçences. • MySQLeshtekompatibelpothuajse me çdosistemshfrytezimi, duke perfshirendertetjere: FreeBSD, Solaris, UNIX, Linux, sidheversionet e ndryshmete Windows. • Meritatdhekarakteristikat e MySQL-se, se bashku me njebashkesitemadhefunksioneshlehtesishtteperdorshme, e bejneMySQL-ne databazen me popullore, plotesuesetePHP Iralda Mitro
Pse MySQL? • MySQLeshteipershtatshem ne menyreteveçante ne aplikacione web. • MySQLeshtefalas. Mundtainstalonidhetaperdorni pa paguarasgje. • MySQL eshte i shpejte dhe i fuqishem. Per baza te dhenash te vogla dhe mesatare, MySQL eshte jashtezakonisht i shpejte. • MySQL po permiresohet gjate kohes. Zhvilluesit e rifreskojne shpesh, duke i shtuar veçori te reja. Iralda Mitro
Komanda - create database • create database database_name • Pasiekzekutohetkjokomande, MySQLkrijonnjedirektori ne tecilenruantegjitheskedaretqenevojiten per bazen e tedhenave. • Psh: /var/lib/mysql/ Iralda Mitro
Komanda- create table create tableemertabele ( column_1 column_type column attributes, column_2 column_type column attributes, primary key (column_name), index index_name(column_name) ) Iralda Mitro
Disaatribute • null| not null • Lejonosendalonqenjekolonetemospermbajevlera • default • Percaktonnjevlereqemerrnjekolonenesee leme bosh kurfutimnjerresht ne tabele • auto_increment • Vete_rrites – e vendos ne menyreautomatikevleren e njekolonetetipitint duke rritur me nje, vleren me temadheqe ka rreshtiparaardhes • Pshnese I fundit ka qene 7 , vlera e re qe do temerretautomatikisht do tejete 8(7+1) • Nese e fshijmenjerresht , id e tijnukperdoret me , nuk I jepetnjerreshtitjeter. • Kjomundesonidentifikiminunikterreshtavekurbehetfjale per çelesinprimar Iralda Mitro
Shembull create table topics2 ( topic_id integer not null auto_increment, parent_id integer default 0 not null, root_id integer default 0, name varchar(255), description text null, create_dt timestamp, modify_dt timestamp, author varchar(255) null, author_hostvarchar(255) null, primary key(topic_id), index my_index(parent_id) ) Iralda Mitro
Vlera Boshe - NULL • NULL – asgje, vlere • Per tekontrolluarqenjevlere e njekolonetecaktuareshteboshe (pranuk ka vlere) perdoretoperatori null • Shembuj: • select * from names where isnull(middle_name); • select * from names where !isnull(middle_name); • select * from users where addr2 is null; • select * from users where addr2 is not null; Iralda Mitro
Tipet e kolonave • Tipetekst • Char(n) (n<=255) • Fjale me gjatesifikse me n shkrojna/numra • Psh: nese kolona eshte percaktuar si char(10) dheduamteruajmevleren “happy”, MySQL do teruaje “happy” dhe 5 hapesira. Hapesirathiqenngarezultatikurmerretvlerangatabela. • Shembull: nr_amzes , Nr_targestecileve I dihetnumri I shkronjave • Varchar(n) (n<=255) • Fjale me gjatesivariabel- deri ne n shkronja • Ne ndryshim nga char, ketu vleres nuk i shtohen hapesira, por MySQL shton nje karakter per çdo fushe varchar, i cili ruan gjatesine e fushes. MySQL heq hapesirat nga fundi i stringjeve ne fusha te tipit varchar Iralda Mitro
Tipet Tekst • Te gjithetipet e meposhtmekanegjatesivariabelsi ne rastin e varchar(n) • Ndryshojnenganjeri-tjetringagjatesiamaksimale e tekstitqemundtembajne • TINYTEXT - Gjatesiamaksimaleeshte 255 karaktere • TEXT - Gjatesiamaksimaleeshte 65,535 karaktere • MEDIUMTEXT - Gjatesiamaksimale 16,777,215 karaktere • LONGTEXT - Gjatesiamaksimale 4,294,967,295 karaktere. Kytip nukperdoretshumepasigjatesiamaksimale e stringutqelejonMySQLeshtevetem 16 milion byte Iralda Mitro
ENUM • enum(‘value1’, ‘value2’, ‘value3’ ...) [default ‘value’] • Mundtekufizohetnumriivleraveqemundtemarrenjekolone . Lejonderi 65535 • Pshneseduamqenjekolone e caktuartemarrevetemdyvleratemundshmepodhejo create tablemy_table ( id intauto_increment primary key, Pyetjevarchar(200), Pergjigjeenum (‘po’, ‘jo’) default ‘po’ ); Iralda Mitro
Tipetnumerike • MySQL ka shtatetipekolonash per numrat: • int/integer • tinyint • mediumint • bigint • float • double/double precision/real • decimal/numeric • Dallojnenganjeri-tjetri ne madhesi Iralda Mitro
Tipet per daten dhe kohen • date • time • datetime • year • timestamp • Tipet per kohenjanefleksibel, dhepranojnestringjepshnesekrijojmenjetabele create table date_test( id int unsigned auto_increment, a_date date ); • Komandat e meposhtmeinterpretohensaktengamysql: • insert into date_test (a_date) values (‘00-06-01’); • insert into date_test (a_date) values (‘2000-06-01’); • insert into date_test (a_date) values (‘20000601’); • insert into date_test (a_date) values (000601); Iralda Mitro
Tipet e tedhenave per datat • DATE • Te dhenatruhen ne formatin YYYY-MM-DD. • Lejonvleranga 1000-01-01 deri ne 9999-12-31. • DATETIME • Ruantedhenat ne formatin:YYYY-MM-DD HH:MM:SS. • Lejonvleranga 1000-01-01 00:00:00 ne 9999-12-31 23:59:59. • TIMESTAMP • Eshteshumeidobishemsepseruan ne menyreautomatikekohenkurrreshti u modifikua Iralda Mitro
Tipe per datat • TIME • Ruankohen ne formatin HH:MM:SS dhelejonvleranga –838:59:59 ne 838:59:59. • Arsyejae vleravetemedhaqendrontekfaktiqe tipi I tedhenave time mundteperdoret per teruajturrezultatet e veprimevematematike me kohen • YEAR • Perdorim : year[(2|4)] • Ne formatin me dyshifra, datat e lejuarajanendermjet 1970 dhe 2069. Shifrat 70-99 paraprihennga 19 dhe 01–69 paraprihennga 20. • Rekomandohetperdorimiiformatit me katershifra. Lejonvleranga 1901 ne 2155. Iralda Mitro
Indekset • Indeksetperdoren per tepaturakses me teshpejte ne informacionetspecifiketenjetabele ne bazen e tedhenave. • Njeindekseshtenjestruktureqerenditvlerat e njeose me shumekolonave ne njetabele. • Psh: KolonaMbiemri ne tabelePunonjesit. Nesepokerkoninjepunetorsipasmbiemrittetij, indeksetjundihmojneqetemerrniinformacionin me shpejtsesatekontrollonit ne tegjitherreshtat e tabeles. • Indeksisiguronshenjuesa per ne vlerat e tedhenaveteruajtura ne kolonatecaktuaratetabeles, dheirenditketoshenjuesasipasrendittepercaktuarprejjush. Iralda Mitro
Indekset • Sintaksa index emer_indeksi (kolona_e_indeksuar) • Njemenyretjeter per tekrijuarnje index eshteqetedeklarohetnjekolonesinjeçelesprimar. Vereniqeçdokoloneauto_incrementduhetteindeksohet. create table my_table ( id_colint unsigned auto_increment primary key, another_col text ); • Ose create table my_table ( id_colint unsigned not null auto_increment, another_col text, primary key(id_col) ); Iralda Mitro
Indekset • Indeksetmundteperfshijne me shume se njekolone. Nesenje query perdorketodykolona se bashku per kerkim, duhettekrijoninjeindeksqeiperfshintedyja: create table mytable( id_colint unsigned not null, another_colchar(200) not null, index dual_col_index(id_col, another_col) ); Iralda Mitro
Indekset • Per kolonat char dhevarchar, mundtekrijohenindekse per njepjese ne fillimtekolones : • index index_name (column_name(column_length)) • Shembull: create table my_table( char_column char (255) not null, text_column text not null, index index_on_char (char_column(20)), index index_on_text (text_column(200)) ); • Njeindeksmundtesigurojeqeteekzistojnevleraunike ne çdorresht ne njetabele duke perdorurkufizimin “unique”. create table my_table( char_column char (255) not null, text_column text not null, unique index index_on_char (char_column) ); Iralda Mitro
Komanda Insert • insert into table_name (column_1, column2, column3,...) values (value1, value2, value3 ...) • Nesenjekolonelejonvlera Null athjumundtemos e vendosni ate ne komandeninsert • Stringjetduhettevendosenbrendathonjezaveteke (‘). • Shembull • insert into table_name (text_col, int_col) values (‘hello world’, 1) Iralda Mitro
Escape characters • Disakaraktereteveçantamundtefuten ne njekolone duke I paraprire me backslash • ‘ (single quote) • “ (double quote) • \ (backslash) • % (percent sign) • _ (underscore) • Per escape per thonjezattekemundteperdorimedhedythonjezatekenjera pas tjetres (‘’) . • Ketokaraktereidentifikohen ne MySQLngasekuenca e tyre escape: • \n (newline) • \t (tab) • \r (carriage return) • \b (back space) Iralda Mitro
Komanda update • Sintaksa updatetable_name set col_1=value1,col_2=value_2 where col=value • Shembull: • update folks set fname=’Vito’ where id=2 • update folks set salary=50000 where salary<50,000 Iralda Mitro
Komanda select e thjeshte • Select [lista e kolonavetendara me presje] from[ emri_tabeles] wherekusht_logjik order by [liste e kolonave] Shembull • select column_1, column_2, column_3 from table_name • select * from table_name Iralda Mitro
Komanda select me funksionet e grupit SELECT [lista e kolonavetendara me presjetegrupuara],[funksion_grupi] FROM [ emri_tabeles] WHERE [ kusht_logjik] GROUP BY [lista e kolonavetendara me presjetegrupuara] HAVING [kusht_logjik] Iralda Mitro
Shembuj- Select ithjeshte • Select * from studentet • Selectid,emri,mbiemri fromstudentet where datelindja is null • select * from users where city = ‘San Francisco’ Iralda Mitro
Shembuj- select iperbere • Ngatabelastudentetafishoni per secilinngaemratsa here perseritet SELECT emri, count(*) ‘here’ FROM studentet GROUP BY emri • Ngatabelastudentetafishonitegjitheatastudenteqekaneemer , mbiemertenjejte SELECT emri,mbiemri,count(*) FROM studentet GROUP BY emri,mbiemri HAVING count(*)>1 Iralda Mitro
Operatoret e krahasimit ne MySQL Operator Definition = equal to <> or != not equal to < less than <= less than or equal to > greater than >= greater than or equal to Like Compares a string Iralda Mitro
Komanda drop • drop table/drop database • Per tefshirenjetabeleosetegjithebazen e tedhenaveperdoretkomandadrop. • Kujdes! Nese e fshininjebazetedhenash do tehumbasintegjithetabelatqeekzistojne ne te. • drop table table_name • drop database database_name Iralda Mitro
Marrja e te dhenave nga disa tabela • Skema e bazes se te dhenave Book-O-Rama Iralda Mitro
Marrja e te dhenave nga disa tabela Iralda Mitro
Gjetja e rreshtave qe nuk kombinojne • Shpesh na nevojitet te gjejme rreshtat ne te cilat dy tabelat nuk lidhen, (pra qe nuk kombinojne) • psh: te gjejme klientet qe nuk kane bere porosi, apo librat qe nuk jane porositur. • Menyra me e lehte per kete eshte qe te perdoret nje left join, i cili bashkon te dhenat e dy tabelave, duke patur nje kondite te caktuar, dhe nese nuk gjendet nje rresht korrespondues ne tabelen djathtas, ne tabelen rezultat do te shtohet nje rresht qe permban vlera NULL ne kolonat e djathta. Iralda Mitro
Gjetja e rreshtave qe nuk kombinojne • Rezultati i kesaj query mund te jete: Iralda Mitro
Gjetja e rreshtave qe nuk kombinojne • Per te gjetur klientet qe nuk kane bere porosi: • Mund te vereni qe ne kete shembull eshte perdorur nje sintakse tjeter per join. Eshte perdorur sintakse me USING, ne vend te ON. Perdorimi i USING nuk e specifikon tabelen nga e cila vjen atributi i join, per kete arsye kolonat ne te dy tabelat duhet te kene te njejtin emer nese deshironi te perdorni USING. Iralda Mitro
Perdorimi i emrave te tjere per tabelat: Pseudonimet (Alias ) • Shpesh eshte me praktike qe t’i referohemi tabelave me emra te tjere. Emrat e tjere per tabelat quhen Pseudonime (alias) Iralda Mitro
Perdorimi i emrave te tjere per tabelat: Pseudonimet (Alias ) • Eshte e nevojshme te perdoren pseudonimet, kur duam te bashkojme (join) nje tabele me vetveten. Kjo eshte e nevojshme psh. nese duam te gjejme rreshtat e nje tabele qe kane vlera te perbashketa. • Psh: nese duam te gjejme klientet qe jetojne ne te njejtin qytet, mund t’i veme pseudonime te ndryshme te njejtes tabele (Customers): • Duhet vendosur kushti c1.name != c2.name, per te evituar qe nje rresht te kombinohet me vetveten. Iralda Mitro
Marrja e te dhenave te renditura Iralda Mitro
Grupimi dhe bashkimi (aggregate) i te dhenave Iralda Mitro
Grupimi dhe bashkimi (aggregate) i te dhenave • Shembuj: • Per te dhene sasine mesatare te porosive per çdo klient (ose me mire per çdo customerid), perdorim: Iralda Mitro
Grupimi dhe bashkimi (aggregate) i te dhenave Iralda Mitro
Marrja e te dhenave nga disa tabela • Nje artikull i shprehjes SELECT, qe mund te jete veçanerisht i vlefshem ne aplikacionet web, eshte LIMIT. • Ai ka dy parametra: numrin e rreshtit nga i cili duhet te filloje dhe numrin e rreshtave qe duhet te ktheje: • Kjo query mund te lexohet si: “Selekto name nga customers dhe me pas kthe 3 rreshta, duke filluar nga rreshti 2 ne output” • Vereni qe numrat e rreshtave indeksohen me zero: dmth qe rreshti i pare i outputit eshte rreshti me numer zero. Iralda Mitro
Ndryshimi i rekordeve ne bazen e te dhenave • Mund te perdorim LIMIT per te kufizuar numrin e rekordeve qe do te ndryshohen. Iralda Mitro
Ushtrime • Ne phpmyadmin • Provoni insert me datelindjen null • Futnidisastudente me tenjejtinemer me insert • Afishonitegjithestudenteqevijnengatirana • Provonitegjenisa here perseritetcdoemer • Provonitegjeniciletjanestudentetqekaneemerdhembiemertenjejte Iralda Mitro