한 천 자바 인터뷰 Zhenti 마무리 시리즈 : MySQL의 영혼 오십이 인터뷰의 경우, 요청은 두려워하지 않습니다!

1, MySQL은 여러 가지 잠금을 가지고?

  1. 테이블 수준 잠금 : 작은 오버 헤드, 빠른 잠금, 교착되지는, 대형, 동시성의 최고 및 최저 수준의 잠금 충돌의 가능성을 잠급니다.
  2. 행 레벨 잠금 : 큰 오버 느린 잠금, 교착 상태가 될 것이다 작은 크기 로크는 로크 충돌 확률이 낮은, 동시성의 가장 높은 수준을 갖는다.
  3. 페이지 자물쇠 표와 행 잠금 간의 오버 헤드 및 시간 경계를 로크는, 일반적으로 입도 테이블 및 행 사이의 경계 잠금, 잠금 동시성, 교착 상태가 될 것이다.

2. MySQL은 서로 다른 테이블이 무엇입니까?

형태의 다섯 가지 유형이 있습니다 :

  • 의 MyISAM
  • 더미
  • 병합
  • INNODB
  • MONTHLY

3,의 MyISAM과 InnoDB의 MySQL 데이터베이스의 차이를 요약

의 MyISAM : 이 트랜잭션을 지원하지 않지만마다 쿼리가 원자이며, 지원 테이블 수준의 잠금을, 즉, 각 작업은 전체 테이블에 잠금이며 테이블의 행 번호가 저장된다 MyISAM 테이블은 세 개의 파일이 있습니다 인덱스 파일, 파일 테이블 구조를 데이터 파일, 클러스터 인덱스, 데이터 파일에 대한 포인터의 데이터 필드에 저장되어있는 인덱스 파일을 사용 페난 트렌. 보조 인덱스와 기본적으로 기본 색인 동일하지만,이 독특한 보조 인덱스로 보장 할 수 없습니다.

이노 디비 : ACID 트랜잭션, 지원하는 네 개의 트랜잭션 격리 수준에 대한 지원, 지원 행 수준 잠금 및 외래 키 제약 : 그것은 동시 쓰기를 지원할 수있다;

행의 수를 보관하지 마십시오 : 이노 디비 엔진이 이상 (별도의 테이블 공간, 테이블로 제공 할 수있다 (공유 테이블 스페이스, 운영 체제에 관계없이 컨트롤의 테이블 크기, 테이블이 여러 파일에 걸쳐 확산 될 수있다) 파일 공간에 저장됩니다 운영 체제 파일 크기 제한, 일반적으로 2G)로 크기는 운영 체제 파일의 크기에 의해 제한된다;

집합 인덱스 (색인 데이터 필드의 데이터를 저장하는 파일 자체) 일차 키 인덱스, 보조 인덱스 데이터 필드에 저장하는 1 차 키 값, 보조 인덱스 보조 색인을 통해 마스터 키를 검색하고 보조 인덱스에 액세스해야로부터 따라서 룩업 데이터 최상 증가 기본 키를 사용하여 데이터를 방지하기 위해 B의 + 트리 구조, 주요 파일을 유지하기 위해 삽입 할 때

4, MySQL의 이노 네 개의 트랜잭션 격리 수준 이름에 지원, 진보의 차이점?

SQL 표준을 정의 네 개의 격리 수준은 다음과 같습니다 :

  1. 미트되지 않은 읽기 : 읽기 커밋되지 않은 데이터를
  2. 읽기는 최선을 다하고 : 더러운, 비 반복 읽기를 읽고
  3. 반복 읽기 : 다시 읽을 수 있습니다
  4. 직렬화 : 시리얼 일

5 CHAR 및 VARCHAR의 차이?

  • CHAR 및 VARCHAR 유형의 저장 및 검색의 관점에서 다르다
  • 삭제 CHAR 값이 검색된 것으로 공간 후행 CHAR 값이 저장되어있는 경우, 그들이 특정 길이 공란되는 1 내지 255 지정된 테이블 범위의 길이를 만들 때 CHAR 컬럼 길이는 고정 길이이다.

6, 기본 키 및 후보 키의 차이점은 무엇입니까?

테이블을 고유하게 식별하는 기본 키의 각 행은 테이블은 하나의 기본 키가 있습니다.

기본 키는 후보 키입니다. 종래, 후보 키가 기본 키로서 지정 될 수 있고, 모든 외래 키 참조를 위해 사용될 수있다.

7, 무엇을 myisamchk에?

