SQL프로그래밍 수업 정리

김두나·2023년 11월 3일
0

학교수업정리

목록 보기
5/5

1. 메모리 테이블

-기본개념 ::

  • 메모리 엑세스테 최적화된 테이블(memory-optimiszed)은 SQL-Server 2014에서 처음 지원되었고, 버전이 올라가면서 그 기능이 더욱 개선되고 향상됨
  • 메모리 테이블은 디스크가 아닌 메모리 테이블이 존재함
  • 테이블에 읽기, 쓰기 속도가 획기적으로 향상됨
  • 메모리 테이블의 보조 복사본이 디스크에서도 유지 관리됨

2. 스키마

  • 데이터 베이스 내에 있는 개체들을 관리하는 묶음
    -스키마 이름을 생략하면 자동으로 디폴트 스키마인 dbo를 자동으로 붙여줌
    -사용자가 직접 스키마를 생성하고 지정할 수 있음

:: 구문 형식

  • 데이터비이스이름.스키마이름.개체_이름

ex)CREATE SCHEMA buySchema;

->create table userSchema.userTBL(id int);
create table buySchema.buyTBL(id int);
위 처럼 테이블을 생성하면, 조회할때
select * from userSchema.userTBL;
테이블 이름 앞에 스키마를 붙여야 조회가 됨.

3. 뷰

  • SELECT 문으로 구성된 데이터베이스 개체
  • 가상의 테이블(생성한 후에는 테이블과 동일하게 취급)

:: 구문형식

CREATE VIEW [뷰 이름]
AS
SELECT [조회될 컬럼명] FROM[조회할 테이블이름]
::뷰의 장점
1) 보안에 도움이 됨(보여주고 싶은 쿼리만 묶어서 사용할 수 있음 )
2) 복잡한 쿼리를 단순화 시킬 수 있음

ex)
CREATE VIEW v_userbuyTBL
AS
SELECT U.userID AS [USER ID], U.name AS[USER NAME], B.prodName AS[PRODUCT NAME],
U.addr,U.mobile + U.mobile2 AS[MOBIL PHONE]
FROM userTBL U
INNER JOIN buyTBL B
ON U.userID = B.userID;
->
SELECT [USER ID], [USER NAME] FROM v_userbuyTBL;
-->> 뷰도 일반 테이블처럼 사용가능

뷰 수정 :: ALTER VIEW 사용

ALTER VIEW v_userbuyTBL
AS
SELECT U.userID AS[사용자 아이디], U.name AS [이름], B.prodName AS [제품 이름],
U.addr, U.mobile + u.mobile2 AS [전화 번호]
FROM userTBL U
INNER JOIN buyTBL B
ON U.userID = B.userID;

뷰 삭제 :: DROP VIEW 사용

DROP VIEW v_userbuyTBL;

뷰를 통해 본 table수정가능::

UPDATE v_userTBL SET addr = '부산' WHERE userID ='JKW';
=>> 하지만 SUM()이나 GROUP BY, ORDER BY절 등 의 함수를 사용해서 뷰테이블을 생성했을 시에는 수정이 불가능하다

뷰를통해 INSERT문도 사용 가능하지만 ,

만얀 본 테이블에 NULL이 허용되지 않는 열이 있고, 뷰에 그 열이 포함되어 있지않으면 생성이 불가능 하기때문에 오류가 생김

INSERT INTO v_userTBL(userID, name, addr) VALUES('KBM','김병만','충북');
->
메시지 515, 수준 16, 상태 2, 줄 40
테이블 'sqlDB.dbo.userTBL', 열 'birthYear'에 NULL 값을 삽입할 수 없습니다. 열에는 NULL을 사용할 수 없습니다. INSERT이(가) 실패했습니다.
문이 종료되었습니다.

EXEC sp_depends [테이블이름]

만약 뷰 테이블이 참조하는 테이블이 삭제가 되면 뷰 테이블도 사용이 불가능.
그렇기 때문에 테이블을 살제하기 전, 삭제할 테이블을 참좋하고 있는 뷰테이블이 있는지 확인을 한 후 삭제 해야함.
그때 사용하는 것이 'EXEC sp_depends'

0개의 댓글