주의가 필요한 데이터베이스 작업 문제

이 레코드 데이터베이스 작업의 일부 문제가 발생합니다.

중국어 쓰레기 문제 첫째, 삽입

삽입 된 데이터가 중국어 때 cmd를 창 테이블에 데이터를 삽입하면 오류 메시지가 소프트웨어 작업을 무시하세요 나타납니다. . .
코딩 문제가 있으므로 오류가 cmd를 윈도우 당신이 cmd를 창에 데이터를 입력 할 수 있도록 GBK 코드 작성 및 코딩 기본 데이터베이스입니다, GBK 인코딩을 사용 UTF8입니다입니다 발생합니다.
우리는 데이터베이스 관련 코드 세트를 보려면 명령을 입력 할 수 있습니다.

show variables like 'character%';

여기에 그림 삽입 설명
당신은 모든 관련 코드 세트 데이터베이스가 UTF8있는 것을 볼 수 있습니다.
어떻게 쓰레기 문제가 삽입 해결하기 위해?
우리가 생각하는 우선 코딩 삽입 데이터를 수정하는 것입니다 만, cmd를 창을 인코딩 수정할 수 없습니다, 그래서 우리는 클라이언트 코드, 즉 연결, 클라이언트,이 세 가지 코드의 결과를 수정해야합니다.
우리는 클라이언트 코드 세트를 수정하는 명령을 입력합니다.

set names gbk;

이 명령은 전술 한 3 가지 코딩을 변경한다.
편집 후, 우리는 코드 세트에서-보면 다시.
여기에 그림 삽입 설명
성공적으로 수정했습니다. 우리는 다시 수정 중국어 데이터에 문제가 삽입되지 않습니다. 우리는 그러나, cmd를 창을 다시 열고 중국의 문제가 등장했다 삽입합니다. 방금 임시로, 현재 cmd를 윈도우의 인코딩을 변경 현재 코드 세트에 기술 된 방법은 윈도우를 설정하기 때문에.
지금은 한 번에 모든 방법을 소개합니다.
데이터베이스에 대한 구성 파일 인 MySQL 설치 디렉토리의 my.ini 파일에서 발견, 우리는 그것을 엽니 다.
그래서이 [MySQL의], 55 행의 징조
는 다음과 같은 클라이언트 구성,
및 제 67 행 [mysqld를]은
만들어 서버의 구성입니다.
우리는 [MySQL의]를 아래 필요가 default-character-set=utf8변경 default-character-set=gbk될 수 있습니다.
그런 다음 우리는 MySQL의 서비스를 다시 시작합니다.
먼저 입력

net stop mysql;

다음을 입력합니다

net start mysql

다음으로, 우리는 MySQL의에 로그온 코드 세트를 볼 수, 당신은 성공 코드 세트가 수정 찾을 수 있습니다, 그래서 왜곡 문제가 해결 삽입합니다.

둘째, 문제의 일부 UPDATE 문 업데이트

의 테이블을 생성하고 데이터를 초기화 할 수 있습니다.

create table demo(
    name varchar(20),
    money varchar(20)
);

insert into demo values('zs','1000');

이제, 우리는 데이터를 수정합니다.

update demo set money = '2000' where name = 'zs';

여기에 그림 삽입 설명
이 작업 내가 UPDATE 문을 작성합니다 있다면 우리는 아무 문제가 없다 생각하지만?

update demo set money = '3000' where name = 'ZS';

또는이 또한 쓰기인가?

update demo set money = '4000' where name = 'zs         ';

이것은 우리가 두 개의 SQL 문을 실행할 것입니다.
여기에 그림 삽입 설명
당신은 효력이 두 SQL 문을 찾을 수 있지만, 많은 사람들이이 두 SQL 문이 문제가 있다고 생각하지만, 성공적으로 실행할 수 있습니다.
사실,이 질문이 SQL 문을 때문에, 우리는 어떻게 MySQL은 그것을 감지 할 수 있습니다, 다음, 버그 MySQL은 무엇입니까?
우리는 SQL 문을 작성할 수 있습니다.

update demo set money = '2000' where binary name = 'zs';

단지 바이너리 추가 할 필요가 비교하기 전에, 우리는 그것을 테스트했습니다.
여기에 그림 삽입 설명
수정 실패에 이러한 대문자 이름입니다.

