MySQL-ə daxil olmaq. PHPMyAdmin Phpmyadmin sorğu tarixçəsində strukturlaşdırılmış SQL sorğu dili




Hadisə qeydləri sistemin vəziyyətini təyin etmək və səhvləri müəyyən etmək üçün ilk və ən sadə vasitədir. MySQL-də dörd əsas qeyd var:

  • Səhv jurnalı— server işləyərkən toplanan standart xəta jurnalı (başlama və dayandırma daxil olmaqla);
  • İkili Qeyd— replikasiya və ehtiyat nüsxələri üçün lazım olan bütün verilənlər bazası modifikasiyası əmrlərinin jurnalı;
  • Ümumi sorğu jurnalı— əsas sorğu jurnalı;
  • Yavaş Sorğu Qeydiyyatı— yavaş sorğular jurnalı.

Xəta jurnalı

Bu jurnalda server işləyərkən baş vermiş bütün səhvlər, o cümlədən kritik xətalar, həmçinin serverin bağlanması, serverin işə salınması və xəbərdarlıqlar var. Sistem nasazlığı halında başlamalısınız. Varsayılan olaraq, bütün səhvlər konsolda (stderr) çıxarılır, siz həmçinin səhvləri syslog-a (Debian-da defolt) və ya ayrıca log faylına daxil edə bilərsiniz:

Log_error=/var/log/mysql/mysql_error.log

# Səhvlər mysql_error.log-a yazılacaq

Səhvləri tez müəyyən etmək üçün bu jurnalı aktiv saxlamağı tövsiyə edirik. Və bu və ya digər xətanın nə demək olduğunu başa düşmək üçün MySQL-də səhv yardım proqramı var:

Shell> səhv 13 64 ƏS xəta kodu 13: İcazə rədd edildi ƏS xəta kodu 64: Maşın şəbəkədə deyil

# Səhv kodlarının mənasını izah edir

İkili (aka ikili) jurnal

Bütün verilənlər bazası modifikasiyası əmrləri ikili jurnalda qeyd olunur, təkrarlama və bərpa üçün faydalıdır.

Bu belə açılır:

Log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 5 max_binlog_size = 500M

# Yeri, ömrünü və maksimum fayl ölçüsünü təyin edir

Nəzərə alın ki, sistemi genişləndirmək və nasazlıqlara dözümlülük tətbiq etmək fikrində deyilsinizsə, ikili jurnalı aktivləşdirməmək daha yaxşıdır. Bu, resurs tələb edir və sistemin işini azaldır.

Sorğu jurnalı

Bu jurnal bütün qəbul edilmiş SQL sorğularını və müştəri əlaqələri haqqında məlumatları ehtiva edir. İndekslərin təhlili və optimallaşdırılması, həmçinin səhv sorğuların müəyyən edilməsi üçün faydalı ola bilər:

General_log_file = /var/log/mysql/mysql.log ümumi_log = 1

# Jurnal daxildir və faylın yerini göstərir

Siz həmçinin MySQL serveri işləyərkən onu aktivləşdirə/deaktiv edə bilərsiniz:

SET GLOBAL general_log = "ON"; SET GLOBAL general_log = "OFF";

# Serverdən istifadə etmək üçün onu yenidən başlatmağa ehtiyac yoxdur

Yavaş sorğu jurnalı

Jurnal yavaş, yəni səmərəsiz sorğuları müəyyən etmək üçün faydalıdır. Bu məqalədə daha ətraflı oxuyun.

Qeydlərə baxılır

Debian-da (Ubuntu) qeydlərə baxmaq üçün aşağıdakıları yerinə yetirməlisiniz:

# Xəta jurnalı quyruğu -f /var/log/syslog #Sorğu jurnalı quyruğu -f /var/log/mysql/mysql.log # Yavaş sorğuları qeyd edin quyruq -f /var/log/mysql/mysql-slow.log

# Qeydlər ayrıca göstərilməyibsə, onlar /var/lib/mysql-də yerləşirlər

Giriş fırlanması

Jurnal fayllarını serverdə daha az yer tutması üçün sıxmağı (arxivləməyi, döndərməyi) unutmayın. Bunu etmək üçün köməkçi proqramdan istifadə edin logrotate konfiqurasiya faylını redaktə etməklə /etc/logrotate.d/mysql-server:

# - Mən hər şeyi bir bloka yerləşdirdim və paylaşılan skriptləri əlavə etdim ki, mysql yalnız bir dəfə # flush-logs"d əldə etsin. # Əks halda ikili qeydlər hər gün avtomatik olaraq n dəfə artacaq. # - Səhv jurnalı köhnəlmişdir, mesajlar indi syslog-a keçir./var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log(gündəlik dönmə 7 missingok 640 mysql adm kompres paylaşılan skriptləri postrotate testi -x /usr/bin/mysqladmin || çıxış 0 # Bu uğursuz olarsa, debian.conf-u yoxlayın! MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf" əgər [ -z "`$MYADMIN ping 2>/dev/null`" ]; sonra # Həqiqətən mysqld yoxdur, yoxsa debian-sys-maint istifadəçisi yoxdur? # Əgər bu baş verərsə və xəta deyilsə, lütfən, səhv barədə məlumat verin. #if ps cax | grep -q mysqld; sonra if killall -q -s0 -umysql mysqld; sonra çıxın 1 fi başqa $MYADMIN flush-logs fi endscript )

# Lazımi qeydləri sıxır və arxivləşdirir, faylları təmizləyir

DDL Qeydiyyatı

MySQL həmçinin məlumat dili jurnalını saxlayır. O, DROP_TABLE və ALTER_TABLE kimi əməliyyatlardan məlumatları toplayır. Jurnal bu cür əməliyyatlar zamanı baş vermiş uğursuzluqları bərpa etmək üçün istifadə olunur. DDL Log ikili fayldır və istifadəçi tərəfindən oxunmaq üçün nəzərdə tutulmayıb, ona görə də onu dəyişdirməyin və ya silməyin.

Ən əhəmiyyətli

Həmişə səhv jurnalını yandırın, tətbiqin verilənlər bazası ilə əlaqəsini yoxlamaq, sorğuları və əməliyyatları yoxlamaq üçün sorğu jurnalından istifadə edin. Yavaş sorğular jurnalı MySQL performansını optimallaşdırmaq üçün faydalıdır.

