Professional Documents
Culture Documents
Sqlite Database
Sqlite Database
곽승주(jim.kwag@outlook.com)
Introduction
Database & SQLite
a collection of data
데이터베이스란?
● 자료의 구조적인 모임
● 주제나 목적에 관련된 정보들의 집합체
● 워드나 엑셀로 정리한 주소록도 일종의 데이터베이스
● 자료가 많으면 검색이나 관리에 많은 시간이 필요하다. 가령 월별로
매출현황을 서로 다른 파일에 나누어서 정리하는 경우 특정 지점에
관련된 일정기간의 매출현황을 분석하려면 12개의 파일을 모두 열어
관련정보를 찾아야 한다.
● 여러 사용자가 공유하는 데이터의 경우 자료의 전달이나 최신자료
업데이트 등에 불편하다.
DBMS와 RDBMS
c:\sqlite>sqlite3
SQLite version 3.23.0 2018-04-02 11:04:16
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>
SQLite3 맛보기
1. .help 를 입력하면 여러 가지 명령어들에 대한 간략한 소개를 보여준다
2. .help 입력하고 엔터
명령 프롬프트
sqlite> .help
.archive ... Manage SQL archives: ".archive --help" for
details
.auth ON|OFF Show authorizer callbacks
.backup ?DB? FILE Backup DB (default "main") to FILE
.bail on|off Stop after hitting an error. Default OFF
.binary on|off Turn binary output on or off. Default OFF
.cd DIRECTORY Change the working directory to DIRECTORY
...
SQLite3 맛보기
1. 종료하려면 .quit 명령을 사용한다
2. .quit 입력하고 엔터
명령 프롬프트
sqlite> .quit
c:\sqlite>
SQLite Select
SELECT 문은 가장 많이 사용하는 SQL 문으로 간단하게 사용할 수 도 있지만 여러 SQL구문중 가장
복잡하기도 하다.
SELECT 구문
명령 프롬프트
SELECT
trackid,
name, 명령 프롬프트
composer,
SELECT
unitprice
*
FROM
FROM
tracks;
tracks;
SQLite Select Distinct
조회결과중에는 중복된 레코드가 있을 수 있다. DISTINCT 키워드를 필드명앞에 붙이면 중복되지
않는 레코드를 반환한다.
명령 프롬프트
SELECT
city
FROM
customers
ORDER BY
city;
SQLite Select Distinct
중복되지 않는 도시이름을 조회하려면 다음과 같이 DISTINCT를 사용한다
명령 프롬프트
SELECT DISTINCT
city
FROM
customers
ORDER BY
city;
SQLite Select Distinct
DISTINCT는 여러 개의 필드를 사용하는 경우에도 레코드가 중복되지 않는 결과를 돌려준다
명령 프롬프트
SELECT DISTINCT
city,
country
FROM
customers
ORDER BY
country;
SQLite Order By
ORDER BY는 지정한 필드를 키(key)로 삼아 레코드를 오름차순 또는 내림차순으로 정렬한다
명령 프롬프트
명령 프롬프트
명령 프롬프트
SELECT 필드이름 대신
name,
조회하려는
milliseconds,
albumid 필드순서번호를
FROM 사용할 수 있다
tracks
ORDER BY
3 ASC,
2 DESC;
SQLite Limit
쿼리의 결과로 돌려받는 레코드의 갯수를 지정한다
명령 프롬프트 명령 프롬프트
SELECT SELECT
column_list trackId,
FROM name
table FROM
LIMIT row_count; tracks
LIMIT 10;
SQLite Limit Offset
Limit과 함께 Offset을 같이 사용할 수 있는데, 가령 처음 10개의 레코드이후 다음 10개의 레코드를 얻으려
한다면 Offset을 같이 사용할 수 있다
명령 프롬프트 명령 프롬프트
SELECT SELECT
column_list trackId,
FROM name
table FROM
LIMIT row_count tracks
OFFSET offset; LIMIT 10 OFFSET 10;
SQLite Limit과 Order By
조회를 할 때 레코드를 특정 필드를 기준으로 정렬한 결과를 얻으려고 하는 경우가 많다. 그래서 Limit과
Order By를 같이 사용한다. Order By가 Limit보다 먼저 오면 전체 레코드를 정렬하고 Limit만큼의 레코드를
돌려준다.
명령 프롬프트 명령 프롬프트
SELECT SELECT
column_list trackid,
FROM name,
table bytes
ORDER BY FROM
column_1 tracks
LIMIT row_count; ORDER BY
bytes DESC
LIMIT 10;
SQLite Limit과 Order By
Limit과 Order By를 이용하여 n번째 큰 값/작은 값을 구할 수 있다
명령 프롬프트 명령 프롬프트
명령 프롬프트
SQLite는 WHERE절이 있는 SELECT구문을 다음과 같이 해석한다
SELECT
column_list 1. FROM 뒤 테이블을 확인한다
FROM 2. WHERE절의 조건에 맞는 행을 구한다
table
3. SELECT에서 열거한 필드만 골라 최종 레코드셋을 만든다
WHERE
search_condition;
SQLite Where
WHERE절에서 가장 중요한 부분은 평가식을 만드는 것이다. 평가식은 다음과 같은 형식이다.
WHERE Examples
<> 또는 != 같지 않다
< 작다
> 크다
<= 작거나 같다
>= 크거나 같다
논리연산자
연산자 설명
AND 양쪽이 참이면
IN 값이 목록내 있다면
NOT 다른 연산 결과 반대
OR 평가식중 1이면 참
SQLite Where Example#1
아래와 같은 tracks 테이블이 있고, 필드중 Albumid=1 인 레코드를 검색하면
명령 프롬프트
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1;
SQLite Where Example#2
Albumid=1이고 milliseconds > 250000 인 레코드를 검색한다면
명령 프롬프트
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1
AND milliseconds > 250000;
SQLite Where Example#3
명령 프롬프트
SELECT
name,
albumid,
composer
FROM
tracks
WHERE
composer LIKE '%Smith%'
ORDER BY
albumid;
SQLite Where Example#4
명령 프롬프트
SELECT
name,
albumid,
mediatypeid
FROM
tracks
WHERE
mediatypeid IN (2, 3);
SQLite Where Example#5
명령 프롬프트
SELECT
trackid,
name,
mediatypeid
FROM
tracks
WHERE
mediatypeid IN (1, 2)
ORDER BY
name ASC;
SQLite Where Example#6
명령 프롬프트
SELECT
trackid,
name,
MediaTypeId
FROM
tracks
WHERE
mediatypeid = 1 OR
mediatypeid = 2
ORDER BY
name ASC;
SQLite In
IN 절은 목록내 값이 있는 지를 확인하는 조건절인데, 서브쿼리에 유용하다.
명령 프롬프트
SELECT
trackid, name, albumid
FROM
tracks
WHERE
albumid IN (
SELECT
albumid
FROM
albums
WHERE
artistid = 12 );
SQLite Not In
IN은 포함한 경우인데, 반대로 포함하지 않는 경우엔 NOT 연산자를 활용할 수 있다
명령 프롬프트
SELECT
trackid,
name,
genreid
FROM
tracks
WHERE
genreid NOT IN (1, 2, 3);
SQLite LIKE
정확하게 일치하는 것이 아니라 비슷한 형태 즉 패턴(전화번호, 우편번호 등등)에 맞는 문자열을 찾는 경우
LIKE 연산자를 사용한다 . LIKE는 WHERE절에 사용되며 DELETE/ UPDATE쿼리에도 사용한다.
명령 프롬프트
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE 'Wild%'
SQLite Like Examples
명령 프롬프트
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild'
SQLite Like Examples
명령 프롬프트
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE
'%Wild%';
SQLite Like Examples
명령 프롬프트
?
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE
'%Br_wn%';
SQLite GLOB
GLOB은 LIKE연산자와 비슷한 넘인데, LIKE와 달리 대소문자를 구분하고 Unix스타일의 패턴을 사용한다.
또한 ESCAPE 문자를 지원하지 않는다
명령 프롬프트
SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB 'Man*';
SQLite GLOB examples
명령 프롬프트
SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB '*Man';
SQLite GLOB examples
명령 프롬프트
SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB '?ere*';
SQLite GLOB examples
명령 프롬프트
SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB '*[1-9]*';
SQLite GLOB examples
명령 프롬프트
SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB '*[1-9]';
SQLite GLOB examples
명령 프롬프트
SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB '*[^1-9]*';
SQLite Join
관계형 데이터베이스에선 자료를 여러 개의 테이블로 분산하고, Primary Key와 Foreign Key를 가지고
테이블간 관계를 만든다. 이를 JOIN이라고 한다
SQLite Inner Join
INNER JOIN은 테이블간의 교집합같은 공통분모만을 쿼리하는 것이다. 아래의 그림과 같이 두 개의 테이블
A와 B가 있는 데, 두 테이블간의 교집합을 쿼리하는 것이다. 구체적으로 A와 B는 f 공통의 필드를 가지고
있고 , f필드값이 서로 일치하는 레코드만 가져 오는 것이 INNER JOIN이다.
SQLite Inner Join Examples
SELECT
trackid,
name,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
SQLite Inner Join Examples
SELECT
trackid,
tracks.name AS Track,
albums.title AS Album,
artists.name AS Artist
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
INNER JOIN artists ON artists.artistid =
albums.artistid;
SQLite Inner Join Examples
SELECT
trackid,
tracks.name AS Track,
albums.title AS Album,
artists.name AS Artist
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
INNER JOIN artists ON artists.artistid = albums.artistid
WHERE
artists.artistid = 10;
SQLite Left Join
LEFT JOIN은 왼쪽 테이블 레코드와 테이블간의 공통분모를 쿼리하는 것이다. 아래의 그림과 같이 두 개의
테이블 A와 B가 있는 데, A와 B는 f 공통의 필드를 가지고 있고 , A의 f필드값에 해당하는 B의 레코드가
없어도 레코드를 가져 오는 것이 LEFT JOIN이다.
SQLite Left Join Examples
아래에는 artists와 albums 테이블이 있는 데, 앨범은 반드시 가수가 있을 테지만, 반대로 가수중에는 앨범이
없는 가수도 있을 것이다. 그래서 LEFT조인을 사용하여 앨범이 없는 가수를 찾아낼 수 도 있다.
SELECT
artists.ArtistId,
albumId
FROM
artists
LEFT JOIN albums ON albums.artistid = artists.artistid
WHERE
albumid IS NULL;
SQLite CROSS JOIN
매트릭스분석은 2×2, 3×3의 매트릭스(행,열)형태로 어떤
대상을 분석하는 것을 말한다. 우리가 너무마 잘 알고 있는 BCG
매트릭스도 이 분석의 일종이며, 포트폴리오 분석, IPA분석
(Importance-Performance Analysis),이라고 불려지는 분석들
또한 모두 매트릭스 분석이다. 이를 카테시안 곱(Cartesian
product), 데카르트곱 또는 곱집합이라고 한다.
SQL에선 JOIN, INNER JOIN, CROSS JOIN을 이용하여 이를
만들 수 있다.
SQLite CROSS JOIN
명령 프롬프트 테이블 A는 N개의 레코드가 있고, 테이블 B는 M개의 레코드가 있다고 하자.
SELECT * 이 두 테이블의 CROSS JOIN은 (N*M)개의 레코드를 만들어 낸다. 만일
FROM A JOIN B; K개의 레코드를 가진 테이블 C를 CROSS JOIN한다면 (N*M*K)개의
레코드를 만드는데, 엄청한 크기일 것이다.
SELECT *
FROM A
INNER JOIN B;
SELECT *
FROM A
CROSS JOIN B;
SELECT *
FROM A, B;
SQLite CROSS JOIN
명령 프롬프트
J Spades
Q Spades
K Spades
A Spades
SQLite FULL OUTER JOIN
FULL OUTER JOIN은 오른 쪽 그림과 같은 결과를 만든다.
이것은 LEFT JOIN과 RIGHT JOIN을 결합한 형태이다. 이
조인의 결과에는 일치하지 않는 행이 있으면 NULL값을
출력한다. 일치하는 행이 있는 경우 한 개의 행만 출력한다
SQLite FULL OUTER JOIN
명령 프롬프트 왼쪽의 SQL문은 dogs와 cats라는
-- create and insert data into the dogs table 테이블 두 개를 만들고, 몇 개의
CREATE TABLE dogs ( 레코드를 입력하는 것이다.
type TEXT, color TEXT);
INSERT INTO dogs(type, color)
VALUES('Hunting','Black'), ('Guard','Brown');
명령 프롬프트
명령 프롬프트
SELECT m.firstname || ' ' || m.lastname AS 'Manager',
e.firstname || ' ' || e.lastname AS 'Direct report'
FROM employees e
LEFT JOIN employees m ON m.employeeid = e.reportsto
ORDER BY manager;
SQLite Self-Join
셀프조인 쿼리를 사용하여 같은 도시에 사는 직원들을 묶어 도시별로 출력할 수 있다
명령 프롬프트
SELECT DISTINCT
e1.city,
e1.firstName || ' ' || e1.lastname AS fullname
FROM
employees e1
INNER JOIN employees e2 ON e2.city = e1.city
AND (e1.firstname <> e2.firstname AND e1.lastname <> e2.lastname)
ORDER BY
e1.city;
SQLite Group By
GROUP BY절은 어느 행 그룹의 한 개 이상의 컬럼의 값을 가지고 요약된 행을 만드는 데 사용한다. 그래서
그룹을 요약하여 한 개의 행으로 나오게 하는 것이다. 요약하는 방법은 각각의 그룹에 대해 MIN, MAX,
SUM, COUNT, AVG와 같은 집계함수를 사용한다.
명령 프롬프트
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;
SQLite Group By
ORDER BY절을 추가하여 트랙 갯수로 정렬할 수 있다.
명령 프롬프트
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
ORDER BY COUNT(trackid) DESC;
SQLite Group By
이번에는 숫자로 나오는 Albumid 대신 앨범의 제목을 추가하여 표시해보자. 그러려면 앨범의 제목을 가진
albums 테이블을 조인해야 한다.
명령 프롬프트
SELECT
tracks.albumid,
title,
COUNT(trackid)
FROM
tracks
INNER JOIN albums ON albums.albumid
= tracks.albumid
GROUP BY
tracks.albumid;
SQLite Group By With Having
GROUP BY로 만든 그룹은 HAVING절을 이용하려 필터링할 수 있다. 예를 들어 15개 이상의 트랙을 가진
앨범으로 한정하여 쿼리를 한다면
명령 프롬프트
SELECT
tracks.albumid,
title,
COUNT(trackid)
FROM
tracks
INNER JOIN albums ON albums.albumid =
tracks.albumid
GROUP BY
tracks.albumid
HAVING COUNT(trackid) > 15;
SQLite Group By
이번에는 SUM()함수를 사용하여 각 앨범의 플레이시간 합계와 바이트수를 구해보자.
명령 프롬프트
SELECT
albumid,
sum(milliseconds) length,
sum(bytes) size
FROM
tracks
GROUP BY
albumid;
SQLite Group By
이번에는 여러 집계합수를 사용하여 앨범의 각 트랙중 플레이시간이 최소, 최대, 평균을 조회 해보자.
명령 프롬프트
SELECT
tracks.albumid,
title,
min(milliseconds),
max(milliseconds),
round(avg(milliseconds),2)
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
tracks.albumid;
SQLite Group By
이번에는 두 개 이상의 컬럼으로 GROUP BY 하여 쿼리하는 예이다. tracks에는 MediaTypeId(파일형식),
GenreId(장르)가 있는 데, 저장된 파일형식으로 우선 묶고, 그안에서 장르로 다시 그룹짓는다.
명령 프롬프트
SELECT
mediatypeid,
genreid,
count(trackid)
FROM
tracks
GROUP BY
mediatypeid,
genreid;
SQLite Having
앞서 GROUP BY에서 HAVING을 잠깐 사용했는데, SELECT
HAVING은 그룹에 대한 필터링/검색을 의미한다. column_1,
대부분의 경우 HAVING은 단독으로 사용하지 않고 aggregate_function (column_2)
GROUP BY절과 함께 사용한다. GROUP BY없이 FROM
사용한다면 WHERE를 사용하는 것과 table
마찬가지이다. 즉 SELECT 쿼리 자체가 하나의 GROUP BY
그룹이기 때문이다. column_1
HAVING
search_condition;
SQLite Having
이번에는 tracks 테이블에서 albumid=1인 그룹의 트랙 갯수를 조회해보자
명령 프롬프트
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING albumid = 1;
SQLite Having
이번에는 tracks 테이블에서 트랙 갯수가 18~20개인 앨범을 찾아보자
명령 프롬프트
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING count(albumid) BETWEEN 18 AND 20
ORDER BY albumid;
SQLite Having
이번에는 albums 테이블과 조인하여 플레이 시간이 60,000,000 밀리세컨이상인 앨범을 조회해보자.
명령 프롬프트
SELECT
tracks.albumid,
title,
sum(Milliseconds) AS length
FROM
tracks
INNER JOIN albums ON albums.AlbumId
= tracks.AlbumId
GROUP BY
tracks.albumid
HAVING
length > 60000000;
SQLite CASE
CASE 는 쿼리에서 조건을 붙이기 위한 절이다.
명령 프롬프트
이것은 프로그래밍 언어의 IF-THEN-ELSE와
CASE case_expression
비슷하다. CASE는 WHERE, ORDER BY, WHEN when_expression_1 THEN result_1
HAVING, IN 와 같은 절과 SELECT, UPDATE, WHEN when_expression_2 THEN result_2
...
DELETE같은 구문에서 사용가능하다. 오른쪽
[ ELSE result_else ]
구문형식에서 END
case_expression=when_expression_1 이면
result_1을 돌려준다. 마찬가지로
case_expression=when_expression_2 이면
result_2을 돌려준다. 일치하는 것이 없다면
ELSE다음의 result_else를 돌려준다.
SQLite CASE
명령 프롬프트
SELECT
customerid, firstname, lastname,
CASE country
WHEN 'USA' THEN
'Dosmetic'
ELSE
'Foreign'
END CustomerGroup
FROM
customers
ORDER BY
LastName, FirstName;
SQLite CASE
명령 프롬프트
SELECT
trackid, name,
CASE
WHEN milliseconds < 60000 THEN
'short'
WHEN milliseconds > 6000 AND
milliseconds < 300000 THEN
'medium'
ELSE
'long'
END category
FROM
tracks;
SQLite Union
UNION은 두 개이상의 쿼리에서 나온 레코드를 query_1
합치는 쿼리이다. UNION은 중복된 레코드는 뺴고 UNION [ALL]
결과를 만들고, UNION ALL은 그 반대이다. query_2
UNION을 사용하기 위한 규칙 UNION [ALL]
1. 쿼리내 컬럼 갯수는 같아야 한다 query_3
2. 해당컬럼간에 데이터타입이 같아야 한다 ...;
3. 첫 쿼리의 컬럼이름이 결과 데이터셋 the difference between UNION and JOIN
컬럼이름이 된다 clause e.g., INNER JOIN or LEFT JOIN is that
4. 각각의 쿼리에 적용된 GROUP BY 와 the JOIN clause combines columns from
HAVING 절은 결과 데이터셋과 무관한다 multiple correlated tables, while UNION
5. 개별 결과데이터셋내에 사용하지 않은 combines rows from multiple similar tables.
ORDER BY 절은 결과 데이터셋에 적용된다
SQLite Union (ALL) Example
명령 프롬프트
SELECT
firstname,
lastname
FROM
employees
UNION ALL
SELECT
firstname,
lastname
FROM
employees;
SQL UNION with ORDER BY example
명령 프롬프트
SELECT
firstname,
lastname
FROM
employees
UNION
SELECT
firstname,
lastname
FROM
customers
ORDER BY
firstname,
lastname;
SQLite Subquery
Subquery는 SELECT문안에 SELECT문을 중첩하여 SELECT column_1
사용하는 쿼리이다. Subquery는 일종의 테이블이나 FROM table_1
조건절의 역할을 하며, 괄호안에 작성한다. WHERE column_1 = (
SELECT column_1
FROM table_2
);
SQLite subquery examples
서브쿼리는 “Let There Be Rock”
라는 제목을 가진 앨범의 id를
돌려주고, 이를 가지고
tracks테이블을 조회한다
명령 프롬프트
SELECT trackid, name, albumid FROM tracks
WHERE albumid = (
SELECT albumid
FROM albums
WHERE title = 'Let There Be Rock'
);
SQLite Insert
INSERT쿼리는 데이터를 테이블에 추가하는 쿼리이다. SQLite는 하나 이상의 레코드를 추가할 수 있다.
INSERT INTO table1 ( column1, column2 ,..) VALUES ( value1, value2 ,...);
명령 프롬프트
INSERT INTO artists (name)
VALUES ('Bud Powell');
SELECT
artistid, name
FROM
artists
ORDER BY
artistid DESC
LIMIT 1;
SQLite INSERT – 여러 개의 레코드 추가
여러 개의 레코드를 추가하려면 VALUES 다음에 오는 값 목록을 여러 개 둔다.
명령 프롬프트
UPDATE employees
SET city = 'Toronto',
state = 'ON',
postalcode = 'M5P 2N7'
WHERE
employeeid = 4;
SQLite Update Example#3
함수를 사용하여 업데이트를 할 수도 있다. 다음은 lower()함수를 사용하여 이메일을 업데이트하는 예이다
명령 프롬프트
UPDATE employees
SET email = lower(
firstname || "." || lastname || "@chinookcorp.com"
);
SQLite Studio
a SQLite database manager
데이터베이스와 테이블 만들기
a collection of data
데이터베이스 만들기
1. 설정에서 ODBC를 검색
2. ODBC 데이터 원본 설정(32비트) 선택
ODBC 설정
1. [시스템 DSN] 탭으로 이동
2. [추가] 클릭
엑셀에서 ODBC 연결하기
ODBC 설정
1. [새 데이터 원본 만들기]의 드라이버 목록중
“SQLite3 ODBC Driver” 선
ODBC 설정
1. [SQLite3 ODBC DSN Configuration]에서
[Data Source Name] 에 연결할 DSN이름 입력
2. [Database Name]에서 앞서 만든 db파일을
선택
엑셀에서 ODBC 연결하기
엑셀에서 ODBC 연결하기
엑셀에서 ODBC 연결하기
엑셀에서 ODBC 연결하기
엑셀에서 ODBC 연결하기
엑셀의 데이터베이스 관련 기능
Formulas and functions related to database
데이터베이스 함수
데이터베이스에 저장된 데이터를 분석하는 함수를 데이터베이스 함수라고 하는데, 이러한 함수들은
데이터베이스, 필드, 조건의 세 개의 인수를 사용합니다.
DGET 조건에 맞는 값을 구함
DMAX 조건에 맞는 값들 중 최대값을 구함
DMIN 조건에 맞는 값들 중 최소값을 구함
DPRODUCT 조건에 맞는 값들의 곱을 구함
DSTDEV 조건에 맞는 값들의 표본 표준편차를 구함
DSTDEVP 조건에 맞는 값들의 모집단 표준편차을 구함
DSUM 조건에 맞는 값들의 합을 구함
DVAR 조건에 맞는 값들의 표본 분산을 구함
DVARP 조건에 맞는 값들의 모집단 분산을 구함
표 기능
엑셀의 표기능은 목록의 형태를 띤 데이터를 처리할 수 있는 뛰어난 툴을 제공한다. 이러한 데이터의 집합을
‘테이블’, 각 테이블의 열 제목을 ‘필드’, 각각의 데이터를 ‘레코드’라고 부른다.
제목 열과 열을 포함하여 데이터를 선택하고 [삽입] - [표] 를 클릭한다. 선택한 영역이 정확한지 눈으로
확인하고 머리글 포함 체크상자를 클릭한 후 확인 을 클릭한다. 그러면 양식을 갖춘 표가 생성된다.
표 기능 - 다양한 서식지원
엑셀은 표로 지정되는 순간 데이터 영역을 다른 데이터 들과
구분하기 위해 기본적인 디자인이 적용된다. 이 디자인은 꽤나
스타일리쉬 한 것이 많으며 한번의 버튼 클릭만으로 화려한 표를
디자인 할 수 있다.
기본으로 적용된 스타일이 싫다면 수 많은 스타일 중에서 하나
고르거나 아니면 스타일을 없앤 후 자신이 수동으로 지정 해도 된다.
1) 표의 안쪽을 클릭하고
2) [디자인] - [범위로 변환] 을 클릭한다.
3)'표를 정상 범위로 변환하시겠습니까?'라는 메시지가 표시될 때 예를 클릭하면
4)표가 양식은 유지된 채 정상 범위로 복귀된다.
표 기능 - 표에 새로운 행 추가하기
표에서 행은 일반적인 작업시트의 행과는 조금 다르다. 표에 새로운 행을 추가해야 할 경우 1) 표의 우측 하단
셀을 클릭하고 2) Tab 키를 누른다.
표 기능 - 요약 행
일부 행이 숨겨져 있어도 합계 함수는 범위 내에 있는 모든
셀의 합계를 계산한다. 보이는 행의 수를 합한 값을 결과를
표시하지 않는다. 이런 문제를 해결하기 위해서는
SUBTOTAL을 사용한다. 표의 경우 자동이다.
표에 합계 행을 추가하려면
1)표의 내부를 마우스로 우 클릭한 후 [표] - [요약행] 선택
2)[디자인] - [요약행]을 클릭
● 지급액합계 = SUM(급여명세표[@[기본급여]:[기타수당]])
● 공제액계 = SUM(급여명세표[@[건강보험]:[기타공제]])
● 실급여지급액 =[@지급액합계]-[@공제액계]
SQL
SQL(Structured Query Language)
관계형 데이터베이스 관리 시스템(RDBMS)의
데이터를 관리하기 위해 설계된 특수 목적의
프로그래밍 언어이다
SQL(structured query language)
SQL[시퀄 또는 에스 큐 엘]은 데이터베이스에서 정보를 얻거나 갱신하기 위한 표준화된 언어로서
대화형으로 이용하거나, 또는 프로그램 내에 삽입하여 쓸 수 있다. SQL이 ANSI와 ISO의 표준이긴 하지만
표준으로 정해진 사항에 덧붙여, 독자적인 확장 SQL을 지원하는 데이터베이스도 많다.
SQL은 크게 데이터와 그 구조를 정의하는 DDL(Data Definition Language)와 데이터의 검색과 수정을 위한
DML(Data Manipulation Language) 그리고 데이터베이스 사용자의 권한을 정의하는 DCL(Data Control
Language)의 세 가지로 분류할 수 있다.
기본적인 SQL
데이터베이스 프로그래밍을 하기 위해서 가장 먼저 배우는 것이 쿼리(Query)이다. 이것은 업계 표준이어서
모든 데이터베이스 시스템은 이를 사용하여 데이터베이스를 조작할 수 있도록 하고 있다. 그러나 모든
데이터베이스 제품들이 표준을 지키는 것은 아니다. 성능향상, 기존제품과의 호환성 등등의 이유로 나름의
쿼리를 만들어 제품에 적용하고 있다. 따라서 제품에 따라 쿼리가 조금씩 다를 수 있다. 그러나 기본적인
쿼리는 모두 같으므로 안심하고 사용해도 좋다.
쿼리는 하나의 프로그래밍 언어에 속하는 데, 간단히 다음의 4가지 정도의 쿼리만 익히면 프로그래밍에 큰
어려움은 없으리라 생각한다. 데이터베이스를 조작하는 일이란 데이터베이스로부터원하는 데이터를
출하는 일(SELECT 쿼리), 데이터베이스에 데이터를 입력하는 일(INSERT 쿼리), 입력한 데이터를 수정하는
일(UPDATE 쿼리) 그리고 필요없는 데이터를 데이터베이스에서 삭제하는 일(DELETE 쿼리)이다.
SELECT 쿼리
Select쿼리(‘선택쿼리’라고 함)는 한 개이상의 테이블에서 필요한 데이터를 가져오는 구문이다. 가장 많이
사용하는 쿼리인 만큼 익숙해지면 편리하다. 엑셀의 워크시트에서 데이터를 필터링
(자동필터/고급필터기능)하여 원하는 데이터만 추리는 것에 해당하는 구문이다.
https://www.w3schools.com/sql/default.asp
SQLite Python
Python을 사용하여 SQLite 데이터베이스를
어떻게 다루는 지 알아봅니다
SQLite Python
SQLite와 관련하여 인기있는 파이썬 라이브러리에는 PySQLite와 APSW가 있습니다.
● PySQLite - PySQLite는 Python DBI API 2.0 과 호환되는 SQLite 인터페이스를 제공한다. SQLite
● APSW -SQLite만 사용한다면 Python SQLite Wrapper인 APSW 모듈은 사용할 수 있다. APSW 는
return None
SQLite Python: Querying Data
def select_task_by_priority(conn, priority): def main():
cur = conn.cursor() database = "C:\\sqlite\db\pythonsqlite.db"
cur.execute("SELECT * FROM tasks WHERE conn = create_connection(database)
priority=?", (priority,)) with conn:
print("1. Query task by priority:")
rows = cur.fetchall() select_task_by_priority(conn,1)
if __name__ == '__main__':
main()
SQLite Python: Inserting Data
데이터를 추가하려면 다음과 같은 몇 가지 단계가 필요하다
if __name__ == '__main__':
main()
SQLite Python: Updating Data
데이터를 업데이트하려면 다음과 같은 몇 가지 단계가 필요하다
if __name__ == '__main__':
main()
SQLite Python: Deleting Data
데이터를 삭제하려면 다음과 같은 몇 가지 단계가 필요하다
if __name__ == '__main__':
main()