SQL_JOIN
Posted 2016. 8. 31. 15:27
출:http://rapapa.net/?p=311
- Filed under : DB
마소의 MS SQL
오라클의 Oracle
IBM의 DB2
썬 마이크로시스템의 MySql ( 구글, 야후, 유투브에서도 쓴다네잉.. )
볼랜드의 InterBase
전부되거나 둘다 안되거나.
즉, 하나만 되고 하나는 안되는것을 허용할수 없다.
사용
BEGIN TRAN
SQL..문..
COMMIT TRAN( 또는 COMMIT WORK: 이건 가장 가까운 트랜잭션이 커밋됨 )
길어지면 저장 하고 싶은 위치에서 SAVE TRAN 하면됨
이거 나중에 유저간 거래할때 사용하자..☆
DELETE FROM ACCOUNT WHERE id = @tmpID
이 작업이 성공인지 실패인지 알아보자
TRY로 감싸주고
CATCH로 알아보고
끝
BEGIN TRY
DELETE
FROM ACCOUNT
WHERE id = @pID
END TRY
BEGIN CATCH
BEGIN
RETURN 1;
END
END CATCH
간단함
실패하면 CATCH안에서 실패시 코드넣어주면됨
에러 실제값 의미
SQL_SUCCESS 0 함수 호출이 성공
SQL_SUCCESS_WITH_INFO 1 함수호출은 성공했으나 경고가 발생, 경우에 따라 무시할수도 있고 그렇지 않을수도 있음
SQL_ERROR -1 일반적인 에러이다
SQL_INVALID_HANDLE -2 핸들이 무효하다, 이건 100%코드를 잘못 사용하였기 때문이다. 반드시 수정
SQL_NO_DATA 100 더이상 읽어올 데이터가 없다. 모든 레코드를 다 읽은 EOF상황이다
SQL_NEED_DATA 99 추가적인 정보가 필요하다. 실행중에 더 많은 필요한 파라미터 데이터를 보내야 하는 경우다
SQL_STILL_EXECUTING 2 함수가 비동기적으로 실행되었고 아직 실행중이다
SQLSTATE
01000 일반적인 에러
01004 문자열의 오른쪽이 잘렸다. 바인딩된 버퍼으 ㅣ길이가 짧다
01S02 옵션이 변경되었다
22003 숫자의 범위가 넘었다
42000 문법에러 또는 액세스 위반
42S02 테이블 또는 뷰가 존재하지 않는다
HY000 일반적인 에러
HYC00 옵션으로 제공되는 기능이 구현되지 않았음
HYT00 제한시간 초과
내장 프로시저( Store Procedure )
일반 SQL 구문의 경우 실행 할때마다 언제나 파싱, 개체,보안확인,컴파일을 반복하게 된다.
처음 실행할때
반복 실행시 처음 실행할떄의 실행 계획이 캐쉬에 있다면 이를 가져와 실행
하지만 내장프로시저는 처음에만 단 한번 그작업을 수행하고 그에 대한 모든 사항을 캐쉬에 올려놓게 된다.
내장프로시저를 사용할 경우 모든 SQL문은 프로시저 내부로 숨어있기에 프로시저 이름만 노출되 보안에 용이.
=> 미리 컴파일된 함수. 그로인해 속도가 빠르다.
장점 :
즉, 해석, 실행계획, 컴파일 과정이 생략되면서 성능이 향상됨.
SQL쿼리문 이란..
데이터 베이스에 저장된 값을 불러내는 방법.
SQL 은 Standard Query Language의 약자이고 절차적인 언어라는 뜻.
절차적이란. 프로그램이 서술된 순서대로 실행된다는 뜻.
비절차적으론 JAVA나 다른 객체지향적인 언어들. 즉 순서대로 실행되지 않음.
SQL문의 종류는 크게 3가지.
DDL( Data Definition Language )
데이터를 정의하는 명령어
create, truncate 등이 여기에 속함
DML( Data Manipulation Language )
데이터를 조작하는 명령어
insert, delete, update 등이 여기에 속함
DCL( Data Control Language )
데이터를 통제하는것. 데이터에 대한 권한이나 시스템에 관한 명령어들을 뜻함
grannt, commit 등
DDL( Data Definition Language )
DDL은 데이터 베이스의 문장의 집단을 의미한다.
각 문장은 CREATE, ALTER, DROP, TRUCATE, GRANT, REVOKE, COMMENT 등으로 시작한다.
등을 수행하는 문장의 집단을 의미한다.
DML( Data Manipulation Language )
DML은 스키마 객체의
하는 작업의 집단.
즉, 각 문장은 INSERT, UPDATE, DELETE, SELECT, LOCK TABLE, EXPLAIN PLAN, CALL등으로 시작된다.
오라클( PL/SQL )의 모듈에서 사용할수 없는 DML로는 EXPLAIN PLAN과 CALL이 있다.
DCL( Data Control Language )
DCL : 트랜젝션의 성격을 제어하는 것으로서 SET TRANSACTION, COMMIT, ROLLBACK, SAVEPOINT 같은 종류가있다.
TRANSACTION : 거래함에 있어서 거래하는 양측이 다 원하는 결과물을 얻어 정상적으로 처리되는것
ROLLBACK : 그렇지 않다면 거래자체가 무산되어 원점으로 되돌려 지는것
COMMIT : 정상처리되어 확정한다는 것. 커밋하면 트랜잭션의 처리과정이 모두 반영되며 하나의 트랜잭션
과정이 끝나게됨.
오라클( PL / SQL ) 모듈에서는 DCL을 사용할수있고 DCL을 이용하여 모듈의 트랜잭션을 제어할수 있다.
Data : 자료
Table : 표 형식으로의 Data 묶음
Database : Table의 집합( DB )
DBMS : Database Management System( DB를 관리하는 소프트 웨어 )
record : 테이블의 행
field or clumn : 테이블의 열
Data type : 각 field 에 들어갈 데이터의 형식
Primary key : record를 식별하기 귀한 비어있지 않은 유일한 값
Foreign key : 다른 테이블의 Primary Key와 대응되는 필드
SQL : Standard Query Language. 구조화된 질의 언어
DB에서 정보를 생성, 혹은 갱싱하여 사용할수 있도록 정의된 표준 언어
ID는 중복되어선 안된. 사용자 ID 정보를 관리하는 Table에서 ID 라는 데이터는 모두 유효해야만 하여 유일해야 한다 -> Primary key
Foreign Key : 두개의 테이블을 연결시켜주는 필드. 수강신청 싸이트에서 과목을 선택하려 해도 ID가 없다면 수강신청을 할수없다. 이 경우 ID가 학생정보를 저장하는 테이블과 수강신청 관리 테이블 사이의 Foreign key가 될것이다.