이는 디스크 나 메모리 사용량을 줄여 압축 MyISAM 테이블로 사용된다.

의 MyISAM 정적 및 동적의 MyISAM의 차이점은 무엇입니까? 정적의 MyISAM 모든 필드는 폭이 고정되었다. 데이터 타입의 다른 길이를 수용하도록 동화상 TEXT를 갖는 MyISAM 테이블은 BLOB는 필드. 손상의 경우의 MyISAM 정적 쉽게 복구.

테이블이 타임 스탬프로 정의 경우 8, 어떤 일이 일어날 것인가?

라인이 변경 될 때마다, 타임 스탬프 필드는 현재 타임 스탬프를 얻을 것이다.

열이 AUTO INCREMENT로 설정되어있는 경우는 테이블의 최대 값에 도달하면 어떻게됩니까? 그것은 단위를 중지 키가 이미 사용 중이므로 더 삽입, 오류가 발생합니다.

어떻게 자동으로 증가 할당 할 때 어떤 삽입 마지막 시간을 찾을 수 있습니까? LAST_INSERT_ID는 AUTO_INCREMENT에 의해 할당 된 마지막 값을 반환하고, 필요 테이블 이름을 지정하지

9, 당신은 어떻게 모든 인덱스가 테이블에 정의 된 것을 볼 수 있습니까?

인덱스는의 방법으로 다음 표에 의해 정의된다 :

SHOW INDEX FROM <tablename>;
复制代码

10, LIKE 선언 % 및 _ 이것이 무슨 뜻 이죠?

0 % 이상의 문자에 해당하는 문자 만 _ LIKE 문.

어떻게 유닉스와 MySQL 타임 스탬프 사이의 변환합니다?

  • UNIX_TIMESTAMP는 MySQL의 타임 스탬프 유닉스 타임 스탬프 명령으로 변환된다
  • FROM_UNIXTIME은 MySQL의 타임 스탬프 명령에 대한 유닉스 타임 스탬프로 변환된다

컬럼은 11. 비교 연산자?

SELECT 문 비교 열 =, <>, <=, <,> =,>, << >>, <=>, AND, OR, 또는 LIKE 연산자에서 사용.

12, BLOB 및 TEXT는 차이점은 무엇입니까?

의 Blob 이진 개체, 당신은 데이터의 변수 양을 저장할 수 있습니다. 텍스트 BLOB는 대소 문자를 구분하지 않습니다.

BLOB과 TEXT 형식의 유일한 차이는 정렬 및 BLOB 값 대소 문자 비교 TEXT 케이스를 구분의 값이다.

(13)는 mysql_fetch_array와 MySQL_fetch_object 인 차이점은 무엇입니까?

다음은의는 mysql_fetch_array와 MySQL_fetch_object의 차이입니다 :

  • 는 mysql_fetch_array () - 연관 배열 또는 데이터베이스로부터 반환 된 종래의 라인 어레이와 같은 결과.
  • MySQL_fetch_object - 객체와 데이터베이스 행의 리턴 결과.

14, MyISAM 테이블을 저장할 위치, 그리고 또한 저장 형식을 제공 할 것인가?

각각의 MyISAM 테이블은 세 가지 형식으로 디스크에 저장됩니다 :

  • · ".FRM"파일 저장 테이블
  • · 데이터 파일은 ".MYD"(MYDATA) 확장자가
  • 인덱스 파일은 ".MYI"(MYIndex) 확장자가

MySQL의 방법 DISTINCT 최적화 (15)?

DISTINCT 모든 열이 GROUP BY에 변환 및 ORDER BY 절과 함께 사용.

SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;
复制代码

16, 방법 제 50 개 행을 표시 하는가?

MySQL의에서 다음 쿼리하기 전에 코드의 50 줄을 사용하여 표시됩니다

SELECT*FROMLIMIT 0,50;
复制代码

17, 얼마나 많은 열 당신은 인덱스를 만드는 데 사용할 수 있습니까?

표준 테이블 16 인덱스 컬럼을 만들 수 있습니다.

18, NOW () 및 CURRENT_DATE ()의 차이점은 무엇입니까?

  • NOW () 명령은 현재 년, 월, 일, 시간, 분, 초를 표시하는 데 사용됩니다.
  • CURRENT_DATE () 만 표시 현재 연도, 월, 일.

표준이 아닌 문자열 유형은 19. 무엇입니까?

  1. TINYTEXT
  2. 본문
  3. MEDIUMTEXT
  4. LONGTEXT

