MySQL에 로그인 중입니다. PHPMyAdmin의 구조적 SQL 쿼리 언어 Phpmyadmin 쿼리 기록




이벤트 로그는 시스템 상태를 확인하고 오류를 식별하기 위한 최초이자 간단한 도구입니다. MySQL에는 네 가지 주요 로그가 있습니다.

  • 오류 기록— 서버가 실행되는 동안 수집되는 표준 오류 로그(시작 및 중지 포함)
  • 바이너리 로그— 복제 및 백업에 필요한 모든 데이터베이스 수정 명령의 로그입니다.
  • 일반 쿼리 로그— 주요 쿼리 로그;
  • 느린 쿼리 로그— 느린 요청 로그.

오류 기록

이 로그에는 심각한 오류는 물론 서버 종료, 서버 시작 및 경고를 포함하여 서버가 실행되는 동안 발생한 모든 오류가 포함됩니다. 시스템 장애가 발생할 경우 여기에서 시작해야 합니다. 기본적으로 모든 오류는 콘솔(stderr)에 출력됩니다. 오류를 syslog(Debian의 경우 기본값) 또는 별도의 로그 파일에 기록할 수도 있습니다.

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

# 오류는 mysql_error.log에 기록됩니다.

오류를 빠르게 식별하려면 이 로그를 활성화된 상태로 유지하는 것이 좋습니다. 그리고 이 오류 또는 해당 오류가 무엇을 의미하는지 이해하기 위해 MySQL에는 perror 유틸리티가 있습니다.

Shell> 오류 13 64 OS 오류 코드 13: 권한이 거부되었습니다. OS 오류 코드 64: 컴퓨터가 네트워크에 없습니다.

# 오류 코드의 의미를 설명합니다.

바이너리(또는 바이너리) 로그

모든 데이터베이스 수정 명령은 바이너리 로그에 기록되어 복제 및 복구에 유용합니다.

다음과 같이 켜집니다.

Log_bin = /var/log/mysql/mysql-bin.log 만료_logs_days = 5 max_binlog_size = 500M

# 위치, 수명 및 최대 파일 크기를 지정합니다.

시스템을 확장하고 내결함성을 구현하지 않으려면 바이너리 로그를 활성화하지 않는 것이 좋습니다. 이는 리소스 집약적이며 시스템 성능을 저하시킵니다.

요청 로그

이 로그에는 수신된 모든 SQL 쿼리와 클라이언트 연결에 대한 정보가 포함됩니다. 인덱스 분석 및 최적화는 물론 잘못된 쿼리 식별에도 유용할 수 있습니다.

General_log_file = /var/log/mysql/mysql.log 일반_로그 = 1

# 로그를 포함하고 파일 위치를 나타냅니다.

MySQL 서버가 실행되는 동안 활성화/비활성화할 수도 있습니다.

SET GLOBAL 일반_로그 = "ON"; SET GLOBAL 일반_로그 = "OFF";

# 사용하기 위해 서버를 다시 시작할 필요는 없습니다

느린 요청 로그

로그는 느리고 비효율적인 쿼리를 식별하는 데 유용합니다. 이 기사에서 자세한 내용을 읽어보세요.

로그 보기

Debian(Ubuntu)에서 로그를 보려면 다음을 실행해야 합니다:

# 오류 로그 tail -f /var/log/syslog # 쿼리 로그 tail -f /var/log/mysql/mysql.log # 느린 요청을 기록합니다.꼬리 -f /var/log/mysql/mysql-slow.log

# 로그를 별도로 지정하지 않으면 /var/lib/mysql에 위치한다.

로그 회전

서버에서 공간을 덜 차지하도록 로그 파일을 압축(보관, 회전)하는 것을 잊지 마세요. 이렇게 하려면 유틸리티를 사용하십시오. 로그로테이션구성 파일을 편집하여 /etc/logrotate.d/mysql-server:

# - 모든 것을 하나의 블록에 넣고 공유 스크립트를 추가하여 mysql이 # 플러시 로그"d를 한 번만 얻도록 했습니다. # 그렇지 않으면 바이너리 로그가 자동으로 매일 n배씩 증가합니다. # - 오류 로그는 더 이상 사용되지 않으며 메시지는 이제 syslog로 이동합니다./var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log( 매일 회전 7 누락 확인 640 생성 mysql adm 압축 공유 스크립트 사후 회전 테스트 -x /usr/bin/mysqladmin || 종료 0 # 이것이 실패하면 debian.conf를 확인하세요! MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf" if [ -z "`$MYADMIN ping 2>/dev/null`" ]; 그 다음에 # 정말 mysqld가 없거나 debian-sys-maint 사용자가 없는 걸까요? # 이 문제가 발생하고 오류가 아닌 경우 버그를 신고해 주세요. #if ps cax | grep -q mysqld; 그 다음에 if killall -q -s0 -umysql mysqld; 그런 다음 종료 1 fi else $MYADMIN 플러시 로그 fi endscript )

# 필요한 로그를 압축 및 보관하고 파일을 정리합니다.

DDL 로그

MySQL은 또한 데이터 언어 로그를 유지 관리합니다. DROP_TABLE 및 ALTER_TABLE과 같은 작업에서 데이터를 수집합니다. 로그는 해당 작업 중에 발생한 오류를 복구하는 데 사용됩니다. DDL 로그는 바이너리 파일이므로 사용자가 읽을 수 없으므로 수정하거나 삭제하지 마십시오.