Bu məqalə verilənlər bazası ilə, lakin bir neçə cədvəllə işləməyə davam etdiyimiz "Veb proqramlaşdırmanın əsasları" mövzusunun öyrənilməsinə, onlar arasında əlaqə yaratmağa və SELECT ifadəsi ilə tanış olmağa həsr edilmişdir.

  • PHPMyAdmin-də verilənlər bazası yaradılması. PHP, MySQL və HTML istifadə edərək verilənlərlə işləmək
  • Laboratoriya işçisinin əməyinin səmərəliliyini və səmərəliliyini qiymətləndirmək üçün məlumat sistemi
  • Neft bazasının rəhbəri üçün informasiya sisteminin işlənib hazırlanması
  • Avtoservis meneceri üçün məlumat sisteminin yaradılması
  • Müəssisənin istehsal dövrünü idarə etmək üçün proqram alətinin funksionallığına ümumi baxış

phpMyAdmin PHP-də yazılmış və World Wide Web vasitəsilə MySQL serverini idarə etmək üçün nəzərdə tutulmuş proqramdır. phpMyAdmin MySQL əməliyyatlarının geniş spektrini dəstəkləyir, ən çox istifadə olunan əməliyyatlar istifadəçi interfeysi vasitəsilə dəstəklənir (verilənlər bazası, cədvəllər, sahələr, əlaqələr, indekslər, istifadəçilər, hüquqlar və s. idarə olunur), eyni zamanda istənilən SQL-i birbaşa icra edə bilərsiniz. sorğu.

İstək cədvəllərdən verilənlərin çıxarılmasına və istifadəçiyə rahat formada təqdim edilməsinə xidmət edən verilənlər bazası obyektidir. Sorğuların özəlliyi ondan ibarətdir ki, onlar əsas cədvəllərdən verilənləri götürürlər və onların əsasında müvəqqəti cədvəl yaradırlar. Sorğuların istifadəsi cədvəllərdə məlumatların təkrarlanmasının qarşısını alır və verilənlər bazasında məlumatların axtarışında və nümayişində maksimum çeviklik təmin edir.

SQL sorğuları - SQL təlimatlarının vahid dəstindən istifadə etməklə qurulmuş sorğular (Strukturlaşdırılmış Sorğu Dili - strukturlaşdırılmış sorğu dili). SQL tam olaraq ənənəvi proqramlaşdırma dili kimi təsnif edilə bilməz, burada dəyişənləri daxil edə bilərsiniz, bir növü təsvir edirsiniz və daha çox məlumat bazasında saxlanılan məlumatlara standart giriş operatorları daxildir;

DilSQLdörd hissəyə bölünür:

  • Məlumat Tərifi Operatorları(Data Definition Language, DDL): yaratmaq (“yaratmaq”), dəyişdirmək (“dəyişmək”), buraxmaq (“silmək”).
  • Məlumatların manipulyasiya operatorları(Data Manipulation Language, DML): seçin (“seç”), daxil edin (“daxil et”), yeniləyin (“yenilə”) və silin (“sil”).
  • Data Access Definition Operators(Data Control Language, DCL): qrant (“təmin et”) və ləğv et (“məhrum et”).
  • Əməliyyatlara Nəzarət Hesabatları(Transaction Control Language, TCL): commit (“tam”), geri qaytarma (“geri qaytarma”), savepoint (“saxla”).

Bir SQL əmrinə baxacağıq - məlumatların axtarışı əmri SEÇİN , buna görə də bu əmr sayəsində bütün mümkün sorğuları təşkil edə bilərsiniz.

Operator sintaksisiSEÇİN

SEÇİN <список полей, которые вы хотите отразить в запросе> |*

FROM <список таблиц, с которыми вы работаете>

[HARADA <предикат-условие выборки или неявное внутреннее соединение таблиц>]

[QRUP BY <список полей группировки> [OLMAQ <предикат-условия для группировки>]]

[SİFARİŞ BY <список полей, по которым упорядочивает вывод> ]

Kvadrat mötərizədə göstərilən məlumatlar, həmişə olduğu kimi, isteğe bağlıdır.

Bunun üçün phpMyAdmin-də bir neçə sorğu nümunəsinə baxaq, biz əvvəlki verilənlər bazasından istifadə edəcəyik "; Komp _ texnika " Bu verilənlər bazasında biz artıq bir cədvəl yaratmışıq " məhsul "(məhsul), müəssisənin müvafiq xüsusiyyətlərini əks etdirən: məhsul_ ID (əsas açar ), yaradan ( istehsalçı ), model ( model ), allah_ sozd ( yaradılış ili ) Vənövü_ ID ( məhsul növü, xarici açardır ) (şək. 1-ə baxın).

Həmçinin bu verilənlər bazasına başqa bir qurum əlavə etdik " noutbuk "(məhsul növü), müəssisənin müvafiq xüsusiyyətlərini əks etdirən: növü_ ID(əsas açar), növü(növ), ƏS(əməliyyat sistemi), prosessor(CPU), pamjat(yaddaş), zvet(rəng), ves(çəki) və zena(qiymət) (bax. Şəkil 2).

İndi sorğuların tərtibinə davam etməzdən əvvəl obyektlər (cədvəllər) arasında əlaqə yaratmaq lazımdır. Bunun üçün cədvəllə işləyəcəyik” noutbuk"yəni, elementi seçin" Əlaqələr "(şək. 3-ə baxın).

Bundan sonra cədvəllər arasındakı əlaqəyə cavabdeh olan sahələri göstərməyiniz lazım olan bir səhifə açılacaqdır (bax. Şəkil 4). Bağlantı "" istifadə edərək başqa bir şəkildə də qurula bilər. Dizayner "(Şəkil 4-ə baxın)

Beləliklə, cədvəllər arasında əlaqələr quraraq, yuxarı menyuya keçərək sorğular yaratmağa davam edə bilərik " SQL ».

Sorğu 1. 2012-ci il buraxılışı üçün mövcud avadanlıq haqqında məlumatı göstərin (Cədvəl 1-ə baxın).

Cədvəl 1