20, 일반 SQL의 기능은 무엇인가?

  1. CONCAT (A, B) - 두 문자열 값을 연결하는 단일의 출력을 만드는 스트링. 일반적으로 하나 개의 필드에 두 개 이상의 필드.
  2. FORMAT (X, D) - 디지털 X-유효 숫자에 D 형식입니다.
  3. CURRDATE (), CURRTIME () - 현재 날짜 또는 시간을 반환합니다.
  4. NOW () - 반환 값으로 현재 날짜와 시간입니다.
  5. MONTH (), 일 (), YEAR () WEEK () 평일 () - 주어진 데이터로부터 추출 날짜 값.
  6. HOUR (), 분 (), 초 () - 주어진 데이터로부터 추출 된 시간 값.
  7. DATEDIFF (A, B)는 - 두 날짜 사이의 차이를 결정하고, 통상의 나이를 계산하는 데 사용
  8. SUBTIMES (A, B) - 둘 사이의 차이를 결정하는 단계를 포함한다.
  9. FROMDAYS (INT) - 변환 정수 값 날짜 일.

21, MySQL의 지원 거래는 무엇입니까?

기본 모드에서는, MySQL은 자동 커밋 모드는 모든 데이터베이스 업데이트 작업이 즉시 MySQL은 트랜잭션을 지원하지 않기 때문에 기본적으로 제출합니다. 하지만 당신의 MySQL의 테이블 유형은 InnoDB 테이블이나 BDB 테이블을 사용하는 경우, 다음 MySQL은 트랜잭션 처리를 사용할 수를 사용 SET의 AUTOCOMMIT는 = MySQL이 비 자동 커밋 모드를 허용 할 수 있습니다 0, 비 자동 커밋 모드에서, 당신은 COMMIT 사용해야합니다 변경 사항을 제출하거나 변경 사항을 롤백 롤백을 사용합니다.

22, MySQL의 통화 레코드에 필드의 유형이 좋다

MySQL의 NUMERIC과 DECIMAL 유형은 SQL92 표준을 수있는 동일한 유형으로 구현됩니다. 그들은 홀드 값으로 사용되는, 값의 정확한 정밀도는 돈에 관련된 데이터와 같은 매우 중요한 가치입니다. 클래스가 (보통과) 이러한 유형 중 하나는, 정밀도와 스케일이 될 수있을 때 선언 될 때 지정했습니다. 예를 들면 :

salary DECIMAL(9,2)
复制代码

이 예에서,도 9의 (정밀도) 값을 저장 소수점의 총 개수 대신 사용하고, 소수점 저장 후에 2- (스케일)이 자리를 대신 사용한다. 따라서,이 경우, 급여 항목에 저장 될 수있는 값의 범위로부터 -9999999.99 9,999,999.99이다.

여러가 23 표 MySQL의 관련 권리?

데이터베이스에 의해 제어 사용자 액세스 권한 테이블에 MySQL 서버는 권한 테이블은 mysql_install_db를 초기화 스크립트에 의해 MySQL 데이터베이스에 저장된다. 이러한 권리는 테이블 사용자, DB, table_priv, columns_priv 및 호스트입니다.

24 문자열 형식 열은 무엇을 할 수 있습니까?

문자열 유형은 다음과 같습니다

  1. 세트
  2. 얼룩
  3. ENUM
  4. 본문

25, 어떻게 최적화에 3 년 이상의 오만 일일 단위의 출시, 예상 운영 및 유지 보수, MySQL의 데이터베이스 스토리지 시스템?

  1. 잘 설계된 데이터베이스의 일부 데이터 중복을 허용 구조 피 쿼리에 가입하고 효율성을 향상시킬 수 있습니다.
  2. 필드 데이터 및 스토리지 엔진의 적절한 유형을 선택, 적절한 인덱스를 추가 할 수 있습니다.
  3. MySQL 데이터베이스는 주 판독기에서 분리합니다.
  4. 하위 테이블 쿼리 속도를 개선하기 위해 하나의 테이블에있는 데이터의 양을 줄이는 법을 찾을 수 있습니다.
  5. 등등, memcached를 APC와 같은 추가 캐싱 메커니즘.
  6. 변화는 자주 페이지, 정적 페이지를 생성합니다.
  7. 효율적인 SQL 작성. TABEL는 SELECT field_1, field_2, 테이블에서 field_3을 변경 FROM 예를 들어, SELECT *.