가장 중요한

항상 오류 로그를 켜고 쿼리 로그를 사용하여 데이터베이스에 대한 애플리케이션의 연결을 확인하고 쿼리 및 작업을 확인하십시오. 느린 쿼리 로그는 MySQL 성능을 최적화하는 데 유용합니다.

이 기사에서는 데이터베이스 작업을 계속하면서 여러 테이블을 사용하여 테이블 간의 연결을 만들고 SELECT 문에 익숙해지는 "웹 프로그래밍의 기초" 주제를 연구하는 데 전념합니다.

  • PHPMyAdmin에서 데이터베이스를 생성합니다. PHP, MySQL 및 HTML을 사용하여 데이터 작업
  • 실험실 직원의 노동 효율성과 효율성을 평가하기 위한 정보 시스템
  • 석유기지장 정보시스템 개발
  • 자동차 서비스 관리자를 위한 정보시스템 구축
  • 기업의 생산주기를 관리하기 위한 소프트웨어 도구의 기능 개요

phpMyAdmin PHP로 작성된 프로그램이며 World Wide Web을 통해 MySQL 서버를 관리하도록 설계되었습니다. phpMyAdmin은 광범위한 MySQL 작업을 지원하며 가장 일반적으로 사용되는 작업은 사용자 인터페이스(데이터베이스, 테이블, 필드, 관계, 인덱스, 사용자, 권한 등 관리)를 통해 지원되며 동시에 모든 SQL을 직접 실행할 수 있습니다. 질문.

요청사항테이블에서 데이터를 추출하여 사용자에게 편리한 형식으로 제공하는 데 사용되는 데이터베이스 개체입니다. 쿼리의 특징은 기본 테이블에서 데이터를 검색하고 이를 기반으로 임시 테이블을 생성한다는 것입니다. 쿼리를 사용하면 테이블의 데이터 중복을 방지하고 데이터베이스의 데이터를 검색하고 표시하는 데 최대한의 유연성을 제공합니다.

SQL 쿼리 - 통합된 SQL 명령 세트를 사용하여 구축된 쿼리(구조적 쿼리 언어 - 구조적 쿼리 언어). SQL은 변수를 입력하고 유형을 설명하는 등의 전통적인 프로그래밍 언어로 완전히 분류될 수 없습니다. SQL에는 데이터베이스에 저장된 데이터에 대한 표준 액세스 연산자 세트만 포함되어 있습니다.

언어SQL네 부분으로 나누어져 있습니다:

  • 데이터 정의 연산자(데이터 정의 언어, DDL): 생성(“생성”), 변경(“변경”), 삭제(“삭제”).
  • 데이터 조작 연산자(데이터 조작 언어, DML): 선택, 삽입, 업데이트 및 삭제.
  • 데이터 액세스 정의 연산자(데이터 제어 언어, DCL): 부여(“제공”) 및 취소(“박탈”).
  • 거래 통제문(트랜잭션 제어 언어, TCL): 커밋("완료"), 롤백("롤백"), 저장점("저장").

우리는 하나의 SQL 명령인 데이터 검색 명령을 살펴보겠습니다. 선택하다 , 이 명령 덕분에 가능한 모든 요청을 구성할 수 있습니다.

연산자 구문선택하다

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

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

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

[그룹 에 의해 <список полей группировки> [가지고 있는 <предикат-условия для группировки>]]

[주문하다 에 의해 <список полей, по которым упорядочивает вывод> ]

대괄호로 묶인 정보는 평소와 같이 선택 사항입니다.

phpMyAdmin의 몇 가지 요청 예를 살펴보겠습니다. 이를 위해 이전 데이터베이스를 사용합니다. 콤프 _ 텍스니카 " 이 데이터베이스에는 이미 "라는 테이블이 생성되어 있습니다. 제품 "(제품)은 엔터티의 해당 속성을 반영합니다. 제품_ ID (기본 키 ), 만드는 사람 (제조업체 ), 모델 (모델 ), 하나님_ 소즈드 (창조의 해 ) 그리고유형_ ID (제품 유형이 외래 키입니다. ) (그림 1 참조).

또한 이 데이터베이스에는 또 다른 엔터티 "를 추가했습니다. 랩탑 "(제품 유형), 이는 엔터티의 해당 속성을 반영합니다. 유형_ ID(기본 키), 유형(유형), OS(운영 체제), 프로세서(CPU), 팜잣(메모리), 즈벳(색상), 베스(무게) 그리고 제나(가격) (그림 2 참조).

이제 쿼리 작성을 진행하기 전에 엔터티(테이블) 간의 연결을 설정해야 합니다. 이를 위해 우리는 " 랩탑", 즉 항목을 선택합니다." 사이 "(그림 3 참조).

그러면 테이블 간의 관계를 담당하는 필드를 지정해야 하는 페이지가 열립니다(그림 4 참조). "를 사용하여 다른 방법으로 연결을 설정할 수도 있습니다. 디자이너 "(그림 4 참조)

따라서 테이블 간의 관계를 설정한 후 최상위 메뉴 ""로 이동하여 쿼리 생성을 진행할 수 있습니다. SQL ».

