Masuk MySQL. Bahasa kueri SQL terstruktur dalam riwayat kueri PHPMyAdmin Phpmyadmin




Log peristiwa adalah alat pertama dan paling sederhana untuk menentukan status sistem dan mengidentifikasi kesalahan. Ada empat log utama di MySQL:

  • Catatan eror— log kesalahan standar yang dikumpulkan saat server sedang berjalan (termasuk mulai dan berhenti);
  • Log Biner— log semua perintah modifikasi basis data, yang diperlukan untuk replikasi dan pencadangan;
  • Log Kueri Umum— log permintaan utama;
  • Log Kueri Lambat— log permintaan lambat.

Catatan eror

Log ini berisi semua kesalahan yang terjadi saat server sedang berjalan, termasuk kesalahan kritis, serta penghentian server, permulaan server, dan peringatan. Di sinilah Anda harus memulai jika terjadi kegagalan sistem. Secara default, semua kesalahan dikeluarkan ke konsol (stderr), Anda juga dapat mencatat kesalahan ke syslog (default di Debian) atau file log terpisah:

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

# Kesalahan akan ditulis ke mysql_error.log

Kami menyarankan untuk tetap mengaktifkan log ini untuk mengidentifikasi kesalahan dengan cepat. Dan untuk memahami apa arti kesalahan ini atau itu, MySQL memiliki utilitas perror:

Shell> perror 13 64 Kode kesalahan OS 13: Izin ditolak Kode kesalahan OS 64: Mesin tidak ada di jaringan

# Menjelaskan arti kode kesalahan

Log biner (alias biner).

Semua perintah modifikasi basis data dicatat dalam log biner, berguna untuk replikasi dan pemulihan.

Ini menyala seperti ini:

Log_bin = /var/log/mysql/mysql-bin.log expired_logs_days = 5 max_binlog_size = 500 juta

# Menentukan lokasi, masa pakai, dan ukuran file maksimum

Harap dicatat bahwa jika Anda tidak ingin menskalakan sistem dan menerapkan toleransi kesalahan, lebih baik tidak mengaktifkan log biner. Ini membutuhkan banyak sumber daya dan mengurangi kinerja sistem.

Catatan permintaan

Log ini berisi semua pertanyaan SQL yang diterima dan informasi tentang koneksi klien. Dapat berguna untuk analisis dan pengoptimalan indeks, serta mengidentifikasi kueri yang salah:

General_log_file = /var/log/mysql/mysql.log log_umum = 1

# Termasuk log dan menunjukkan lokasi file

Anda juga dapat mengaktifkan/menonaktifkannya saat server MySQL sedang berjalan:

SETEL GLOBAL general_log = "AKTIF"; SETEL GLOBAL general_log = "MATI";

# Anda tidak perlu me-restart server untuk menggunakannya

Log permintaan lambat

Log berguna untuk mengidentifikasi kueri yang lambat dan tidak efisien. Baca lebih lanjut di artikel ini.

Melihat log

Untuk melihat log di Debian (Ubuntu), Anda perlu menjalankan:

# Log kesalahan tail -f /var/log/syslog #Query log tail -f /var/log/mysql/mysql.log # Catat permintaan yang lambat ekor -f /var/log/mysql/mysql-slow.log

# Jika log tidak ditentukan secara terpisah, log tersebut berlokasi di /var/lib/mysql

Rotasi log

Jangan lupa untuk mengompres (mengarsipkan, memutar) file log agar tidak memakan banyak ruang di server. Untuk melakukan ini, gunakan utilitas logrotate dengan mengedit file konfigurasi /etc/logrotate.d/mysql-server:

# - Saya meletakkan semuanya dalam satu blok dan menambahkan skrip bersama, sehingga mysql mendapat # flush-logs"d hanya sekali. # Jika tidak, log biner akan otomatis bertambah sebanyak n kali setiap hari. # - Log kesalahan sudah usang, pesan masuk ke syslog sekarang./var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log(rotasi harian 7 missingok buat 640 mysql adm kompres sharedscripts postrotate test -x /usr/bin/mysqladmin || keluar 0 # Jika gagal, periksa debian.conf! MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf" if [ -z "`$MYADMIN ping 2>/dev/null`" ]; Kemudian # Benar-benar tidak ada mysqld atau lebih tepatnya pengguna debian-sys-maint yang hilang? # Jika ini terjadi dan bukan kesalahan harap laporkan bug. #jika ps cax | grep -q mysqld; Kemudian jika killall -q -s0 -umysql mysqld; lalu keluar dari 1 fi else $MYADMIN flush-logs fi endscript )

# Kompres dan arsipkan log yang diperlukan, bersihkan file

Catatan DDL

MySQL juga memelihara log bahasa data. Ini mengumpulkan data dari operasi seperti DROP_TABLE dan ALTER_TABLE. Log digunakan untuk memulihkan kegagalan yang terjadi selama operasi tersebut. Log DDL adalah file biner dan tidak dimaksudkan untuk dibaca oleh pengguna, jadi jangan ubah atau hapus.

Yang paling penting

Selalu aktifkan log kesalahan, gunakan log kueri untuk memeriksa koneksi aplikasi ke database, memeriksa kueri dan pengoperasian. Log kueri yang lambat berguna untuk mengoptimalkan kinerja MySQL.