26 잠금 최적화 전략

  1. 별도의 읽기 및 쓰기
  2. 잠금 세그먼트
  3. 잠금이 유지되는 시간을 감소
  4. 취득 리소스에 가능한 한 같은 순서로 다중 스레드

우리는 단위가 너무 정제 잠글 수, 또는 큰 잠금 장치를 추가하는 과도한 잠금 및 스레드의 수를 방출하지만,보다 덜 효율적 나타날 수 있습니다.

27 기본 인덱스 원리 및 최적화

B + 트리, B + 트리가 가장 기본 인덱스로 기본 자동 증가 기본 키를 사용하여 InnoDB의 테이블에 대한 권고 사항의 그러므로 모든 잎 노드에서 다음 포인터 증가 리프 노드 점을 중심으로 최적화합니다.

(28)에서 어떤 상황이 설정되어 있지만 인덱스를 사용할 수 없습니다

  1. 시작, 퍼지 일치에서 "%"로 LIKE 문
  2. 문이 인덱스가없는 전후 또는 사용
  3. 암시 데이터 형식 변환이있다 (예컨대 VARCHAR 따옴표가 자동 int로 변환하지 않고있다)

29, 어떻게 최적화 MySQL로 연습

최적화는 다음과 같은 순서로 바람직하다 :

  1. SQL 최적화 및 인덱싱
  2. 데이터베이스 테이블의 구조를 최적화
  3. 시스템 구성 최적화
  4. 하드웨어 최적화

데이터베이스를 최적화 (30)의 방법

  1. 예를 들어, 가능한 필드 NOTNULL 제공 등, 최소화하기 위해 가장 적합한 필드 속성 정의 필드 폭을 선택, '부', '섹스'최고의 적용 ENUM
  2. 하위 쿼리 대신 연결 (조인)를 사용하여
  3. 미국 (UNION)에 적용하는 대신 수동으로 임시 테이블을 생성
  4. 트랜잭션 처리
  5. 테이블, 최적화 된 트랜잭션 처리 잠금
  6. 적용 외래 키, 낙관적 잠금 테이블
  7. 인덱싱
  8. 쿼리 최적화

(31), 간단한 설명 MySQL은, 인덱스, 기본 키, 고유 인덱스, 공동 인덱스 차이는 (읽기 및 쓰기 모두에서) 데이터베이스의 성능에 영향을

특별한 인덱스 파일 참조 데이터 테이블의 모든 레코드에 대한 포인터를 포함, (InnoDB의 테이블에 인덱스 테이블 스페이스의 일부입니다)입니다.

일반 지수 (정의 키워드 KEY 또는 INDEX에 의해 인덱스)에만 작업은 데이터에 대한 액세스 속도를하는 것입니다.

통상의 인덱스 데이터 열이 중복 값 인덱스를 포함 할 수있다. 당신이 데이터 컬럼은 다른 값을 서로 포함됩니다 확인할 수있는 경우이 열의 데이터의 인덱스를 생성 할 때, 고유 인덱스로에 키워드 UNIQUE로 정의되어야한다. 즉, 단지 인덱스는 데이터의 고유성을 기록 할 수 있도록한다.

기본 키는 특별한 고유 인덱스, 테이블에 기본 키 인덱스의 정의이며, 기본 키는 고유 레코드가 키워드 PRIMARY KEY를 사용하여 만들 수 식별합니다.

인덱스는 조인트 인덱스 INDEX (COLUMNA, COLUMNB) 인덱스 등의 데이터 항목, 복수를 커버 할 수있다.

지수는 크게 쿼리 속도 데이터를 향상시킬 수 있지만, 삽입을 줄일 삭제, 갱신, 속도계, 때문에이 쓰기 작업의 구현에,뿐만 아니라 인덱스 파일을 작동합니다.

32, 데이터베이스 트랜잭션은 무엇입니까?

데이터베이스 작업 단위의 순서 집합으로 거래 (트랜잭션). 모든 작업 그룹이 성공하면 트랜잭션이 단 하나의 작업이 실패 트랜잭션이 성공하지 못한 경우에도 성공적으로 간주됩니다. 모든 작업이 완료되면, 트랜잭션은 다른 모든 데이터베이스 프로세스의 역할을 개정 할 것, 최선을 다하고 있습니다. 작업이 실패 할 경우, 트랜잭션이 롤백되고 회사의 영향이 작업이 취소됩니다있다.

