목차
5. 여러 우선순위를 정렬할 수 있으며, 정렬 우선순위는 쓰기 순서를 따릅니다.
-- Sun Wukong의 수학 점수를 80점으로 변경
-- 조맹덕의 수학 점수를 60점, 중국어 점수를 70점으로 변경
--총점이 가장 낮은 세 학생의 수학 점수에 30점을 더합니다.
--모든 학생의 중국어 점수를 원래 값의 2배로 업데이트합니다.
다들 이거 보시고 엄지손가락 치켜세우고 가세요, 고마워요, 고마워요! ! !
1. 크러드
참고: SQL에서 "--space + 설명"을 사용하여 주석을 표시할 수 있습니다.
CRUD, 즉 추가(만들기), 쿼리(검색), 업데이트(업데이트) , 삭제(삭제)4단어약어
2. 추가(생성)
기존 테이블 구조 및 테이블 데이터:
(1) 문법
INSERT [INTO] 테이블_이름
[(열 [, 열] ...)]
VALUES(값 목록) [, (값_목록)] ...
값_목록: 값, [, 값] ...
(2) 단일 데이터 행 + 전체 열 삽입
구문:테이블 이름 값에 삽입(삽입할 데이터, ...)
참고: 삽입되는 데이터의 순서는 테이블 구조와 동일해야 합니다. 그렇지 않으면 삽입이 실패합니다.
코드 표시:
insert into books values('数学', '张三', 6.66, '数学类'); insert into books values('英语', '李四', 8.88, NULL);
결과는 다음과 같습니다.
(3) 여러 행의 데이터 + 지정된 열 삽입
구문:테이블 이름(지정된 열 이름, ...) 값 (지정된 열 이름 데이터)에 삽입
코드 표시
insert into books (name, price, sort) values('语文', 5.55, '语文类'), ('物理', 7.77, '物理类');
결과는 다음과 같습니다.
3. 검색
(1) 문법
선택
[DISTINCT] {* | {열 [, 열] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY 열 [ASC | DESC], ...]
제한 ...
(2) 전체 열 쿼리
참고:선택 쿼리 작업은 모두 임시 테이블이며 원본 데이터를 변경하지 않습니다.
구문:테이블 이름에서 * 선택
코드 표시:
select * from books;
결과는 다음과 같습니다.
참고: 일반적인 상황에서는 전체 열 쿼리에 *를 사용하지 않는 것이 좋습니다.
-- 1. query 컬럼이 많을수록 전송해야 할 데이터의 양이 많아진다.(처리해야 할 정보가 너무 많아 서버가 막힐 수 있다. 하드 디스크 IO, 네트워크 IO가 많이 찰 수 있다.) 하드 디스크나 네트워크 카드의 대역폭이 꽉 차면 서버는 다른 클라이언트의 요청에 정상적으로 응답할 수 없게 되며, 다른 클라이언트의 입장에서는 서버가 꽉 찬 것으로 간주됩니다. 다운됨)
-- 2. < a i=5>색인 사용에 영향을 미칠 수 있음
(3) 열 쿼리 지정
구문:테이블 이름에서...지정된 열 이름 선택
코드 표시:
select name, author, price from books;
결과는 다음과 같습니다.
참고: 지정된 열 쿼리는 그림과 같이 이 테이블의 열 순서에 따라 쿼리할 수 없습니다.
(4) 쿼리 필드는 표현식입니다.
1. 표현식에는 필드가 포함되어 있지 않습니다.
구문:select 표현식, ... from books
코드 데모:
select name, price, 10 from books;
결과는 다음과 같습니다
10이 없기 때문에 10번 필드가 생성되고 그 아래에 10번이 배치됩니다.
2. 표현식에 필드가 포함되어 있습니다.
구문:하나의 필드, ... 테이블 이름을 포함하는 표현식 선택
코드 데모:
select name, author, price + 10 from books;
결과는 다음과 같습니다.
테이블 구조는 다음과 같습니다.
3. 표현식에 여러 필드가 포함되어 있습니다.
구문:테이블 이름에서...여러 필드가 포함된 표현식 선택
정수 데이터 코드 데모:
select name, chinese + math + english from report;
결과는 다음과 같습니다.
정수 데이터 코드 데모가 아님:
select price, name + author + sort from books;
결과는 다음과 같습니다.
보시다시피 표현식에는 여러 행의 필드가 포함되어 있습니다. NULL이 있는 한 NULL이 되고 문자열의 합은 0이 됩니다.
(5) 별칭
구문:보고서의 별칭으로... 열 이름 선택
참고사항(생략 가능하지만 추가하는 것이 더 좋고 구별하기 쉽기 때문에)
코드 데모:
select id, chinese + math + english as 总分 from report;
결과는 다음과 같습니다.
(6) 중복 제거: DISTINCT
기존 테이블:
구문:테이블 이름에서... 고유한 열 이름 선택
코드 표시:
select distinct math from exam_result;
결과는 다음과 같습니다.
(7) 정렬: ORDER BY
1. 문법:
--ASC는 오름차순(작은 것에서 큰 것)
--DESC는 내림차순(큰 것에서 작은 것)
-- 기본값은 ASC입니다.< /span> ORDER BY 열 [ASC|DESC], [...];
SELECT ... FROM table_name [WHERE ...]
2. 오름차순
구문:select * ( 또는 다른 열 이름도 허용됨) 테이블 이름에서 열 이름순
코드 표시:
select * from exam_result order by math;
결과는 다음과 같습니다.
3. 내림차순
구문:select * ( 또는 다른 열 이름도 허용됨) 테이블 이름에서 열 이름 설명순
코드 표시:
select * from exam_result order by math desc;
결과는 다음과 같습니다.
4. 표현식과 별칭을 사용하여 정렬
구문:식별 테이블 이름 순서에서 열 이름, 표현식 선택
코드 표시:
select name, math + chinese + english as total from exam_result order by math + chinese + english;
결과는 다음과 같습니다.
알아채다:
여기서는 주문 후 별칭을 사용할 수 있습니다.
5. 여러 우선순위를 정렬할 수 있으며, 정렬 우선순위는 쓰기 순서를 따릅니다.
구문:쿼리할 열을 선택합니다. Exam_result 열 이름별 순서, 열 이름...;
코드 데모:
select * from exam_result order by math, english;
결과는 다음과 같습니다.
(8) 조건부 질의: WHERE
참고:조건에서는 표현식을 사용할 수 있지만 별칭은 사용할 수 없습니다.
1. 비교 연산자
2. 논리 연산자
참고: 1. AND는 OR보다 우선순위가 높습니다. 동시에 사용하는 경우 괄호()를 사용하여 먼저 실행되는 부분을 래핑해야 합니다. 아>
2. WHERE 조건에서는 표현식을 사용할 수 있지만 별칭은 사용할 수 없습니다< a i= 4>.
그림에 표시된 대로:
SQL 문의 실행 순서:
1단계: 레코드 꺼내기(테이블 순회)
2단계: 기록을 조건으로 가져와 충족 여부 확인
3단계: 조건이 충족되면 select에서 지정한 열을 꺼내고 몇 가지 표현식 작업을 수행합니다.
따라서 조건부 쿼리에서는 where 뒤에 별칭을 사용할 수 없습니다.
3. 기본 쿼리:
영어 점수가 70점 이상인 학생을 쿼리합니다.
코드는 아래와 같이 표시됩니다.
select name, english from exam_result where english > 70;
결과는 다음과 같습니다.
영어 점수가 중국어 점수보다 높은 학생을 확인하세요.
코드는 아래와 같이 표시됩니다.
select name, english, chinese from exam_result where english > chinese;
결과는 다음과 같습니다.
총점이 200점 미만인 학생을 쿼리합니다.
코드는 아래와 같이 표시됩니다.
select name, chinese + math + english from exam_result where (chinese + math + english) < 200;
결과는 다음과 같습니다.
4, AND 및 OR:
중국어 점수가 80점 이상, 영어 점수가 80점 이상인 학생을 쿼리합니다.
코드는 아래와 같이 표시됩니다.
select name, chinese, english from exam_result where (chinese > 80) and (english > 80);
결과는 다음과 같습니다.
중국어 점수가 80점 이상, 영어 점수가 80점 이상인 학생을 검색합니다.
코드는 아래와 같이 표시됩니다.
select name, chinese, english from exam_result where (chinese > 80) or (english > 80);
결과는 다음과 같습니다.
참고:또는보다 우선순위가 높습니다. 사용할 때 필요한 경우 괄호를 사용할 수 있습니다
5. 범위 쿼리
(1) ...과(와) 사이
코드 표시:
select * from exam_result where chinese between 80 and 90;
결과 표시:
이는 또한 다음을 사용하여 달성할 수 있습니다.암호:
select * from exam_result where chinese >= 80 and chinese <= 90;
(2)인
코드는 아래와 같이 표시됩니다.
select name, math from exam_result where math in(58, 59, 98, 99);
결과 표시:
또는 여기를 사용할 수도 있습니다.
암호:
select name, math from exam_result where math = 58 or math = 59 or math = 98 or math = 99;
6. 퍼지 쿼리: LIKE
아웃 아웃 아웃 무엇보다도
코드 표시:select name from exam_result where name like '孙%';
결과는 다음과 같습니다.
코드 표시:
select name from exam_result where name like '孙_';
결과는 다음과 같습니다.
참고:%는 "Sun"으로 끝나는 필드인 %Sun, 필드에 "Sun"이 포함되어 있는 경우 %Sun%과 같이 사용할 수도 있습니다.
_다음과 같이 사용할 수도 있습니다: _Sun은 앞에 문자가 하나만 있고 끝에 "Sun"이 있는 필드이며 여러 개의 밑줄 _을 사용할 수도 있습니다.
7. NULL 쿼리: IS [NOT] NULL
테이블의 열이 NULL인지 NULL이 아닌지 확인
코드는 아래와 같이 표시됩니다.
select name from exam_result where name is not null;
결과는 다음과 같습니다.
코드는 아래와 같이 표시됩니다.
select name from exam_result where name is NULL;
결과는 다음과 같습니다.
8. 페이징 쿼리: LIMIT
구문:
-- 시작 색인은 0입니다.
-- 0부터 시작하여 n개의 결과를 필터링합니다.
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- s에서 시작하여 n 결과 필터링
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- s에서 시작하여 n 결과 필터링, 두 번째 사용법보다 더 명확하므로
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
0부터 시작하여 3개의 결과를 필터링합니다.
코드 표시:
select * from exam_result limit 3;
결과는 다음과 같습니다.
0부터 시작하여 3개의 레코드를 필터링하고 ID별로 순서대로 페이지를 매깁니다.
코드 표시:
select * from exam_result limit 3;
결과는 다음과 같습니다.
3부터 시작하여 3개의 레코드를 필터링하고 ID별로 순서대로 페이지를 매깁니다.
코드 표시:
select * from exam_result order by id limit 3 offset 3;
결과는 다음과 같습니다.
4. 수정(업데이트)
문법:
UPDATE table_name SET 열 = expr [, 열 = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]
사례:
-- Sun Wukong의 수학 점수를 80점으로 변경
문법:
update table name 수정될 컬럼 이름 설정 = 수정될 값 여기서 컬럼 이름 = 수정되도록 지정될 컬럼의 값
코드는 아래와 같이 표시됩니다.
mysql> update exam_result set math = 80 where name = '孙悟空';
결과는 다음과 같습니다.
-- 조맹덕의 수학 점수를 60점, 중국어 점수를 70점으로 변경
코드는 아래와 같이 표시됩니다.
update exam_result set math = 60, chinese = 70 where name = '曹孟德';
결과는 다음과 같습니다.
--총점이 가장 낮은 세 학생의 수학 점수에 30점을 더합니다.
코드는 아래와 같이 표시됩니다.
결과는 다음과 같습니다.
--모든 학생의 중국어 점수를 원래 값의 2배로 업데이트합니다.
코드는 아래와 같이 표시됩니다.
update exam_result set chinese = chinese * 2;
결과는 다음과 같습니다.
5. 삭제
문법:
삭제 FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
사례:
--손오공의 시험 점수 삭제
코드는 아래와 같이 표시됩니다.
delete from exam_result where name = '孙悟空';
결과는 다음과 같습니다.
-- 전체 테이블 데이터 삭제
다음과 같이 테이블을 준비합니다.
코드는 아래와 같이 표시됩니다.
delete from for_delete;
결과는 다음과 같습니다.