Artikel ini dikhususkan untuk mempelajari topik "Dasar-dasar Pemrograman Web", di mana kami terus bekerja dengan database, tetapi dengan beberapa tabel, membuat koneksi di antara mereka dan mengenal pernyataan SELECT.

  • Membuat database di PHPMyAdmin. Bekerja dengan data menggunakan PHP, MySQL dan HTML
  • Sistem informasi untuk menilai efisiensi dan efektivitas kerja pegawai laboratorium
  • Pengembangan sistem informasi pimpinan pangkalan minyak
  • Pembuatan sistem informasi pengelola servis mobil
  • Ikhtisar fungsionalitas alat perangkat lunak untuk mengelola siklus produksi suatu perusahaan

phpMyAdmin adalah program yang ditulis dalam PHP dan dirancang untuk mengelola server MySQL melalui World Wide Web. phpMyAdmin mendukung berbagai operasi MySQL, operasi yang paling umum digunakan didukung melalui antarmuka pengguna (mengelola database, tabel, bidang, hubungan, indeks, pengguna, hak, dll.), pada saat yang sama Anda dapat langsung mengeksekusi SQL apa pun pertanyaan.

Permintaan adalah objek database yang berfungsi untuk mengekstrak data dari tabel dan menyajikannya kepada pengguna dalam bentuk yang nyaman. Keunikan kueri adalah mereka mengambil data dari tabel dasar dan membuat tabel sementara berdasarkan tabel tersebut. Penggunaan kueri menghindari duplikasi data dalam tabel dan memberikan fleksibilitas maksimum dalam mencari dan menampilkan data dalam database.

Kueri SQL - kueri yang dibuat menggunakan serangkaian instruksi SQL terpadu (Bahasa Kueri Terstruktur - bahasa kueri terstruktur). SQL tidak dapat sepenuhnya diklasifikasikan sebagai bahasa pemrograman tradisional, di mana Anda akan memasukkan variabel, mendeskripsikan tipe, dan banyak lagi; SQL hanya berisi sekumpulan operator akses standar ke data yang disimpan dalam database.

BahasaSQLdibagi menjadi empat bagian:

  • Operator Definisi Data(Bahasa Definisi Data, DDL): buat (“buat”), ubah (“ubah”), hapus (“hapus”).
  • Operator manipulasi data(Bahasa Manipulasi Data, DML): pilih (“pilih”), sisipkan (“masukkan”), perbarui (“perbarui”) dan hapus (“hapus”).
  • Operator Definisi Akses Data(Bahasa Kontrol Data, DCL): memberikan (“menyediakan”) dan mencabut (“mencabut”).
  • Pernyataan Pengendalian Transaksi(Bahasa Kontrol Transaksi, TCL): komit (“selesai”), kembalikan (“kembalikan”), titik simpan (“simpan”).

Kita akan melihat satu perintah SQL - perintah pengambilan data PILIH , jadi berkat perintah ini Anda dapat mengatur semua kemungkinan permintaan.

Sintaks operatorPILIH

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

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

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

[KELOMPOK OLEH <список полей группировки> [MEMILIKI <предикат-условия для группировки>]]

[MEMESAN OLEH <список полей, по которым упорядочивает вывод> ]

Informasi yang diapit tanda kurung siku, seperti biasa, bersifat opsional.

Mari kita lihat beberapa contoh request di phpMyAdmin; untuk ini kita akan menggunakan database sebelumnya " Komp _ teksnika " Di database ini kita sudah membuat tabel " produk "(produk), yang mencerminkan properti terkait dari entitas: produk_ PENGENAL ( kunci utama ), pembuat ( pabrikan ), model ( model ), Tuhan_ sozd ( tahun penciptaan ) Danjenis_ PENGENAL ( jenis produk, adalah kunci asing ) (lihat Gambar 1).

Juga di database ini, kami telah menambahkan entitas lain " laptop "(jenis produk), yang mencerminkan properti entitas yang relevan: jenis_ PENGENAL(kunci utama), jenis(jenis), sistem operasi(sistem operasi), prosesor(CPU), pamjat(Penyimpanan), semangat(warna), ve(berat) dan zena(harga) (lihat Gambar 2).

Sekarang, sebelum melanjutkan dengan membuat kueri, perlu dibuat koneksi antar entitas (tabel). Untuk melakukan ini, kita akan bekerja dengan tabel “ laptop" yaitu pilih item " Koneksi "(lihat Gambar 3).

Setelah itu sebuah halaman akan terbuka di mana Anda perlu menentukan bidang yang bertanggung jawab atas hubungan antar tabel (lihat Gambar 4). Koneksi juga dapat dibuat dengan cara lain menggunakan " Perancang "(lihat Gambar 4)

Jadi, setelah menjalin hubungan antar tabel, kita dapat melanjutkan membuat kueri dengan masuk ke menu paling atas “ SQL ».

Permintaan 1. Menampilkan informasi perlengkapan yang tersedia untuk rilis 2012 (lihat Tabel 1).

Tabel 1

Untuk mengimplementasikan permintaan ini, kami menggunakan operator Pilih – untuk menampilkan informasi dari lapangan pembuat ( pabrikan ) Dan model ( model ) , dari – untuk mendeskripsikan tabel dari mana Anda perlu menampilkan informasi; predikat Di mana – untuk syarat pemilihan baris dari tabel hasil yaitu menghasilkan data yang mempunyai tahun pembuatan ( Tuhan_ sozd) menyamai 2012 ; memesan oleh – untuk mengurutkan data berdasarkan bidang pembuat ( pabrikan ) .

Permintaan 2. Menampilkan informasi tentang jumlah peralatan dari produsen yang tersedia (lihat Tabel 2).

Meja 2