Bu tələbi həyata keçirmək üçün operatordan istifadə etdik seçin – sahədən məlumatları göstərmək üçün yaradan ( istehsalçı ) model ( model ) , -dən – məlumatı göstərməyiniz lazım olan cədvəli təsvir etmək; predikat harada – nəticə cədvəlindən sətirlərin seçilməsi şərti üçün, yəni yaradılma ili olan məlumatları istehsal edir ( allah_ sozd) bərabərdir 2012 ; sifariş tərəfindən – verilənləri sahə üzrə çeşidləmək üçün yaradan ( istehsalçı ) .

Sorğu 2. Mövcud istehsalçıların avadanlıqlarının sayı haqqında məlumatları göstərin (Cədvəl 2-ə baxın).

cədvəl 2

ilə say deyilənlərdən biridir" toplama funksiyaları", boş olmayan tuplelərin sayını hesablayan, sorğuların qurulması üçün güclü bir vasitədir; bu halda, siz çıxışı qruplaşdırdınız. yaradan ( istehsalçılar ) .

Sorğu 3. Mövcud istehsalçılar üzrə noutbukların ümumi qiymətini məbləğə görə artan qaydada sıralayın (Cədvəl 3-ə baxın).

Cədvəl 3

Bu sorğu iki cədvəldən məlumat tələb edir, bunun üçün cədvəlləri birləşdirməliyik " məhsul "(məhsul) və" noutbuk "(məhsul növü), bunu etmək üçün bir predikatdan istifadə edirik qoşulun sahələrin birləşməsini göstərən: cədvəlin əsas açarı noutbuk . növü _ ID və masa xarici açarı məhsul . növü _ ID . Həmçinin qeyd edək ki, iki və ya daha çox cədvəllə işləyərkən, bəyanatda seçin, sahələri təsvir edərkən, məsələn, bu sahənin cədvəl adını göstərmək lazımdır noutbuk . növü . məbləğ , eləcə də saymaq istinad edir " toplama funksiyaları”, çubuqların dəyərlərinin cəmini hesablayan, bizim vəziyyətimizdə avadanlıqların dəyərinin cəmini hesablayır.

Sorğu 4. Dəyəri 25 mindən çox olmayan Windows-8 əməliyyat sistemi olan noutbuklarda məlumatları göstərin (Cədvəl 4-ə baxın).

Cədvəl 4

Sorğu 5. Məhsul haqqında məlumatı göstərin: yaradan(istehsalçı), model(model), pamjat(yaddaş), prosessor(prosessor) və zena(qiymət), kateqoriyaya görə " podhodit "Və" yox podhodit (Cədvəl 5-ə baxın).

Cədvəl 5

Nəticə:

Proqram :

(Laptop.pamjat = 1000) və (laptop.processor >=2600) sonra "podhodit" başqa "podhodit deyil" itog, product.maker, product.model, laptop.pamjat kimi pamjat_v_Gb, laptop.processor kimi bitdikdə vəziyyəti seçin. proc_v_Mgz, məhsuldan laptop.zena laptopu laptop.type_ID=product.type_ID-də birləşdirin, burada laptop.type "l%" kimi 1 desc ilə sifariş edin, 6

ilə ase son – malların meyarlara uyğun olaraq kateqoriyalara bölünməsi üçün istifadə olunan seçim predikatı. kimi "1%" – sətirləri naxışla uyğunlaşdırmaq üçün istifadə olunan predikat. Nümunə iki xüsusi simvoldan istifadə edə bilən sətirdir: " % "Və" _ ", Harada" % " hər hansı bir sətirə uyğun gəlir (boş ola bilər) və " _ " bir xarakterə uyğun gəlir, xüsusi simvollardan başqa hər hansı digər simvol yalnız xüsusi simvollara və özlərinə uyğunlaşdırıla bilər. sifariş tərəfindən [ asc| desc] – sorğu nəticələrinin çeşidlənməsi üçün nəzərdə tutulmuşdur [artan (standart) | Azalan], bir və ya bir neçə sahə üçün çeşidləmə mümkündür.

Operator SEÇİN verilənlər bazası cədvəllərindən nəticə toplusunu əldə etmək üçün ifadədən başqa bir şey deyil. Operatordan istifadə edərək sorğu yaradırıq SEÇİN , və o, öz növbəsində, işini başa vuraraq, əldə edilən məlumat dəstini qaytarır. Bu məlumatlar cədvəl şəklində qaytarılır və bu da öz növbəsində aşağıdakı operator tərəfindən işlənə bilər SEÇİN və s.

Biblioqrafiya

  1. phpMyAdmin-ə xülasə [Elektron resurs] / URL: http://php-myadmin.ru/about/notice.html
  2. Verilənlər bazası sorğuları və onlardan istifadə. Müraciət növləri. Yaradılma texnologiyası [Elektron resurs] / URL: http://www.yaklass.ru/materiali?mode=cht&chtid=514
  3. Ostrovski S.L. Məktəb veb saytının qurulması üçün veb proqramlaşdırmanın əsasları. Mühazirə 5. PHP+MySQL [Mətn]/ S.L. Ostrovski // İnformatika. - 2008.-№21.-s.2-15

Standart paketdə isə onunla çox şey edə bilərsiniz. Ancaq nə olursa olsun, ayrı-ayrılıqda aktivləşdirilə bilən bir sıra faydalı xüsusiyyətlərə malikdir. Bu yazıda biz PhpMyAdmin-in əlavə xüsusiyyətlərini açıqlayacağıq və onların bizim üçün necə faydalı ola biləcəyini görəcəyik.

Parametrlər

Başlamazdan əvvəl PhpMyAdmin-in işlək olduğundan əmin olun. Daxil olsanız, belə bir mesaj görə bilərsiniz:

PhpMyAdmin konfiqurasiya yaddaşı tam konfiqurasiya olunmayıb, bəzi genişləndirilmiş funksiyalar deaktiv edilib. Bunun səbəbini öyrənmək üçün bura klikləyin.
(phpMyAdmin konfiqurasiya mağazası düzgün konfiqurasiya edilməyib, bəzi funksiyalar deaktiv edilib. Səbəbini öyrənmək üçün bura klikləyin)

