ㅁ 알아야 할 명령어
DESC 테이블명; 테의블 정의 보기
SELECT
SELECT * FROM 테이블명 WHERE 필드='조건' AND 필드2='조건2'
SELECT 필드1, 필드2, 필드3 FROM 테이블명
SELECT * FROM TAB; 존재하는 모든 테이블 보기
SELECT DISTINCT 필드1 FROM 테이블명; 중복제거하기
SELECT 필드1 FROM 테이블 WHERE 필드2 BETWEEN 00 AND 00; //00부터 00사이에서
SELECT 필드1 FROM 테이블 WHERE 필드2 IN (00, 00); //00과 00중에서
SELECT 필드1 FROM 테이블 WHERE 필드2 LIKE '%단어%';
SELECT 필드1 FROM 테이블 WHERE 필드2 IS NULL; or NoT IS NULL
UPDATE
UPDATE 테이블명 SET 필드='값', 필드2='값', 필드3='값' WHERE 필드 LIKE '조건'
INSERT
INSERT INTO 테이블명(필드1, 필드2) VALUES ('값', '값' );
비교연산자 : >, >=, <, <=, =, <>(not equal)
DROP TABLE 테이블명;
CREATE TABLE 테이블명 (
필드명 타입 조건,
id varchar2(15) primary key,
pass varchar(15) not null,
no number(5)
)
Null값 처리하기 : SELECT isNULL(필드, '0') FROM 테이블
방금 인서트한 자동증가값 ID 가져오기 : SELECT @@IDENTITY (현재 세션에서만 사용가능)
현재 테이블의 가장큰 큰큰값 가져오기 : SELECT IDENT_CURRENT('테이블명')
수행된 SQL문에 의해 영향받은 행의 수 : SELECT @@ROWCOUNT
테이블 정보보기 : EXEC sp_help 테이블
컬럼 정보보기 : EXEC sp_columns 테이블
주석 : -- or /* */
변수의 선언 : DECLARE @변수명 자료형, @변수명 자료형
변수 할당 : SET @변수명 = 값
변수값 가져오기 : SELECT @변수명
일부분만 가져오기 : SELECT TOP 5 컬럼 FROM 테이블
범위정하기 : SELECT 컬럼 FROM 테이블 WHERE 컬럼 BETWEEN 10 AND 20
SELECT 컬럼 FROM 테이블 WHERE 컬럼 IN ('aaa', 'bbb', 'ccc')
패턴매칭 : SELECT 컬럼 FROM 테이블 WHERE 컬럼 LIKE '%제목%"
_ : 어떤것이든 한 문자
% : 없거나 아무 글자오거나
[] : []안에 있는 글자들 - [b-f]
[^] : ^다름에 있는 글자를 제외한 다른 것
중복제거 : SELECT DISTINCT 컬럼 FROM 테이블
GROUP BY : SELECT 컬럼1, sum(컬럼2) FROM 테이블 WHERE 조건 GROUP BY 컬럼1 HAVING sum(컬럼2) >= 30
(계산함수가 반드시 있어야 한다, GROUP BY ALL을 사용하면 WHERE제외된것 도 포함)
이너조인 : SELECT 컬럼 FROM 테이블 INNER JOIN 테이블 ON 컬럼=컬럼
아웃터조인 : SELECT 컬럼 FROM 테이블 LEFT OUTER JOIN 테이블 ON 컬럼=컬럼
(어느한쪽의 데이터를 모두 가져온다.)
컬럼 추가 : ALTER TABLE 테이블명 ADD 새컬럼 VARCHAR(10) NULL
컬럼 변경 : ALTER TABLE 테이블명 ALTER COLUMN 컬럼 VARCHAR(10) NULL
컬럼 삭제 : ALTER TABLE 테이블병 DROP COLUMN 컬럼
삭제 : DELETE FROM 테이블명 WHERE 조건
업데이트 : UPDATE 테이블 SET 컬럼 = 값 WHRER 조건
트랜잭션 : BEGIN TRAN
ROLLBACK
COMMIT
UNION : SELECT 컬럼1, 컬럼2 FROM 테이블
UNION
SELECT 컬럼1, 컬럼2 FROM 테이블
(UNION은 컬럼의 자료형과 순서가 맞아야 한다. 중복데이터는 제거되며 UNION ALL을 하면 중복데이터도 가져온다.)
↑ 두 개의 쿼리 결과를 합쳐 주는 역할을 한다.
IN : SELECT * FROM Customers
WHERE City IN ('Paris','London'); 와 같은 형태로 사용 가능EXISTS : SELECT 컬럼1 FROM 테이블 WHERE EXISTS ( SELECT * FROM 테이블 WHERE 조건 )
(EXISTS는 하위쿼리가 어떤 결과라도 돌려지면 참)
커서생성 : DECLARE 커서이름 CURSOR FOR SELECT 컬럼명 FROM 테이블이름
커서열기 : OPEN 커서이름
커서닫기 : CLOSE 커서이름
커서해제 : DEALLOCATE 커서이름
커서로부터 행을 가져오거나 검색한다 :
FETCH
[[NEXT | PRIOR | FIRST | LAST | ABSOLUTE {n | @nvar} |
RELATIVE {n | @nvar}]
FROM] cursor_name
[INTO @variable_name1, @variable_name2,...]
- SCROLL 옵션이 지정되지 않은 경우에는 NEXT만이 가능하다.
@@FETCH_STATUS = 0 : 행을 에러없이 뽑았다면, @@FETCH_STATUS는 0을 반환
↓ MsSql 명령어
begin tran : 트랜잭션을 시작함 (MS-SQL 의 명령어인데 다른 언어는 확인해보야아 한다. )
rollback tran : 수정이 잘못되었으면 다시 돌림
commit tran : 작업 완료 승인. 이후에는 돌이킬 수 없다.
ㅁ 추가로 숙지해야 할 사항 및 공부해야 할 것
- SELECT에 왠만하면 * 는 사용하지 않는다.
- WHERE절에서 연산자의 왼쪽은 가동하지 않는다. 컬럼을 가공하면 색인을 사용할 수 없다.
! WHERE 컬럼 * 3 < 10 말고 WHERE 컬럼 < 10 / 3 을 사용하자