거래 특성 :

  1. 자성 : 트랜잭션의 불가분성 어느 모든 실행 또는 모두에서 실행되지 않습니다.
  2. 또는 문자열의 일관성. 트랜잭션 데이터베이스를 실행되도록 올바르게 하나의 상태로부터 다른 상태로의 정확한 변환
  3. 절연. 트랜잭션이 제대로 제출하기 전에 다른 문제에 트랜잭션 데이터에 대한 변경 사항을 사용할 수 없습니다,
  4. 지속성. 거래 후 결과를 제출 할 수있는 권리를 영구적으로 트랜잭션의 다른 실패가 최선을 다하고도 함께, 트랜잭션 처리 결과가 저장됩니다 데이터베이스에 저장됩니다.

또는 이러한 방법 :

거래는 작업이 실패합니다 작업이 작동하기 전에 다시 상태로 압연, 또는 노드가 될 것입니다 후 전체 작업을, 실패 인 경우, 작업 패킷 SQL 문, 문장의 논리 단위로 함께 구속하는 것입니다. 중 하나를 실행 실행 여부를 확인하기 위해, 당신은 트랜잭션을 사용할 수 있습니다. 우리는 ACID 테스트, 즉 원 자성, 일관성, 격리 및 내구성을 통과해야 거래로 간주 문 그룹을합니다.

33 SQL 인젝션 취약성 결과의 원인은 무엇인가? 어떻게 방지하기 위해?

생성 된 이유 SQL 주입 : 프로그램 개발 프로세스, 사양 쓰기 SQL 문 및 클라이언트의 일부는 전역 변수 POST와 GET하여 제대로 실행 된 SQL 문을 제출할 수에 선도, 특수 문자 필터링하지 지불 관심을한다.

방지 SQL 주입 방법 :

구성 파일을 열 magic_quotes_gpc의 이중 작은 따옴표 설정을 매직 코트 생략하지 SQL 문을 서면 진술서를 실행 사용 addslashes는이 SQL은 SQL 문을 변환 할 수. 몇 가지 핵심 단어를 필터링하는 SQL 문을 : 갱신, 삽입, 삭제는, *, 선택합니다. 데이터베이스 테이블과 필드 이름을 지정 능력을 향상, 프로그램 이름의 특성에 따라 몇 가지 중요한 분야가 걸릴 쉽게 추측 할 수 없습니다.

34, 얻어진 데이터는 해당 필드 유형 테이블을 선택해야

우선 순위 필드 유형 : 플라스틱> 날짜, 시간> 열거, 문자> VARCHAR> BLOB, 날짜 또는 바이너리 형식, 그리고 마지막으로 문자열 유형에 따라 텍스트의 우선 순위를 숫자 유형, 데이터 유형의 동일한 수준을 가지고, 당신은 작은 풋 프린트를 선호한다 데이터 유형

(35), 저장 기간

