SQL: 간단히 말하면, 기본부터 고급까지
데이터베이스는 데이터의 컨테이너/저장소입니다.그것들은 전자 표의 형식으로 데이터를 저장한다.많은 데이터베이스, 즉.관계형과 비관계형.뒷부분에 머무르지 말고 관계 데이터베이스를 꾸준히 사용하자.이 동영상을 보면 데이터베이스에 대한 더 많은 정보를 얻을 수 있습니다.
이 문서는 SQL 쿼리 작성에 초점을 맞출 것입니다.SQL 조회는 모든 데이터베이스에서 흔히 볼 수 있지만, 일부 스타일도 있는데, 서로 다른 데이터베이스에 따라 다를 수 있다.IBM, MySQL, PostgreSQL, Oracle 등 다양한 공급업체가 있습니다. 공급업체마다 데이터베이스와 통신할 수 있는 SQL 스타일이 있습니다.내가 건의한 것은 PostgreSQL 그것은 기원된 것이고 더욱 광범위하게 채택되었다.
관계 데이터베이스와 통신하는 주요 방식은 SQL을 통과하는 것이다.구조화된 쿼리 언어(SQL)는 데이터베이스와 통신하는 언어다.더 이상 말하지 말고 SQL을 배워봅시다.
그림 출처: The Data Labs
표는 행과 열이 있는 위의 전자 표처럼 보인다.열은 우리가 입력한 값 클래스의 제목입니다.이름으로 정의된 열은 이름만 포함하고 화폐로 정의된 열은 전체 열에 숫자를 포함할 것입니다.따라서 열은 어떤 종류의 값을 포함해야 하는지를 정의한다.행은 다른 열에서 작성된 엔트리 목록입니다.행은 스프레드시트의 항목 수를 정의합니다.
현재customer표에서 모든 열을 얻기 위해 키워드
SELECT
를 사용하고 관심 있는 열 이름을 지정합니다.우리는 *
기호를 사용하여 표에서 모든 열을 얻을 수 있다.표에 연결하려면 키워드FROM
를 사용하십시오. 키워드는 SELECT
키워드 뒤에 있습니다.SELECT * FROM customer;
customer 테이블에서 특정 열을 가져옵니다.SELECT first_name, last_name FROM customer;
스프레드시트에서는 조회 필터가 필요하므로 SQL과 유사한 필터를 사용합니다.예를 들어 "Sai"라는 전자 우편만 찾으려면 사용해야 할 키워드는 WHERE
입니다.WHERE
는 FROM
명령 이후에 사용해야 한다.SELECT email FROM customer WHERE first_name='Sai';
"Sai"성이 "Kumar"인 고객의 모든 전자메일을 얻기 위해 AND
라는 키워드를 사용했습니다. 이것은 OR
와 NOT
비슷한 논리 연산자입니다.SQL에서 logical operators에 대한 자세한 내용을 확인할 수 있습니다.SELECT email FROM customer WHERE first_name='Sai' AND last_name='Kumar';
"Sai"또는 "Kumar"이라는 이름을 가진 고객의 모든 이메일SELECT email FROM customer WHERE first_name='Sai' OR last_name='Kumar';
오름차순이나 내림차순으로 데이터를 배열하려면 ORDER BY
키워드를 사용하고 전체 표의 정렬에 근거한 열 이름을 사용하십시오.오름차순ASC
과 내림차순DESC
.기본적으로 순서를 지정하지 않으면 열을 오름차순으로 정렬합니다.ORDER BY
는 항상 검색의 끝에 나타난다.고객 ID 목록을 가져오고 거래 날짜의 오름차순으로 정렬합니다.
SELECT customer_id FROM customer ORDER BY transaction_date ASC;
고객 ID 목록을 가져오고 거래 일자 내림차순으로 정렬합니다.SELECT customer_id FROM customer ORDER BY transaction_date DESC;
우리는 또한 LIMIT
와 정수를 사용하여 제한을 지정하여 표시된 기록 수를 제한할 수 있다.처음 10개의 고객 ID 목록을 가져옵니다.
SELECT customer_id FROM customer ORDER BY transaction_date ASC LIMIT 10;
COUNT
는 열에서 사용하는 함수 형식으로 SELECT
뒤에 있어야 한다.COUNT
지정된 열의 데이터 수를 반환합니다.일반적으로 *
를 매개 변수로 COUNT
에게 전달하면 열명과 같은 결과를 되돌려준다.몇몇 연령이 50세를 넘지 않는 고객을 통계하다.
SELECT COUNT(*) FROM customer WHERE age<=50;
정규 표현식의 사용은 모든 프로그래밍 언어에서 매우 보편적이다. 예를 들어 우리는 SQL에서 정규 표현식을 사용하여 문자열과 일치한다.LIKE
와 WHERE
를 결합하여 사용하고 정규 표현식과 결합한다.%String
- String
로 끝나는 모든 단어를 가져옵니다.String%
- String
%String%
- 획득 구성그들 사이의
String
주의: LIKE
대소문자를 구분하고 앞에서 언급한 문자열만 찾습니다.ILIKE
는 문자열의 대소문자를 구분하지 않는 대체 방법으로 문자열의 대소문자와 일치할 수 있다.SELECT first_name FROM customer WHERE first_name LIKE 'P%';
모든 성씨 중간에'siva'가 있는 고객이 대소문자를 구분하지 못하도록 하기 위해서다.SELECT * FROM customer WHERE last_name ILIKE '%siva%';
표의 항목에 때때로 중복된 데이터가 있을 수 있습니다.유일한 데이터를 필터하기 위해 DISTINCT
를 사용했습니다.DISTINCT
는 열에만 적용되고 SELECT
뒤에 위치하며 심지어 COUNT
함수의 매개 변수로도 사용된다.고객의 다양한 지역에서 온 수량을 얻습니다.
SELECT COUNT(DISTINCT area) FROM customer;
고객의 다양한 영역을 파악합니다.SELECT DISTINCT area FROM customer;
IN
열과 비교할 항목 목록을 지정합니다.예를 들어, 열이 (Orange, Mango, Banana) 및 함수 필터로 구성되어 있는지 확인하고 Orange, Mango 및 Banana가 있는 항목만 표시할 수 있습니다.Pincode "82"영역에 있는 60~70세 그룹의 고객 수를 확보합니다.
SELECT COUNT(*) FROM customer WHERE pincode IN(82) and age BETWEEN 60 AND 70;
모여들다
집합은 한데 모인 사물을 가리킨다.마찬가지로 SQL의 집합은 데이터를 같은 질적 분류에 모아 그룹화한다.예를 들어,
모든 고객의 거래 총수를 얻다.
SELECT customer_id, COUNT(transaction_date) FROM customer GROUP BY customer_id;
여기COUNT
는 고객 id와 관련된transaction date열에서 실행되는 집합 함수입니다. 따라서 모든 고객 id에 하나의 그룹을 구성하여 이 그룹에서 거래 수량의 일치 계수를 얻을 수 있습니다.일반COUNT
은 거래 총수를 생성하고 GROUP BY
customer id와 집합을 통해 단일customer id와 그에 상응하는 거래 계수를 포함하는 표를 생성합니다.GROUP BY
는 시종SELECT
표준에서 언급한 열명을 가지고 집합함수를 제외해야 한다.고객이 구매에 쓴 평균 금액을 얻다.
SELECT customer_id, AVG(amount) from customer GROUP BY customer_id;
계산된 평균치의 반올림 값을 얻다.SELECT customer_id, round(AVG(amount),2) from customer GROUP BY customer_id;
합계(금액)를 내림차순으로 정렬하여 열 줄만 표시합니다.SELECT customer_id, SUM(amount) FROM customer GROUP BY customer_id ORDER BY SUM(amount) DESC LIMIT 10;
집합 함수에 WHERE
조건을 사용할 수 없습니다. 이것이 바로 우리가 HAVING
이후에 GROUP BY
조건을 사용하고 지정한 곳입니다.100루피 이상의 비용을 들인 고객을 전시하다.
SELECT customer_id, COUNT(amount) FROM customer GROUP BY customer_id HAVING COUNT(amount)>=100;
id가'2'인 직원이 참여한 고객을 표시하는데 그들의 총 지출은 1000루피를 넘는다.SELECT customer_id, staff_id, SUM(amount) FROM customer WHERE staff_id=2 GROUP BY customer_id, staff_id HAVING SUM(amount)>1000;
가입
JOINS
여러 개의 표를 조합하여 데이터를 분석할 때 중요한 역할을 발휘한다.총 4가지 유형JOINS
INNER JOIN
- 지정된 열에 있는 두 테이블을 비교하고 두 열에 일치하는 데이터를 반환합니다.LEFT OUTER JOIN
- 지정된 열에 있는 두 테이블을 비교하고 왼쪽 테이블에서 일치하는 데이터를 반환합니다.오른쪽 표에 왼쪽 표와 일치하는 값이 없으면 데이터null
를 되돌려줍니다.RIGHT OUTER JOIN
- 지정된 열에 있는 두 테이블을 비교하고 오른쪽 테이블과 일치하는 데이터를 반환합니다.왼쪽 표에 오른쪽 표와 일치하는 값이 없으면 데이터null
를 되돌려줍니다.FULL OUTER JOIN
- 지정된 열에 있는 두 테이블을 비교하고 두 열에 일치하는 데이터와 일치하지 않는 데이터를 되돌려줍니다. 값은 null
입니다.연결에 대한 더 많은 정보를 읽을 수 있습니다 here
INNER JOIN
customer id의 일치 값에 따라 두 테이블을 결합합니다.SELECT payment_id, customer.customer_id, first_name, last_name FROM customer INNER JOIN payment ON customer.customer_id = payment.customer_id;
FULL OUTER JOIN
customer id의 일치 값에 따라 두 테이블을 결합합니다.SELECT payment_id, customer.customer_id, first_name, last_name FROM customer FULL OUTER JOIN payment ON customer.customer_id = payment.customer_id WHERE payment.customer_id IS null OR customer.customer_id IS null;
LEFT OUTER JOIN
왼쪽 테이블의customer id의 일치 값에 따라 두 테이블을 결합합니다.SELECT payment_id, customer.customer_id FROM payment LEFT OUTER JOIN customer on payment.customer_id = customer.customer_id WHERE payment.customer_id IS NULL;
RIGHT OUTER JOIN
오른쪽 표의customer id의 일치값에 따라 두 표를 합친다.SELECT payment.customer_id,customer_id FROM customer RIGHT OUTER JOIN payment on customer.customer_id = payment.customer_id WHERE payment.customer_id IS NULL;
여러 테이블에서 쿼리를 하려면 네스트된 연결을 사용할 수도 있습니다.SELECT customer_id, first_name, last_name FROM customer INNER JOIN payment ON customer.customer_id = payment.customer_id INNER JOIN billing ON payment.customer_id = billing.customer_id WHERE first_name='Sai' AND last_name='Kumar';
추가 SQL 명령
현재 위치의 시간대를 표시합니다.
SHOW TIMEZONE;
오늘의 시간 스탬프를 가져옵니다.SELECT NOW();
하루의 현재 시간을 가져옵니다.SELECT TIMEOFDAY();
타임 스탬프에서 월, 일, 년을 추출하려면 함수EXTRACT
를 사용합니다. 이 함수는 숫자의 월, 일 또는 년을 반환합니다.SELECT EXTRACT(MONTH FROM transaction_date) FROM customer;
DD/MM/YYYYY와 같은 특정 문자열 형식으로 타임스탬프를 변환하려면 To CHAR 함수를 사용하여 타임스탬프 열 이름을 첫 번째 매개변수로 지정한 다음 반환할 형식으로 지정할 수 있습니다.SELECT DISTINCT (TO_CHAR(payment_date,'DD/MM/YYYY')) FROM payment;
하위 쿼리는 부모 쿼리를 통해 단언할 수 있는 단일 데이터나 데이터 목록을 되돌려줍니다.-- 하위 질의
SELECT first_name || ' ' || last_name AS Full_Name FROM customer WHERE address_id IN (SELECT address_id FROM address WHERE district = 'Chennai');
프로그래밍 언어의 조건문과 유사하게 SQL에는 선택한 열을 검사하고 지정한 작업을 수행하는 CASE
문이 있습니다.SELECT
SUM(CASE citizen
WHEN 'INDIAN' THEN 1
ELSE 0
END)as IN,
SUM(CASE rating
WHEN 'NRI' THEN 1
ELSE 0
END)as NRI
FROM customer;
이것은 모든 것이 될 것이다. 더 많은 개념, 예견, 절차 등이 없을 것이다. 이것은 더욱 선진적인 것이다. 나는 이것들을 포괄할 것이다. 이것은 나의 미래의 직위이다.
Reference
이 문제에 관하여(SQL: 간단히 말하면, 기본부터 고급까지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rksainath/sql-basics-to-advanced-in-a-nutshell-b2g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)