데이터 쿼리
문 형식
SELECT子句
: 속성 열이 표시되는,FROM子句
: 쿼리 개체 (기본 테이블 또는 뷰)를 지정합니다WHERE子
문장 : 쿼리 기준을 지정합니다GROUP BY
절 : 지정된 순서의 패킷의 값으로 질의 결과 (예를 들어, 남성 그룹, 하나의 여자), 행 그룹과 속성 값 터플 동일. 일반적으로 사용되는 각 그룹 집계 기능 (예를 들어, 남성 및 여성의 그룹 수가 설정된 횟수)HAVING
구문 :는 지정된 기준을 충족하는 출력 전에 설정하기
ORDER BY
절 : 테이블 열 값에 지정된 오름차순 또는 조회 결과의 내림차순
기능 분해 :
1.SELECT 관련 사용
모든 학생들이 번호와 이름을 배울 쿼리 [예 1].
SELECT Sno,Sname //选择属性 SELECT * 代表所有列
From Student //指明表的来源
SELECT 보충 사용 :
SELECT Sno,2020-Sage //可以得到出生年份,可以是表达式
SELECT LOWER(Sdept) //将得到的Sdept值全部化为小写
使用列的别名改变查询结果的列标题
SELECT Sname NAME,2020-Sage BIRTHDAY //定义别名
중복 행을 제거
- SELECT 기본 중복 행이 DISTINCT 키워드를 사용할 필요가 제거, 삭제 중복 행을하지 않습니다
SELECT DISTINCT Sno
2.WHERE 관련 사용
질문 | 술부 |
---|---|
비교 | =,>,> =,! =,!> |
범위를 결정 | BETWEEN AND, NOT BETWEEN AND |
세트를 결정 | IN, NOT IN |
문자 일치 | LIKE, NOT LIKE |
널 | IS NULL, 그렇지 NULL |
논리 연산 | AND, OR, NOT |
비교 :
컴퓨터 과학 및 예 2 쿼리의 부 미만 20 세 학생의 목록
SECLECT Sname
FROM Student
WHERE Sdept='CS' AND Sage<20; //注意,这个分号不能少
: 범위를 확인하려면
예 3. 쿼리 나이가 20-23년 세 사이의 학생의 이름이 아닌, 나이 라인은하지 않습니다
SELECT Sname,Sdpt,Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 23;
세트 결정 :
컴퓨터 과학의 예 4. 쿼리 부 (CS)을, 수학학과 (MA) 학생의 이름과 성별
SELECT Sname, Ssex
FROM Student
WHERE Sdept IN('CS','MA');
문자 일치 :
- 구문 : 조건 : [NOT] LIKE '<매치 문자열>'[ESCAPE '<이스케이프 문자>']
- <문자열> 전체 문자열이 와일드 카드 %를 포함 할 수 있고 될 수있다 _
- %는 길이의 문자열의 끝에 문자열의 길이를 대표하는 %의 B, 대표 처음에 A, B를 가지고
- _ 단일 문자 스탠드
예 5. 쿼리 학생들 1830130281의 수에 대한 자세한 내용을 보려면
SELECT *
FROM Student
WHERE Sno LIKE '1830130281' //<==> WHERE Sno = '1830130281'
- ESCAPE 이스케이프 문자 사용
- 조치 : 와일드 카드 문자를 사용하여 이스케이프는 보통의 문자를 이스케이프합니다.
예 6. 쿼리 DB_Design 코스 번호와 과정 학점
- 조치 : 와일드 카드 문자를 사용하여 이스케이프는 보통의 문자를 이스케이프합니다.
SELECT Cno , Ccredit
From Course
WHERE Cname LIKE 'DB\_Design'ESCAPE'\';
3.ORDER BY 절
- 작업 : 하나 개 이상의 속성은 열 배열 될 수있다
- ASC : ASC; 내림차순 : DESC; 기본값은 오름차순입니다
예 7. 결과가 하강 점수 배열되어, ORDER BY 절을 사용할 수 있습니다 반영
SELECT .....
FROM ....
WHERE ....
ORDER BY Grade DESC;
상행 예 8. 결과 위치 기반 번호, 연령 내림차순
SELECT ...
FROM ...
WHERE ...
ORDER BY Sdept ASC , Sage DESC; //ASC省略也可以
4. 집계 함수 (종종 BY 그룹과 함께 또는 SELECT 사용 HAVING)
- 그것은에만 사용할 수 있습니다
SELECT
로HAVING
- 통계 Ganso 번호 :
COUNT(*)
- 통계 가치의 수 :
COUNT( [ DISTINCT|ALL ] <列名>)
- 의 합을 계산 :
SUM(同第二行)
- 평균 값을 계산 :
AVG(同第二行)
- 최대 및 최소를 원하는 상대 :
MAX(同第二行), MIN(同第二行)
注意
:DISTINCT
A는 가지고 있어야하지, 그것은 디엠 퍼시스를 의미한다 (기본값은 ALL입니다)
예 9. 쿼리 학생들의 수는 과정에 등록.
SELECT COUNT(DISTINCT Sno)
FROM SC;
5.GROUP BY 절 그룹
- 지정된 값이거나 패킷의 더 많은 열은 일련의 값은 동일하다.
사용 주 :
错误示例:
SELECT Cnpo //
FROM SC //
GROUP BY Cno //
식 뒤에 SELECT 및 GROUP BY 표현의 뒷면에 일치해야합니다. 선택 (SELECT)는 COUNT와 같은 집계 함수, 다음에 Y BY 그룹은 SELECT Y, 당신은 대응 (Cnpo을)이없는 경우 경우
실시 예 10 개개의 시크 등록 프로그램 넘버와 대응하는 번호. (아이디어 : 그룹으로 코스 동일한 수)
SELECT Cno, COUNT(Sno)
FROM SC
GROUP BY Cno; //意思是课程号相等的所有列为一组。
아래 표와 비슷한 결과 :
누구 | COUNT (SNO) |
---|---|
1 | (22) |
이 | (34) |
삼 | (45) |
4 | (12) |
세 개 이상의 학생 수에 대한 예 11. 쿼리 선택 과목
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*)>3; //HAVING函数是在对每一个组进行操作,某一组列数大于3的输出
쿼리 포인트의 예 12 평균 점수는 90, 학생 수의 평균 점수입니다
SELECT Sno , AVG(Grade)
FROM SC
GROUP BY Sno
HAVING AVG(Grade)>=90; //AVG不能放在WHERE中!!!
예제 및 통계의 13 부는 각 부서에서 남성과 여성의 학생 수를 구별하고, 유칼립투스의 내림차순으로 정렬하기
SELECT Sdept, Ssex , COUNT(Sno)
FROM Student
GROUP BY Sdept , Ssex
ORDER BY COUNT(Sno) DESC;