모든 Python 개발자가 알아야 할 Python의 상위 SQL 쿼리
게시 됨: 2021-01-29SQL은 관계형 데이터베이스를 관리, 조작 및 저장하는 데 도움이 되는 구조적 쿼리 언어를 나타냅니다. 관계형 데이터베이스는 하나 또는 다른 형식으로 상관되는 테이블 모음으로 구성됩니다. 여러 테이블을 사용하면 대상 정보의 다른 엔터티를 분리하고 데이터베이스 관리를 어렵게 만들 수 있는 수백 개의 열이 하나의 테이블에 묶이는 것을 방지할 수 있습니다.
데이터베이스 자체가 아니라 쿼리 언어입니다. 이러한 쿼리는 Oracle, Microsoft SQL Server와 같은 모든 관계형 데이터베이스 관리 시스템에서 수행할 수 있지만 SQL 쿼리를 만들고 실행하는 Python 방식이 있습니다.
목차
SQLite3
이것은 실제 클라이언트-서버 모델을 실행할 필요 없이 경량 데이터베이스를 생성할 수 있게 해주는 Python 내장 라이브러리입니다. 애플리케이션에서 내부적으로 데이터를 저장하고 SQL 명령을 실행하는 데 사용할 수 있습니다. 이 패키지는 사용하기 쉽고 Postgresql과 같은 프로덕션 기반 데이터베이스에서 동일한 스키마를 복제할 수 있습니다. 데이터베이스를 설정하는 방법을 알아보겠습니다.
- 표준 수입 명세서:
sqlite3을 sq로 가져오기
라이브러리는 별칭 "sq"로 가져옵니다.
- 이제 데이터베이스에 대한 연결을 생성해야 합니다. 연결 개체는 다음과 같은 용도로 사용됩니다.
연결 = sq.connect("example.db")
이 파일이 이전에 생성되지 않은 경우 이 명령이 실행되는 즉시 생성됩니다.
- 데이터베이스에서 정보를 액세스하고 가져오려면 커서 개체를 만들어야 합니다.
커서 = 연결.커서()
이제 기본 설정이 완료되었으므로 각 테이블을 생성하여 데이터를 데이터베이스에 푸시할 수 있지만 그 전에 몇 가지 SQL 명령을 수정해 보겠습니다.
SQL의 기본 명령
SQL은 영어로 읽을 수 있는 명령어 면에서 탁월합니다. 일반적으로 대문자로 입력하며 이에 대한 제한은 없습니다. 이는 일반적으로 쿼리 키워드가 강조 표시되고 테이블 속성과 구별될 수 있도록 실행됩니다. 그러나 이제 다른 색상으로 강조 표시하는 강력한 IDE가 있으므로 모든 방법이 작동합니다.
1. 테이블 생성
이를 통해 데이터베이스에 개체, 테이블을 보유하는 데이터를 만들 수 있습니다. 데이터베이스에는 하나 이상의 관계가 있는 여러 테이블이 있을 수 있습니다. 테이블에는 보유하는 값을 설명하는 모든 열에 대한 헤더가 있습니다. 테이블을 생성하는 동안 열 이름, 저장할 데이터 유형 및 크기를 지정해야 합니다. 열이 기본 키인지, null 값을 가질 수 있는지 등과 같은 다른 속성을 추가할 수 있습니다.
기본 테이블은 다음과 같이 생성할 수 있습니다.
CREATE TABLE company_data(
아이디 정수,
이름 varchar (24),
no_of_employee 정수
);
2. 선택 및 시작
이름에서 알 수 있듯이 테이블에서 데이터를 선택하고 가져오는 데 사용됩니다. 데이터를 살펴볼 수 있는 가장 중요한 단계입니다. 팬더의 머리 또는 꼬리 기능과 유사합니다.
이러한 명령을 사용하는 간단한 쿼리는 다음과 같습니다.
<열 이름> SELECT
<테이블 이름>에서;
테이블에서 모든 열을 가져오려면 모든 열 이름 대신 별표(*)를 넣을 수 있습니다. LIMIT 키워드는 최대 행 수를 정의하는 데 도움이 됩니다. 다음 쿼리를 고려하십시오.
고르다 *
FROM example_table
제한 5;
3. 어디에
where 절은 쿼리에 대한 추가 조건을 지정하는 데 사용됩니다. 열 범위, 특정 비교 또는 부정을 포함할 수 있습니다.
예를 들어:
SELECT client_name, company_name
회사 데이터에서
WHERE company_name = 'upGrad';
4. 삽입
이 절은 데이터 테이블에 값을 추가하는 데 사용됩니다. 테이블 생성 명령에서 테이블에 열 이름이 추가된 것과 동일한 순서로 값이 삽입됩니다. 여러 행을 삽입하거나 한 번에 하나씩 삽입할 수 있습니다.
예를 들어 아래 쿼리는 테이블에 3개의 레코드를 삽입합니다.
INSERT INTO company_data(id, name, no_of_employees)
가치
(1, '회사_A', 100),
(2, '회사_B', 200),
(3, '회사_C', 500);
파이썬을 통한 실행
이제 명령을 알았으므로 코드에서 실행할 차례입니다. 지금까지 데이터베이스에 연결하고 커서 개체를 만들었습니다. 이 개체는 데이터베이스에서 명령을 실행하는 데 도움이 됩니다.