요청 1. 2012 릴리스에 사용 가능한 장비에 대한 정보를 표시합니다(표 1 참조).

1 번 테이블

이 요청을 구현하기 위해 연산자를 사용했습니다. 선택하다 – 현장의 정보를 표시합니다. 만드는 사람 (제조업체 ) 그리고 모델 (모델 ) , ~에서 – 정보를 표시해야 하는 테이블을 설명합니다. 술부 어디 – 결과 테이블에서 행을 선택하는 조건, 즉 생성 연도가 있는 데이터를 생성합니다( 하나님_ 소즈드) 같음 2012 ; 주문하다 ~에 의해 – 필드별로 데이터를 정렬합니다. 만드는 사람 (제조업체 ) .

요청 2.사용 가능한 제조업체의 장비 수에 대한 정보를 표시합니다(표 2 참조).

표 2

와 함께 이모 소위 " 집계 함수비어 있지 않은 튜플의 수를 세는 "는 쿼리를 구성하는 강력한 도구입니다. 이 경우 출력을 다음과 같이 그룹화했습니다. 만드는 사람 (제조업 자 ) .

요청 3. 사용 가능한 제조업체별로 노트북의 총 비용을 금액별로 오름차순으로 정렬하여 표시합니다(표 3 참조).

표 3

이 쿼리에는 두 테이블의 데이터가 필요합니다. 이를 위해서는 테이블을 결합해야 합니다. 제품 "(제품) 및 " 랩탑 "(제품 유형), 이를 위해 조건자를 사용합니다. 가입하다 필드의 결합을 나타냄: 테이블의 기본 키 랩탑 . 유형 _ ID 및 테이블 외래 키 제품 . 유형 _ ID . 또한 두 개 이상의 테이블로 작업할 때 명령문에서 선택하다, 필드를 설명할 때 이 필드의 테이블 이름을 표시해야 합니다. 예를 들어 랩탑 . 유형 . 합집합 , 게다가 세다을 참고하여 " 집계 함수”는 튜플 값의 합을 계산하며, 우리의 경우 장비 비용의 합입니다.

요청 4. 25,000달러 이하의 비용으로 Windows-8 운영 체제를 사용하는 노트북에 데이터를 표시합니다(표 4 참조).

표 4

요청 5.제품에 대한 정보 표시: 만드는 사람(제조업체), 모델(모델), 팜잣(메모리), 프로세서(프로세서) 및 제나(가격), 카테고리별 " 포드호디트 " 그리고 " ~ 아니다 포드호디트 "(표 5 참조).

표 5

결과:

프로그램 :

(laptop.pamjat = 1000) 및 (laptop.processor >=2600)인 경우를 선택하고 "podhodit", 그렇지 않으면 "podhodit 아님"이 itog, product.maker, product.model, laptop.pamjat를 pamjat_v_Gb로, laptop.processor로 끝나는 경우를 선택합니다. proc_v_Mgz, 제품의 laptop.zena는 laptop.type_ID=product.type_ID에서 노트북에 연결됩니다. 여기서 "l%"와 같은 laptop.type은 1 desc, 6으로 정렬됩니다.

와 함께 아제 – 기준에 따라 상품을 카테고리로 배포하는 데 사용되는 선택 술어입니다. 좋다 "1%" – 문자열을 패턴과 일치시키는 데 사용되는 조건자입니다. 패턴은 두 개의 특수 문자인 "를 사용할 수 있는 문자열입니다. % " 그리고 " _ ", 어디 " % "는 모든 문자열(비어 있을 수 있음)과 일치하며 " _ "는 단일 문자와 일치하지만 특수 문자를 제외한 다른 문자는 특수 문자 및 해당 문자와만 일치할 수 있습니다. 주문하다 ~에 의해 [ 오름차순| 설명] – 쿼리 결과 정렬을 위해 설계됨[오름차순(기본값) | 내림차순], 하나 이상의 필드에 대해 정렬이 가능합니다.

운영자 선택하다 데이터베이스 테이블에서 결과 집합을 얻기 위한 표현식일 뿐입니다. 연산자를 사용하여 요청을 생성합니다. 선택하다 , 그는 작업을 완료한 후 결과 데이터 세트를 반환합니다. 이 데이터는 테이블 형태로 반환되며, 이는 다음 연산자로 처리될 수 있습니다. 선택하다 등.

서지

  1. phpMyAdmin 요약 [전자 자료] / URL: http://php-myadmin.ru/about/notice.html
  2. 데이터베이스 쿼리 및 그 사용. 요청 유형. 창조기술 [전자자원] / URL: http://www.yaklass.ru/materiali?mode=cht&chtid=514
  3. 오스트로프스키 S.L. 학교 홈페이지 구축을 위한 웹 프로그래밍의 기초. 강의 5. PHP+MySQL [텍스트]/ S.L. Ostrovsky // 정보학. - 2008.-No.21.-p.2-15

그리고 표준 패키지에서는 많은 일을 할 수 있습니다. 하지만 별도로 활성화할 수 있는 유용한 기능이 많이 있습니다. 이 기사에서는 PhpMyAdmin의 추가 기능을 공개하고 해당 기능이 우리에게 어떻게 유용한지 살펴보겠습니다.

설정