$cfg["Servers"][$i]["controluser"] = "pma"; $cfg["Servers"][$i]["controlpass"] = "pmapass"; $cfg["Servers"][$i]["pmadb"] = "phpmyadmin"; $cfg["Servers"][$i]["bookmarktable"] = "pma__bookmark"; $cfg["Servers"][$i]["relation"] = "pma__relation"; $cfg["Servers"][$i]["table_info"] = "pma__table_info"; $cfg["Servers"][$i]["pdf_pages"] = "pma__pdf_pages"; $cfg["Servers"][$i]["table_coords"] = "pma__table_coords"; $cfg["Servers"][$i]["column_info"] = "pma__column_info"; $cfg["Servers"][$i]["history"] = "pma__history"; $cfg["Servers"][$i]["son"] = "pma__son"; $cfg["Servers"][$i]["table_uiprefs"] = "pma__table_uiprefs"; $cfg["Servers"][$i]["users"] = "pma__users"; $cfg["Servers"][$i]["usergroups"] = "pma__usergroups"; $cfg["Servers"][$i]["navigationhiding"] = "pma__navigationhiding"; $cfg["Servers"][$i]["tracking"] = "pma__tracking"; $cfg["Servers"][$i]["userconfig"] = "pma__userconfig"; $cfg["Servers"][$i]["designer_coords"] = "pma__designer_coords"; $cfg["Servers"][$i]["favorite"] = 'pma__favorite'; $cfg["Servers"][$i]["savedsearches"] = "pma__savedsearches";

İstifadəçi adını, parolu və verilənlər bazası adını öz mülahizənizlə dəyişdirin. Qalan konfiqurasiya dəyərləri cədvəl adlarıdır. Onları boş qoysanız, müvafiq funksiyaları deaktiv edəcək. Amma ümumilikdə bu adları olduğu kimi qoymağı tövsiyə edərdim. PhpMyAdmin versiyasından asılı olaraq, bütün dəyərlər standart olaraq mövcud olmayacaq. Bu halda mən PhpMyAdmin 4.2.x versiyasından istifadə etdim.

Konfiqurasiyanı tamamladıqdan sonra verilənlər bazası yaratmalı olacaqsınız. Konfiqurasiya faylınızda qeyd etdiyiniz adla verilənlər bazası yaradın. Sonra, kompüterinizdə create_tables.sql adlı faylı axtarın. Çox güman ki, bu fayl quraşdırılmış PhpMyAdmin-in kök kataloqunda və ya skript alt kataloqunda yerləşəcək. Əgər siz Linux-dasınızsa, yer /usr/share/phpMyAdmin/examples/ və ya /usr/share/doc/phpmyadmin/scripts/ olacaq. Bu faylı yaradılmış verilənlər bazasında işlədin. Əgər siz yuxarıdakı konfiqurasiyada cədvəl adlarını dəyişmisinizsə, onları verilənlər bazasında da dəyişməyi unutmayın.

mysql.* ÜZRƏ İSTİFADƏ VERİN "pma"@"localhost" "pmapass" İLƏ TƏYİD EDİLƏN; GRANT SEÇİMİ (Host, İstifadəçi, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_tables, Create_mps priv, Execute_priv, Repl_slave_priv, _priv) ON mysql.user TO "pma"@"localhost"; mysql.db-də "pma"@"localhost" ÜÇÜN SEÇİM VERİN; mysql.host ÜZRƏ "pma"@"localhost" ÜÇÜN SEÇİM VERİN; SEÇİM VERİN (Host, Db, İstifadəçi, Cədvəl_adı, Cədvəl_priv, Sütun_priv) mysql.tables_priv ÜÇÜN "pma"@"localhost"; phpmyadmin-də SEÇMƏYƏ, ƏLAVƏ EDİN, YENİLƏNİB, SİLİNƏ VERİN.* "pma"@"localhost"-a;

PhpMyAdmin-dən çıxıb yenidən daxil olduqdan sonra xəbərdarlığın itdiyini görməliyik. Əgər əskik deyilsə, nəyin çatışmadığını öyrənmək üçün linkə klikləyin.

Əlavə variantlara baxaq.

Əlfəcinlər

Əlfəcin genişlənməsini aktiv etməklə siz sorğuları əlfəcin edə biləcəksiniz. Sorğu yaratdığınız zaman onu əlfəcinlərinizə əlavə edə bilərsiniz. Həmçinin, əgər sorğu artıq işə salınıbsa, səhifənin aşağısına keçib formanı doldurmaqla onu işarələyə bilərsiniz.

SQL sekmesine keçdiyiniz zaman, aşağıda əlfəcinlərdən sorğu seçə biləcəyiniz bir panel görəcəksiniz. Lazım olanı seçin və onunla nə etmək istədiyinizi göstərin: icra edin, baxın və ya silin.

Əlaqələr

Əlaqə seçimi, yəqin ki, indiyə qədər istifadə etdiyim ən yaxşı şeydir. Xarici açarlardan istifadə etsəniz, bu cür düymələr tıklanabilir olacaqdır. Xarici açarın üzərinə kliklədiyiniz zaman siz başqa cədvələ aparılacaqsınız: xarici açarın istinad etdiyi qeyd.

Həmçinin, xarici açar əlavə edərkən və ya redaktə edərkən mətn daxiletmə sahəsinin əvəzinə sizə bütün mümkün variantların siyahısı təqdim olunacaq.

Cədvəl məlumatları

Əlbəttə ki, xarici açar üçün bütün mümkün dəyərləri olan bir siyahı görmək yaxşıdır. Amma bizə ID əvəzinə konkret sütun göstərilsəydi, daha yaxşı olardı. Buna nail olmaq üçün sizable_info funksiyasını aktiv etməlisiniz. Əsas cədvələ keçin, "Struktur" sekmesine keçin və əlaqəni görmək üçün linki vurun. Səhifənin aşağısına keçsəniz, həmin açar üçün hansı sütunun görünəcəyini görəcəksiniz.

Xarici açarla yeni bir qeyd yaratsam, əsas açar dəyərinin yanında qeyd etdiyim sütundakı dəyəri görəcəyəm. İndi şəxsiyyət vəsiqəsini yadda saxlamağa ehtiyac yoxdur.

PDF səhifələri