Datatime : MM : YYYY-MM-DD HH의 축적 시간 동안 SS 포맷, 제 정확, 저장 공간의 8 바이트 관계없이 시간대 datatime 형 소인 소인 형식, 4 바이트를 저장 1970년 1월 1일 2038년 1월 19일 작은 범위도 상기 지정된 표시 영역에 따라 수득 차지하는 바이트의 행의 첫 번째 열에있는 데이터를 수정) 자동 기본 timestamp 열 발견 :( 생일 날짜를 수정해야 날짜의 3 바이트를 사용하여 적은 .datatime.int 저장된 번호 문자열,보다, 달의 날 저장, 날짜 시간 날짜 시간 함수를 얻기 위해 계산 될 수있다 : 저장 시간 부분은 데이터의 참고를 얻기 위해 : 음주 문자열을 사용하지 날짜 및 시간 (여과 날짜 수득 룩업 함수를 사용하여 수행 될 수있다 일반적으로 적은 문자열의 저장 공간보다 차지)가 INT를 이용하여 시간 및 날짜 스탬프 형식을 사용하는 것이 좋다 저장 데이터 유형을 저장하도록

관계형 데이터베이스 인덱스가 매우 중요한 개념이다 36, 인덱스에 대한 몇 가지 질문에 답변하시기 바랍니다 :

1. 인덱스의 목적은 무엇인가? 테이블 특정 정보의 데이터에 대한 빠른 액세스, 데이터베이스 테이블에있는 데이터의 각 행의 고유성을 보장하기 위해 고유 인덱스를 생성하는 검색 속도를 향상시킬 수 있습니다. 패킷와 가속도계와 정렬 테이블 절 데이터 검색 사이의 연결을 사용하는 경우, 쿼리는 상당히 시간 및 패킷 순서를 줄일 수 있습니다

2, 인덱스에 어떤 부정적인 영향은 데이터베이스 시스템은? 부정적인 효과 : 인덱스를 생성하고 인덱스 유지 보수, 데이터의 양이 증가의 증가로이 시간을 시간이 걸립니다, 인덱스 요구가 아니라 데이터 테이블, 공간을 차지하기 위해 물리적 공간을 차지해야하는 각 인덱스를 필요로 물리적 공간을 차지하기 위해; 때 테이블 인덱스는, 동적 유지 될 따라서 데이터 관리의 속도를 감소시기, 변경, 추가, 삭제.

3, 어떤 데이터 테이블을 인덱싱의 원칙? 필드에서 인덱스에서 가장 자주 사용의 검색 범위를 좁힐 수 있습니다. 인덱스에서 필요성이 자주 사용하는 필드를 정렬하려면

4, 어떤 상황에서 인덱싱되지해야합니까?

거의 반복 또는 열 값의 이상에 관여하지 쿼리의 열 경우, 인덱싱되지 않습니다. 일부 특수 데이터 유형의 경우, 같은 텍스트 필드 (텍스트) 등으로, 인덱싱되지

37, 설명자가 접속 차이에 연결된 외부 연결의 MySQL

나를 교차 연결이 무엇인지에 대해 이야기 해 보자 : 교차 연결 또한 데카르트 제품으로 알려진, 그것은 바로 모든 기록과 열한 경기에서 다른 테이블에 테이블의 모든 레코드에, 어떤 조건없이 의미한다.

욕실은 결과 집합에 표시되지 않습니다 레코드의 조건을 충족하지 않는 일부 조건에 따라 유일한 교차 연결 상태, 상영 일치하는 레코드이며, 연결 라인은 경기가 연결됩니다.

결과 만도 연결 조건을 충족 있지만 포커스 외부 연결 라인은 왼쪽 외부에 연결된 삼가지 경우 차례라고, 오른쪽 외부 조인, 전체 모든 데이터 왼쪽 테이블에서 행을 오른쪽 테이블 또는 두 테이블을 포함 외부 조인.

기본 테이블에 테이블을 왼쪽, 또한 왼쪽 연결이라고, 외부 조인 왼쪽, 모든 기록이 일치하지 않는 올바른 테이블의 레코드에 대한 결과 집합에 표시되는 테이블의 남아있을 것입니다, 아직 그 필드 값은 오른쪽에 해당하는 것을 보여 주어야 NULL을 채우기 위해.

오른쪽 바깥 쪽은, 또한 바로 연결 오른쪽 테이블의 기본 테이블, 결과 세트의 오른쪽 테이블의 모든 레코드로 알려진 조인. 왼쪽 및 오른쪽 연결 MySQL은 현재 완전 외부 조인을 지원하지 않습니다, 교환 할 수있다.

(38), 트랜잭션 롤백 메커니즘 Myql 개요

트랜잭션은 사용자 정의 데이터베이스 작업의 순서는, 이러한 작업은 작업 단위 트랜잭션이 취소 된 데이터베이스의 업데이트 작업을 완료했다고 트랜잭션 롤백 수단 중 전체 또는 전체를하지 않는 것입니다. 그들은, 그래서 첫 번째 테이블 완전한 수정, 수정하는 두 번째 테이블이있을 수 있습니다 때 이상의 과정은 수정하지 않았다, 만 두 번째 테이블의 트랜잭션이 아닌 경우, 동시에 두 개의 서로 다른 테이블을 데이터베이스를 수정하려면 여전히 이전에 수정되지 않은 상태 및 첫 번째 테이블은 수정이 완료되었습니다. 당신이 그 (것)들을 트랜잭션 시간을 설정 넣을 때 첫 번째 테이블을 수정할 때, 두 번째 테이블이 비정상적으로 수정하고, 제 1 테이블과 제 2 테이블 반환해야 수정되지 않은 상태를 수정할 수 없습니다, 이것은 트랜잭션 (transaction) 롤백 (rollback)라고합니다

어떤 부분을 포함하여 39, SQL 언어? 각 섹션은 어떤 조치 키워드를 가지고?

SQL 데이터 정의 언어 (DDL), 데이터 조작 (DML), 제어 데이터 (DCL), 및 데이터 쿼리 (DQL) 네 부분으로 포함.

  • 데이터 정의 : 테이블, 테이블 변경, 테이블 삭제, Craete를 만들기 / 드롭 지수 등
  • 데이터 조작 : 선택, 삽입, 업데이트, 삭제,
  • 컨트롤 데이터 : 부여, REVOKE
  • 데이터 쿼리 선택

무엇을 포함하여 40, 무결성 제약 조건,?

데이터 무결성 (데이터 무결성) 데이터 정밀도 (정확도) 및 안정성 (안정성)을 지칭한다.

다음과 같은 네 가지 범주로 나누어 :

  1. 엔티티 무결성 : 테이블에 지정된 테이블의 각 행은 유일한 기업이다.
  2. 도메인 무결성 : 특정 데이터 유형 제약 조건을 만족해야하는 테이블 항목을 의미하며, 제한이 소정 범위의 정확도를 포함한다.
  3. 참조 무결성 : 키워드의 두 가지 주요 데이터 테이블을 참조하고, 키워드는 데이터 테이블, 데이터 손실 사이의 일관성을 보장하거나 데이터베이스에 의미없는 데이터의 확산을 방지하기 위해, 일관성 외부해야한다.
  4. 사용자 정의 무결성 : 다른 관계형 데이터베이스 시스템은 애플리케이션 환경에 따라 종종 몇 가지 특별한 제약 조건이 필요합니다. 응용 프로그램의 의미가 충족되어야합니다 특정의 ​​요구 사항을 반영하는 특정 관계형 데이터베이스입니다 사용자 정의 무결성 제약. 테이블과 관련된 제약 조건 : 열 제약 (NOT NULL (비어 있지 않은 제약)) 및 테이블 제약 조건 (PRIMARY KEY, 외래 키, checkUNIQUE) 포함.

(41) 잠금은 무엇인가?

데이터베이스는 하나 이상의 사용자가 사용하는 공유 자원이다. 여러 사용자가 동시에 데이터를 액세스 할 때, 다수의 트랜잭션들에 동시에 데이터베이스의 동일한 데이터에 액세스 할 것이다. 읽고 잘못된 데이터를 저장하는 데이터베이스의 일관성을 깰 수 조절되지 않는 동시 작업합니다.

잠금 데이터베이스 동시성 제어를위한 매우 중요한 기술이다. 때 데이터 객체 요청 Xianxiang 시스템의 잠금을 작동하기 전에 트랜잭션. 데이터 객체에 대한 서비스 잠금 후 일부 제어 할 수 있습니다, 잠금 전에 트랜잭션에 공개되어, 다른 트랜잭션이 데이터 개체를 업데이트 할 수 없습니다. 잠금 장치의 기본 유형 : 잠금은 행 수준 잠금 및 테이블 수준 잠금을 포함한다

42 뷰는 무엇인가? 무엇 커서입니까?

보기는 가상 테이블 물리적 테이블과 동일한 기능을 갖는다. 보기는 테이블의 뷰 또는 테이블의 행 또는 열을 상기 복수의 부분 집합이 보통이, 운영, 추가, 변경, 확인 할 수 있습니다. 뷰에 대한 변경 사항은 기본 테이블에 영향을주지 않습니다. 그것은 멀티 테이블 쿼리에 비해 우리가보다 쉽게 ​​데이터를 얻을 수 있습니다. 커서 : 수단을 효과적으로 처리하기로 쿼리 결과가 착수했다. 커서가 특정 세포주에서 설정 될 수 있고, 전류 선 결과 집합에서 하나 개 이상의 행을 검색. 당신은 현재 행의 결과 집합을 변경할 수 있습니다. 일반적으로 커서를 사용하지 않지만 커서가 매우 중요 할 때 필요 하나를 사용하여 데이터를 처리 할 수 ​​있습니다.

43, 절차를 어떻게 저장됩니까? 무엇을 호출하려면?

저장 프로시 저는 나중에 여러 번 호출 할 수있는 프로그램에, 미리 컴파일 된 SQL 문을 한 번 생성 된 모듈 형 설계를 허용하는 장점이다. 당신이 많은 시간을 특정 SQL을 수행해야하는 경우, 간단한 SQL 문을 사용하여 저장 프로 시저를보다 빠르게 실행됩니다. 당신은 저장 프로 시저를 호출하는 명령 객체를 사용할 수 있습니다.

44, 얼마나 인기 세 가지 패러다임의 이해?

  • 첫 번째 패러다임 : 특성에 1NF 원자 제약, 필수 속성은 더 이상 분해, 원자이다;
  • 제 패러다임 : 2NF 유일한 제약 레코드 고유 식별, 기록 요구, 즉, 기업의 고유성;
  • 세 번째 패러다임 : 3NF 필드 중복이 모든 필드가 다른 필드에서 파생 될 수 없음을, 바인딩 된, 그것은 중복되는 필드가 필요하지 않습니다. .

패러다임 디자인 단점 : 장점 : 데이터 중복은 빠르게 업데이트 얻기 위해 가능한 한 감소시킬 수있는 작은 단점 : 다수의 테이블과 관련된 쿼리에 대한 필요성, 읽기, 쓰기의 효율성 증가의 효율을 저하가 더 어려워 인덱스를 최적화

안티 패러다임 : 장점 : 더 나은 단점 얻기 위해 최적화 감소 테이블 관련 모른다 지수 : 중복 데이터 및 비정상적인 데이터는 데이터 비용이 더 많이 수정해야

45 기본적인 테이블은 무엇인가? 뷰는 무엇입니까?

기본 테이블은 테이블 자체가 SQL 테이블에, 대응 관계 존재의 독립적입니다. 뷰는 하나 이상의 기본 테이블에서 파생됩니다. 자체 데이터베이스의 독립에 저장되지 뷰는 가상 테이블이다

46 Shishu는 장점 볼?

(3) 논리적 데이터베이스의 독립성 정도의 뷰를 제공한다 (1)은 사용자의 동작을 도면을 간략화 할 수있다 (2) 시야각의 복수의 동일한 데이터를 볼 수 있습니다 (4)를 도면을 기밀 데이터의 보안 기능을 제공하는 .

(47) NULL은 무엇을 의미 하는가

그것은 ""의미하지 않는다 (빈 문자열) :이 NULL 값은 UNKNOWN (알 수없는)을 나타냅니다. 이 값은 NULL 값을 생성합니다 어떤 비교 NULL입니다. 당신은 NULL 값으로 값을 넣어 논리에 대한 답변을 얻을 수 있도록 노력하겠습니다 수 없습니다. 사용 IS NULL NULL을 결정할 수

48, 기본 키, 외래 키와 인덱스의 차이점은 무엇입니까?

정의 :

  • 기본 키 - 고유 레코드를 식별, 복제 할 수 없습니다, NOT NULL
  • 외래 키 - 외래 키 테이블이 다른 테이블의 기본 키,이 반복 될 수 외래 키는 null도 가능
  • 지수 -이 필드의 값은 반복되지 않지만 NULL 값을 가질 수 있습니다

역할 :

  • 기본 키 - 데이터 무결성을 확인하는 데 사용됩니다
  • 외부 키는 - 그리고 다른 테이블에 링크를 설정하기
  • 색인 - 종류의 쿼리 속도를 향상이다

번호 :

  • 기본 키 - 기본 키는 하나가 될 수 있습니다
  • 외국 키 - 테이블은 여러 외래 키를 가질 수 있습니다
  • 색인 - 테이블은 여러 개의 고유 인덱스를 가질 수 있습니다

49, 당신은 무엇을 양식 필드는 값의 특정 범위를 받아 들일 수 있도록 사용할 수 있습니까?

입력 열 값을 제한하는, 데이터베이스 테이블에 정의 된 체크 한도. 트리거는 또한 값을 허용하도록 데이터베이스 테이블의 필드를 제한 할 수 있지만,이 방법은 경우에 따라 성능에 영향을 미칠 수있는 트리거가 테이블에 정의되어 있어야합니다.

50, SQL 문을 최적화하는 어떤 방법에 대한 이야기가? (몇 가지 선택)

  1. 절 여기서 테이블 사이의 연결이 다른 전에 작성해야합니다 조건이 이러한 조건은 최대 레코드 수를 필터링 할 수 있습니다 마지막 .HAVING의 마지막 절에 기록 될 수 있습니다.
  2. 또는 존재로, 인디애나 다른 방법에 의해 NOT 존재합니다. 3 지표 계산의 열 사용하지
  3. IS NULL의 사용을 피하고 NULL 인덱스 컬럼을지지 않습니다
  4. 쿼리 최적화, 첫번째 장소와 순서에 포함 된 열을 기준으로 색인을 고려해야합니다, 전체 테이블 스캔을 피하려고한다.
  5. where 절에 필드 널 (null) 가치 판단을 피해야한다, 엔진이 인덱스와 전체 테이블 스캔을 사용하여 포기하게됩니다
  6. 엔진이 인덱스와 전체 테이블 스캔을 사용하여 포기하는 원인이 WHERE 절에 필드 작업 식을 피해야한다

추천

출처juejin.im/post/5ddce5915188256eec6d7545