시작하기 전에 PhpMyAdmin이 실행되고 있는지 확인하세요. 로그인하면 다음과 같은 메시지를 볼 수 있습니다.

phpMyAdmin 구성 저장소가 완전히 구성되지 않았으며 일부 확장 기능이 비활성화되었습니다. 이유를 알아보려면 여기를 클릭하세요.
(phpMyAdmin 구성 저장소가 제대로 구성되지 않아 일부 기능이 비활성화되었습니다. 이유를 알아보려면 여기를 클릭하세요)

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

귀하의 재량에 따라 사용자 이름, 비밀번호 및 데이터베이스 이름을 변경하십시오. 나머지 구성 값은 테이블 이름입니다. 공백으로 두면 해당 기능이 비활성화됩니다. 그러나 일반적으로 이러한 이름은 그대로 두는 것이 좋습니다. PhpMyAdmin 버전에 따라 기본적으로 모든 값을 사용할 수 있는 것은 아닙니다. 이 경우에는 PhpMyAdmin 버전 4.2.x를 사용했습니다.

구성이 완료되면 데이터베이스를 생성해야 합니다. 구성 파일에 지정한 이름으로 데이터베이스를 만듭니다. 다음으로, 컴퓨터에서 create_tables.sql이라는 파일을 찾으세요. 아마도 이 파일은 설치된 PhpMyAdmin의 루트 디렉터리나 scripts 하위 디렉터리에 있을 것입니다. Linux를 사용하는 경우 위치는 /usr/share/phpMyAdmin/examples/ 또는 /usr/share/doc/phpmyadmin/scripts/ 입니다. 생성된 데이터베이스 내에서 이 파일을 실행합니다. 위 설정에서 테이블명을 변경했다면, 데이터베이스에서도 잊지 말고 변경해주세요.

"pmapass"로 식별된 "pma"@"localhost"에 대한 mysql.* 사용 권한 부여; GRANT SELECT (호스트, 사용자, 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_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, _priv) ON mysql.user TO "pma"@"localhost"; mysql.db에서 "pma"@"localhost"로 선택 권한 부여; mysql.host에서 "pma"@"localhost"로 선택 권한 부여; GRANT SELECT (호스트, Db, 사용자, Table_name, Table_priv, Column_priv) ON mysql.tables_priv TO "pma"@"localhost"; phpmyadmin.*에 "pma"@"localhost"에 대한 선택, 삽입, 업데이트, 삭제 권한 부여;

PhpMyAdmin에서 로그아웃했다가 다시 로그인하면 경고가 사라진 것을 확인할 수 있습니다. 누락되지 않은 경우 링크를 클릭하여 누락된 내용을 확인하세요.

추가 옵션을 살펴보겠습니다.

북마크

북마크 확장을 활성화하면 쿼리를 북마크에 추가할 수 있습니다. 요청을 생성하면 북마크에 추가할 수 있습니다. 또한 요청이 이미 시작된 경우 페이지 하단으로 스크롤하고 양식을 작성하여 북마크에 추가할 수 있습니다.

SQL 탭으로 이동하면 하단에 책갈피에서 쿼리를 선택할 수 있는 패널이 표시됩니다. 필요한 것을 선택하고 실행, 보기, 삭제 등 원하는 작업을 지정하세요.

사이

관계 옵션은 아마도 제가 사용해 본 것 중 최고일 것입니다. 외래 키를 사용하면 해당 키를 클릭할 수 있게 됩니다. 외래 키를 클릭하면 외래 키가 참조하는 레코드인 다른 테이블로 이동됩니다.

또한 외래 키를 추가하거나 편집할 때 텍스트 입력 필드 대신 가능한 모든 옵션 목록이 표시됩니다.

테이블 정보

물론, 외래 키에 대해 가능한 모든 값이 포함된 목록을 보는 것이 좋습니다. 하지만 ID 대신 특정 열이 표시된다면 더 좋을 것입니다. 이를 달성하려면able_info 를 활성화해야 합니다. 메인 테이블로 이동하여 “구조” 탭으로 이동한 후 링크를 ​​클릭하면 관계를 볼 수 있습니다. 페이지 하단으로 스크롤하면 해당 키에 대해 어떤 열이 나타나는지 확인할 수 있습니다.

외래 키를 사용하여 새 레코드를 생성하면 기본 키 값 옆에 내가 지정한 열의 값이 표시됩니다. 이제 아이디를 기억할 필요가 없습니다.

PDF 페이지

테이블 간의 관계를 PDF로 내보낼 수 있습니다. 이렇게 하려면 구성에서 pdf_pages, table_coords 및 관계를 활성화해야 합니다. 다음 단계는 PDF로 내보내려는 데이터베이스를 여는 것입니다. "작업" 탭을 클릭합니다. 다음으로, "배선 다이어그램 편집 또는 내보내기" 링크를 클릭하십시오. 모든 필드를 작성하고 "제출"을 클릭하세요. 양식을 작성하시면 필요한 모든 데이터가 포함된 PDF 파일을 받게 됩니다.

컬럼 정보

열 정보 옵션을 사용하면 열 이름에 설명을 추가할 수 있습니다. 이는 열이 무엇인지, 열에 저장되는 데이터가 무엇인지 다른 사람에게 전달하려는 경우 유용할 수 있습니다. 열 데이터를 변경하여 이를 수행할 수 있습니다. 열에 새 설명이 추가된 것을 확인할 수 있습니다. 설명을 입력하면 열 이름 바로 아래에 표시됩니다.