Cədvəllər arasındakı əlaqələr PDF formatına ixrac edilə bilər. Bunun üçün konfiqurasiyada pdf_pages, table_coords və əlaqəni aktivləşdirməlisiniz. Növbəti addım PDF-ə ixrac etmək istədiyiniz verilənlər bazasını açmaqdır. "Əməliyyatlar" sekmesini vurun. Sonra, "Nəql diaqramını redaktə et və ya ixrac et" linkinə klikləyin. Bütün sahələri doldurun və "Göndər" düyməsini basın. Formanı doldurmusunuzsa, bütün lazımi məlumatları ehtiva edən bir PDF faylı alacaqsınız.

Sütun məlumatı

Sütun məlumatı seçimi ilə siz sütun adlarına şərhlər əlavə edə bilərsiniz. Bu, sütunun nə olduğunu və hansı məlumatları saxladığını digər insanlara çatdırmaq istədiyiniz zaman faydalı ola bilər. Bunu sütun məlumatlarını dəyişdirərək edə bilərsiniz. Siz sütuna yeni şərhin əlavə olunduğunu görə bilərsiniz. Şərh daxil etsəniz, o, birbaşa sütun adının altında görünəcək.

Dönüşümlər sütunlara eyni şəkildə tətbiq edilə bilər. Transformasiyalardan istifadə edərək, fayl adını göstərilən faylı açacaq hiperlink halına gətirə bilərsiniz.

Hekayə

Tarixçəni aktiv etsəniz, PhpMyAdmin vasitəsilə edilən bütün sorğular siz sistemdən çıxana və ya brauzeri bağlayana qədər tarixçənizdə yadda saxlanılacaq. Tarixçəyə “Sorğu” informasiya qutusuna zəng edərək və “SQL Tarixçəsi” düyməsini sıxmaqla baxmaq olar.

Son

Naviqasiya panelində siz bu yaxınlarda baxdığınız cədvəllərin açılan siyahısını ehtiva edən "Son" düyməsini görə bilərsiniz. Bu siyahı standart olaraq göstərilir. Ancaq onu sessiyalar arasında daimi saxlamaq istəyirsinizsə, konfiqurasiyada son seçimi aktivləşdirə bilərsiniz və baxış tarixçəniz verilənlər bazasında saxlanılacaq.

Cədvəl ekran parametrləri

Cədvəllərə baxarkən, sütunları köçürməklə onların sırasını dəyişə bilərsiniz. Bu dəyişiklikləri yalnız sizə görə bilərsiniz. Sütunların faktiki sırası dəyişmir. Bundan əlavə, siz həmçinin sütunları artan və azalan qaydada sıralaya bilərsiniz. Bu cür dəyişikliklər sessiya daxilində saxlanılır və sistemdən çıxdıqda onlar sıfırlanacaq və standart parametrlərlə əvəz olunacaq. Bununla belə, əgər siz cədvəllərin hər zaman “öz yolunuzda” düzülməsini istəyirsinizsə, table_uiprefs seçimini aktivləşdirin.

İstifadəçilər və istifadəçi qrupları

Bütün istifadəçilər üçün bütün xüsusiyyətləri göstərmək istəməyə bilərsiniz. Bu halda, onları "İstifadəçilər" sekmesinde qruplara bölmək olar. Yeni qrup yaradın və bu qrupdakı istifadəçilərin nəyi görə biləcəyini müəyyənləşdirin. Daha sonra siz istifadəçiləri bu qrupa əlavə edə bilərsiniz və əmin ola bilərsiniz ki, onlar yalnız sizin onlara baxmağa icazə verdiyiniz menyu elementlərini görəcəklər. Bu yolla siz müxtəlif istifadəçilərə müxtəlif sistem xüsusiyyətlərinə giriş imkanı verə, həmçinin istifadə olunmamış variantları gizlədə bilərsiniz.

Naviqasiya gizlədilir

Naviqasiya gizlədilməsi ilə siz naviqasiya panelində bəzi cədvəlləri gizlədə bilərsiniz. Cədvəl adının yanındakı ampul işarəsinə klikləsəniz, onu gizlədəcəksiniz. Siz həmçinin lampa işarəsinə yenidən klikləməklə onu yenidən görünən edə bilərsiniz. Bu yolla siz istifadə olunmamış cədvəllərin naviqasiya panelini azad edəcəksiniz.

İzləmə

Bu funksiyadan istifadə edərək, PhpMyAdmin istifadə edərək xüsusi cədvəllərdə edilən bütün dəyişiklikləri izləyə bilərsiniz. Cədvələ getmək və "İzləmə" sekmesini açmaqla cari cədvəlin versiyasını yarada bilərsiniz. İndi PhpMyAdmin istifadə edərək bu cədvələ edilən bütün dəyişikliklər yadda saxlanılacaq. Eyni şəkildə, son versiya yaradılandan bəri cədvəldə hansı dəyişikliklərin edildiyini asanlıqla müəyyən edə bilərsiniz.

Fərdi Parametrlər

Bütün istifadəçi parametrləri standart olaraq brauzerinizdə saxlanılır. Bu o deməkdir ki, başqa bir brauzerdən istifadə etmək qərarına gəlsəniz və ya brauzerinizin önbelleğini təmizləsəniz, bütün parametrləriniz itiriləcək. userconfig-i aktivləşdirməklə siz parametrlərinizi həmişəlik verilənlər bazasında saxlayacaqsınız.

Verilənlər bazası dizayneri koordinatları

designer_coords funksiyasını aktiv etməklə siz verilənlər bazası dizayneri görünüşündə cədvəlləriniz arasındakı əlaqələrə baxa bilərsiniz. Verilənlər bazasına keçərək və "Dizayner" sekmesini tıklayaraq, cədvəllər arasındakı əlaqələri göstərən aşağıdakı şəkilə bənzər bir şey görəcəksiniz. Eyni zamanda, bu pəncərədən istifadə edərək cədvəllər arasındakı əlaqələri vizual şəkildə idarə edə bilərsiniz.

Sevimlilər

Sevimli seçimi aktivləşdirməklə verilənlər bazasına baxış rejimində cədvəl adlarının yanında ulduz nişanlarının göründüyünü görə bilərsiniz. Sevimlilərinizə cədvəl əlavə etmək üçün ulduzun üzərinə klikləyin. Naviqasiya çubuğunda siz "Sevimlilər" açılan siyahısını görəcəksiniz. Sevimlilərinizə əlavə etdiyiniz cədvəllər bu siyahıda görünəcək.