cursor.execute(''' <쿼리> ''')
쿼리는 문자열과 삼중 따옴표로 전달됩니다. 이 변경 사항은 커밋할 때까지 데이터베이스에 반영되지 않습니다. 마지막에 데이터베이스에 대한 연결을 닫으면 이 시점 이후에 새로운 실행이 이루어지지 않습니다.
이 간단한 코드를 보십시오.
sqlite3을 sq로 가져오기
연결 = sq.connect("example.db")
커서 = 연결.커서()
cursor.execute("'
테이블 생성 테이블1(
아이디 정수,
이름 varchar (24)
)
"')
cursor.execute("'
INSERT INTO table1 (ID, 이름)
가치
(1, '업그레이드'),
(2, '블로그')
"')
cursor.execute("'
고르다 *
테이블 1에서
"')
연결.커밋()
연결.닫기()
중요한 팁
1. 쿼리가 문자열로 전달되기 때문에 f-string을 사용하여 쿼리를 수정하면 프로그램을 동적이고 사용자 제어할 수 있는 좋은 옵션처럼 보일 수 있지만 SQL 주입 공격과 같은 일부 보안 문제가 발생할 수 있습니다. 이를 방지하려면 자리 표시자 "?"를 사용하십시오. 쿼리의 일부 값을 대체하려는 모든 위치. 예를 들어:
cursor.execute('"SELECT ? FROM ?''', col_name, table_name)
사용자에게 열 이름을 제공하도록 요청할 수 있으며 해당 값은 여기에서 대체됩니다.
2. fetchone() 및 fetchall()과 같은 함수를 사용하여 결과를 반복합니다. Fetchone은 쿼리의 다음 행을 반환하고 fetchall은 커서가 가져온 모든 행을 반환합니다. 결과는 튜플로 반환되므로 프로그램의 외부 함수에서 수정할 수 없습니다.
3. 데이터베이스에 대량 값을 추가하려면 executemany() 함수를 사용하고 추가할 값이 포함된 튜플 목록을 전달할 수 있습니다. 예를 들어:
to_add = [(1, '안녕하세요') , (2, '세계')]
cursor.executemany('INSERT INTO 테이블 VALUES(?, ?)', to_add)
더 읽어보기: Python 프로젝트 아이디어 및 주제
세계 최고의 대학에서 온라인으로 데이터 과학 과정 을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.
결론
SQL은 가장 선호되는 데이터베이스 언어이며 이해하기 쉽습니다. 데이터 과학의 대부분의 초보자는 데이터 검색 프로세스를 개선하고 데이터 엔지니어링이 수행되는 방식을 엿볼 수 있는 SQL을 연습하는 것이 좋습니다. 모든 데이터베이스 조작을 위한 표준 언어이며 데이터베이스에 더 빠르게 액세스할 수 있습니다.
데이터 과학에 대해 자세히 알아보려면 IIIT-B & upGrad의 데이터 과학 PG 디플로마를 확인하세요. 이 PG 디플로마는 실무 전문가를 위해 만들어졌으며 10개 이상의 사례 연구 및 프로젝트, 실용적인 실습 워크숍, 업계 전문가와의 멘토링, 1- 업계 멘토와 일대일, 400시간 이상의 학습 및 최고의 기업과의 취업 지원.
제약 조건은 테이블에 입력할 데이터 유형을 결정합니다. 테이블 생성 중에 지정되며 단일 필드 또는 여러 필드에 적용할 수 있습니다. SQL의 제약 조건은 다음과 같습니다. 인덱스 또는 데이터베이스 인덱스는 데이터 검색 작업을 훨씬 빠르게 만드는 특수 조회 테이블이라고 할 수 있습니다. 데이터를 더 빨리 검색하기 위해 더 많은 메모리와 추가 쓰기를 사용합니다. 인덱스는 4가지 유형이 될 수 있습니다. 여러 개체 또는 서로 관련이 있는 여러 유형 및 무형 개체 간의 관계를 관계라고 합니다. SQL에는 4가지 유형의 관계가 있습니다.SQL의 제약 조건에 대해 무엇을 알고 있습니까?
NOT NULL - 필드에 NULL 값이 입력되는 것을 방지합니다.
CHECK - 필드의 모든 값이 주어진 조건을 충족하는지 확인합니다.
DEFAULT- 값이 입력되지 않은 경우 자동으로 필드에 기본값을 할당합니다.
UNIQUE- 필드에 고유한 값만 입력할 수 있습니다.
INDEX- 더 빠른 레코드 검색을 제공하는 필드를 인덱싱합니다.
기본 키 - 테이블의 각 레코드를 고유하게 식별합니다.
FOREIGN KEY - 테이블 간의 링크를 손상시킬 수 있는 작업을 제한합니다. 색인과 그 유형을 설명합니까?
1. 고유 인덱스
2. 고유하지 않은 인덱스
3. 클러스터형 인덱스 SQL에서 관계란 무엇이며 그 유형은 무엇입니까?
1. 일대일
2. 일대다/다대일
3. 다대다
4. 자기 참조 관계.