동일한 방식으로 열에 변환을 적용할 수 있습니다. 변환을 사용하면 파일 이름을 지정된 파일을 여는 하이퍼링크로 만들 수 있습니다.

이야기

기록을 활성화하면 PhpMyAdmin을 통해 이루어진 모든 요청은 로그아웃하거나 브라우저를 닫을 때까지 기록에 저장됩니다. “Query” 대화상자를 호출한 후 “SQL History” 버튼을 클릭하면 이력을 볼 수 있습니다.

최근의

탐색 모음에는 최근에 본 테이블의 드롭다운 목록이 포함된 "최근" 버튼이 표시될 수 있습니다. 이 목록은 기본적으로 표시됩니다. 그러나 세션 간에 영구적으로 저장하려면 구성에서 최근 옵션을 활성화하면 검색 기록이 데이터베이스에 저장됩니다.

테이블 표시 설정

테이블을 보는 동안 열을 이동하여 열의 순서를 변경할 수 있습니다. 이러한 변경사항은 본인에게만 표시됩니다. 열의 실제 순서는 변경되지 않습니다. 또한 열을 오름차순, 내림차순으로 정렬할 수도 있습니다. 이러한 변경 사항은 세션 내에 저장되며, 로그아웃하면 재설정되어 기본 설정으로 교체됩니다. 그러나 테이블을 항상 "원하는 방식"으로 배치하려면 table_uiprefs 옵션을 활성화하세요.

사용자 및 사용자 그룹

모든 사용자에게 모든 기능을 표시하고 싶지 않을 수도 있습니다. 이 경우 사용자 탭에서 그룹으로 분할할 수 있습니다. 새 그룹을 만들고 이 그룹의 사용자가 볼 수 있는 내용을 결정합니다. 그런 다음 이 그룹에 사용자를 추가하면 해당 사용자는 귀하가 볼 수 있도록 허용한 메뉴 항목만 볼 수 있습니다. 이렇게 하면 다양한 사용자에게 다양한 시스템 기능에 대한 액세스 권한을 부여하고 사용하지 않는 옵션을 숨길 수 있습니다.

탐색 숨기기

탐색 숨기기를 사용하면 탐색 표시줄에서 일부 테이블을 숨길 수 있습니다. 테이블 이름 옆에 있는 전구 아이콘을 클릭하면 테이블 이름이 숨겨집니다. 전구 아이콘을 다시 클릭하여 다시 표시할 수도 있습니다. 이렇게 하면 사용하지 않는 테이블의 탐색 표시줄이 완화됩니다.

추적

이 기능을 사용하면 PhpMyAdmin을 사용하여 특정 테이블에 적용된 모든 변경 사항을 추적할 수 있습니다. 테이블로 이동하여 '추적' 탭을 열면 현재 테이블의 버전을 만들 수 있습니다. 이제 PhpMyAdmin을 사용하여 이 테이블에 적용된 모든 변경 사항이 저장됩니다. 같은 방법으로 마지막 버전이 생성된 이후 테이블에 어떤 변경 사항이 적용되었는지 쉽게 확인할 수 있습니다.

맞춤 설정

모든 사용자 설정은 기본적으로 브라우저에 저장됩니다. 즉, 다른 브라우저를 사용하거나 브라우저 캐시를 지우면 모든 설정이 손실됩니다. userconfig를 활성화하면 설정이 데이터베이스에 영구적으로 저장됩니다.

데이터베이스 디자이너 좌표

designer_coords를 활성화하면 데이터베이스 디자이너 보기에서 테이블 간의 관계를 볼 수 있습니다. 데이터베이스로 이동하여 "디자이너" 탭을 클릭하면 테이블 간의 관계를 보여주는 아래 이미지와 유사한 내용을 볼 수 있습니다. 동시에 이 창을 사용하여 테이블 간의 관계를 시각적으로 관리할 수 있습니다.

즐겨찾기

즐겨찾기 옵션을 활성화하면 데이터베이스 탐색 모드에서 테이블 이름 옆에 별표 아이콘이 나타나는 것을 볼 수 있습니다. 즐겨찾기에 테이블을 추가하려면 별표를 클릭하세요. 탐색 모음에 "즐겨찾기" 드롭다운 목록이 표시됩니다. 즐겨찾기에 추가한 테이블이 이 목록에 나타납니다.

검색 매개변수 저장

데이터베이스를 열고 쿼리 탭으로 이동하면 고급 검색을 설정할 수 있습니다. 검색 옵션을 북마크할 수 있습니다. 이는 앞서 설명한 SQL 쿼리 책갈피가 아닙니다. 이 옵션을 사용하면 검색 매개변수를 저장하고 나중에 사용할 수 있습니다.

결론

나열된 기능은 활성화하기 쉽고 PhpMyAdmin을 통해 데이터베이스 작업을 수행하는 데 실제로 도움이 될 수 있습니다. 특히 관련 레코드를 볼 수 있도록 외래 키를 드릴다운하는 기능이 마음에 듭니다. 이러한 기능을 활성화하여 일상 업무에 유용하게 사용되기를 바랍니다.

질문: ms sql 쿼리 기록