Axtarış parametrləri saxlanılır

Verilənlər bazasını açıb Sorğu sekmesine keçməklə siz təkmil axtarışlar qura bilərsiniz. Axtarış seçimləri əlfəcin edilə bilər. Qeyd edək ki, bunlar əvvəllər müzakirə edilən SQL sorğu əlfəcinləri deyil. Bu seçimlə siz axtarış parametrlərinizi saxlaya və sonradan istifadə edə bilərsiniz.

Nəticə

Siyahıda göstərilən xüsusiyyətləri aktivləşdirmək asandır və həqiqətən PhpMyAdmin vasitəsilə verilənlər bazası ilə işləməyinizə kömək edə bilər. Xüsusilə xarici açarları araşdırmaq qabiliyyətini xoşlayıram ki, əlaqəli qeydləri görə bilərəm. Ümid edirəm ki, bu funksiyaları aktivləşdirəcəksiniz və onlar gündəlik işinizdə faydalı olacaqlar.

Sual: ms sql sorğularının tarixi


Sorğu tarixçəsinə necə baxmaq olar (silmək, yeniləmək...)?

Cavab:
Profiler, düşünə biləcəyiniz ən yavaş auditdir. Genişləndirilmiş Tədbirlər ehtiyaclarınıza uyğunlaşdırıla bilər və o, həmçinin yükləyə və s., lakin bu seçimlərdən hər hansı biri resurs tələb edir.

Sual: Sorğunun icra tarixi


Mənə deyin, MS SQL-də konkret verilənlər bazasında kimin hansı sorğuları yerinə yetirdiyini görmək mümkündürmü?

Cavab: iluxa1810, bu məlumat yalnız qismən mövcuddur. Belə bir sorğu sınayın:

T-SQL kodu
1 2 3 4 SEÇİN deqs.last_execution_time AS [ Time ], dest.TEXT AS [ Sorğu] FROM sys.dm_exec_query_stats AS deqs CROSS MÜRACİƏT EDİN sys.dm_exec_sql_text (deqs.sql_handle) AS dest SİPARİŞ.

Sorğuların tam tarixçəsi üçün siz qeyd etməli və ya SQL Profiler kimi utilitlərdən istifadə etməlisiniz.

Sual: Əvvəlki dəyərləri verilənlər bazasına qaytarmaq üçün Sql sorğusu


Hamıya salam!

Zəhmət olmasa deyin, verilənlər bazasında müəyyən bir tarixdən başlayaraq bütün sifarişlərdə sondan əvvəlki sifariş statuslarını necə qaytara bilərəm?

Bəlkə bir növ sql sorğusu və ya bir növ skript var... Mən çox minnətdar olaram.

Proqramçı mənim anbarımla inteqrasiya edərkən kiçik bir səhv etdi və bütün sifarişlər statusunu inteqrasiya modulunun parametrlərində olan birinə dəyişdirdi və onu necə geri qaytaracağını bilmir.

Dərhal fərq etmədik və verilənlər bazasının köhnə nüsxəsini bərpa etmək çox gec idi. Mağazada artıq yeni sifarişlər var.

Cavab: Poetiq,
InnoDB sorğu tarixçəsini saxlaya bilər.

Baş
1 ~/ .mysql_history

Ən son ehtiyat nüsxəsini yığın və əmrləri təkrarlayın
Ümumiyyətlə, hər inteqrasiyadan əvvəl ehtiyat nüsxəsini çıxarmalı və daha yaxşısı onu test serverində sınamalısınız

Sual: Çoxlu cədvəllərdən axtarış etmək üçün SQL sorğusu


Günortanız Xeyir. Zəhmət olmasa, bunu edə biləcəyimi və ya verilənlər bazası yenidən işlənməli olub-olmadığını və ya belə bir axtarışın həyata keçirilməsinin mümkün olmadığını anlamağa kömək edin.
Mən delphi rad xe10-da yazıram.
İşçilər cədvəlində işçi haqqında məlumatı bir sətirdə yazıram, geyim ölçülərində də bir sətir var və ona nə verildiyinin tarixçəsi (sətirlər çox olub, fərq ID_rabdır).

Axtarış etmək istəyirəm
soyad və ya tab nömrəsi ilə soruşduqda mənə aşağıdakı məlumatları verəcəkdir:
dbgrid1-dəki ilk cədvəldəki işçi haqqında,
dbgrid2-də ikinci cədvəldən onun ölçüləri
və dbgrid3-də Cədvəl 3-dən (yalnız ID_rab ilə fərqlənən çoxlu sətirlər ola bilər) bu işçi ilə bağlı tarixçə

Birinci cədvəldə:

ikincidə:

SQL
1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE Size (ID_razmOdejdi INT NOT NULL IDENTITY (1, 1), Geyim VARCHAR (4), ID_rab INT, PRIMARY KEY (ID_razmOdejdi), XARİCİ AÇAR (ID_rab) REFERANS İşçilər, ) ;

üçüncüdə:

SQL
1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE Tarixçəsi ( ID_story INT NOT NULL IDENTITY (1, 1), Nim_means VARCHAR (15), ID_rab INT, PRIMARY KEY (ID_story), XARİCİ AÇAR (ID_rab) REFERENCES İşçilər, ) ;

Eyni anda müxtəlif sorğularla 3 ADOQuery edin?
Birinciyə aid olan başqa bir cədvəldən məlumatı göstərməsini necə edəcəyimi bilmirəm
Bunu etmək mümkün olsaydı: Axtarışa bir insanı daxil etdim, onu tapdı və onun ID_rab-dan istifadə edərək digər cədvəllərdə məlumat tapacaq və eyni zamanda 3 müxtəlif dbgriddə göstərəcəkdi.

Cavab:

Mesaj Roqzar

Və bir işçi haqqında bütün məlumatları, ölçüsünü, tarixini tələb olunduğu kimi tamamilə silsəniz, bu bir sorğu ilə edilə bilərmi?

Əgər İşçilər cədvəlində kaskad silinməsini aktiv etsəniz, onda bir sıra silmək tabeliyindəki cədvəllərdən məlumatları siləcək. Əks halda bir neçə SİLME sorğusu etməli olacaqsınız.

