SELECT INTO
https://www.w3schools.com/sql/sql_select_into.asp
SELECT INTO 구문은 하나의 테이블에서 새로운 테이블로 데이터를 카피 시킨다.
모든 열을 새로운 테이블에 카피하는 쿼리문은
몇몇 열을 새로운 테이블에 카피하는 쿼리문은
과 같다.
INSERT INTO SELECT
https://www.w3schools.com/sql/sql_insert_into_select.asp
INSERT INTO 구문은 하나의 테이블의 데이터를 다른 테이블로 삽입해준다.
INSERT INTO SELECT는 데이타 타입의 형식을 맞추는걸 요구한다.
모든 열의 데이터를 다른 테이블로 복사하기 위해서는
몇 컬럼만 다른 테이블로 복사하기 위해서는
를 이용한다.
Suppliers 테이블에서 SupplierName, City, Country를 뽑아 Customers 테이블에 삽입한다.
Suppliers 테이블에서 Country가 Germany인 SupplierName, City, Country를 뽑아 Customers 테이블에 삽입한다.
ISNULL
https://www.w3schools.com/sql/sql_isnull.asp
NULL일때 대체하기 위한 SQL 함수가 있다.
MYSQL에서는 IFNULL, COALESCE를 이용한다.
IFNULL(필드값, NULL일때 대체 값)
IFNULL을 이용하면 해당 필드의 값이 NULL일때 대체 값으로 바꿔준다.
COALESCE(필드값, NULL일때 대체 값)
IFNULL과 마찬가지다.
SQL Server에서는 ISNULL()을 이용한다. 위의 방법과 마찬가지다.
Stored PROCEDURES
https://www.w3schools.com/sql/sql_stored_procedures.asp
PROCEDURE는 코드 재사용을 위해 만들어 놓은 구문이다.
즉 클래스 같은 개념이고 아래와 같이 이용한다.
PROCEDURE 구문 저장
PROCEDURE 구문 실행
로 저장하고
를 시작하면 Customers의 모든 필드값이 나타날 것이다.
Mysql Procedure 프로시저 개념
sql의 프로시저를 한마디로 표현하면 함수라고 표현 할 수 있다.
하지만 우리가 일반적으로 프로그래밍에 쓰이는 함수와는 달리 여러 row를 리턴시킬 수 있다는 차이점이 있다.
장점 :
- 프로시저를 수정하기 전까지 쿼리문이 보호된다.
- SQL 인젝션에서 보호된다.
- 여러 쿼리문을 한번씩 보내지 않아도 되고 한번에 쿼리문을 묶어 보낼 수 있기 때문에 일괄 작업에 유용하다
- IF, ELSE, WHILE 등 절차적 기능을 이용 할 수 있다.
- SQL문을 쿼리로 저장하면 동적인 쿼리 생성이 가능하다.
단점 :
- 수정 후 쿼리 결과를 확인하기가 까다롭기에 디버깅이 어렵다.
- 디버깅이 어렵기에 유지보수가 어렵기도 하다.
- 길고 복잡한 쿼리에서는 좋지만 짧은 쿼리문에서는 불필요하다.(비효율적이다)
- 다른 DBMS보다는 성능 처리가 떨어진다.
'Applied > Database' 카테고리의 다른 글
데이터베이스 키 개념, 기본키, 외래키 (0) | 2018.08.22 |
---|---|
데이터베이스 CREATE / DROP / ALTER DB, TABLE (0) | 2018.08.20 |
데이터베이스 UNION, GROUP BY, HAVING, EXISTS, ANY, ALL (0) | 2018.08.16 |
데이터베이스 JOIN ( INNER, LEFT, RIGHT, FULL, SELF ) (0) | 2018.08.14 |
데이터베이스 IN, BETWEEN, ALIAS (0) | 2018.08.12 |