요청 내역(삭제, 업데이트...)을 보는 방법은 무엇입니까?

답변:
프로파일러는 여러분이 생각할 수 있는 가장 느린 감사입니다. 확장 이벤트는 필요에 맞게 사용자 정의할 수 있으며 업로드 등도 가능하지만 이러한 옵션을 사용하려면 리소스가 필요합니다.

질문: 쿼리 실행 기록


특정 데이터베이스에서 누가 어떤 쿼리를 수행했는지 MS SQL 어딘가에서 볼 수 있습니까?

답변: 일룩사1810, 이 정보는 부분적으로만 제공됩니다. 다음과 같은 쿼리를 시도해 보세요.

T-SQL 코드
1 2 3 4 SELECT deqs.last_execution_time AS [ 시간 ], dest.TEXT AS [ 쿼리] FROM sys.dm_exec_query_stats AS deqs CROSS APPLY sys.dm_exec_sql_text (deqs.sql_handle) AS dest ORDER BY deqs.last_execution_time DESC

전체 쿼리 기록을 보려면 로깅을 수행하거나 SQL 프로파일러와 같은 유틸리티를 사용해야 합니다.

질문: 이전 값을 데이터베이스에 반환하는 SQL 쿼리


안녕하세요 여러분!

데이터베이스의 특정 날짜부터 시작하는 모든 주문에서 두 번째 주문 상태를 어떻게 반환할 수 있는지 알려주십시오.

어쩌면 어떤 종류의 SQL 쿼리나 어떤 종류의 스크립트가 있을 수도 있습니다... 매우 감사하겠습니다.

프로그래머가 내 창고와 통합할 때 약간의 실수를 저질렀고 모든 주문의 상태가 통합 모듈 설정에 있던 상태로 변경되었으며 다시 되돌리는 방법을 모릅니다.

우리는 즉시 이를 인지하지 못했고 데이터베이스의 이전 복사본을 복원하기에는 너무 늦었습니다. 매장에 이미 새로운 주문이 있습니다.

답변: 포에틱,
InnoDB는 쿼리 기록을 저장할 수 있습니다.

세게 때리다
1 ~/.mysql_history

최신 백업을 롤업하고 명령을 반복하십시오.
일반적으로 각 통합 전에 백업을 만들어야 하며, 더 좋은 방법은 테스트 서버에서 테스트하는 것입니다.

질문: 여러 테이블에서 검색하는 SQL 쿼리


좋은 오후에요. 이 작업을 수행할 수 있는지, 데이터베이스를 다시 수행해야 하는지 또는 그러한 검색을 구현할 수 없는지 이해하도록 도와주세요.
저는 delphi rad xe10으로 글을 쓰고 있습니다.
저는 Employees 테이블에 직원에 대한 정보를 한 줄로 기록하고, 의류 사이즈에도 한 줄, 그에게 주어진 내역을 기록합니다(많은 줄, 유일한 차이점은 ID_rab입니다).

검색을 하고 싶어요
성이나 탭 번호를 묻는 경우 다음 정보를 제공합니다.
dbgrid1의 첫 번째 테이블의 작업자에 대해,
dbgrid2의 두 번째 테이블 크기
그리고 dbgrid3의 표 3에서 이 직원과 관련된 기록(ID_rab만 다른 행이 많을 수 있음)

첫 번째 테이블에서:

두 번째:

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) REFERENCES Employees, ) ;

세 번째:

SQL
1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE 기록 ( ID_story INT NOT NULL IDENTITY (1, 1), Nim_means VARCHAR (15), ID_rab INT, PRIMARY KEY (ID_story), FOREIGN KEY (ID_rab) REFERENCES 직원, ) ;

서로 다른 쿼리로 3개의 ADOQuery를 동시에 만드시겠습니까?
첫 번째 테이블에 속한 다른 테이블의 정보를 표시하는 방법을 모르겠습니다.
이것이 가능하다면 검색에 사람을 입력하면 그 사람을 찾은 다음 그의 ID_rab을 사용하여 다른 테이블에서 정보를 찾고 동시에 3개의 다른 dbgrid에 표시합니다.

답변:

보낸 메시지 로그자르

그리고 필요에 따라 직원, 규모, 기록에 대한 모든 정보를 완전히 삭제하는 경우 한 번의 요청으로 이를 수행할 수 있습니까?

Employees 테이블에서 계단식 삭제를 활성화한 경우 행을 삭제하면 하위 테이블의 데이터도 삭제됩니다. 그렇지 않으면 DELETE 요청을 여러 번 해야 합니다.

14시간 31분 이후에 추가됨
이러한 코드는 호출되는 공격에 취약합니다. 매개변수가 있는 쿼리를 사용해야 합니다.

질문: 한 가지 요청이 가능합니까?


안녕하세요, 신사숙녀 여러분!
다음 문제를 합리적으로 해결하는 방법을 알려주십시오.
세 개의 테이블이 있습니다: 제품(실제로는 소수이며 약 60-80개 정도), 판매 내역 및 잔고...

안에 쉽게 한구조는 다음과 같습니다:
상품:
ID
이름

주문 내역:
ID
s_date
good_id
가격

균형:
ID
s_date
주문 아이디
세다