14 saat 31 dəqiqədən sonra əlavə edilib
Belə kod adlanan hücumlara qarşı həssasdır. Parametrləri olan sorğulardan istifadə edilməlidir.

Sual: Bir xahiş - mümkündürmü?


Günortanız xeyir, xanımlar və cənablar!
Aşağıdakı problemi necə rasional həll edəcəyimi söyləyin...
Üç cədvəl var: məhsullar (həqiqətən də azdır, təxminən 60-80 ədəd), satış tarixçəsi və balanslar...

IN sadələşdirilmiş quruluşu belədir:
mallar:
id
ad

sifariş_tarixi:
id
s_date
yaxşı_id
qiymət

balans:
id
s_date
order_id
saymaq

Hər üç cədvəl ID ilə əlaqələndirilir (goods.id - order_history.good_id, order_history.id - balance.order_id).
Vəzifə hər hansı bir ixtiyari tarix üçün bütün malların ümumi balansını əldə etməkdir! Yəni, hər bir məhsul üçün mühasibat hesabatından və satış tarixçəsindən ən yaxın tarix qeydini almalıyam (balans hesabatından müvafiq olaraq miqdar, satış tarixindən - qiymət).

Aydındır ki, bütün məhsullar arasında ID-yə görə dövrə vura və hər iterasiyada SQL sorğusunu yerinə yetirə bilərsiniz, amma nə isə... Bu seçimi bəyənmirəm! :) Problemi zərif şəkildə həll etmək mümkündürmü - bir xahişlə?

Mən hər hansı bir fikir üçün minnətdar olardım!

Cavab: Mən heç bir əks göstəriş görmürəm. Əgər strukturu qaydasına salsanız.

Küt!
Verilənlər bazasına bəzi ehtiyatlar əlavə edildi
Onsuz da sizdə çox var. Üstəlik, potensial olaraq ziddiyyətlidir. Mən balansda yeni giriş etməyi qadağan edə biləcək heç bir məhdudiyyət görmürəm ki, bu və əvvəlki miqdar qeydi arasındakı fərq eyni dövr üçün order_history-dən ümumi kəmiyyətə uyğun gəlməyəcək.

Sual: Daxili sorğu, bir neçə sadə olanı birləşdirməyə kömək edin


Günortanız Xeyir Köməkinizə görə çox minnətdar olacam)) Uzun müddətdir beynimi sındırıram.
Bir az tarix. Onlarla əlaqəli URL ilə müəyyən bir sorğu hovuzu var, məqsəd müəyyən bir URL siyahısı üçün kəsişən sorğular verməkdir, bu da sorğu ilə müəyyən edilir.

Beləliklə, ardıcıllıqla yerinə yetirilən bir neçə sorğu var:
$sql2 = URL SİYAHIDAN SEÇİN HARADA `qrup` = "1" VƏ `proekt`= "1" URL SAYISINA GÖRƏ QRUP (*) DESC LIMIT 3 - ekran görüntüsü
Mən 3 ədəd məbləğində URL-lərin siyahısını seçirəm və sonra onları sorğu üçün görünüşə toplayıram

$return=array();
$maxcount=mysql_query($sql2);
while($url = mysql_fetch_array($maxcount)) (
$return = $url;
}
foreach ($url1 olaraq $return) ( //massivdən Əzələ üçün bir sıra URL-lərin toplanması
əgər ($frag2==0) ( $url = "`url`="."".$url1."""; $frag2=1; ) başqa $urllər .= " OR `url` = "" url1.""";
}

Bu halda $url = `url` = "http://www.MosDance.com/" VEYA `url`="http://raisky.com/" və s.

Mən bu URL-lərlə əlaqəli açarların siyahısını göstərirəm
'açar' seçin (SEÇ `açar` , COUNT(*) SİYAHIDA Cəmi AS HARADA `qrup` = "1" VƏ `proekt`= "1" VƏ (".$urls.") `açar` SİFARİŞİYƏ QRUP EDİN BY `total` DESC) kimi t2 kimi BURADA t2.cəmi >=3

Əslində əsas sual budur ki, bu məsələni necə azaltmaq olar? URL-i necə düzgün yığmaq olar ki, URL-i lazımi qaydada toplayan php qoltuqaltı skriptindən qurtula və hamısını, məsələn, verilənlər bazasında bir sorğu ilə edə biləsiniz? ümumiyyətlə, qoltuqağaqlarımdan daha ağıllı bir sorğudan son nəticəni necə əldə edə bilərəm?

Cavab:

Yaxşı gün!
Heç vaxt COUNT(*) yazmayın. Daha yaxşı seçim COUNT(`id`) olardı.
Həmçinin, RAND(*) yazmayın. Əlbəttə ki, fərqli yazmaq daha yaxşıdır: şərhlərin öz funksiyaları var və belədir.
Verilənlər bazasından qeydlərin seçilməsi üçün yuxarıda göstərilən üsulların hamısı mysql serverini çox yükləyir. Əlbətdə ki, verilənlər bazasında 30 min qeydiniz olmasa, bu o qədər də ağrılı olmayacaq.

Müraciətlə bağlı:
DAXİLİ QOŞULUŞA doğru qazın. Və ya masanızın bir zibilini mənə göndərin, problemi daha ətraflı izah etsəniz, sizə kömək edərəm, çünki oxuduqlarım bütün təlaşa girmək üçün çox tənbəldir =)

-----
- burada proqramlaşdırma dərsləri. Orada da maraqlı xüsusiyyətlər var =)

Sual: Bir neçə kriteriyadan istifadə edərək iki cədvəldən sorğu


Axşamınız xeyir!

Zəhmət olmasa, aşağıdakı sorğu ilə bağlı mənə kömək edin:
1. Sahələrlə əməliyyatlar cədvəli var: valyutanın adı, tarixi, məzənnəsinin növü və digər sahələr
2. Sahələrlə valyuta məzənnələrinin tarixini əks etdirən cədvəl var: valyutanın adı, tarixi, məzənnəsinin növü, məzənnə.

Sorğu birinci cədvəlin bütün sahələrinə və qeydlərinə, ikinci cədvəldəki məzənnəyə əsasən yaradılmalıdır. Üstəlik, bütün 3 seçim meyarının üst-üstə düşməsi lazımdır: valyutanın adı, məzənnənin tarixi və növü.