Dengan jumlah adalah salah satu yang disebut " fungsi agregasi", yang menghitung jumlah tupel yang tidak kosong, adalah alat yang ampuh untuk membuat kueri; dalam hal ini, Anda mengelompokkan keluaran berdasarkan pembuat ( produsen ) .

Permintaan 3. Menampilkan total harga laptop menurut produsen yang tersedia, diurutkan berdasarkan jumlah dalam urutan menaik (lihat Tabel 3).

Tabel 3

Kueri ini memerlukan data dari dua tabel, untuk ini kita perlu menggabungkan tabel " produk " (produk) dan " laptop “(Jenis produk), untuk itu kita menggunakan predikat bergabung menunjukkan gabungan bidang: kunci utama tabel laptop . jenis _ PENGENAL dan tabel kunci asing produk . jenis _ PENGENAL . Perhatikan juga bahwa ketika bekerja dengan dua tabel atau lebih, dalam pernyataan Pilih, saat mendeskripsikan bidang, perlu untuk menunjukkan nama tabel bidang ini, misalnya laptop . jenis . jumlah , sebaik menghitung mengacu pada " fungsi agregasi”, yang menghitung jumlah nilai tupel, dalam kasus kami jumlah biaya peralatan.

Permintaan 4. Menampilkan data pada laptop dengan sistem operasi Windows-8, dengan harga tidak lebih dari 25 ribu (lihat Tabel 4).

Tabel 4

Permintaan 5. Menampilkan informasi tentang produk: pembuat(pabrikan), model(model), pamjat(Penyimpanan), prosesor(prosesor) dan zena(harga), berdasarkan kategori " podhodit " Dan " bukan podhodit (lihat Tabel 5).

Tabel 5

Hasil:

Program :

Pilih case ketika (laptop.pamjat = 1000) dan (laptop.processor >=2600) lalu "podhodit" jika tidak "bukan podhodit" diakhiri dengan itog, product.maker, product.model, laptop.pamjat sebagai pamjat_v_Gb, laptop.processor sebagai proc_v_Mgz, laptop.zena dari produk bergabung dengan laptop di laptop.type_ID=product.type_ID di mana laptop.type seperti "l%" pesan sebanyak 1 desc, 6

Dengan as akhir – predikat seleksi, digunakan untuk mendistribusikan barang ke dalam kategori sesuai dengan kriteria. menyukai "1%" – predikat yang digunakan untuk mencocokkan string dengan suatu pola. Polanya adalah string yang dapat menggunakan dua karakter khusus: " % " Dan " _ ", Di mana " % " cocok dengan string apa pun (mungkin kosong) dan " _ " cocok dengan satu karakter, karakter lain selain karakter khusus hanya dapat dicocokkan dengan karakter khusus dan karakter itu sendiri. memesan oleh [ bertanya| deskripsi] – dirancang untuk mengurutkan hasil kueri [ascending (default) | Menurun], penyortiran dimungkinkan untuk satu atau lebih bidang.

Operator PILIH tidak lain adalah ekspresi untuk mendapatkan kumpulan hasil dari tabel database. Kami menghasilkan permintaan menggunakan operator PILIH , dan dia, pada gilirannya, setelah menyelesaikan pekerjaannya, mengembalikan kumpulan data yang dihasilkan. Data ini dikembalikan dalam bentuk tabel, yang selanjutnya dapat diproses oleh operator berikut PILIH dll.

Bibliografi

  1. Abstrak ke phpMyAdmin [Sumber daya elektronik] / URL: http://php-myadmin.ru/about/notice.html
  2. Kueri basis data dan penggunaannya. Jenis permintaan. Teknologi penciptaan [Sumber daya elektronik] / URL: http://www.yaklass.ru/materiali?mode=cht&chtid=514
  3. Ostrovsky S.L. Dasar-dasar pemrograman web untuk pembuatan website sekolah. Kuliah 5. PHP+MySQL [Teks]/ S.L. Ostrovsky // Informatika. - 2008.-№21.-hal.2-15

Dan dalam paket standar Anda dapat melakukan banyak hal dengannya. Namun demikian, ia memiliki sejumlah fitur berguna yang dapat diaktifkan secara terpisah. Pada artikel ini kami akan mengungkapkan fitur tambahan PhpMyAdmin dan melihat manfaatnya bagi kami.

Pengaturan

Sebelum memulai, pastikan PhpMyAdmin aktif dan berjalan. Jika Anda masuk, Anda mungkin melihat pesan seperti ini:

Penyimpanan konfigurasi phpMyAdmin belum sepenuhnya dikonfigurasi, beberapa fitur tambahan telah dinonaktifkan. Untuk mengetahui alasannya klik di sini.
(Penyimpanan konfigurasi phpMyAdmin tidak dikonfigurasi dengan benar, beberapa fitur dinonaktifkan. Untuk mengetahui alasannya, klik di sini)