세 테이블 모두 ID(goods.id - order_history.good_id, order_history.id - Balance.order_id)로 연결되어 있습니다.
임무는 임의의 날짜에 대한 모든 상품의 총 잔액을 얻는 것입니다! 즉, 각 제품에 대해 대차대조표와 판매 내역(각각 대차대조표, 판매 내역의 수량, 가격)에서 가장 가까운 날짜 기록을 가져와야 합니다.

ID별로 모든 제품을 반복하고 각 반복에서 SQL 쿼리를 실행할 수 있다는 것은 분명하지만 왠지... 이 옵션이 마음에 들지 않습니다! :) 한 번의 요청으로 문제를 원활하게 해결할 수 있습니까?

어떤 아이디어라도 감사하겠습니다!

답변:금기 사항이 없습니다. 구조를 정리하면.

무딘!
데이터베이스에 일부 중복성을 추가했습니다.
당신은 이미 그것을 너무 많이 가지고 있습니다. 더욱이 그것은 잠재적으로 모순적이다. 이 항목과 이전 수량 항목의 차이가 같은 기간 동안 order_history의 총 수량과 일치하지 않도록 잔액에 새 항목을 작성하는 것을 금지할 수 있는 제한 사항이 없습니다.

질문: 중첩된 쿼리, 여러 가지 간단한 쿼리를 결합하는 데 도움을 주세요


좋은 오후에요 귀하의 도움에 매우 감사하겠습니다.)) 저는 오랫동안 머리를 긁어 왔습니다.
약간의 역사. 관련 URL이 포함된 특정 요청 풀이 있으며, 목표는 요청에 의해 결정되는 특정 URL 목록에 대해 교차 요청을 발행하는 것입니다.

따라서 순서대로 실행되는 여러 쿼리가 있습니다.
$sql2 = 목록에서 URL 선택 WHERE `group` = "1" AND `proekt`= "1" GROUP BY url ORDER BY COUNT(*) DESC LIMIT 3 - 스크린샷
3개의 URL 목록을 선택한 다음 요청에 대한 보기로 수집합니다.

$return=배열();
$maxcount=mysql_query($sql2);
while($url = mysql_fetch_array($maxcount)) (
$return = $url;
}
foreach ($return as $url1) ( //배열에서 Muscle에 대한 URL 문자열 수집
if ($frag2==0) ( $urls = "`url`="."".$url1."""; $frag2=1; ) else $urls .= " OR `url` = "". url1.""";
}

이 경우 $urls = `url` = "http://www.MosDance.com/" OR `url`="http://raisky.com/" 등.

이 URL과 관련된 키 목록을 표시합니다.
select `key` from (SELECT `key` , COUNT(*) AS total FROM list WHERE `group` = "1" AND `proekt`= "1" AND (".$urls.") GROUP BY `key` ORDER BY `total` DESC) as t2 WHERE t2.total >=3

실제로 주요 질문은 이 문제를 어떻게 줄이는가입니다. 필요한 순서로 URL을 수집하는 PHP Crutch 스크립트를 제거하고 예를 들어 데이터베이스에서 하나의 쿼리로 모든 작업을 수행할 수 있도록 URL을 올바르게 조합하는 방법은 무엇입니까? 일반적으로 목발보다 더 똑똑한 쿼리에서 최종 결과를 어떻게 얻을 수 있습니까?

답변:

안녕하세요!
COUNT(*)를 쓰지 마세요. 더 나은 옵션은 COUNT(`id`)입니다.
또한 RAND(*)를 쓰지 마십시오. 물론 다르게 작성하는 것이 더 낫습니다. 주석에는 기능이 있으며 이것이 사실입니다.
데이터베이스에서 레코드를 선택하는 위의 모든 방법은 mysql 서버에 과도한 부하를 줍니다. 물론 데이터베이스에 3만 개의 레코드가 있지 않는 한 그렇게 고통스럽지는 않을 것입니다.

요청에 관하여:
INNER JOIN을 찾아보세요. 아니면 테이블 덤프를 보내주세요. 제가 읽은 내용이 모든 소란을 파헤치기에는 너무 게으르기 때문에 문제를 더 자세히 알려주시면 도와드리겠습니다. =)

-----
- 여기에서 프로그래밍 수업을 받으세요. 흥미로운 기능도 있습니다 =)

질문: 여러 기준을 사용하여 두 테이블에서 쿼리


좋은 저녁이에요!

다음 요청을 할 수 있도록 도와주세요.
1. 통화 이름, 날짜, 환율 유형 및 기타 필드가 포함된 거래 테이블이 있습니다.
2. 환율 이름, 날짜, 환율 유형, 환율 등의 필드가 포함된 환율 내역이 포함된 표가 있습니다.

요청은 첫 번째 테이블의 모든 필드 및 레코드와 두 번째 테이블의 환율을 기반으로 생성되어야 합니다. 또한 통화 이름, 날짜, 환율 유형 등 3가지 선택 기준이 모두 일치해야 합니다.

미리 감사드립니다!

답변:
쿼리 디자이너를 사용하는 것이 더 편할 것입니다.

SQL을 통해 내면의 기쁨을 만드는 방법을 알아냈는데, 얼핏 보면 간단합니다. 그러나 질문이 있습니다.
1. 거래 테이블에 "거래 유형" 필드가 있습니다.
2. 먼저 작성한 쿼리는 "거래 유형" 테이블의 "통화 환율 유형" 거래를 각 테이블 항목에 대해 가져옵니다.
3. 요청은 2단계에서 얻은 "강좌 유형" 기준에 따라 강의가 포함된 테이블에서 꺼내집니다.

