회사에서 SQLSERVER와 MYSQL을 사용하고 있고, 서버와 데이터베이스의 수가 상대적으로 많기 때문에
MYSQL을 배우면서 관리하기가 어렵기 때문에 SQLSERVER와 비교해봤습니다
첫 번째 기간은 주로 MYSQL의 기본 구문을 학습합니다.
구문의 차이점
1. 제약 조건
차이점 : mysql에서는 DEFAULT 키워드 뒤에 괄호를 추가할 필요가 없습니다
2. 자동 증가 열 설정
MYSQL에는 자동 증가 열이 있어야 합니다. 인덱스 열의 경우 테이블 뒤쪽에 시드 값을 설정합니다.
자동 증가 단계 크기를 설정합니다. 글로벌 레벨과 세션 레벨로 나눌 수 있는 increment 컬럼
세션 레벨이라면 사용자가 새로운 세션을 생성하면 스텝 사이즈가 글로벌 레벨로 돌아가기 때문에 mysql의 스텝 사이즈는 은 sqlserver의 단계 크기와 매우 다릅니다
mysql은 테이블 수준의 단계 크기를 설정할 수 없습니다! !
mysql 서버는 전역 변수와 세션 변수라는 두 가지 유형의 mysql 시스템 매개변수(시스템 변수)를 유지 관리합니다.
그 의미와 차이점은 해당 이름에 표시된 것과 같습니다. 세션 변수는 세션 수준에 있으며 해당 변수에 대한 변경은 이 세션에만 영향을 미칩니다.
이에 대한 변경 사항은 다음에 mysql 서버가 다시 시작될 때까지 모든 새 세션에 영향을 미칩니다(기존 세션은 변경 시 영향을 받지 않음).
mysql 서버가 다시 시작될 때 변경 사항의 영향이 재시작에 걸쳐 적용되지 않는다는 점에 유의하세요.
SET을 통한 변경은 재시작을 연장할 수 없습니다.
각 시스템 변수에는 mysql 시스템을 컴파일할 때 결정되는 기본값이 있습니다.
시스템 변수를 지정하려면 일반적으로 서버 시작 시 명령줄에서 옵션을 지정하거나 옵션 파일을 통해 옵션을 지정할 수 있습니다.
물론 대부분의 시스템 변수는 시스템 실행 중에 지정할 수 있습니다. . , set 명령을 통해 해당 값을 지정합니다.
시스템의 현재 기본 자동 증가 열 시드 값과 단계 값 보기
Q: 해당 필드가 있는 자동 증가 열이 있는 테이블이 있는 경우 is id 기본 키를 추가합니다. 테이블에 10개의 데이터가 삽입된 후 ID가 8, 9, 10인 데이터를 삭제하고 mysql을 다시 시작한 다음
뒤에 다른 데이터를 삽입합니다. 이 데이터의 ID 값은 8 또는 11 중 무엇이어야 합니까?
답변: 테이블 유형이 MyISAM이면 11입니다. 테이블 유형이 InnoDB인 경우 ID는 8입니다.
이것은 두 가지 유형의 스토리지 엔진이 최대 ID 레코드를 서로 다른 방식으로 저장하기 때문입니다. MyISAM 테이블은 최대 ID를 데이터 파일에 기록하며 자동 증가된 기본 키의 최대 ID 값은 저장되지 않습니다. ;
InnoDB는 최대 ID 값을 메모리에 기록하므로 mysql을 다시 시작하거나 테이블에 OPTIMIZE 작업을 수행하면 최대 ID 값이 손실됩니다.
그런데 MYSQL에서는 현재 테이블의 자동 증가 값을 얻는 방법이 4가지가 있습니다
1. 특정 테이블에 대한 SELECT MAX(id) FROM person
2. SELECT LAST_INSERT_ID() 이 함수는 모든 테이블에 적용됩니다.
3. SELECT @@identity는 모든 테이블에 적용됩니다.
@@identity는 테이블에 데이터가 삽입된 마지막 시간을 나타냅니다. ID 속성(예: 자동 증가 열)이 있는 경우 자동 증가 열의 값은 시스템 정의 전역 변수입니다.
일반적으로 시스템 정의 전역 변수는 @@으로 시작하고, 사용자 정의 변수는 @로 시작합니다.
@@identity를 사용하기 위한 전제 조건은 삽입 작업을 수행한 후 select @@identity를 실행할 때 연결이 닫히지 않는다는 것입니다. 그렇지 않으면 결과가 NULL 값이 됩니다.
4. SHOW TABLE STATUS LIKE 'person'
특정 테이블을 대상으로 하는 경우 이 방법을 사용하는 것이 좋습니다.
결과에 해당하는 항목이 있습니다. 테이블 이름 레코드 Auto_increment 필드, 여기에 포함된 다음 자동 증가 ID 값은 테이블의 현재 최대 자동 증가 ID입니다.
3. 테이블 정의 보기
SQLSERVER
MYSQL
4. 테이블 이름 수정
테이블 이름 수정 시에도 차이가 있습니다. . 테이블 emp를 emp2로 변경
5. 필드의 데이터 유형을 수정합니다.
id 필드의 int 유형을 bigint로 변경합니다
6. 필드 이름 수정
MYSQL에서 필드 이름을 수정할 때는 해당 필드의 데이터 유형을 추가해야 합니다. 오류가 보고됩니다. CHANGE는 MODIFY
와 동일한 효과를 얻기 위해 데이터 유형만 수정할 수 있습니다. 이 방법은 SQL 문의 "새 필드 이름"과 "이전 필드 이름"을 동일하게 설정하는 것입니다. 이름을 지정하고 "데이터 유형"만 변경합니다.
데이터 유형을 변경합니다. 예를 들어 지금 예시에서는 id 열을 변경합니다. bigint 데이터 유형으로 변경합니다.
필드 이름 수정
7. 필드 추가
필드 추가 구문은 비슷하지만 MYSQL에서는 FIRST 및 AFTER 키워드를 사용하여 추가된 필드의 위치를 지정할 수 있습니다
8. 필드 삭제
MYSQL은 필드를 삭제하기 위해 COLUMN 키워드를 추가할 필요가 없습니다.
9 . 외래 키 제약 조건 삭제
MYSQL과 SQLSERVER에서 제약 조건을 삭제하는 방법도 매우 다릅니다
SQLSERVER에서는 고유 제약 조건이든, 검사 제약 조건이든, 외래 키 제약 조건이든 다음 SQL 문을 사용할 수 있습니다. 삭제
그러나 MYSQL에서는 외래 키 제약 조건인 경우 기본 제약 조건인 경우 DROP FOREIGN KEY를 사용해야 합니다. 키 제약 조건이 있으므로 DROP PRIMARY KEY를 사용해야 하는데 이는 다소 번거롭습니다
10. 테이블 삭제
테이블 삭제 구문 테이블은 똑같다
하지만 여러 테이블을 동시에 삭제하고 싶거나 삭제하기 전에 판단을 하고 싶다면 MYSQL이 훨씬 편리하다
SQLSERVER는 한 번에 하나의 테이블이 필요합니다. 판단한 다음 테이블을 하나씩 삭제합니다.
MYSQL은 다르며 구문이 매우 간결합니다. DROP TABLE IF EXISTS emp1, emp2
요약
이 글은 간단한 소개입니다. MYSQL과 SQLSERVER의 구문 차이점을 살펴보겠습니다.
두 가지의 차이점에 대해 더 많은 글을 작성하겠습니다. 앞으로 MYSQL과 SQLERVER, 그리고 이 기간 동안 제가 MYSQL을 사용해 본 경험담을 계속 지켜봐 주시기 바랍니다. o(∩_∩ )o
잘못된 점이 있으면 댓글로 알려주세요 o(∩_∩) o
2014-7-16 added
innodb 엔진이나 MYISAM 엔진 테이블에 관계없이 자동 증가는 하나만 가능합니다. 열이며 자동 증가 열은 보조 인덱스이든 기본 키 인덱스이든 인덱스 열이어야 합니다.
이것은 SQLSERVER와 동일합니다. 차이점은 SQLSERVER를 사용하면 테이블에 여러 개의 자동 증가 열이 있을 수 있다는 것입니다. , 자동 증가 열에는 인덱스를 생성할 필요가 없습니다
위는 MySQL 학습 시리즈 1: Simple Syntax의 내용입니다. 자세한 내용은 PHP 중국어 웹사이트(www.php)를 참고하세요. .cn)!