$cfg["Server"][$i]["pengguna kontrol"] = "pma"; $cfg["Server"][$i]["controlpass"] = "pmapass"; $cfg["Server"][$i]["pmadb"] = "phpmyadmin"; $cfg["Server"][$i]["bookmarktable"] = "pma__bookmark"; $cfg["Server"][$i]["relation"] = "pma__relation"; $cfg["Server"][$i]["table_info"] = "pma__table_info"; $cfg["Server"][$i]["pdf_pages"] = "pma__pdf_pages"; $cfg["Server"][$i]["table_coords"] = "pma__table_coords"; $cfg["Server"][$i]["column_info"] = "pma__column_info"; $cfg["Server"][$i]["history"] = "pma__history"; $cfg["Server"][$i]["recent"] = "pma__recent"; $cfg["Server"][$i]["table_uiprefs"] = "pma__table_uiprefs"; $cfg["Server"][$i]["pengguna"] = "pma__pengguna"; $cfg["Server"][$i]["usergroups"] = "pma__usergroups"; $cfg["Server"][$i]["navigationhiding"] = "pma__navigationhiding"; $cfg["Server"][$i]["pelacakan"] = "pma__tracking"; $cfg["Server"][$i]["userconfig"] = "pma__userconfig"; $cfg["Server"][$i]["designer_coords"] = "pma__designer_coords"; $cfg["Server"][$i]["favorit"] = 'pma__favorit'; $cfg["Server"][$i]["savedsearches"] = "pma__savedsearches";

Ubah nama pengguna, kata sandi, dan nama basis data sesuai kebijaksanaan Anda sendiri. Nilai konfigurasi yang tersisa adalah nama tabel. Membiarkannya kosong akan menonaktifkan fitur terkait. Namun secara umum, saya akan merekomendasikan membiarkan nama-nama ini apa adanya. Tergantung pada versi PhpMyAdmin, tidak semua nilai akan tersedia secara default. Dalam hal ini saya menggunakan PhpMyAdmin versi 4.2.x.

Setelah Anda selesai dengan konfigurasi, Anda perlu membuat database. Buat database dengan nama yang Anda tentukan di file konfigurasi Anda. Selanjutnya, cari file bernama create_tables.sql di mesin Anda. Kemungkinan besar, file ini akan ditempatkan di direktori root PhpMyAdmin yang diinstal, atau di subdirektori skrip. Jika Anda menggunakan Linux, lokasinya adalah /usr/share/phpMyAdmin/examples/ atau /usr/share/doc/phpmyadmin/scripts/ . Jalankan file ini dalam database yang dibuat. Jika Anda mengubah nama tabel pada konfigurasi di atas, jangan lupa untuk mengubahnya juga di database.

HIBAH PENGGUNAAN PADA mysql.* KE "pma"@"localhost" DIIDENTIFIKASI OLEH "pmapass"; GRANT SELECT (Host, Pengguna, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, Referensi_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Repl_slave_priv, _priv) AKTIF mysql.pengguna KE "pma"@"localhost"; GRANT SELECT PADA mysql.db KE "pma"@"localhost"; GRANT SELECT PADA mysql.host KE "pma"@"localhost"; GRANT SELECT (Host, Db, Pengguna, Nama_Tabel, Tabel_priv, Kolom_priv) PADA mysql.tables_priv KE "pma"@"localhost"; GRANT SELECT, INSERT, UPDATE, DELETE PADA phpmyadmin.* KE "pma"@"localhost";

Setelah logout dari PhpMyAdmin dan login kembali, kita akan melihat bahwa peringatan tersebut telah hilang. Jika tidak ada yang hilang, klik tautan untuk mencari tahu apa yang hilang.

Mari kita lihat opsi tambahan.

Bookmark

Dengan mengaktifkan ekstensi bookmark, Anda akan dapat mem-bookmark pertanyaan. Saat Anda membuat permintaan, Anda dapat menambahkannya ke bookmark Anda. Selain itu, jika permintaan telah diluncurkan, Anda dapat menandainya dengan menggulir ke bagian bawah halaman dan mengisi formulir.

Saat Anda membuka tab SQL, di bagian bawah Anda akan melihat panel tempat Anda dapat memilih kueri dari bookmark. Pilih salah satu yang Anda perlukan dan tunjukkan apa yang ingin Anda lakukan dengannya: jalankan, lihat, atau hapus.

Koneksi

Opsi relasi mungkin adalah hal terbaik yang pernah saya gunakan. Jika Anda menggunakan kunci asing, maka kunci tersebut akan dapat diklik. Saat Anda mengklik kunci asing, Anda akan dibawa ke tabel lain: catatan yang direferensikan oleh kunci asing.

Selain itu, saat menambahkan atau mengedit kunci asing, alih-alih kolom input teks, Anda akan disajikan daftar semua opsi yang memungkinkan.

Informasi tabel

Tentu saja, melihat daftar dengan semua kemungkinan nilai untuk kunci asing adalah hal yang bagus. Namun akan lebih baik lagi jika kita diperlihatkan kolom tertentu daripada ID. Untuk mencapai hal ini, Anda perlu mengaktifkanable_info . Buka tabel utama, buka tab “Struktur”, dan klik tautan untuk melihat hubungannya. Jika Anda menggulir ke bagian bawah halaman, Anda akan melihat kolom mana yang akan muncul untuk kunci tersebut.

Jika saya membuat record baru dengan kunci asing, maka di sebelah nilai kunci utama saya akan melihat nilai dari kolom yang saya tentukan. Sekarang tidak perlu lagi mengingat ID.

halaman PDF

Hubungan antar tabel dapat diekspor ke PDF. Untuk melakukan ini, Anda perlu mengaktifkan pdf_pages, table_coords dan relasi di konfigurasi. Langkah selanjutnya adalah membuka database yang ingin Anda ekspor ke PDF. Klik pada tab "Operasi". Selanjutnya, klik tautan “Edit atau ekspor diagram pengkabelan”. Isi semua kolom dan klik "Kirim". Jika Anda mengisi formulir, Anda akan menerima file PDF dengan semua data yang diperlukan.

Informasi Kolom

