MSSQM 기본문법
SQL문은 대소문자를 구분하지 않는다
단.데이타는 대문자와 소문자를 구분함
주석 처리는 /* .... */ 또는 한줄 -- 사용
SYSOBJECTS 테이블 => 데이타베이스의 모든 정보가 보관됨
SYSOBJECTS의 TYPE 칼럼으로
'U'=사용자 테이블
'P'=저장 프로시저
'K'=프라이머리 키
'F'=포린 키
'V'=뷰
'C'=체크 제약 등
오브젝트 이름과 정보를 알 수 있다
데이타 검색
/* USE 문을 사용한 데이타베이스 선택 */
USE 데이타베이스명
/* 모든 칼럼 불러오기 */
SELECT * FROM 데이블명
/* 상위 n개의 데이타만 가져오기 */
SELECT TOP n * FROM 테이블명
/* 특정 칼럼 가져오기 */
SELECT 칼럼1, 칼럼2, 칼럼3 FROM 테이블명
/* 칼럼에 별명 붙이기 */
SELECT 칼럼1 별명1, 칼럼2 AS 별명2 FROM 테이블명
/* 칼럼 별명에 스페이스가 들어갈 경우는 작은따옴표 사용 */
SELECT 칼럼3 '별 명3' FROM 테이블명
/* 중복되지 않는 데이타만 가져오기 */
SELECT DISTINCT 칼럼 FROM 테이블명
/* 데이타는 오름차순으로 재배열되며 DISTINCT를
사용하면 재배열이 될때까지 데이타가 리턴되지 않으므로 수행 속도에 영향을 미친다 */
/* 조건에 해당하는 데이타 가져오기 */
SELECT * FROM 테이블명 WHERE 조건절
** 조건식 >> 칼럼=값, 칼럼!=값, 칼럼>값, 칼럼>=값, 칼럼<값, 칼럼<=값
** 문자열 ''(작은따옴표) 사용
** 날짜 비교 >> 'yy-mm-dd' 형식. 예>>(날짜='1992-02-02', 날짜>'1992-02-02')
/* 칼럼이 x>=와 y<=사이의 데이타 가져오기 */
SELECT * FROM 테이블명 WHERE 칼럼 BETWEEN x AND y
/* 칼럼이 a이거나 b인 데이타 가져오기 */
SELECT * FROM 테이블명 WHERE 칼럼 IN (a, b...)
/* 칼럼이 패턴과 같은 데이타 가져오기 */
SELECT * FROM 테이블명 WHERE 칼럼 LIKE '패턴'
** 패턴에 사용되는 기호는 %, _가 있다
'k%'(k로 시작되는), '%k%'(중간에 k가 있는), '%k'(k로 끝나는)
'p_'(p로 시작하는 2자리), 'p___'(p로 시작하는 4자리), '__p'(3자리 데이타중 p로 끝나는)
Like
/* 칼럼이 NULL인 데이타 가져오기 */
SELECT * FROM 테이블명 WHERE 칼럼 IS NULL
/* 칼럼이 x와 y 사이가 아닌 데이타 가져오기 */
SELECT * FROM 테이블명 WHERE 칼럼 NOT BETWEEN x AND y
/* 칼럼이 a나 b가 아닌 데이타 가져오기 */
SELECT * FROM 테이블명 WHERE 칼럼 NOT IN (a, b...)
/* 칼럼이 패턴과 같지 않은 데이타 가져오기 */
SELECT * FROM 테이블명 WHERE 칼럼 NOT LIKE '패턴'
/* 칼럼이 NULL이 아닌 데이타 가져오기 */
SELECT * FROM 테이블명 WHERE 칼럼 IS NOT NULL
SELECT * FROM 테이블명 WHERE 칼럼>=x AND 칼럼<=y
SELECT * FROM 테이블명 WHERE 칼럼=a or 칼럼=b
SELECT * FROM 데이블명 WHERE 칼럼1>=x AND (칼럼2=a OR 칼럼2=b)
/*복수 조건을 연결하는 연산자는 AND와 OR가 있다
AND와 OR의 우선순위는 AND가 OR보다 높은데 우선 순위를 바꾸고 싶다면 ()을 사용*/
/* 칼럼을 오름차순으로 재배열하기 */
SELECT * FROM 테이블명 ORDER BY 칼럼
SELECT * FROM 테이블명 ORDER BY 칼럼 ASC
SELECT * FROM 테이블명 ORDER BY 칼럼 DESC --내림차순
SELECT * FROM 테이블명 ORDER BY 칼럼1 ASC, 칼럼2 DESC --복수 칼럼 재배열하기
SELECT * FROM 테이블명 ORDER BY 1 ASC, DESC 3 /--칼럼 순서로 재배열하기
/* 기본적으로 SELECT 문에서는 출력순서가 보증되지 않기 때문에
데이타의 등록 상태나 서버의 부하 상태에 따라 출력되는 순서가 달라질 수 있다
따라서 출력하는 경우 되도록이면 ORDER BY를 지정 */
연산자
** 1순위는 수치 앞에 기술되는 + - 같은 단항 연산자
2순위는 사칙 연산의 산술 연산자인 * / + -
3순위는 = > 비교 연산자
4순위는 AND OR 같은 논리 연산자
()을 붙이면 우선 순위를 바꿀수 있다
1. SELECT 문의 연산
SELECT 칼럼1, 칼럼2, 칼럼3+칼럼4 AS '별명' FROM 테이블명
2. ORDER BY 구의 연산
SELECT 칼럼1, 칼럼2, 칼럼3+칼럼4 AS '별명' FROM 테이블명 ORDER BY 칼럼3+칼럼4 DESC
SELECT 칼럼1, 칼럼2, 칼럼3+칼럼4 AS '별명' FROM 테이블명 ORDER BY 3 DESC
3. WHERE 구의 연산
SELECT 칼럼1, 칼럼2, 칼럼3+칼럼4 AS '별명' FROM 테이블명 WHERE 칼럼2>=(칼럼3+칼럼4)
4. NULL 연산
SELECT 칼럼1, 칼럼2, ISNULL(칼럼3, 0) + ISNULL(칼럼4, 0) AS '별명' FROM 테이블명
** 수치형 데이타와 NULL값과의 연산 결과는 항상 NULL이다
만약 NULL 값을 원치 않으면 ISNULL(칼럼, 기준값) 함수를 사용해서 기준값을 변환시킨다
5. 날짜 연산
SELECT GETDATE() /* 서버의 현재 날짜를 구한다 */
SELECT 날짜칼럼, 날짜칼럼-7 FROM 테이블명
SELECT 날짜칼럼, 날짜칼럼+30 FROM 테이블명
SELECT 날짜칼럼, DATEDIFF(day, 날짜칼럼, GETDATE()) FROM 테이블명
** 날짜의 가산과 감산은 + -로 할 수 있다
날짜와 날짜 사이의 계산은 DATEDIFF(돌려주는값, 시작날짜, 끝날짜) 함수를 사용한다
6. 문자 연산
SELECT 칼럼1 + 칼럼2 FROM 테이블명
SELECT 칼럼 + '문자열' FROM 테이블명
SELECT 칼럼1 + '문자열' + 칼럼2 FROM 테이블명
** 기본 연결은 문자와 문자이고 문자와 숫자의 연결은 CONVERT 함수를 사용해야 한다
'데이터베이스 > MS-SQL' 카테고리의 다른 글
[공통] 테이블데이타 오류시 복구 (0) | 2022.12.28 |
---|---|
[SQL2005] 로그파일재생성 (0) | 2022.12.27 |
MSSQL 인덱스란? (1) | 2022.12.23 |
MS-SQL 트리거 (0) | 2022.12.22 |
MSSQL HASHBYTES (0) | 2022.12.21 |
댓글