실제 비즈니스에서는 테이블만 쿼리하는 것이 아닌 경우가 많습니다.
전자상거래 시스템에서 제품을 구매하지 않은 사용자를 쿼리합니다.
은행은 위반 기록을 조회할 수 있으며, 동시에 사용자의
당첨 정보 및 당첨자의 기본 정보를 조회할 수 있습니다.
위는 두 테이블을 함께 쿼리해야 하는 경우입니다.
위에서 언급한 비즈니스에서 쿼리 결과를 얻으려면 여러 테이블을 함께 조인해야 하며, 다중 테이블 공동 쿼리의 핵심은 테이블 연결입니다.
테이블 연결
여러 테이블의 필드를 쿼리해야 하는 경우 테이블 연결을 사용하여 이를 수행할 수 있습니다. 테이블 조인은 내부 조인과 외부 조인으로 구분됩니다.
내부 조인: 두 테이블의 필드가 조인 관계와 일치하는 조인 관계를 갖는 레코드를 조인하여 레코드 세트를 구성합니다.
외부 조인: 일치하지 않는 다른 레코드가 선택되어 외부 왼쪽 조인과 외부 오른쪽 조인으로 구분됩니다.
학습 실험에 앞서 모두를 위한 두 개의 시뮬레이션 데이터 테이블을 준비했습니다.
- 사용자 정보를 저장하는 User 테이블
- 어떤 사용자가 어떤 제품을 구매했는지 저장하는 Order 테이블
user 테이블 생성문
존재하지 않는 경우 테이블 생성 user
(user
(
uid
int(11) NOT NULL,
username
varchar(30) NOT NULL,
password
char(32) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS order_goods
(
oid
int(11) NOT NULL,
uid
int(11) NOT NULL,
name
varchar(50) NOT NULL,
buytime
uid
int(11) NOT NULL,
username
varchar(30) NOT NULL,
password
char(32) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
존재하지 않는 경우 테이블 생성
order_goods
(
oid
int(11) NOT NULL, uid
int(11) NOT NULL, 이름
varchar(50) NOT NULL, 구매 시간 int(11) NOT NULL |
) ENGINE=InnoDB DEFAULT CHARSET=utf8; | 사용자 테이블 데이터는 다음과 같습니다: |
uid | username | password |
| 1 | Jingtian | 1 23456
| 2 | 왕샤오얼 | 245667
| 3 | 왕바오창 | 1235531
| 4 | 징보란 | 123455
| 5 | 판빙빙 | 5abcwa
| 6 | 황샤오밍 | abcdeef
| 7 | anglebaby | caption
| 8 | TFBOYS | abcdwww
| 9 | An Xiao chao | 12tfdd wd
| 10 | Gao Xiaofeng ㅠㅠ | 13
한샤오핑 | 121rcfwr fq | | 14
송샤오강 | 123123tcsd | | 15
통샤오강 | 3cxvdfs | | order_goods 데이터는 다음과 같습니다:
oid | uid | name | buytime |
---|
1 | 10 | Apple mouse | 121 2313 |
2 | 3 | 아이폰 ㅠㅠ 4242123 | |
53 | 아이폰 키보드 | 12123413 | |
참고: | 위의 order_goods 테이블에서 uid는 사용자 테이블의 uid 필드를 나타냅니다. 위 표에서 oid가 있는 데이터 행은 1이고 uid가 있는 사용자는 10입니다. 사용자 테이블에 uid 10을 가진 사용자의 경우: Gao Xiaofeng. 사용자가 Apple 마우스를 구입했습니다. 구매 시간 buytime은 유닉스 타임스탬프입니다. | 내부 조인 기본 구문 1: | |
category | 자세한 설명 | | | 기본 구문
표 1을 선택합니다. 필드 [별칭], 표 n은 표 1 [별칭]에서 필드를 선택합니다. ], 테이블 n 여기서 조건
예
user.uid,user.username을 사용자 이름,order_goods.oid,order_goods.uid,order_goods.name으로 user,order_goods에서 선택, 여기서 user.uid = order_goods.uid ;
설명 예시제품 테이블에서 어떤 사용자가 제품을 구매했는지 조회하고 사용자 정보를 표시합니다 | | 참고: 다음 예에서 from 테이블은 테이블 별칭을 사용합니다.
테이블 이름이 너무 길어서 작성할 때마다 실수하기 쉽습니다. 축약된 영어 문자열을 사용하여 표를 직접 따라갈 수 있습니다. 이전에 필드를 연결할 때는 약어 string.field를 사용하세요.
mysql> 사용자 u,order_goods o에서 사용자 이름으로 u.uid,u.username, o.oid,o.uid,o.name을 선택합니다. 여기서 u.uid = o.uid;
+------+------------+------+------+---------------+
| 아이디 | 아이디 |
+------+------------+------+------+---------------+
10 | 가오샤오펑 | 10 |
3 | 왕바오창 2 |
12 | 리샤오차오 12 |
15 |
3 | 리 웬카이 | 3 |
+------+------------+------+------+---------------+
5행 세트(0.00초)
기본 구문 2:
category자세한 설명 | 기본 구문 |
테이블 1. 필드 [별칭], 테이블 n 필드 선택 표 1 조건에 따른 INNER JOIN 테이블 n;Example | user.uid,user.username을 사용자 이름으로 선택,order_goods.oid,order_goods.uid,order_goods.name을 사용자 내부 조인에서 shopname으로 user.uid의 order_goods = order_goods.uid; |
설명 예시 | 제품 테이블에서 어떤 사용자가 상품을 구매했는지 조회하고 사용자 정보를 표시합니다 |
결과는 기초문법 1과 일치합니다. mysql> 사용자 내부 조인 order_goods에서 사용자 이름으로 user.uid,user.username, order_goods.oid,order_goods.uid,order_goods.name을 상점 이름으로 선택 = order_goods.uid;
+------+------------+------+------+---------------+
| 아이디 | 아이디 |
+------+------------+------+------+---------------+
10 | 가오샤오펑 | 10 |
3 | 왕바오창 2 |
12 | 리샤오차오 12 |
15 |
3 | 왕바오창 5 |
+------+------------+------+------+---------------+
5행 세트(0.00초) 외부 조인 JOIN 테이블 n on 조건;
Example
select * from user left Join order_goods on user.uid = order_goods.uid;
예제 설명 주로 on the 왼쪽, 상품을 구매하지 않은 사용자를 쿼리하고 사용자 정보를 표시합니다 | | 외부 조인은 왼쪽 조인과 오른쪽 링크로 구분되며 구체적인 정의는 다음과 같습니다. 왼쪽 조인: 오른쪽 테이블의 레코드와 일치하지 않는 레코드도 포함하여 왼쪽 테이블의 모든 레코드를 포함합니다. mysql> select * from user left Join order_goods on user.uid = order_goods.uid; +-- - --+------------+---+------+------+---- --- -------+----------+ | 사용자 이름 | oid 이름 | +----+- --- ----+------------+------+------+------------- --+ -----------+ | 10 | 애플 마우스 | 1235531 | 3121241 | | 12 | 3cxvdfs | 1235531 |5 |아이폰 키보드 123456 | NULL | NULL | NULL | | | 5abcwa | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | NULL | NULL ----------+------+------+---------------+---- ---- --+ 16행 세트(0.00초)
오른쪽 조인: 오른쪽 테이블에 일치하지 않는 레코드도 포함하여 오른쪽 테이블의 모든 레코드를 포함합니다 Category | 자세한 설명 |
---|
기본 구문 | 표 1을 선택하세요. 필드 [별칭으로], 테이블 n. 테이블 1의 필드 오른쪽 JOIN 테이블 n 조건; | Example | select * from user right Join order_goods on user.uid = order_goods.uid; | 예제 설명 | 제품 테이블의 어떤 사용자가 제품을 구매했는지 쿼리하고 사용자 정보를 표시합니다 |
mysql> 사용자 권한에서 *를 선택하여 user.uid에서 order_goods에 가입 = order_goods.uid; +------+- - ---------+------------+------+------+---------------+ - ----------+ | 사용자 이름 | oid | 구매 시간 | +-------+- ------+------+------+---------------+------------+ | 10 | 3124qwqw | 애플 마우스 | 1235531 | 12 | 3 | 12 | 15 | 3cxvdfs | 3424212 | 121234 13 | --- ------+------------+------+------+---------------+---- -- ----+ 5개 행(0.00초)
Subquery
때때로 쿼리할 때 필요한 조건이 다른 select 문의 결과인 경우 하위 쿼리를 사용해야 합니다. 하위 쿼리에 사용되는 키워드에는 in, not in, =, !=, 존재함, 존재하지 않음 등이 포함됩니다.
Category 자세한 설명 | | 기본 구문 select field from table where field in (condition) | 예 1 | select * from user where uid in (1, 3 , 4); | 예제 1 설명 | ID로 지정된 사용자 쿼리 | 예제 2 | select * from user where uid in(order_goods에서 uid 선택); | 예제 2 설명 | 정보 상품을 구매한 사용자 정보가 표시됩니다 | 예 1: mysql> uid가 (1,3,4); 인 사용자에서 *를 선택하세요.
+------+------------+----------+
| 사용자 이름 |
+------+------------+----------+
1 | 징티안 |
3 |왕바오창 |
4 | 징보란 123455 |
+------+------------+----------+
3행 세트(0.00초)
예 2: mysql> select * from user where uid in(order_goods에서 uid 선택);
+------+------------+----------+
| 사용자 이름 |
+------+------------+----------+
10 | 가오샤오펑 |
3 |왕바오창 |
12 | 리 샤오차오 |
15 | 통샤오강 |
+------+------------+----------+
4 행 세트(0.00초)
mysql> select * from emp where deptno in(dept에서 deptno 선택);
Union 기록 Union 및 Union All 키워드를 사용하여 두 테이블의 데이터를 결합합니다. a 특정 쿼리 조건을 쿼리한 후 결과를 병합하여 함께 표시합니다. 둘의 주요 차이점은 결과를 직접 병합한다는 점이며, 합집합은 모두 합친 후 결과에 대해 별도의 작업을 수행하고 중복된 레코드를 제거한 결과입니다. Category 자세한 설명 | | 기본 구문 select 문 1 Union[all] select 문 2 | Example | select * from user where uid in (1, 3, 4 ); | 설명 예 | 제품 테이블의 사용자 정보와 사용자 테이블의 사용자 정보를 결합합니다 | | mysql> 사용자 조합에서 uid 선택 order_goods에서 uid 선택;
+------+
|
+------+
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
+------+
15줄 세트 (0.00초)
다음 섹션 <?php
echo "Hello Mysql";
?> - 장1PHP를 배우기 위해 이 코스를 선택해야 하는 이유
- 왜 PHP를 배워야 할까요?
- PHP 란 무엇입니까?
- 기초가 전혀 없어도 배울 수 있습니다
- 왜 어떤 사람들은 배울 수 없나요?
- 장2PHP 환경 설치
- 개발 환경은 무엇입니까?
- 윈도우 환경 설치
- 리눅스 환경 설치
- 기타 개발 환경
- 코드 작성을 위한 도구 선택
- 장3PHP 기본 구문
- PHP 기본 구문
- 첫 번째 PHP 코드 조각
- PHP의 변수 - 중학교에서 공부하고 나면 변...
- 에코 표시 명령
- PHP 주석 학습
- 데이터 유형은 신비하지 않습니다
- PHP 정수 유형은 정수입니다.
- PHP 데이터 유형 Boolean(실제로는 중...
- PHP 데이터 유형 문자열
- PHP 데이터 유형 부동 소수점 유형
- else 구문인 경우 PHP 흐름 제어
- PHP 데이터 유형 NULL 유형
- PHP 데이터 유형 배열
- PHP 데이터 유형의 리소스 유형
- PHP 데이터 유형 보기 및 판단
- PHP 데이터 유형의 자동 변환 및 강제 변환
- 객체(나중에 배우겠습니다)
- PHP 상수 및 변수는 상수를 사용하여 사용자...
- PHP 상수 및 변수 변수 변수
- PHP 상수 및 변수 외부 변수
- PHP 상수 및 변수 환경 변수
- PHP 상수 및 변수에 대한 변수 참조
- PHP 기본 구문 산술 연산
- PHP 기본 구문 할당 작업
- PHP 기본 구문: 자체 증가 및 자체 감소
- PHP 기본 구문 비교 연산자
- PHP 기본 구문의 논리 연산
- PHP 기본 구문 비트 작업
- PHP 기본 구문: 삼항 연산자 및 기타 연산...
- 장4PHP 프로세스 제어
- PHP의 프로세스 제어
- 조건부 구조 프로세스의 경우 PHP 프로세스 ...
- PHP 흐름 제어 if 문
- PHP 프로세스 제어의 중첩된 if...els...
- PHP 흐름 제어에서 if 문의 다중 중첩
- PHP 흐름 제어에서 분기 구조 스위치 문 사...
- PHP 프로세스 제어에서 루프 문 사용
- while 루프
- PHP 프로세스 제어에서 do...while ...
- 루프 제어문을 위한 PHP 흐름 제어
- PHP 흐름 제어 goto 구문
- 장5PHP의 기본 함수 구문
- PHP의 기본 함수 구문
- PHP 함수 기본 구문 사용자 정의 함수
- PHP 사용자 정의 함수 콜백 함수
- PHP 사용자 정의 함수 변수 함수
- PHP 사용자 정의 함수 익명 함수
- PHP 사용자 정의 함수의 내부 함수
- PHP 사용자 정의 함수의 가변 범위
- PHP 사용자 정의 함수의 매개변수 참조
- PHP 사용자 정의 함수 재귀 함수
- PHP 사용자 정의 함수의 정적 변수
- PHP는 시스템 내장 함수를 사용합니다.
- PHP 파일에는 함수가 포함되어 있습니다.
- PHP 수학에서 일반적으로 사용되는 함수
- 기간 정보를 얻는 PHP 함수
- PHP 날짜 확인 기능
- PHP는 현지화된 타임스탬프 기능을 얻습니다.
- PHP 프로그램 실행 시간 감지
- PHP 문자열 공통 함수
- 장6PHP 배열과 데이터 구조
- PHP 배열과 데이터 구조
- PHP 배열 정의
- PHP 배열 계산
- PHP for 루프가 인덱스 배열을 탐색합니다...
- php foreach는 연관 배열을 탐색합니다...
- PHP 목록, 각 함수는 배열을 순회합니다.
- PHP에서 일반적으로 사용되는 배열 조작 함수
- PHP 배열의 일반적인 함수
- 장7PHP의 정규식
- PHP의 정규식
- PHP 정규식으로 표현되는 구분 기호
- PHP 정규식 표현의 원자
- PHP 정규 표현의 메타문자
- PHP 정규 표현식의 패턴 수정자
- PHP에서 정규식을 작성하기 위한 팁과 일반적...
- PHP는 정규식을 사용하여 UBB 텍스트 편집...
- 장8PHP 파일 시스템
- 파일 시스템
- PHP 읽기 파일
- PHP는 파일 내용을 생성하고 수정합니다.
- PHP는 임시 파일을 생성합니다
- PHP 파일 이동, 복사 및 삭제
- PHP는 파일 속성 감지 기능을 감지합니다.
- PHP 파일의 공통 함수 및 상수
- PHP 파일 잠금 메커니즘
- PHP 디렉토리 처리 기능
- PHP 파일 권한 설정
- PHP 파일 경로 함수
- PHP는 파일 방명록을 구현합니다.
- 구성 파일을 수정하는 PHP 구현 예
- 장9PHP 파일 업로드
- PHP 파일 업로드
- 파일을 업로드할 때 php.ini 파일에 주의...
- PHP 파일을 업로드하는 단계
- PHP 파일 업로드 양식에 대한 주의사항
- PHP는 배열과 단계에 따라 파일 업로드를 완...
- PHP 다중 파일 업로드
- PHP 파일 업로드 진행 처리
- 장10PHP 이미지 처리
- PHP 이미지 처리
- PHP 이미지 처리 gd2 구성 파일 수정
- PHP는 이미지 처리 기능을 사용하여 그림을 ...
- PHP 개발 인증코드(인증코드 생성)
- PHP 이미지 크기 조정 및 자르기 기술
- PHP 이미지 워터마크 처리
- 장11PHP 오류 처리
- 오류 처리
- PHP 오류 처리로 인해 오류 표시가 금지됩니...
- PHP 오류 처리 오류 보고 수준
- PHP 오류 처리 오류 로그
- PHP 오류 처리 사용자 정의 오류 처리 기능
- 장12MySQL 시작하기
- MySQL 시작하기
- MySQL 데이터베이스 소개
- Mysql 엔터테인먼트 설명표 관계
- mysql 데이터베이스 설치
- 데이터 문 작업 유형
- MySQL은 데이터베이스에 연결
- MySQL 데이터베이스 작업
- MySQL 데이터 테이블 작업
- MySQL 데이터 필드 작업
- MySQL 데이터 유형
- MySQL 문자 집합
- MySQL 테이블 엔진
- MySQL 인덱스
- MySQL은 삽입 레코드를 추가, 삭제, 수정...
- Mysql 쿼리 레코드 추가, 삭제, 수정
- MySQL 다중 테이블 공동 쿼리
- MySQL 추가, 삭제, 수정 및 쿼리 업데이...
- MySQL은 레코드 추가, 삭제, 수정, 삭제
- DCL 문
- MySQL에서 일반적으로 사용되는 영어 단어를...
- 장13PHP는 mysql 데이터베이스를 운영합니다.
- PHP는 mysql 데이터베이스를 운영합니다.
- PHP 데이터베이스 연결 단계
- PHP는 사용자 등록 단계를 거쳐 데이터베이스...
- PHP 데이터베이스 작업: 단계를 통해 목록 ...
- 사용자 페이지를 매기는 PHP 데이터베이스 작...
- PHP 데이터베이스 작업: 사용자 일괄 및 특...
- 사용자 정보를 수정하는 PHP 데이터베이스 작...
- PHP 데이터베이스 작업에서 잘못된 데이터 표...
- 장14PHP 세션 관리 및 제어
- 세션 개요
- PHP 세션 제어를 위한 쿠키 개요
- PHP 세션 제어 쿠키
- PHP 세션을 사용한 PHP 세션 제어
- php SESSION 적용 예시(장바구니)
- 세션 관리 및 제어
- 장15cURL을 통해 도둑 프로그램 만들기
- PHP 컬 사용 방법 및 단계
- 웹 페이지를 크롤링하는 PHP 컬 사용자 정의...
- PHP 컬은 포스트를 사용하여 데이터를 보냅니...
- cURL을 통해 도둑 프로그램 만들기
- 장16PHP에서 일반적으로 사용되는 영어 단어를 알아보세요
- PHP 프로그래밍에 일반적으로 사용되는 영어 ...
|