Dengan opsi info kolom Anda dapat menambahkan komentar ke nama kolom. Hal ini dapat berguna ketika Anda ingin menyampaikan kepada orang lain apa itu kolom dan data apa saja yang disimpannya. Anda dapat melakukan ini dengan mengubah data kolom. Anda mungkin memperhatikan bahwa komentar baru telah ditambahkan ke kolom. Jika Anda memasukkan komentar, komentar itu akan muncul tepat di bawah nama kolom.

Transformasi dapat diterapkan pada kolom dengan cara yang sama. Menggunakan transformasi, Anda dapat membuat nama file menjadi hyperlink yang akan membuka file tertentu.

Cerita

Jika Anda mengaktifkan riwayat, semua permintaan yang dibuat melalui PhpMyAdmin akan disimpan dalam riwayat Anda sampai Anda logout atau menutup browser. Riwayat dapat dilihat dengan memanggil kotak dialog “Query” dan mengklik tombol “SQL History”.

Terkini

Di bilah navigasi, Anda mungkin melihat tombol “Terbaru” yang berisi daftar drop-down tabel yang baru-baru ini Anda lihat. Daftar ini ditampilkan secara default. Tetapi jika Anda ingin menyimpannya secara permanen di antara sesi, Anda dapat mengaktifkan opsi terbaru di konfigurasi, dan riwayat penelusuran Anda akan disimpan di database.

Pengaturan tampilan tabel

Saat melihat tabel, Anda dapat mengubah urutan kolom dengan memindahkannya. Perubahan ini hanya dapat dilihat oleh Anda. Urutan kolom sebenarnya tidak berubah. Selain itu, Anda juga dapat mengurutkan kolom secara ascending dan descending. Perubahan tersebut disimpan dalam sesi, dan ketika logout, perubahan tersebut akan diatur ulang dan diganti dengan pengaturan default. Namun, jika Anda ingin tabel ditata sesuai keinginan Anda sepanjang waktu, aktifkan opsi table_uiprefs.

Pengguna dan kelompok pengguna

Anda mungkin tidak ingin menampilkan semua fitur untuk semua pengguna. Dalam hal ini, Anda dapat membaginya menjadi beberapa grup di tab “Pengguna”. Buat grup baru, dan tentukan apa yang dapat dilihat oleh pengguna di grup ini. Anda kemudian dapat menambahkan pengguna ke grup ini, dan Anda dapat yakin bahwa mereka hanya akan melihat item menu yang Anda izinkan untuk mereka lihat. Dengan cara ini Anda dapat memberikan pengguna yang berbeda akses ke fitur sistem yang berbeda, serta menyembunyikan opsi yang tidak digunakan.

Menyembunyikan navigasi

Dengan menyembunyikan navigasi Anda dapat menyembunyikan beberapa tabel di bilah navigasi. Mengklik ikon bola lampu di sebelah nama tabel akan menyembunyikannya. Anda juga dapat membuatnya terlihat kembali dengan mengklik lagi ikon bola lampu. Dengan cara ini Anda akan menghilangkan bilah navigasi dari tabel yang tidak digunakan.

Pelacakan

Dengan menggunakan fitur ini, Anda dapat melacak semua perubahan yang dibuat pada tabel tertentu menggunakan PhpMyAdmin. Dengan membuka tabel dan membuka tab “Pelacakan”, Anda dapat membuat versi tabel saat ini. Sekarang semua perubahan yang dilakukan pada tabel ini menggunakan PhpMyAdmin akan disimpan. Dengan cara yang sama, Anda dapat dengan mudah menentukan perubahan apa yang telah dilakukan pada tabel sejak versi terakhir dibuat.

Pengaturan Kustom

Semua pengaturan pengguna disimpan di browser Anda secara default. Artinya, jika Anda memutuskan untuk menggunakan browser lain, atau menghapus cache browser, semua pengaturan Anda akan hilang. Dengan mengaktifkan userconfig Anda akan menyimpan pengaturan Anda di database secara permanen.

Koordinat perancang basis data

Dengan mengaktifkan designer_coords, Anda bisa melihat hubungan antar tabel dalam tampilan desainer database. Dengan masuk ke database dan mengklik tab “Designer”, Anda akan melihat sesuatu yang mirip dengan gambar di bawah ini, yang menunjukkan hubungan antar tabel. Pada saat yang sama, Anda dapat mengelola hubungan antar tabel secara visual menggunakan jendela ini.

Favorit

Dengan mengaktifkan opsi favorit, Anda mungkin melihat ikon bintang muncul di sebelah nama tabel dalam mode penelusuran basis data. Untuk menambahkan tabel ke favorit Anda, cukup klik bintangnya. Di bilah navigasi, Anda akan melihat daftar drop-down “Favorit”. Tabel yang Anda tambahkan ke favorit Anda akan muncul di daftar ini.

Menyimpan parameter pencarian

Dengan membuka database dan membuka tab Kueri, Anda dapat mengatur pencarian lanjutan. Opsi pencarian dapat ditandai. Perhatikan bahwa ini bukan penanda kueri SQL yang dibahas sebelumnya. Dengan opsi ini Anda dapat menyimpan parameter pencarian dan menggunakannya nanti.

Kesimpulan

Fitur-fitur yang tercantum mudah untuk diaktifkan dan sangat membantu Anda bekerja dengan database melalui PhpMyAdmin. Saya terutama menyukai kemampuan menelusuri kunci asing sehingga saya dapat melihat catatan terkait. Saya harap Anda mengaktifkan fitur-fitur ini dan berguna dalam pekerjaan Anda sehari-hari.

