SQL 명령 습득(섹션 2)
3550 단어 programmingsqlwebdevdatabase
이전 글에서 나는 전형적인 데이터베이스 조회를 형성하는 데 쓰이는 자구와 동사를 포함한 SQL의 기초 지식을 토론했다.나는 기본적인 데이터베이스 조작을 설명하기 위해 가상의 도서 재고 데이터베이스를 만들었다.그러나 오늘 우리는 더욱 복잡한 데이터베이스 조회 형식을 토론할 것이다.
가상 데이터베이스 BookInventory를 도입합니다.만약 네가 기억하고 있다면, 그것은 네 개의 표가 있다. 그것이 바로 이름, 판본, 새 책, 중고책이다.현재, 우리는 이전에 이 데이터베이스에 대한 조작을 한 번에 한 테이블에서 검색하고, 추가하거나, 삭제해야 했다.그러나 두 개 이상의 테이블에서 관련 기록을 동시에 검색하려면 어떻게 해야 합니까?이것은 내부 연결이 방정식에 들어갈 때다.
내부 연결
내부 연결을 사용하면 두 개 이상의 테이블을 얻을 수 있으며, 줄마다 공통 공유 값 (공통 키) 을 기반으로 줄을 조합할 수 있습니다.SELECT 질의에서 내부 조인을 수행할 때는 연결할 테이블을 지정하기만 하면 됩니다.
FROM 자구를 넣고 공통 열을 나타냅니다.이것은 이러한 질의의 일반적인 구문입니다.
SELECT [column names] FROM [table1] INNER JOIN [table2] ON [table1.column] =[table2.column]
이제 BookInventory 데이터베이스 컨텍스트에서 공용 id에 따라 새 책의 버전, 색상 및 에디션year를 검색할 수 있습니다.SELECT Editions.edition, New_Books.color, New_Books.editionyear FROM Editions
INNER JOIN New_Books ON Editions.name_id = New_Books.book_id;
릴리즈색상
차종년
첫째
빨갛다
2012
다섯째
새빨갛다
2015
여섯째
오렌지색
2018
SELECT 질의에서 목록의 각 열은 해당 열이 속한 테이블의 이름을 접두어로 사용합니다.이것은 아주 좋은 방법이다.같은 서열의 충돌을 피하는 데 도움을 주는 것은 보통 좋은 생각이다.
만약 저와 같이 공교롭게도 SQL 조회의 간결성을 좋아한다면, 이 모든 테이블 접두사를 줄일 수 있는 간단한 방법이 있습니다.FROM 자문에서 호출된 각 테이블에 대해 다음과 같은 테이블 별칭을 지정할 수 있습니다.
SELECT [column names] FROM [table1] alias1 INNER JOIN [table2] alias2 ON [alias1.column] = [alias2.column]
설명을 위해 다음을 수행합니다.SELECT e.edition, n.color, n.editionyear FROM Editions e
INNER JOIN New_Books n ON e.name_id = n.book_id;
See? Very simple!
Editions와 New Books 테이블을 연결하는 공통 키/열이 동일합니다. 즉, name id 열 또는 book id 열이 모두 있는 경우(이 경우) 다음 질의를 사용하여 동일한 작업을 수행할 수 있습니다.SELECT e.edition, n.color, n.editionyear FROM Editions e
INNER JOIN New_Books n USING (book_id);
어떤 경우, 하나의 검색에서 두 개 이상의 표를 연결해야 한다는 것을 주의하십시오.MySQL도 이 문제를 쉽게 처리할 수 있다. 당신이 원하는 순서대로 연결을 연결하는 것이다.책 inventory 데이터베이스에서 각 책과 해당 기록의 이름을 반환하려면 다음과 같이 여러 개의 연결을 사용해야 합니다.
SELECT na.name, ed.edition, n.color, n.editionyear FROM Names ma INNER JOIN
Editions ed USING (book_id) INNER JOIN New_Vehicles n USING (book_id);
이 질의를 실행할 때는 다음을 보아야 합니다.이름:
릴리즈
색상
차종년
Javascript
첫째
빨갛다
2012
PHP
다섯째
새빨갛다
2015
활용단어참조
여섯째
오렌지색
2018
외부 연결
대부분의 복잡한 링크는 내부 연결을 통해 이루어질 수 있지만, 어떤 경우에는 이루어질 수 있다
유한했어예를 들어 데이터베이스 줄이 링크의 열에 대한 값을 정의하지 않으면 내부 연결은 이 값을 무시합니다.book inventory 예시에서 내부 연결 조회표를 사용할 때마다
Editions 테이블을 연결하면 세 줄만 반환됩니다.New Books 테이블의 네 번째 책은 book id 값이 null이므로 무시됩니다.book id를 지정했는지 여부와 상관없이 모든 줄을 되돌려 주는 방법이 필요합니다. book id를 지정하면 요청한 연결을 실행합니다.이러한 작업에 대해 MySQL은 외부 연결을 제공합니다.
book inventory 예제에서 모든 새 차가 반환된 행 세트를 book id 대신 반환하려면 다음 명령을 사용할 수 있습니다.
SELECT ed.edition, n.color, n.editionyear FROM New_Books n LEFT OUTER JOIN Editions ed USING (book_id);
릴리즈색상
차종년
첫째
빨갛다
2012
무효이었어
짙은 갈색
2008
다섯째
새빨갛다
2015
여섯째
오렌지색
2018
이로써 나는 이 화제를 끝냈다.이 시리즈에 관한 세 번째 문장은 곧 발표될 것이다.그 전에 따라와, 수시로 업데이트해.
UbahThe Builder의 트위터에 팔로우 해주세요.
나중
Reference
이 문제에 관하여(SQL 명령 습득(섹션 2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ubahthebuilder/mastering-your-sql-commands-part-2-4n6c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)