7일 차: 데이터 과학을 위한 고급 SQL
지금까지 이것은 SQL을 발전시키기 위한 기초 여행의 7번째 블로그입니다. 처음부터 SQL을 배우기 위해 이전 블로그를 참조할 수 있습니다. 이 블로그에는 뷰, 함수 및 저장 프로시저에 대한 좋은 지식이 포함되어 있습니다.
견해
보기는 실제로 SQL 문에 대한 결과 집합으로 가상 테이블 기반 접근 방식입니다. 여러 테이블이 있을 수 있습니다. 즉, 단일 쿼리에서 조인할 수 있는 최대 테이블 소스 수는 256개 입니다 .
뷰는 데이터베이스의 테이블과 마찬가지로 행과 열을 포함하며 뷰의 필드는 하나 이상의 테이블의 필드입니다.
조회수가 왜 필요한가요??
뷰는 테이블의 이름을 캡슐화하기 때문에 보안 목적으로 사용됩니다 . 데이터는 영구적으로 저장되지 않고 가상 테이블에 있습니다. 보기에는 선택한 데이터만 표시되지만 데이터가 필요합니다.
뷰에서 Joins/function/sql 절을 사용할 수 있습니다.
보기를 만들기 위한 구문:
CREATE VIEW view_name AS
SELECT column1 , column2 , … FROM table_name WHERE 조건 ;
Create View Salesman_info
As
select s.salesmanid,s.city, count(customerid) no_of_sales from salesman s
left join customer c on c.salesmanid = s.salesmanid
group by 1;
보기를 업데이트하는 구문:
CREATE OR REPLACE VIEW view_name AS
SELECT column1 , column2 , … FROM table_name WHERE 조건 ;
보기 삭제 구문:
드롭 뷰 view_name ;
보기는 여러 가지 이점을 제공합니다.
- 뷰는 복잡성을 숨길 수 있습니다.
- 보기는 보안 메커니즘으로 사용할 수 있습니다.
- 보기는 레거시 코드 지원을 단순화할 수 있습니다.
내장 함수 : 필요에 따라 데이터에 액세스하거나 데이터를 조작할 수 있는 내장 함수가 많이 있습니다. 일부 함수는 문자열 함수, 수학/숫자 함수, 날짜 함수, 고급 함수 또는 집계 함수입니다.
사용자 정의 함수 : SQL을 사용하면 사용자가 정확한 요구 사항에 따라 사용자 정의 함수를 만들 수 있습니다.
사용자 정의 함수에는 세 가지 유형이 있습니다.
- 스칼라 함수는 즉 단일 값을 반환합니다.
- 테이블 값 함수, 즉 테이블 세트를 반환합니다.
- 다중 테이블 값 함수, 즉 테이블 집합을 반환합니다.
여기에서는 MYSQL의 생년월일을 사용하여 나이를 계산하는 함수를 만들었습니다.
DELIMITER $$
CREATE FUNCTION Calculate_Age
(
DOB date
)
RETURNS INT DETERMINISTIC
BEGIN
RETURN YEAR(CURRENT_DATE()) - YEAR(DOB);
END$$
DELIMITER ;
Query :::: SELECT Calculate_Age(‘1988–02–29’) as DOB;
저장 프로시저 : 저장 프로시저는 저장할 수 있는 준비된 SQL 코드이므로 코드를 반복해서 재사용할 수 있습니다. 따라서 반복해서 작성하는 SQL 쿼리가 있는 경우 저장 프로시저로 저장한 다음 호출하여 실행하면 됩니다.
저장 프로시저 구문:
CREATE PROCEDURE procedure_name
AS
sql_statement
GO;
저장 프로시저 실행
EXEC 절차 이름 ;
함수가 아닌 저장 프로시저를 사용하는 이유는 무엇입니까?
- 저장 프로시저는 0, 단일 및 다중 값을 반환할 수 있습니다.
- 저장 프로시저는 여러 SQL 쿼리를 사용하여 필요에 따라 테이블의 데이터 집합을 반환할 수도 있습니다.
- 저장 프로시저에서 함수를 호출할 수 있습니다.
- 저장 프로시저는 입력/출력 값과 매개변수를 가질 수 있습니다.
- SP와 함께 select/where/have 문을 사용할 수 없습니다.
- 저장 프로시저에서 삽입/업데이트/삭제 및 선택을 사용할 수 있습니다.
- SQL 저장 프로시저는 동적 SQL을 실행할 수 있습니다.
DELIMITER $$
CREATE PROCEDURE Proc_Saleman_Info_Data()
BEGIN
## Type 1
select s.salesmanid,s.city, count(customerid) no_of_sales from salesman s
left join customer c on c.salesmanid = s.salesmanid
group by 1;
## Type 2
insert into salesman
values(5008,'Shikha rawat','India',12);
END$$
DELIMITER ;
call Proc_Saleman_Info_Data();
뷰/함수/저장 프로시저에 대한 인기 있는 인터뷰 질문입니다.
질문1: 보기란 무엇입니까?
Ques2: 뷰에서 사용할 수 있는 테이블은 몇 개입니까?
질문3: 함수와 저장 프로시저의 차이점은 무엇입니까?
읽어주셔서 감사하고 마음에 드셨다면 박수 치는 것도 잊지 마세요!
좋은 하루 되세요!.
=============================끝===================== =======
GitHub: 7일 차 세션
Git Hub에서 별점을 주세요!!
참조 :
- https://www.w3schools.com/sql/default.asp
- https://www.geeksforgeeks.org/
더 많은 데이터 과학 관련 게시물을 보려면 저를 팔로우하세요 !
링크드인 에서 연결하자 !

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