Pertanyaan: Sejarah kueri ms sql


Bagaimana cara melihat riwayat permintaan (hapus, perbarui...)?

Menjawab:
profiler adalah audit paling lambat yang dapat Anda pikirkan. Acara yang Diperluas dapat disesuaikan dengan kebutuhan Anda dan juga dapat diunggah, dll., tetapi salah satu opsi ini memerlukan sumber daya.

Pertanyaan: Riwayat eksekusi kueri


Katakan padaku, apakah mungkin untuk melihat di suatu tempat di MS SQL siapa yang melakukan kueri apa dalam database tertentu?

Menjawab: iluxa1810, informasi ini hanya tersedia sebagian. Coba kueri seperti:

kode T-SQL
1 2 3 4 PILIH deqs.last_execution_time AS [ Waktu ], dest.TEXT AS [ Kueri] DARI sys.dm_exec_query_stats AS deqs CROSS APPLY sys.dm_exec_sql_text (deqs.sql_handle) SEBAGAI tujuan ORDER BY deqs.last_execution_time DESC

Untuk riwayat kueri yang lengkap, Anda perlu melakukan logging atau menggunakan utilitas seperti SQL Profiler.

Pertanyaan: Kueri sql untuk mengembalikan nilai sebelumnya ke database


Halo semua!

Tolong beritahu saya bagaimana saya bisa mengembalikan status pesanan kedua dari belakang di semua pesanan mulai dari tanggal tertentu di database?

Mungkin ada semacam query sql atau mungkin semacam script... Saya akan sangat berterima kasih.

Pemrogram melakukan sedikit kesalahan saat berintegrasi dengan gudang saya dan semua pesanan berubah status menjadi yang ada di pengaturan modul integrasi dan tidak tahu cara mengembalikannya.

Kami tidak langsung menyadarinya dan sudah terlambat untuk memulihkan salinan database yang lama. Sudah ada pesanan baru di toko.

Menjawab: Puisiq,
InnoDB dapat menyimpan riwayat kueri.

Pesta
1 ~/ .mysql_history

Gulung cadangan terbaru dan ulangi perintahnya
Secara umum, sebelum setiap integrasi, Anda harus membuat cadangan, dan lebih baik lagi, mengujinya di server pengujian

Pertanyaan: Kueri SQL untuk mencari dari beberapa tabel


Selamat siang. Tolong bantu saya memahami apakah saya bisa melakukan ini atau apakah database perlu dibuat ulang atau apakah pencarian seperti itu tidak mungkin dilakukan.
Saya menulis di delphi rad xe10.
Saya menulis di tabel Karyawan informasi tentang karyawan dalam satu baris, di ukuran pakaian juga ada satu baris, dan riwayat apa yang diberikan kepadanya (banyak baris dan yang membedakan hanya ID_rab).

Saya ingin melakukan pencarian
sehingga ketika ditanya nama belakang atau nomor tab, saya akan mendapat informasi berikut:
Tentang pekerja dari tabel pertama di dbgrid1,
ukurannya dari tabel kedua di dbgrid2
dan riwayat terkait karyawan ini dari Tabel 3 (mungkin ada banyak baris yang hanya berbeda berdasarkan ID_rab) di dbgrid3

Di tabel pertama:

di detik:

SQL
1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE Size (ID_razmOdejdi INT NOT NULL IDENTITY (1, 1), Clothes VARCHAR (4), ID_rab INT, PRIMARY KEY (ID_razmOdejdi), FOREIGN KEY (ID_rab) REFERENSI Karyawan, ) ;

di yang ketiga:

SQL
1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE History ( ID_story INT BUKAN NULL IDENTITY (1, 1), Nim_means VARCHAR (15), ID_rab INT, PRIMARY KEY (ID_story), FOREIGN KEY (ID_rab) REFERENSI Karyawan, ) ;

Buat 3 ADOQuery dengan query berbeda sekaligus?
Saya tidak tahu bagaimana membuatnya menampilkan informasi dari tabel lain milik tabel pertama
Jika memungkinkan untuk melakukan ini: Saya memasukkan seseorang ke dalam pencarian, ia menemukannya dan, dengan menggunakan ID_rab-nya, ia akan menemukan informasi di tabel lain dan pada saat yang sama menampilkannya di 3 dbgrid yang berbeda.

Menjawab:

pesan dari Rogzar

Dan jika Anda menghapus sepenuhnya semua informasi tentang seorang karyawan, ukuran tubuhnya, riwayatnya, sesuai kebutuhan, dapatkah ini dilakukan melalui satu permintaan?

Jika Anda mengaktifkan penghapusan kaskade pada tabel Karyawan, maka menghapus baris di dalamnya akan menghapus data dari tabel bawahan. Jika tidak, Anda harus membuat beberapa permintaan DELETE.

Ditambahkan setelah 14 jam 31 menit
Kode tersebut rentan terhadap serangan yang disebut. Kueri dengan parameter harus digunakan.

Pertanyaan: Satu permintaan - apakah mungkin?


Selamat siang, hadirin sekalian!
Beri tahu saya cara menyelesaikan masalah berikut secara rasional...
Ada tiga tabel: produk (jumlahnya sedikit, sekitar 60-80 buah), riwayat penjualan dan saldo...

DI DALAM disederhanakan strukturnya adalah sebagai berikut:
barang-barang:
pengenal
nama

pesanan_sejarah:
pengenal
tanggal_s
good_id
harga

