이 글은 PHP 면접 질문 "데이터베이스"에 관련된 지식을 요약한 것입니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
답변: Oracle, SQL Server, MySQL, Sybase, DB2, Access 등
SQL 언어에는 어떤 부분이 포함되나요? 각 섹션의 액션 키워드는 무엇입니까?
답변: SQL 언어는 데이터 정의(DDL), 데이터 조작(DML), 데이터 제어(DCL) 및 데이터 쿼리(DQL)의 네 부분으로 구성됩니다. 데이터 정의: 테이블 생성, 테이블 변경, 테이블 삭제, 인덱스 생성/삭제 등 데이터 조작: 선택, 삽입, 업데이트, 삭제,
데이터 제어: 부여, 취소
데이터 쿼리: 선택
무엇입니까? 무결성 제약?
데이터 무결성은 데이터의 정확성과 신뢰성을 의미합니다. 포함: (1) 엔터티 무결성: 테이블의 각 행이 테이블의 고유한 엔터티임을 규정합니다.
(2) 도메인 무결성: 테이블의 열이 값 범위, 정밀도 및 기타 규정을 포함하는 특정 데이터 유형 제약 조건을 충족해야 함을 의미합니다.
(3) 참조 무결성: 두 테이블의 기본 키와 외래 키의 데이터가 일치해야 테이블 간 데이터의 일관성을 보장하고 데이터 손실이나 의미 없는 데이터가 데이터베이스에 퍼지는 것을 방지하는 것을 의미합니다.
(4) 사용자 정의 무결성: 다양한 관계형 데이터베이스 시스템에는 애플리케이션 환경에 따라 특별한 제약 조건이 필요한 경우가 많습니다. 사용자 정의 무결성은 특정 관계형 데이터베이스에 대한 제약 조건으로, 특정 응용 프로그램이 충족해야 하는 의미론적 요구 사항을 반영합니다.
거래란 무엇인가요? 그리고 그 특징은?
트랜잭션: 일련의 데이터베이스 작업이자 데이터베이스 애플리케이션의 기본 논리 단위입니다. 특성: (1) 원자성: 즉, 모든 트랜잭션이 실행되거나 전혀 실행되지 않는 불가분성입니다.
(2) 일관성 또는 문자열 가능성. 트랜잭션을 실행하면 데이터베이스가 하나의 올바른 상태에서 다른 올바른 상태로 변환됩니다.
(3) 격리. 트랜잭션이 올바르게 커밋되기 전에는 트랜잭션에 의한 데이터 변경 사항이 다른 트랜잭션에 제공될 수 없습니다.
(4) 내구성. 트랜잭션이 올바르게 제출되면 그 결과는 데이터베이스에 영구적으로 저장됩니다. 트랜잭션 제출 후 다른 오류가 발생하더라도 해당 트랜잭션의 처리 결과는 저장됩니다.
간단한 이해: 트랜잭션의 모든 작업은 성공하거나 실패합니다.
자물쇠란 무엇인가요?
데이터베이스는 여러 사용자가 사용하는 공유 리소스입니다. 여러 사용자가 동시에 데이터에 액세스하면 여러 트랜잭션이 동시에 데이터베이스의 동일한 데이터에 액세스합니다. 동시 작업을 제어하지 않으면 잘못된 데이터를 읽고 저장하여 데이터베이스의 일관성이 손상될 수 있습니다. 잠금은 데이터베이스 동시성 제어를 달성하는 데 매우 중요한 기술입니다. 트랜잭션은 데이터 개체에 대해 작동하기 전에 먼저 시스템에 잠금 요청을 보냅니다. 잠금 후 트랜잭션은 데이터 개체에 대한 특정 제어권을 갖게 됩니다. 트랜잭션이 잠금을 해제하기 전에는 다른 트랜잭션이 데이터 개체를 업데이트할 수 없습니다.
기본 잠금 유형: 잠금에는 행 수준 잠금과 테이블 수준 잠금이 포함됩니다.
뷰란 무엇인가요? 커서란 무엇입니까?
뷰는 물리적 테이블과 동일한 기능을 가진 가상 테이블입니다. 뷰는 일반적으로 하나의 테이블 또는 여러 테이블의 행이나 열의 하위 집합으로 추가, 수정, 확인 및 작동될 수 있습니다. 뷰를 수정해도 기본 테이블에는 영향을 주지 않습니다. 다중 테이블 쿼리에 비해 데이터를 더 쉽게 얻을 수 있습니다. Cursor: 쿼리 결과 집합을 단위로 효과적으로 처리합니다. 커서를 셀의 특정 행에 배치하여 결과 집합의 현재 행에서 하나 이상의 행을 검색할 수 있습니다. 결과 세트의 현재 행을 변경할 수 있습니다. 커서는 일반적으로 사용되지 않지만, 데이터를 하나씩 처리해야 할 때 커서는 매우 중요합니다.
저장 프로시저란 무엇인가요? 무엇을 부르나요?
저장 프로시저는 미리 컴파일된 SQL 문이라는 장점이 있습니다. 즉, 한 번만 생성하면 나중에 프로그램에서 여러 번 호출할 수 있다는 의미입니다. 특정 작업에 SQL을 여러 번 실행해야 하는 경우 저장 프로시저를 사용하는 것이 간단한 SQL 문을 실행하는 것보다 빠릅니다. 명령 개체를 사용하여 저장 프로시저를 호출할 수 있습니다.
지수의 역할은 무엇인가요? 그리고 장점과 단점은 무엇입니까?
인덱스는 데이터베이스 검색 엔진이 데이터 검색 속도를 높이기 위해 사용할 수 있는 특수 쿼리 테이블입니다. 실생활에서 책의 목차와 매우 유사합니다. 책 전체를 조회하지 않고도 원하는 데이터를 찾을 수 있습니다. 인덱스는 고유할 수 있으며 인덱스를 생성하면 단일 열 또는 여러 열을 지정할 수 있습니다. 단점은 데이터 입력 속도가 느려지고 데이터베이스 크기도 커진다는 것입니다.
세 가지 패러다임을 대중적인 방식으로 이해하는 방법은 무엇입니까?
첫 번째 정규형: 1NF는 속성에 대한 원자성 제약 조건으로, 속성은 원자성이어야 하며 분해할 수 없습니다.
두 번째 정규형: 2NF는 레코드에 고유한 식별자가 있어야 한다는 것입니다. 엔터티의 고유성 ;
세 번째 정규형: 3NF는 필드 중복성에 대한 제약입니다. 즉, 어떤 필드도 다른 필드에서 파생될 수 없습니다. 필드가 중복되지 않아야 합니다. .
기본 테이블이란 무엇인가요? 뷰란 무엇입니까?
기본 테이블은 독립적으로 존재하는 테이블입니다. SQL에서는 관계가 테이블에 해당합니다.
뷰는 하나 이상의 기본 테이블에서 파생된 테이블입니다. 뷰 자체는 데이터베이스에 독립적으로 저장되지 않고 가상 테이블입니다. 뷰의 장점을 설명해 주세요.
(1) 뷰는 사용자 작업을 단순화할 수 있습니다.
(2) 뷰는 사용자가 여러 각도에서 동일한 데이터를 볼 수 있게 해줍니다.
(3) 뷰는 데이터베이스에 대해 어느 정도 논리적 독립성을 제공합니다.
(4) 뷰는 데이터의 기밀성을 유지할 수 있습니다. 보안 보호 기능이 제공됩니다.
NULL은 무엇을 의미하나요? NULL 값은 UNKNOWN(알 수 없음)을 나타내며 ""(빈 문자열)을 나타내지 않습니다.
NULL 값과 비교하면 NULL 값이 생성됩니다.
어떤 값도 NULL 값과 비교할 수 없으며 논리적으로 답변을 기대할 수 없습니다.
NULL 판단에는 IS NULL을 사용하세요
기본 키, 외래 키 및 인덱스의 차이점
정의:
기본 키 – 레코드를 고유하게 식별하고, 중복될 수 없으며, 비워 둘 수 없습니다.
외래 키 – 테이블의 외래 키는 다른 테이블의 기본 키입니다. 테이블, 외래 키는 중복될 수 있으며 null 값일 수 있습니다.
색인 – 이 필드에는 중복 값이 없지만 null 값이 있을 수 있습니다.
기능:
기본 키 – 데이터 무결성을 보장하는 데 사용됩니다.
외래 키 – 연결을 설정하는 데 사용됩니다. 다른 테이블
Index – 쿼리 정렬 속도를 향상시키는 것입니다.
Number:
기본 키 – 기본 키는 하나만 있을 수 있습니다.
외래 키 – 테이블은 여러 개의 외래 키를 가질 수 있습니다.
Index – 테이블은 여러 개의 고유 인덱스를 가질 수 있습니다.
데이터베이스 테이블에 정의된 확인 제한이 이 열에 입력되는 값을 제한하는 데 사용됩니다.
SQL 문을 최적화하는 방법에는 어떤 것이 있나요? (몇개 선택) (1) Where 절에서 : Where 테이블 간의 연결은 다른 Where 조건보다 먼저 작성해야 하며, 최대 레코드 수를 필터링할 수 있는 조건은 Where 절 끝에 작성해야 합니다. . HAVING이 마지막입니다.
(2) IN을 EXISTS로 바꾸고 NOT IN을 NOT EXISTS로 바꿉니다.
(3) 인덱스 열에 계산을 사용하지 마세요
(4) 인덱스 열에 IS NULL 및 IS NOT NULL을 사용하지 마세요
(5) 쿼리를 최적화하려면 전체 테이블 스캔을 피하고 먼저 위치와 순서를 고려하세요. by에 관련된 열입니다.
(6) where 절의 필드에 대해 null 값 판단을 하지 않도록 해야 합니다. 그렇지 않으면 엔진이 인덱스 사용을 포기하고 전체 테이블 스캔을 수행합니다.
(7) where 절의 필드에 대해 표현식 작업을 수행하지 마십시오. where 절을 사용하면 엔진이 인덱스 사용을 포기하고 전체 테이블 스캔을 수행하게 됩니다.
SQL 문에서 '상관 하위 쿼리'와 '비상관 하위 쿼리'의 차이점은 무엇인가요? (1) 비상관 하위 쿼리는 외부 쿼리와 독립적인 하위 쿼리로, 하위 쿼리는 총 한 번 실행되며, 실행 후 해당 값이 외부 쿼리로 전달됩니다.
(2) 해당 하위 쿼리의 실행은 외부 쿼리의 데이터에 따라 달라집니다. 외부 쿼리가 한 행을 실행할 때 하위 쿼리는 한 번만 실행됩니다.
상관되지 않은 하위 쿼리가 상관된 하위 쿼리보다 더 효율적입니다.
char와 varchar의 차이점은 무엇인가요? Char는 고정 길이 유형이고 varchar는 가변 길이 유형입니다.
차이점:
char(M) 유형의 데이터 열에서는 각 값이 M바이트를 차지합니다. 특정 길이가 M보다 작으면 MySQL은 오른쪽에 공백 문자를 추가합니다. (채워진 공백 문자는 검색 작업 중에 제거됩니다.)
varchar(M) 유형 데이터 열에서 각 값은 해당 길이를 기록할 수 있는 만큼의 바이트와 1바이트만 차지합니다(즉, 전체 길이는 L+1바이트입니다).
MyISAM은 쿼리가 자주 발생하는 애플리케이션에 적합하며 교착 상태가 발생하지 않습니다. 작은 데이터 및 작은 동시성에 적합
innodb는 삽입 및 업데이트 작업이 많은 애플리케이션에 적합한 트랜잭션을 지원하는 스토리지 엔진입니다. 올바르게 설계하면 행 잠금입니다(가장 큰 차이점은 잠금 수준에 있습니다). ; 빅데이터 및 대규모 동시성에 적합합니다.
데이터 테이블 유형은 무엇입니까? MyISAM, InnoDB, HEAP, BOB, ARCHIVE, CSV 등
InnoDB: 트랜잭션, 외래 키 및 기타 기능, 데이터 행 잠금을 지원합니다. 많은 공간을 차지하고 전체 텍스트 색인 생성 등을 지원하지 않습니다.
MySQL 데이터베이스는 하루에 50,000개 이상의 항목이 증가하는데, 이를 최적화하는 방법은 무엇입니까?
(1) 데이터베이스 구조를 잘 설계하고, 부분적인 데이터 중복을 허용하고, 조인 쿼리를 피하여 효율성을 높이세요.
(2) 적절한 테이블 필드 데이터 유형과 스토리지 엔진을 선택하고 적절하게 인덱스를 추가합니다.
(3) mysql 마스터-슬레이브 복제 읽기-쓰기 분리를 수행합니다.
(4) 데이터 테이블을 테이블로 나누어 단일 테이블의 데이터 양을 줄이고 쿼리 속도를 향상시킵니다.
(5) redis, memcached 등과 같은 캐싱 메커니즘을 추가합니다.
(6) 자주 변경되지 않는 페이지의 경우 정적 페이지(예: ob 캐싱)를 생성합니다.
(7) 효율적인 SQL을 작성합니다. 예를 들어 SELECT * FROM TABEL은 SELECT field_1, field_2, field_3 FROM TABLE로 변경됩니다.
트래픽이 많은 웹사이트의 경우, 페이지 방문 통계 문제를 해결하기 위해 어떤 방법을 사용하시나요?
(1) 서버가 현재 트래픽을 지원할 수 있는지 확인합니다.
(2) 데이터베이스 액세스를 최적화합니다.
(3) 사진의 핫링크 등 링크(핫링크)에 대한 외부 접근을 금지합니다.
(4) 파일 다운로드를 제어합니다.
(5) 로드 밸런싱을 수행하고 다른 호스트를 사용하여 트래픽을 오프로드합니다.
(6) 검색 통계 소프트웨어를 사용하여 방문 수를 파악하고 타겟 최적화를 수행합니다. ㅋㅋㅋ ~
위 내용은 PHP 면접 질문 '데이터베이스' 관련 지식을 정리합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!