SqlServer 폼 조회 문제 및 해결 방법
Q2:표 DEMODELTE 는 다음 과 같이 자동 번호 가 다른 것 을 제외 하고 모두 같은 학생 의 불필요 한 정 보 를 삭제 합 니 다.
Q3:Team 표 는 다음 과 같 습 니 다.갑 을 병 정 은 4 개 팀 입 니 다.현재 4 개의 공 으로 경 기 를 진행 하고 있 습 니 다.하나의 sql 문 구 를 사용 하여 가능 한 모든 경기 조합 을 표시 합 니 다.
Q4:Microsoft SQL Server 엔진 에서 의 논리 적 처리 순 서 를 고려 하 십시오.
USE TSQLFundamentals2008
SELECT empid,YEAR(orderdate) AS orderyear,COUNT(*) numorders
FROM Sales.Orders
WHERE custid=71
GROUP BY empid,YEAR(orderdate)
HAVING COUNT(*)>1
ORDER BY empid,orderyear
이 글 은 일반 조회 과정 에서 다 루 는 처리 논리 자 구 를 분석 하 는데 주로 FROM,WHERE,GROUP BY,HAVING,SELECT,ORDER BY,TOP,OVER 등 자 구 를 포함한다.2 SELECT 문장의 요소
2.1 일반적인 검색 자구 와 논리 처리 순서
데이터 시트 를 검색 할 때 검색 문 구 는 일반적으로 FROM,WHERE,GROUP BY,HAVING,SELECT,ORDER BY,TOP,OVER 등 자 구 를 포함 하 므 로 다음 과 같은 사례 의 논리 적 처리 순 서 를 고려 하 십시오.
USE TSQLFundamentals2008
SELECT empid,YEAR(orderdate) AS orderyear,COUNT(*) numorders
FROM Sales.Orders
WHERE custid=71
GROUP BY empid,YEAR(orderdate)
HAVING COUNT(*)>1
ORDER BY empid,orderyear
위의 코드 와 같이 SQL 에서 논리 적 처리 순 서 는 다음 과 같 습 니 다.
USE TSQLFundamentals2008
FROM Sales.Orders
WHERE custid=71
GROUP BY empid,YEAR(orderdate)
HAVING COUNT(*)>1
SELECT empid,YEAR(orderdate) AS orderyear,COUNT(*) numorders
ORDER BY empid,orderyear
논리 처리 순 서 는 다음 과 같이 요약 할 수 있다.설명:
a.일반적인 프로 그래 밍 언어,예 를 들 어 c+,자바,c\#등 프로그램 은'위 에서 아래로'의 순서에 따라 한 걸음 한 걸음 실 행 됩 니 다.그러나 SQL 에서 SELECT 문구 가 있 는 위 치 는 처음에 있 었 지만 가장 먼저 실 행 된 것 이 아 닙 니 다.
b.논리 처리 순서의 모든 단계 가 되 돌아 오 는 결과 집합 은 이 단계 문장의 다음 단계 에 이 어 실 행 될 결과 집합 입 니 다.
c.FROM 은 데이터 원본(또는 데이터 시트)을 가 져 옵 니 다.WHERE 는 FROM 을 바탕 으로 조건 을 걸 러 냅 니 다.GROUP BY 는 WHERE 를 바탕 으로 최소 한 열 로 집합 을 나 눕 니 다.HAVING 은 GROUP BY 를 바탕 으로 이미 조 를 나 눈 집합 을 걸 러 냅 니 다.SELECT 문 구 는 HAVING 을 바탕 으로 검색 하고 ORDER BY 는 SELECT 를 바탕 으로 일정한 조건 에 따라 순 위 를 매 깁 니 다.
2.2 부분 조회 자구 설명
2.2.1 에서 자구
a.데이터베이스 구조 로 한정 코드 에 있 는 대상 이름 을 사용 하면 데이터베이스 구조 로 한정 하지 않 아 도 Sql Server 는 암시 적 으로 해석 하고 대가 가 더욱 높 습 니 다.처음에 대상 이름 이 같 고 구조 제한 이 없 으 면 잘못된 의미 가 생 길 수 있 습 니 다.
b.FROM*성능 비 FROM conumname 성능 이 낮 음;
c.FROM 에서 조회 한 결과 집합 순 서 는 무 작위 입 니 다.
2.2.2 WHERE 자구
a.FROM 단계 에서 돌아 오 는 줄 필터 하기;
b.WHERE 술어 나 논리 표현 식;
c.WHERE 자 구 는 검색 성능 에 중요 한 영향 을 미 칩 니 다.필터 표현 식 을 바탕 으로 Sql Server 는 요청 한 데 이 터 를 어떤 색인 으로 접근 하 는 지 계산 합 니 다.
d.전체 표를 스 캔 하고 가능 한 모든 줄 을 되 돌려 줍 니 다.클 라 이언 트 에서 걸 러 내 면 비용 이 비교적 많 습 니 다.예 를 들 어 대량의 네트워크 전송 트 래 픽 이 발생 할 경우.
e.T-SQL 은 3 치 술어 논리(true,false,unknown)를 사용 합 니 다.
2.2.3 자구 에 의 한 그룹
a.GROUP BY 단 계 는 이전 단계 의 논리 적 조회 처 리 를 되 돌려 주 는 줄 을'그룹'으로 조합 합 니 다.각 그룹 은 GROUP BY 자구 에서 지정 한 요소 에 의 해 결 정 됩 니 다.
b.검색 어 에 그룹 이 포함 되 어 있 으 면 GROUP BY 단계 이후 모든 단계(HAVING,SELECT,ORDER BY 포함)의 작업 대상 은 그룹 이지 단독 줄 이 아 닙 니 다.각 그룹 은 최종 적 으로 조회 결과 가 집 중 된 줄 로 표시 합 니 다.
c.GROUP BY 단계 이후 처 리 된 자구 에서 지정 한 모든 표현 식 은 각 그룹 에 하나의 스칼라(단일 값)만 되 돌려 줄 것 을 보증 합 니 다.GROUP BY 목록 의 요 소 를 기반 으로 한 표현 식 은 이 요 구 를 충족 시 킵 니 다.정의 에 따라 각 그룹 에서 GROUP BY 요 소 는 한 번 만 나타 나 기 때 문 입 니 다.
d.취 합 함 수 는 각 그룹 에 하나의 값 만 되 돌려 주기 때문에 하나의 요소 가 GROUP BY 목록 에 나타 나 지 않 으 면 취 합 함수(COUNT,SUM,AVG,MIN,MAX)로 만 입력 할 수 있 습 니 다.(메모:GROUP BY 자구 가 있 으 면 취 합 함 수 는 모든 그룹 이 아 닌 구체 적 인 각 그룹 만 작 동 합 니 다).
e.모든 취 합 함 수 는 NULL 을 무시 하지만 COUNT(*)는 제외 합 니 다.
f.취 합 함수 에서 inct 를 사용 하여 비 중복 수 를 처리 할 수 있 습 니 다.예 를 들 어 count(distinct vary);
2.2.4 HAVING 자구
a.HAVING 자 구 는 그룹 에 걸 러 낼 서술 어 나 논리 표현 식 을 지정 하 는 데 사 용 됩 니 다.이것 은 WHERE 단계 에서 단독 줄 을 걸 러 내 는 것 과 대응 합 니 다.
b.HAVING 자 구 는 줄 을 묶 어서 처리 하기 때문에 HAVING COUNT(*)>1 과 같은 취 합 함 수 를 논리 적 표현 식 에서 참조 할 수 있 습 니 다.HAVING 단계 필 터 는 여러 줄 을 포함 하 는 그룹 만 유지 한 다 는 뜻 입 니 다.
2.2.5 SELECT 자구
a.SELECT 자 구 는 검색 결과 에 집중 적 으로 포 함 될 속성(열)을 지정 하 는 데 사 용 됩 니 다.
b.SELECT 자구 반환 열의 이름 형식:
검색 중인 표 의 각 열 세 가지 방식 으로 별명 을 직접 정의 합 니 다.AS 를 추천 합 니 다.<표현 식>AS<별명>;<별명>=<표현 식>(별명 등호 식);<표현 식><별명>(표현 식 빈 칸 별명)이름 없 는 열
c.관계 모델 에서 모든 조작 과 관 계 는 관계 대수 와 관계(집합)의 결 과 를 바탕 으로 하지만 SQL 에 서 는 상황 이 약간 다 릅 니 다.SELECT 조회 로 인해 진정한 집합(즉,유일한 줄 로 구 성 된 무질서 집합)으로 돌아 갈 수 없습니다.우선,SQL 은 표를 구하 지 말고 집합 조건 에 부합 해 야 합 니 다.SQL 표 는 키 가 없 을 수도 있 고 줄 이 유일 하지 않 을 수도 있 습 니 다.이런 상황 에서 표 는 집합 이 아니 라 다 중 집합(multiset)이나 가방(bag)입 니 다.그러나 조회 중인 표 가 메 인 키 를 가지 고 있 더 라 도 집합 조건 에 부합 되 며,이 표 에 대한 SELECT 조 회 는 중복 되 는 결 과 를 포함 할 수 있 습 니 다.SELECT 조회 의 출력 을 설명 할 때 결과 집합 을 자주 사용 합 니 다.그러나 결과 집합 은 반드시 수학 적 의미 에서 의 집합 조건 을 엄 격 히 만족 시 켜 야 하 는 것 은 아 닙 니 다.
d.DISTINCT 는 줄 의 유일 성 을 확보 하고 중복 되 는 줄 을 삭제 합 니 다.
e.SELECT*형식 으로 모든 열 을 조회 하지 않 고 가능 한 한 열거 합 니 다.
2.2.6 ORDER BY
a.SQL 을 이해 하 는 가장 중요 한 것 은 표 가 질서 가 없다 는 것 을 알 아야 한 다 는 것 이다.표 는 하나의 집합(중복 항목 이 있 으 면 다 중 집합)을 대표 하기 위해 서 이 고 집합 은 무질서 하기 때문이다.이 는 검색 표 에 ORDER BY 자 구 를 지정 하지 않 으 면 검색 은 결과 표를 되 돌려 줄 수 있 지만 SQL Server 는 결과 장의 줄 을 자 유 롭 게 순서대로 정렬 할 수 있다 는 뜻 이다.
b.ORDRTB BY 에서 ASC 는 오름차 순 을 나타 내 고 DESC 는 내림차 순 을 나타 내 며 기본 적 인 상황 은 오름차 순 입 니 다.
c.ORDER BY 자구 가 있 는 조 회 는 ANSI 를 커서(cursor)라 고 부 르 는 결 과 를 생 성 합 니 다.SQL 의 일부 언어 요소 와 연산 은 조회 한 표 결과 만 처리 할 것 으로 예상 되 며,표 표현 식 과 집합 연산 등 커서 를 처리 할 수 없습니다.
3 문제
Q1:KEY
-- 1
select distinct studentName
from StudentScores
where studentName not in
(
select distinct studentName
from StudentScores
where courseGrades<=80
)
-- 2
select studentName
from StudentScores
group by studentName
having min(courseGrades)>80
Q2:KEY
DELETE DEMO_DELTE
WHERE ID
NOT IN(
SELECT min(ID)
FROM DEMO_DELTE_2
GROUP BY xuehao,XM,kcbh,kcmc,fs)
Q3:KEY
SELECT team1.TeamName,team2.TeamName
FROM Team team1,Team team2
WHERE team1.TeamName<team2.TeamName
Q4:KEY제2 장 분석 참조.
참고 문헌
【01】Microsoft SqlServer 2008 기술 내막:T-SQL 언어 기초
[02]Microsoft SqlServer 2008 기술 내막:T-SQL 조회
[03]프로그래머 의 SQL 고전
PS:코드 를 공유 해 드 리 겠 습 니 다.
sqlserver
// select name from sysobjects where xtype='u'
select * from sys.tables//
SELECT a.name, b.rows
FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.id
WHERE (a.type = 'u') AND (b.indid IN (0, 1))
ORDER BY a.name,b.rows DESC
// \
select
object_name(id) tablename,
8*reserved/1024 reserved,
rtrim(8*dpages)+'kb' used,
8*(reserved-dpages)/1024 unused,
8*dpages/1024-rows/1024*minlen/1024 free,
rows
--,*
from sysindexes
where indid=1
order by tablename,reserved desc
총결산위 에서 말 한 것 은 편집장 이 여러분 에 게 소개 한 SqlServer 폼 조회 문제 와 해결 방법 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.편집장 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SQL 프로 세 스 잠 금 해결 방법sp_who active sp_who2 ======================================== 1:sp_who sp_who2 2: Select * from sysprocesses where bloc...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.