keseimbangan:
pengenal
tanggal_s
Id pemesanan
menghitung

Ketiga tabel tersebut dihubungkan berdasarkan ID (goods.id - order_history.good_id, order_history.id - balance.order_id).
Tugasnya adalah mendapatkan total saldo semua barang untuk tanggal berapa pun! Artinya, untuk setiap produk saya harus mendapatkan catatan tanggal terdekat dari neraca dan riwayat penjualan (dari neraca masing-masing kuantitas, dari riwayat penjualan - harga).

Jelas bahwa Anda dapat mengulang semua produk berdasarkan ID dan menjalankan kueri SQL di setiap iterasi, tapi entah bagaimana... Saya tidak suka opsi ini! :) Apakah mungkin menyelesaikan masalah dengan baik - dengan satu permintaan?

Saya akan berterima kasih atas ide apa pun!

Menjawab: Saya tidak melihat adanya kontraindikasi. Jika Anda menata strukturnya.

Tumpul!
Menambahkan beberapa redundansi ke database
Anda sudah memilikinya terlalu banyak. Selain itu, hal ini berpotensi menimbulkan kontradiksi. Saya tidak melihat batasan apa pun yang dapat melarang saya membuat entri baru di saldo sehingga perbedaan antara entri kuantitas ini dan entri sebelumnya tidak akan sesuai dengan jumlah total dari riwayat_pesanan untuk periode yang sama.

Pertanyaan: Kueri bertingkat, bantu saya menggabungkan beberapa kueri sederhana


Selamat siang Saya akan sangat berterima kasih atas bantuan Anda)) Saya telah memutar otak sejak lama.
Sedikit sejarah. Ada kumpulan permintaan tertentu dengan URL yang terkait dengannya, tujuannya adalah untuk mengeluarkan permintaan yang berpotongan untuk daftar URL tertentu, yang juga ditentukan oleh permintaan tersebut

Jadi ada beberapa query yang dieksekusi secara berurutan:
$sql2 = PILIH url DARI daftar WHERE `group` = "1" AND `proekt`= "1" GROUP BY url ORDER BY COUNT(*) DESC LIMIT 3 - tangkapan layar
Saya memilih daftar URL sebanyak 3 buah dan kemudian mengumpulkannya ke dalam tampilan untuk permintaan

$kembali=array();
$maxcount=mysql_query($sql2);
while($url = mysql_fetch_array($jumlah maksimal)) (
$kembali = $url;
}
foreach ($return as $url1) ( //mengumpulkan serangkaian URL untuk Muscle dari sebuah array
if ($frag2==0) ( $urls = "`url`="."".$url1."""; $frag2=1; ) else $urls .= " ATAU `url` = "". url1.""";
}

Dalam hal ini $urls = `url` = "http://www.MosDance.com/" ATAU `url`="http://raisky.com/" dll.

Saya menampilkan daftar kunci yang terkait dengan URL ini
pilih `key` dari (PILIH `key` , COUNT(*) SEBAGAI total DARI daftar WHERE `group` = "1" AND `proekt`= "1" AND (".$urls.") KELOMPOK BERDASARKAN `key` ORDER OLEH `total` DESC) sebagai t2 WHERE t2.total >=3

Sebenarnya pertanyaan utamanya adalah bagaimana cara mengurangi hal ini? Bagaimana cara merakit URL dengan benar, sehingga Anda dapat menyingkirkan skrip kruk php yang mengumpulkan URL dalam urutan yang diperlukan dan melakukan semuanya, misalnya, dengan satu permintaan di database? secara umum, bagaimana saya bisa mendapatkan hasil akhir dari satu kueri yang lebih pintar daripada kruk saya?

Menjawab:

Selamat tinggal!
Jangan pernah menulis COUNT(*). Pilihan yang lebih baik adalah COUNT(`id`).
Juga, jangan menulis RAND(*). Tentu saja lebih baik menulisnya secara berbeda: komentar memiliki fungsi di dalamnya, dan memang demikian.
Semua metode di atas untuk memilih catatan dari database sangat membebani server mysql. Kecuali, tentu saja, Anda memiliki 30 ribu catatan di database, itu tidak akan terlalu menyakitkan.

Mengenai permintaan tersebut:
Gali menuju INNER JOIN. Atau kirimkan saya dump meja Anda, saya akan membantu Anda jika Anda menceritakan masalahnya lebih detail, karena yang saya baca terlalu malas untuk mendalami semua keributan =)

-----
- pelajaran pemrograman di sini. Fitur menarik juga ada =)

Pertanyaan: Query dari dua tabel menggunakan beberapa kriteria


Selamat malam!

Tolong bantu saya membuat permintaan berikut:
1. Terdapat tabel transaksi dengan kolom: nama mata uang, tanggal, jenis nilai tukar dan kolom lainnya
2. Terdapat tabel riwayat nilai tukar dengan kolom: nama mata uang, tanggal, jenis nilai tukar, nilai tukar.

Kueri harus dibuat berdasarkan semua bidang dan catatan pada tabel pertama, dan nilai tukar dari tabel kedua. Selain itu, ketiga kriteria pemilihan harus bertepatan: nama mata uang, tanggal dan jenis nilai tukar.

Terima kasih sebelumnya!

Menjawab:
Anda akan lebih nyaman dalam perancang kueri.