셋째, 문제의 일부는 문 삭제 삭제

데이터를 테이블에서 삭제 될 때, 우리는 두 가지 방법이있다.
첫 번째,

delete from 表名

두 번째

truncate 表名

이 두 문장의 동일한 효과가 있지만, 무엇의 차이 다른가?
데이터를 삭제 TRUNCATE TABLE 문을 사용하여 삭제 된 기록은 트랜잭션 관리에서 복구 할 수 없습니다. 이용 방법 : 다시 만든 다음 전체 테이블을 삭제합니다.
트랜잭션 테이블의 데이터를 삭제하려면 delete 문을 사용하여, 그들이 트랜잭션 관리, 그리고 삭제할 수있는 데이터 롤백 할 수 있습니다. 원리 : 라인으로 라인이 데이터 레코드를 삭제합니다.
따라서, 성능의 모든 기록을 삭제 이상의 절단,을 삭제 우수합니다.

넷째, 선택 문장의 일부 문제는 쿼리하기

의는 다음 데이터를 초기화 테이블을 만들어 보자.

create table stu(
    name varchar(20),
    math varchar(20),
    english varchar(20)
);

insert into stu values('张三','80','65');
insert into stu values('李四','85','75');
insert into stu values('王五','70','95');

그리고 테이블 데이터를 쿼리합니다.

select * from stu;

여기에 그림 삽입 설명
이 문장은 모두 그것을 너무 잘 알고있다.
그런 다음 몇 가지 요구 사항이 있습니다.
(1) 모든 영어 학생 점수 10 개 포인트 및 문의 전문성을
우리는이 작업을 수행 할 수 있습니다.

select name,english + 10 from stu;

여기에 그림 삽입 설명
각 학생의 점수에 대한 2, ​​통계

select name,math + english from stu;

여기에 그림 삽입 설명
3, 별칭을 사용하여 학생의 성적 표현
단지 시간을 조회 학생의 점수를, 열 이름은 항상 아주 좋은 느낌을 준다, 그래서 우리는 별명에서 열 이름을 제공 할 수 있습니다.

select name,math + english as 总分 from stu;

여기에 그림 삽입 설명
닉네임에서,이 같은 열 이름을 생략 할 수있는 경우, 예를 들면 :

select name 姓名 from stu;

여기에 그림 삽입 설명
그래서 여기에 우리가 관심을 지불 할 필요 :

select name math from stu;
select name,math from stu;

위의 두 SQL 문을 관찰, 당신은 단지 쉼표 차이를 찾을 수 있지만, 두 문장의 효과는 완전히 다릅니다.
학생의 이름과 열 이름 수학의 이름을 조회하는 : 첫 번째 문은 실제로 역할, 생략한다.
여기에 그림 삽입 설명
두 번째 문장의 역할 : 쿼리 이름 및 열 수학.
여기에 그림 삽입 설명
알림 : 쿼리 때문에, 그래서 위의 모든 조건 원본 데이터에 영향을주지 않습니다.
이 언급 될 수있는 몇몇 장소는 다음과 같습니다
데이터베이스, 널 대신 1/2, 그래서 어떤 표현과 널 (null) 논리 연산 결과에 거짓,
논리 연산, 그리고, 또는 ------ 사람 높은 우선 순위?

select * from stu where 2 >1 or 2 >3 and 3 > 4;

그 기사의 SQL 문 검색 데이터의 구현은 조회 할 수 있으며, 지침을 먼저 실행하고, 더 높은 우선 순위보다 나.
선택한 그룹은 소개 그룹화 기능을 조회 :
COUNT 쿼리 결과 레코드 수를 반환
구문 : 테이블 이름에서 SELECT COUNT (*)를;

데이터 합계 합
구문 : 선택한 일 (필드 명) 테이블에서,
널 합계 합이 계산에 포함되지 않는다

평균 데이터 평균
구문 : 평균 (필드 명)을 선택 테이블을;

최대 / 분의 데이터의 최대치와 최소치 추구
구문 표에서 최대 (필드 명), 미니 (필드 명)을 선택;

마지막으로 참고 : 쿼리를 그룹화하는 과정에서 제한을 추가하려면 있도록 그룹화 기능을 사용할 수 없습니다, 우리가 가진, 동일한 구문과 장소를 사용해야합니다.

추천

출처www.cnblogs.com/blizzawang/p/11411705.html