즉, 먼저 2개의 테이블(거래 및 거래 유형)을 결합한 다음 일반 정보를 사용하여 "통화율" 테이블의 데이터를 추가합니다.

질문: 쿼리가 오류로 인해 실패한 테이블 레코드를 알아보세요.


팩트 테이블에 대한 쿼리가 오류를 반환하는 상황을 발견했지만 디렉터리에서 오류로 이어지는 항목을 찾을 수 없습니다(날짜에 대한 질문입니다).
쿼리 자체는 사실 테이블의 모든 레코드와 디렉터리의 계산된 필드를 반환합니다. 디렉터리가 올바르게 채워지면 하위 쿼리는 팩트 테이블 레코드당 하나의 값을 반환합니다. 그런데 실제로 디렉토리 항목에 제가 잡을 수 없는 오류가 있습니다.
어떤 팩트 테이블 레코드가 오류를 일으키는지 어떻게든 볼 수 있습니까?

답변:재미 없다. 오랫동안 (문자 그대로):
뭐, 섬망 감지기가 울리자마자 바로 달려오셨는데... 뭐가 문제죠?
모든 경우에 슈퍼 쿼리를 영웅적으로 작성하기 전에 두뇌를 활성화해야 합니다. 적어도 몇 분 동안은...
글쎄, 개인적으로 당신의 "고통"은 쓰레기통이있는 미친 요청에 충분했습니다.
그리고 의미론과 구문에 대해서만 "슬리퍼"가 있습니다.
좋은 생각!
그리고 세탁하자마자 선반에서 꺼내십시오 (적어도!). 그리고 "공부하고, 공부하고, 공부하세요"(c). GROUP BY 및 HAVING을 공유하는 데에는 확실히 뭔가가 있습니다...

질문: 쿼리 프로파일링 프로그램


인사말!

특히 쿼리를 구문 분석하기 위해 누가 무엇(프로그램, IDE 등)을 사용하는지 알려주십시오. 저는 최적화를 위한 쿼리 분석 도구에 관심이 있습니다. 쿼리 계획을 볼 수 있는 곳: 쿼리 인덱스, 전체 스캔 등

11) | 날짜 | 날짜 | 드라이버_이름 | VARCHAR(100) | 퍼센트 | 지능(11) | sum_recieved_from_client | 십진수 (9 , 2 ) | sum_tariff_for_driver | 십진수(9 , 2 ) | summa_for_paid | 십진수 (9 , 2 ) | 유료_상태 | Tinyint(1) | 퍼센트_회사 | 지능(11)

"paid_status" 필드에는 결제 상태가 저장됩니다. 다음과 같은 요청에 필요합니다.

모든 데이터를 가져옵니다. 다음과 같아야 합니다. "paid_status = 1"이면 "summa_for_payed" 필드에 있는 숫자 대신 항상 "0"을 받게 됩니다.

요청에 "andpaid_status not like "1""을 추가하면 이 행의 출력이 전혀 수신되지 않는 것으로 나타났습니다. 그러나 모든 항목을 가져와야 하며 "summa_for_payed" 필드는 다음에 따라 이미 변경되었습니다. 'paid_status' 상태

25분 후에 추가됨
특정 날짜에 대해 sum(summa_for_payed) 명령을 사용하여 요청하는 동안 "paid_status" 필드의 값을 고려하여 금액을 받아야 한다는 점을 추가하겠습니다. 더 정확하게는 "paid_status = 1”인 경우, “paid_status = 1”인 경우 “summa_for_payed” 필드도 금액에서 “0”으로 간주됩니다.

답변:네, 그렇게 생각했는데 문제는 이렇습니다. 회선을 재설정하고 실수로 갑자기 잘못된 사용자를 선택하면 그의 이전 빚이 지워졌기 때문에 되돌릴 수 없습니다. 이 지표를 사용하여 지불을 결정하고 필요한 경우 부채 금액을 확인하여 다시 반환하는 것으로 생각했습니다. 글쎄, 일반적으로 그가 갚은 빚을 역사가 보는 것이 더 나을 것입니다.

34분 후에 추가됨
친애하는 전문가.
이렇게 할 수 있는 걸 찾았어요

SQL
1 SELECT SUM (IF (`paid_status` = 1, 0, `summa_for_paid`)) FROM mytable

여러 가지 요청을 했는데 그것이 나에게 필요한 것 같습니다. 그러나 그러한 요청에 함정이 있는지 알려주실 수 있습니까? 이것이 나에게 필요한 것입니까? 이 작업을 수행해야 합니까, 아니면 다른 솔루션을 찾아야 합니까? 트리거도 떠오른다. 어쩌면 그들과 뭔가가 있을까요? 당신은 무엇을 조언합니까? 또한 값을 변경하는 방법에 대해서도 생각했습니다. 0이면 지불되고 1이면 지불되지 않은 다음 선택 항목에서 숫자에 표시기를 곱하고 0이면 그냥 0이 됩니다. 번호가 있으면 번호 자체를 가져옵니다. 그냥 불필요한 계산... 당신의 의견은 무엇입니까?