Saya menemukan cara membuat kegembiraan batin melalui SQL, sekilas sederhana. Tapi ada pertanyaan:
1. Pada tabel transaksi terdapat field “Jenis Transaksi”
2. Kueri yang saya buat pertama kali menarik untuk setiap entri tabel transaksi "Jenis Nilai Mata Uang" dari tabel "Jenis Transaksi"
3. Permintaan diambil dari tabel dengan kursus sesuai dengan kriteria “Jenis kursus” yang diperoleh pada langkah 2.

Dengan kata lain: pertama, 2 tabel digabungkan (transaksi dan jenis transaksi), dan kemudian, dengan menggunakan informasi umum, data dari tabel “Nilai Mata Uang” ditambahkan ke dalamnya.

Pertanyaan: Cari tahu di tabel mana rekaman kueri gagal karena kesalahan


Saya menemukan situasi di mana permintaan ke tabel fakta menghasilkan kesalahan, tetapi saya tidak dapat menangkap entri di direktori yang menyebabkan kesalahan (pertanyaannya adalah tentang tanggal)
Kueri itu sendiri mengembalikan semua catatan dari tabel fakta, ditambah bidang terhitung dari direktori. Jika direktori diisi dengan benar, subkueri akan mengembalikan satu nilai per catatan tabel fakta. Namun nyatanya, ada kesalahan entri di direktori yang tidak dapat saya tangkap.
Apakah mungkin untuk melihat catatan tabel fakta mana yang menyebabkan kesalahan?

Menjawab: Tidak lucu. Karena sudah lama (secara harfiah):
Nah, begitu detektor khayalannya meledak, dia langsung berlari... Ada apa?
Sebelum secara heroik menulis pertanyaan super (untuk semua kesempatan), Anda perlu menghidupkan otak Anda - setidaknya untuk beberapa menit...
Nah, secara pribadi, “penderitaan” Anda sudah cukup untuk permintaan gila, yang tempatnya adalah tempat sampah.
Dan Anda mendapat "sandal" hanya karena semantik dan sintaksisnya...
Ide bagus!
Dan segera setelah Anda mencucinya, keluarkan dari rak (setidaknya!) - dan “belajar, belajar, dan belajar” (c). Pasti ada sesuatu tentang berbagi GROUP BY dan HAVING...

Pertanyaan: Program pembuatan profil kueri


Salam!

Beri tahu saya siapa yang menggunakan apa (program, IDE, dll.) untuk mengurai kueri; khususnya, saya tertarik dengan alat analisis kueri untuk pengoptimalannya. Di mana Anda dapat melihat rencana kueri: indeks kueri, Pemindaian penuh, dll.

11) | TANGGAL | TANGGAL | nama_pengemudi | VARCHAR(100) | persen | KE DALAM(11) | jumlah_diterima_dari_klien | Desimal (9 , 2 ) | jumlah_tarif_untuk_driver | Desimal (9 , 2 ) | summa_untuk_dibayar | Desimal (9 , 2 ) | status_bayar | kecilint(1) | persen_perusahaan | DALAM(11)

Bidang "status_berbayar" menyimpan status pembayaran. Dibutuhkan dalam permintaan seperti:

mendapatkan semua data. Seharusnya seperti ini: jika “status_bayar = 1”, maka alih-alih nomor yang ada di kolom “summa_for_payed” Anda akan selalu menerima “0”.

Jika saya menambahkan "dan status_berbayar bukan seperti" 1 "" ke permintaan, ternyata output dari baris ini tidak akan diterima sama sekali, tetapi saya perlu mendapatkan semuanya, hanya dengan bidang "summa_for_payed" sudah berubah tergantung pada status “status_berbayar”

Ditambahkan setelah 25 menit
Saya akan menambahkan bahwa selama permintaan dengan perintah jumlah(summa_for_payed) untuk tanggal tertentu, perlu untuk menerima jumlah tersebut, dengan mempertimbangkan nilai bidang "status_dibayar", atau lebih tepatnya, sehingga di mana "status_dibayar = 1”, maka kolom “summa_for_payed” juga dianggap berjumlah "0" jika "status_bayar = 1"

Menjawab: Ya, saya pikir begitu, tetapi masalahnya adalah ini: jika saya mengatur ulang saluran, dan jika tiba-tiba pengguna yang salah dipilih secara tidak sengaja, maka saya tidak akan dapat mengembalikannya, karena hutang lamanya telah dihapus, jadi saya Saya pikir hanya menggunakan indikator ini dan menentukan pembayaran, dan bila perlu mengembalikannya lagi, melihat jumlah utangnya. Secara umum, sejarah akan lebih baik melihat utangnya, yang telah dia lunasi.

Ditambahkan setelah 34 menit
Guru yang terhormat.
Saya menemukan sesuatu yang bisa dilakukan seperti ini

SQL
1 PILIH JUMLAH (IF (`status_bayar` = 1, 0, `summa_for_payed` ) ) DARI tabel saya

Saya membuat beberapa permintaan, sepertinya itulah yang saya butuhkan, tetapi bisakah Anda memberi tahu saya jika ada kendala dalam permintaan seperti itu, apakah ini yang saya butuhkan? Haruskah saya melakukan ini atau mencari solusi lain? Pemicu juga muncul dalam pikiran. mungkin ada sesuatu dengan mereka? Apa saran Anda? Saya juga berpikir untuk mengubah nilainya, jika 0 maka dibayar, jika 1 maka tidak, lalu dalam pemilihan, kalikan angka dengan indikator, dan jika nol, maka saya hanya mendapat nol. jika ada, maka saya akan mendapatkan nomornya sendiri. hanya perhitungan yang tidak perlu... Apa pendapatmu?