Əvvəlcədən təşəkkürlər!

Cavab:
Sorğu dizaynerində daha rahat olacaqsınız.

SQL vasitəsilə daxili sevinci necə yaratmağı anladım, ilk baxışdan sadədir. Ancaq bir sual var:
1. Əməliyyat cədvəlində "Əməliyyat növü" sahəsi var.
2. İlk etdiyim sorğu hər bir cədvəl girişi üçün "Əməliyyat növləri" cədvəlindən "Valyuta məzənnəsi növü" əməliyyatlarını çəkir.
3. Sorğu 2-ci addımda əldə edilmiş “Kursun növü” meyarına uyğun olaraq kurslar olan cədvəldən çıxarılır.

Başqa sözlə: əvvəlcə 2 cədvəl birləşdirilir (əməliyyatlar və əməliyyat növləri), daha sonra ümumi məlumatlardan istifadə edərək onlara “Valyuta məzənnələri” cədvəlindən məlumatlar əlavə edilir.

Sual: Sorğunun hansı cədvəl qeydinin xəta ilə uğursuz olduğunu öyrənin


Mən fakt cədvəlinə edilən sorğunun xəta qaytardığı bir vəziyyətlə qarşılaşdım, lakin kataloqda xətaya səbəb olan qeydləri tapa bilmirəm (sual tarixlərə aiddir)
Sorğunun özü fakt cədvəlindən bütün qeydləri, üstəlik kataloqdan hesablanmış sahəni qaytarır. Kataloq düzgün doldurulsaydı, alt sorğu fakt cədvəli qeydinə bir dəyər qaytarardı. Amma əslində, kataloqdakı girişlərdə tuta bilmədiyim səhvlər var.
Hansı fakt cədvəlinin qeydinin xətaya səbəb olduğunu bir şəkildə görmək mümkündürmü?

Cavab: Gülməli deyil. Çünki çoxdandır (sözün əsl mənasında):
Yaxşı, aldanma detektoru işə düşən kimi dərhal qaçdı... Nə olub?
Qəhrəmancasına super sorğular yazmazdan əvvəl (bütün hallar üçün) beyninizi işə salmalısınız - yaxşı, heç olmasa bir neçə dəqiqə...
Bəli, şəxsən sizin “əziyyətiniz” yeri zibil qutusu olan sərsəm bir xahiş üçün kifayət idi.
Və yalnız semantikasına və sintaksisinə görə "başmaq" aldınız...
Yaxşı fikir!
Yuyunan kimi onu rəfdən götürün (yaxşı, heç olmasa!) - və "öyrən, oxu və öyrən" (c). GROUP BY paylaşmaq və HAVING... haqqında mütləq bir şey var.

Sual: Sorğu profilləşdirmə proqramları


salamlar!

Xüsusilə sorğuları təhlil etmək üçün kimin (proqramlar, IDE-lər və s.) istifadə etdiyini deyin, onların optimallaşdırılması üçün sorğuların təhlili alətləri ilə maraqlanıram; Sorğu planını harada görə bilərsiniz: sorğu indeksləri, Tam tarama və s.

11) | TARİX | TARİX | sürücü_adı | VARCHAR(100) | faiz | INT(11) | müştəridən_alınan_məbləğ | DECIMAL (9 , 2 ) | sürücü üçün_sum_tarif | DECIMAL (9 , 2 ) | ödənişli_məlumat | DECIMAL (9 , 2 ) | ödənişli_status | tinyint(1) | faiz_şirkət | INT(11)

"Ödənilmiş_status" sahəsində ödəniş statusu saxlanılır. Belə bir sorğuda lazımdır:

bütün məlumatları əldə edin. Bu belə olmalıdır: əgər “ödənilmiş_status = 1” olarsa, “ödənilmiş_məlumat” sahəsindəki nömrə əvəzinə siz həmişə “0” alacaqsınız.

Sorğuya “və ödənişli_status “1” kimi deyil, əlavə etsəm, bu xəttin çıxışı ümumiyyətlə alınmayacaq, amma hər şeyi əldə etməliyəm, yalnız “summa_for_payed” sahəsi ilə artıq dəyişdi "ödənilmiş_status" vəziyyəti

25 dəqiqədən sonra əlavə olunur
Əlavə edəcəyəm ki, müəyyən bir tarix üçün sum(summa_for_payed) əmri ilə sorğu zamanı “ödənilmiş_status” sahəsinin dəyəri nəzərə alınmaqla məbləği almaq lazımdır, daha dəqiq desək, “ödənilmiş_status = 1”, onda “ödənilmiş_məlumatlı_məlumat” sahələri də “ödənilmiş_status = 1” olduqda “0” kimi məbləğdə nəzərə alınır.

Cavab: Bəli, mən belə düşünürdüm, amma problem budur: xətti sıfırlasam və birdən səhv istifadəçi seçilibsə, onun köhnə borcu silindiyi üçün onu geri qaytara bilməyəcəm. yalnız bu göstəricidən istifadə edib ödənişi təyin etməyi və lazım gələrsə, borcunun məbləğini görərək onu yenidən qaytarmağı düşündü. Yaxşı, ümumiyyətlə, onun ödədiyi borcunu tarix görməsi daha yaxşı olardı.

34 dəqiqədən sonra əlavə edildi
Hörmətli gurular.
Mən belə bir şey tapdım

SQL
1 CƏMİNİ SEÇİN (ƏGƏR (`ödənilmiş_status' = 1 , 0 , `ödənilmiş_məlumat' ) ) mytable-DƏN

Mən bir neçə xahiş etdim, deyəsən mənə lazım olan şeydi, amma belə bir müraciətdə tələlərin olub olmadığını deyə bilərsiniz, mənə lazım olan budur? Bunu etməliyəm, yoxsa başqa həll yolları axtarmalıyam? Tətiklər də ağlıma gəlir. bəlkə onlarla bir şey? Nə məsləhət görürsən. Dəyərləri dəyişdirməyi də düşündüm, əgər 0 olarsa, ödənilir, 1 olarsa, yox, sonra seçimdə rəqəmi göstərici ilə vurun və sıfırdırsa, sadəcə sıfır alacağam. varsa, o zaman nömrəni özüm alacam. sadəcə lazımsız hesablamalar... Sizin fikriniz nədir?