심화 스터디/SQL 스터디

[SQL 스터디_1팀] 2주차_강의노트

라라밤쥬 2023. 3. 16. 10:30

[이미지 포함 정리 참고]

https://www.notion.so/1-5e535de3f93a470c92f9970223bbed7a?pvs=4 

 

박지우(1)

Relational Databases

www.notion.so

 

Relational Databases

Database

: 데이터를 저장하는 공간

ex) patron, books and checkouts table → 포함하는 공간이 데이터베이스

  • Relational database

: 데이터베이스 안에서 테이블의 데이터 사이의 관계를 정의하는 것

ex) Which books did James check out during 2022?

→ James(patron) / card_num(90123) / card_num(checkouts) / id(checkouts) / id(books) / id(title)

  • Adavantages
    • 테이블이 엑셀과 구글시트와 같이 스프레드시트로 정리되어 있지만 데이터베으스는 이 스프레드시트보다 강력하다고 한다.
    → much more data + storage is more secure
    • 많은 사용자들이 쿼리를 사용해서 동시에 데이터로부터 인사이트를 모을 수 있다
    • 데이터베이스가 queried 되었을 때 데이터베이스 안에 저장된 데이터는 변하지 않는다
    • 데이터베이스 정보는 쿼리 방법에 따라 접근가능하고 제공된다

Tables

  • rows and columns 으로 구성되어 있다
    • row : records (row의 수가 unlimited)
      • row in a table
      • an individual observation
    • columns : fields (field는 데이터베이스 만들어졌을 때의 set에 limited)
      • one piece of information about all observation
      • ex) name field - lists all of the name
  • Table manners
    • Table naming
      • lowercase
      • space를 사용하면 안된다 + 대신에 underscore 사용
      • collective group(집단)을 나타낼 수 있는 것이 제일 좋지만 plural name(복수형 이름) 가능
    • field naming
      • lowercase
      • should not involve spaces
      • singular than plural
      • cannot have the same name
      • table 이름과 같으면 안된다
    • Key : unique identifier
      • 같은 테이블안에서 다른 record들을 구별하게 해주는 역할을 한다 → index느낌
    • table topic remain separate
      • a clearly marked subject > multiple subjects is combined→ duplicate information → less clearMaham has none checkout_id → 더이상 card_num unique하지 않다.
      • ex) lzzy two checkouts

Data

: 데이터 타입은 각 필드마다 명시가 되어있어야 한다. 데이터 타입은 수/ 텍스트 / 날짜에 따라 달라진다

cf) 데이터 타입 쓰는 이유

  1. 데이터 타입이 다른 데이터들은 다르게 저장되고 다른 저장공간을 차지하기 때문
  2. 특정한 데이터 타입에 따라 몇몇 계산이 그것에만 적용되기 때문에

ex) multiply a number by another number / text multiply (X)

  • String : 문자의 sequence (letter, punctuation)
    • string 데이터 타입에도 종류가 나누어진다
      • 250까지 문자를 가질 수 있는 타입 → 저장공간을 아낄 수 있다
      • more flexible and can store large strings / tens of thousands of characters
      • → VARCHAR
  • ex) Manham, James
  • Integers : whole number
    • 몇가지 종류로 나뉜다 (수의 크기에 따라)
      • INT (less than negative two billion to more than positive two billion
  • Floats : number (fractional part를 포함)
    • NUMERIC : 38 소수자리까지 저장할 수 있다
  • Schemas : blueprints of databases , 데이터베이스의 구조를 보여주고 데이터베이스에 어떤 테이블이 저장되어 있고 테이블 사이에 관계도 보여준다
    • 각 필드마다 가지고 있는 데이터의 타입을 알려준다
  • Storage
    • 데이터베이스 테이블은 서버의 하드 디스크에 저장되어 있는 것
    • 서버는 데이터 접근가능하게 하고 서버에 저장된 웹사이트나 파일에 접근하게 만든다

Querying

: 많은 조직에서는 SQL을 spreadsheet의 대체제로 사용한다

만약 데이터가 spreadsheet에 있고 다른 데이터와 연관이 없다면 단순히 가져다 쓰면 된다

BUT Diverse한 데이터는 데이터베이스 안에서 정리하는 것이 가장 best

Keywords

: 코드에서 수행할 작업을 하는데 사용되는 약속된 단어! (코드 함수 같은 것)

SELECT / FROM

  • SELECT : fields should be selected
  • FROM : 필드가 저장된 Table

cf) 퀴리가 완성되었을 때는 세미클론을 찍어줘야한다 (;)

예제1)

SELECT card_num, name # 여러 필드 가져오고 싶으면 (,) 사용 
FROM patrons;

SELECT name, card_num # 필드 순서 바꾸기 
FROM patrons;

SELECT * #모든 필드 다 가져오기 
FROM patrons ; 
  • Aliasing : rename columns
SELECT name AS first_name, year_hired # 필드(name) 이름 새로 변경(first_name)
FROM employees;
  • Distinct records : return a list of unique values
SELECT DISTINCT year_hired # 중복되는 record 제거 
FROM employees;

SELECT DISTINCT dept_id, year_hired # 두 필드 모두 고려한 중복 값 제거  
FROM employees;
  • Views : 저장된 SQL SELECT 문의 결과 테이블을 나타낸다
    • 뷰에 포함된 데이터는 데이터베이스에 저장되지 않는다 → 가상 테이블이기 때문에
    • 쿼리 코드가 저장되는 것
    • 뷰 생성법
    • CREATE VIEW employee_hire_years AS SELECT id, name, year_hired FROM employees;
    • View 사용법
    • SELECT id,name FROM employee_hire_years;

Selecting Data

  • Count : 필드안에 있는 레코드의 수
SELECT COUNT(birthdate) AS count_birthdates # COUNT(field) 
FROM people ; 

SELECT COUNT(name) AS count_names, COUNT(birthdate) AS count_birthdates #multiple field
FROM people ; 

SELECT COUNT(*) AS total_records
FROM people;   # all fileds의 수 

SELECT COUNT(DISTINCT birthdate) AS count_distinct_birthdates 
FROM people;
  • order of execution : not processed in its written order
    • table 정하기 → select 문
    • LIMIT : result개수 정할 수 있다
  • Debugging SQL
    • Mispelling
    • Comma errors
    • Keyword errors
  • SQL formatting
    • Formatiing is not required
      • 한줄로 써도 실행된다
      • capitalization 안해도 된다
    • semicolon (PostgreSQL 필요없다)
      • Best practice
      • Easier to translate
      • Indicate the end of query
    • non-standard field names
      • release year - release_year
        • “release year” 사용하면 된다
        SELECT title, "release year", country
        FROM films
        LIMIT 3 ; 
        

Filtering Records

  • Where : 조건문
    • Comparison operators
    • Strings : single-quotes
    • Order of execution
      • written code : select - from - where - limit
      • order of execution : from - where - select - limit
  • SELECT title FROM films WHERE release_year > 1960; # WHERE release_year = 1960 # WHERE release_year <> 1960 (not equal)
  • Multiple criteria
    • OR, AND, BETWEEN
      • OR : at least one condition
      • AND : satisfy all criteria
      • AND, OR
      • SELECT title FROM films WHERE (release_year = 1994 OR release_year = 1995) AND (certification = 'PG' OR certification ='R') ;
      • BETWEEN, AND
    • SELECT * FROM coats WHERE color = 'yellow' OR length = 'short'; SELECT * FROM coats WHERE color = 'yellow' AND length = 'short'; SELECT * FROM coats WHERE buttons BETWEEN 1 AND 5;

Filtering text

  • Filter a pattern rather than text
    • LIKE : 필드에 pattern 찾기
      • % : zero, one or many characters
      • _ : a single character
    • NOT LIKE : 이 pattern 아닌 field
    • Wildcard position
      • ex) ‘%r’ : 끝에 r로 끝나는 것 / ‘_ _t%’ : 앞에 두개 글자 있고 다음이 t
  • WHERE , IN
  • SELECT title FROM films WHERE release_year IN (1920,1930,1940) ; # 1920,1930,1940 중에 하나

NULL values

  • missing values
    • Count(field_name) : 결측치 포함하지 않는다
    • count(*) : 결측치 포함
  • IS NULL
  • SELECT COUNT(*) AS FROM people where birthdate IS NULL ;
  • IS NOT NULL

Relational Databases

Database

: 데이터를 저장하는 공간

ex) patron, books and checkouts table → 포함하는 공간이 데이터베이스

  • Relational database

: 데이터베이스 안에서 테이블의 데이터 사이의 관계를 정의하는 것

ex) Which books did James check out during 2022?

→ James(patron) / card_num(90123) / card_num(checkouts) / id(checkouts) / id(books) / id(title)

  • Adavantages
    • 테이블이 엑셀과 구글시트와 같이 스프레드시트로 정리되어 있지만 데이터베으스는 이 스프레드시트보다 강력하다고 한다.
    → much more data + storage is more secure
    • 많은 사용자들이 쿼리를 사용해서 동시에 데이터로부터 인사이트를 모을 수 있다
    • 데이터베이스가 queried 되었을 때 데이터베이스 안에 저장된 데이터는 변하지 않는다
    • 데이터베이스 정보는 쿼리 방법에 따라 접근가능하고 제공된다

Tables

  • rows and columns 으로 구성되어 있다
    • row : records (row의 수가 unlimited)
      • row in a table
      • an individual observation
    • columns : fields (field는 데이터베이스 만들어졌을 때의 set에 limited)
      • one piece of information about all observation
      • ex) name field - lists all of the name
  • Table manners
    • Table naming
      • lowercase
      • space를 사용하면 안된다 + 대신에 underscore 사용
      • collective group(집단)을 나타낼 수 있는 것이 제일 좋지만 plural name(복수형 이름) 가능
    • field naming
      • lowercase
      • should not involve spaces
      • singular than plural
      • cannot have the same name
      • table 이름과 같으면 안된다
    • Key : unique identifier
      • 같은 테이블안에서 다른 record들을 구별하게 해주는 역할을 한다 → index느낌
    • table topic remain separate
      • a clearly marked subject > multiple subjects is combined→ duplicate information → less clearMaham has none checkout_id → 더이상 card_num unique하지 않다.
      • ex) lzzy two checkouts

Data

: 데이터 타입은 각 필드마다 명시가 되어있어야 한다. 데이터 타입은 수/ 텍스트 / 날짜에 따라 달라진다

cf) 데이터 타입 쓰는 이유

  1. 데이터 타입이 다른 데이터들은 다르게 저장되고 다른 저장공간을 차지하기 때문
  2. 특정한 데이터 타입에 따라 몇몇 계산이 그것에만 적용되기 때문에

ex) multiply a number by another number / text multiply (X)

  • String : 문자의 sequence (letter, punctuation)
    • string 데이터 타입에도 종류가 나누어진다
      • 250까지 문자를 가질 수 있는 타입 → 저장공간을 아낄 수 있다
      • more flexible and can store large strings / tens of thousands of characters
      • → VARCHAR
  • ex) Manham, James
  • Integers : whole number
    • 몇가지 종류로 나뉜다 (수의 크기에 따라)
      • INT (less than negative two billion to more than positive two billion
  • Floats : number (fractional part를 포함)
    • NUMERIC : 38 소수자리까지 저장할 수 있다
  • Schemas : blueprints of databases , 데이터베이스의 구조를 보여주고 데이터베이스에 어떤 테이블이 저장되어 있고 테이블 사이에 관계도 보여준다
    • 각 필드마다 가지고 있는 데이터의 타입을 알려준다
  • Storage
    • 데이터베이스 테이블은 서버의 하드 디스크에 저장되어 있는 것
    • 서버는 데이터 접근가능하게 하고 서버에 저장된 웹사이트나 파일에 접근하게 만든다

Querying

: 많은 조직에서는 SQL을 spreadsheet의 대체제로 사용한다

만약 데이터가 spreadsheet에 있고 다른 데이터와 연관이 없다면 단순히 가져다 쓰면 된다

BUT Diverse한 데이터는 데이터베이스 안에서 정리하는 것이 가장 best

Keywords

: 코드에서 수행할 작업을 하는데 사용되는 약속된 단어! (코드 함수 같은 것)

SELECT / FROM

  • SELECT : fields should be selected
  • FROM : 필드가 저장된 Table

cf) 퀴리가 완성되었을 때는 세미클론을 찍어줘야한다 (;)

예제1)

SELECT card_num, name # 여러 필드 가져오고 싶으면 (,) 사용 
FROM patrons;

SELECT name, card_num # 필드 순서 바꾸기 
FROM patrons;

SELECT * #모든 필드 다 가져오기 
FROM patrons ; 
  • Aliasing : rename columns
SELECT name AS first_name, year_hired # 필드(name) 이름 새로 변경(first_name)
FROM employees;
  • Distinct records : return a list of unique values
SELECT DISTINCT year_hired # 중복되는 record 제거 
FROM employees;

SELECT DISTINCT dept_id, year_hired # 두 필드 모두 고려한 중복 값 제거  
FROM employees;
  • Views : 저장된 SQL SELECT 문의 결과 테이블을 나타낸다
    • 뷰에 포함된 데이터는 데이터베이스에 저장되지 않는다 → 가상 테이블이기 때문에
    • 쿼리 코드가 저장되는 것
    • 뷰 생성법
    • CREATE VIEW employee_hire_years AS SELECT id, name, year_hired FROM employees;
    • View 사용법
    • SELECT id,name FROM employee_hire_years;

Selecting Data

  • Count : 필드안에 있는 레코드의 수
SELECT COUNT(birthdate) AS count_birthdates # COUNT(field) 
FROM people ; 

SELECT COUNT(name) AS count_names, COUNT(birthdate) AS count_birthdates #multiple field
FROM people ; 

SELECT COUNT(*) AS total_records
FROM people;   # all fileds의 수 

SELECT COUNT(DISTINCT birthdate) AS count_distinct_birthdates 
FROM people;
  • order of execution : not processed in its written order
    • table 정하기 → select 문
    • LIMIT : result개수 정할 수 있다
  • Debugging SQL
    • Mispelling
    • Comma errors
    • Keyword errors
  • SQL formatting
    • Formatiing is not required
      • 한줄로 써도 실행된다
      • capitalization 안해도 된다
    • semicolon (PostgreSQL 필요없다)
      • Best practice
      • Easier to translate
      • Indicate the end of query
    • non-standard field names
      • release year - release_year
        • “release year” 사용하면 된다
        SELECT title, "release year", country
        FROM films
        LIMIT 3 ; 
        

Filtering Records

  • Where : 조건문
    • Comparison operators
    • Strings : single-quotes
    • Order of execution
      • written code : select - from - where - limit
      • order of execution : from - where - select - limit
  • SELECT title FROM films WHERE release_year > 1960; # WHERE release_year = 1960 # WHERE release_year <> 1960 (not equal)
  • Multiple criteria
    • OR, AND, BETWEEN
      • OR : at least one condition
      • AND : satisfy all criteria
      • AND, OR
      • SELECT title FROM films WHERE (release_year = 1994 OR release_year = 1995) AND (certification = 'PG' OR certification ='R') ;
      • BETWEEN, AND
    • SELECT * FROM coats WHERE color = 'yellow' OR length = 'short'; SELECT * FROM coats WHERE color = 'yellow' AND length = 'short'; SELECT * FROM coats WHERE buttons BETWEEN 1 AND 5;

Filtering text

  • Filter a pattern rather than text
    • LIKE : 필드에 pattern 찾기
      • % : zero, one or many characters
      • _ : a single character
    • NOT LIKE : 이 pattern 아닌 field
    • Wildcard position
      • ex) ‘%r’ : 끝에 r로 끝나는 것 / ‘_ _t%’ : 앞에 두개 글자 있고 다음이 t
  • WHERE , IN
  • SELECT title FROM films WHERE release_year IN (1920,1930,1940) ; # 1920,1930,1940 중에 하나

NULL values

  • missing values
    • Count(field_name) : 결측치 포함하지 않는다
    • count(*) : 결측치 포함
  • IS NULL
  • SELECT COUNT(*) AS FROM people where birthdate IS NULL ;
  • IS NOT NULL

Relational Databases

Database

: 데이터를 저장하는 공간

ex) patron, books and checkouts table → 포함하는 공간이 데이터베이스

  • Relational database

: 데이터베이스 안에서 테이블의 데이터 사이의 관계를 정의하는 것

ex) Which books did James check out during 2022?

→ James(patron) / card_num(90123) / card_num(checkouts) / id(checkouts) / id(books) / id(title)

  • Adavantages
    • 테이블이 엑셀과 구글시트와 같이 스프레드시트로 정리되어 있지만 데이터베으스는 이 스프레드시트보다 강력하다고 한다.
    → much more data + storage is more secure
    • 많은 사용자들이 쿼리를 사용해서 동시에 데이터로부터 인사이트를 모을 수 있다
    • 데이터베이스가 queried 되었을 때 데이터베이스 안에 저장된 데이터는 변하지 않는다
    • 데이터베이스 정보는 쿼리 방법에 따라 접근가능하고 제공된다

Tables

  • rows and columns 으로 구성되어 있다
    • row : records (row의 수가 unlimited)
      • row in a table
      • an individual observation
    • columns : fields (field는 데이터베이스 만들어졌을 때의 set에 limited)
      • one piece of information about all observation
      • ex) name field - lists all of the name
  • Table manners
    • Table naming
      • lowercase
      • space를 사용하면 안된다 + 대신에 underscore 사용
      • collective group(집단)을 나타낼 수 있는 것이 제일 좋지만 plural name(복수형 이름) 가능
    • field naming
      • lowercase
      • should not involve spaces
      • singular than plural
      • cannot have the same name
      • table 이름과 같으면 안된다
    • Key : unique identifier
      • 같은 테이블안에서 다른 record들을 구별하게 해주는 역할을 한다 → index느낌
    • table topic remain separate
      • a clearly marked subject > multiple subjects is combined→ duplicate information → less clearMaham has none checkout_id → 더이상 card_num unique하지 않다.
      • ex) lzzy two checkouts

Data

: 데이터 타입은 각 필드마다 명시가 되어있어야 한다. 데이터 타입은 수/ 텍스트 / 날짜에 따라 달라진다

cf) 데이터 타입 쓰는 이유

  1. 데이터 타입이 다른 데이터들은 다르게 저장되고 다른 저장공간을 차지하기 때문
  2. 특정한 데이터 타입에 따라 몇몇 계산이 그것에만 적용되기 때문에

ex) multiply a number by another number / text multiply (X)

  • String : 문자의 sequence (letter, punctuation)
    • string 데이터 타입에도 종류가 나누어진다
      • 250까지 문자를 가질 수 있는 타입 → 저장공간을 아낄 수 있다
      • more flexible and can store large strings / tens of thousands of characters
      • → VARCHAR
  • ex) Manham, James
  • Integers : whole number
    • 몇가지 종류로 나뉜다 (수의 크기에 따라)
      • INT (less than negative two billion to more than positive two billion
  • Floats : number (fractional part를 포함)
    • NUMERIC : 38 소수자리까지 저장할 수 있다
  • Schemas : blueprints of databases , 데이터베이스의 구조를 보여주고 데이터베이스에 어떤 테이블이 저장되어 있고 테이블 사이에 관계도 보여준다
    • 각 필드마다 가지고 있는 데이터의 타입을 알려준다
  • Storage
    • 데이터베이스 테이블은 서버의 하드 디스크에 저장되어 있는 것
    • 서버는 데이터 접근가능하게 하고 서버에 저장된 웹사이트나 파일에 접근하게 만든다

Querying

: 많은 조직에서는 SQL을 spreadsheet의 대체제로 사용한다

만약 데이터가 spreadsheet에 있고 다른 데이터와 연관이 없다면 단순히 가져다 쓰면 된다

BUT Diverse한 데이터는 데이터베이스 안에서 정리하는 것이 가장 best

Keywords

: 코드에서 수행할 작업을 하는데 사용되는 약속된 단어! (코드 함수 같은 것)

SELECT / FROM

  • SELECT : fields should be selected
  • FROM : 필드가 저장된 Table

cf) 퀴리가 완성되었을 때는 세미클론을 찍어줘야한다 (;)

예제1)

SELECT card_num, name # 여러 필드 가져오고 싶으면 (,) 사용 
FROM patrons;

SELECT name, card_num # 필드 순서 바꾸기 
FROM patrons;

SELECT * #모든 필드 다 가져오기 
FROM patrons ; 
  • Aliasing : rename columns
SELECT name AS first_name, year_hired # 필드(name) 이름 새로 변경(first_name)
FROM employees;
  • Distinct records : return a list of unique values
SELECT DISTINCT year_hired # 중복되는 record 제거 
FROM employees;

SELECT DISTINCT dept_id, year_hired # 두 필드 모두 고려한 중복 값 제거  
FROM employees;
  • Views : 저장된 SQL SELECT 문의 결과 테이블을 나타낸다
    • 뷰에 포함된 데이터는 데이터베이스에 저장되지 않는다 → 가상 테이블이기 때문에
    • 쿼리 코드가 저장되는 것
    • 뷰 생성법
    • CREATE VIEW employee_hire_years AS SELECT id, name, year_hired FROM employees;
    • View 사용법
    • SELECT id,name FROM employee_hire_years;

Selecting Data

  • Count : 필드안에 있는 레코드의 수
SELECT COUNT(birthdate) AS count_birthdates # COUNT(field) 
FROM people ; 

SELECT COUNT(name) AS count_names, COUNT(birthdate) AS count_birthdates #multiple field
FROM people ; 

SELECT COUNT(*) AS total_records
FROM people;   # all fileds의 수 

SELECT COUNT(DISTINCT birthdate) AS count_distinct_birthdates 
FROM people;
  • order of execution : not processed in its written order
    • table 정하기 → select 문
    • LIMIT : result개수 정할 수 있다
  • Debugging SQL
    • Mispelling
    • Comma errors
    • Keyword errors
  • SQL formatting
    • Formatiing is not required
      • 한줄로 써도 실행된다
      • capitalization 안해도 된다
    • semicolon (PostgreSQL 필요없다)
      • Best practice
      • Easier to translate
      • Indicate the end of query
    • non-standard field names
      • release year - release_year
        • “release year” 사용하면 된다
        SELECT title, "release year", country
        FROM films
        LIMIT 3 ; 
        

Filtering Records

  • Where : 조건문
    • Comparison operators
    • Strings : single-quotes
    • Order of execution
      • written code : select - from - where - limit
      • order of execution : from - where - select - limit
  • SELECT title FROM films WHERE release_year > 1960; # WHERE release_year = 1960 # WHERE release_year <> 1960 (not equal)
  • Multiple criteria
    • OR, AND, BETWEEN
      • OR : at least one condition
      • AND : satisfy all criteria
      • AND, OR
      • SELECT title FROM films WHERE (release_year = 1994 OR release_year = 1995) AND (certification = 'PG' OR certification ='R') ;
      • BETWEEN, AND
    • SELECT * FROM coats WHERE color = 'yellow' OR length = 'short'; SELECT * FROM coats WHERE color = 'yellow' AND length = 'short'; SELECT * FROM coats WHERE buttons BETWEEN 1 AND 5;

Filtering text

  • Filter a pattern rather than text
    • LIKE : 필드에 pattern 찾기
      • % : zero, one or many characters
      • _ : a single character
    • NOT LIKE : 이 pattern 아닌 field
    • Wildcard position
      • ex) ‘%r’ : 끝에 r로 끝나는 것 / ‘_ _t%’ : 앞에 두개 글자 있고 다음이 t
  • WHERE , IN
  • SELECT title FROM films WHERE release_year IN (1920,1930,1940) ; # 1920,1930,1940 중에 하나

NULL values

  • missing values
    • Count(field_name) : 결측치 포함하지 않는다
    • count(*) : 결측치 포함
  • IS NULL
  • SELECT COUNT(*) AS FROM people where birthdate IS NULL ;
  • IS NOT NULL

Relational Databases

Database

: 데이터를 저장하는 공간

ex) patron, books and checkouts table → 포함하는 공간이 데이터베이스

  • Relational database

: 데이터베이스 안에서 테이블의 데이터 사이의 관계를 정의하는 것

ex) Which books did James check out during 2022?

→ James(patron) / card_num(90123) / card_num(checkouts) / id(checkouts) / id(books) / id(title)

  • Adavantages
    • 테이블이 엑셀과 구글시트와 같이 스프레드시트로 정리되어 있지만 데이터베으스는 이 스프레드시트보다 강력하다고 한다.
    → much more data + storage is more secure
    • 많은 사용자들이 쿼리를 사용해서 동시에 데이터로부터 인사이트를 모을 수 있다
    • 데이터베이스가 queried 되었을 때 데이터베이스 안에 저장된 데이터는 변하지 않는다
    • 데이터베이스 정보는 쿼리 방법에 따라 접근가능하고 제공된다

Tables

  • rows and columns 으로 구성되어 있다
    • row : records (row의 수가 unlimited)
      • row in a table
      • an individual observation
    • columns : fields (field는 데이터베이스 만들어졌을 때의 set에 limited)
      • one piece of information about all observation
      • ex) name field - lists all of the name
  • Table manners
    • Table naming
      • lowercase
      • space를 사용하면 안된다 + 대신에 underscore 사용
      • collective group(집단)을 나타낼 수 있는 것이 제일 좋지만 plural name(복수형 이름) 가능
    • field naming
      • lowercase
      • should not involve spaces
      • singular than plural
      • cannot have the same name
      • table 이름과 같으면 안된다
    • Key : unique identifier
      • 같은 테이블안에서 다른 record들을 구별하게 해주는 역할을 한다 → index느낌
    • table topic remain separate
      • a clearly marked subject > multiple subjects is combined→ duplicate information → less clearMaham has none checkout_id → 더이상 card_num unique하지 않다.
      • ex) lzzy two checkouts

Data

: 데이터 타입은 각 필드마다 명시가 되어있어야 한다. 데이터 타입은 수/ 텍스트 / 날짜에 따라 달라진다

cf) 데이터 타입 쓰는 이유

  1. 데이터 타입이 다른 데이터들은 다르게 저장되고 다른 저장공간을 차지하기 때문
  2. 특정한 데이터 타입에 따라 몇몇 계산이 그것에만 적용되기 때문에

ex) multiply a number by another number / text multiply (X)

  • String : 문자의 sequence (letter, punctuation)
    • string 데이터 타입에도 종류가 나누어진다
      • 250까지 문자를 가질 수 있는 타입 → 저장공간을 아낄 수 있다
      • more flexible and can store large strings / tens of thousands of characters
      • → VARCHAR
  • ex) Manham, James
  • Integers : whole number
    • 몇가지 종류로 나뉜다 (수의 크기에 따라)
      • INT (less than negative two billion to more than positive two billion
  • Floats : number (fractional part를 포함)
    • NUMERIC : 38 소수자리까지 저장할 수 있다
  • Schemas : blueprints of databases , 데이터베이스의 구조를 보여주고 데이터베이스에 어떤 테이블이 저장되어 있고 테이블 사이에 관계도 보여준다
    • 각 필드마다 가지고 있는 데이터의 타입을 알려준다
  • Storage
    • 데이터베이스 테이블은 서버의 하드 디스크에 저장되어 있는 것
    • 서버는 데이터 접근가능하게 하고 서버에 저장된 웹사이트나 파일에 접근하게 만든다

Querying

: 많은 조직에서는 SQL을 spreadsheet의 대체제로 사용한다

만약 데이터가 spreadsheet에 있고 다른 데이터와 연관이 없다면 단순히 가져다 쓰면 된다

BUT Diverse한 데이터는 데이터베이스 안에서 정리하는 것이 가장 best

Keywords

: 코드에서 수행할 작업을 하는데 사용되는 약속된 단어! (코드 함수 같은 것)

SELECT / FROM

  • SELECT : fields should be selected
  • FROM : 필드가 저장된 Table

cf) 퀴리가 완성되었을 때는 세미클론을 찍어줘야한다 (;)

예제1)

SELECT card_num, name # 여러 필드 가져오고 싶으면 (,) 사용 
FROM patrons;

SELECT name, card_num # 필드 순서 바꾸기 
FROM patrons;

SELECT * #모든 필드 다 가져오기 
FROM patrons ; 
  • Aliasing : rename columns
SELECT name AS first_name, year_hired # 필드(name) 이름 새로 변경(first_name)
FROM employees;
  • Distinct records : return a list of unique values
SELECT DISTINCT year_hired # 중복되는 record 제거 
FROM employees;

SELECT DISTINCT dept_id, year_hired # 두 필드 모두 고려한 중복 값 제거  
FROM employees;
  • Views : 저장된 SQL SELECT 문의 결과 테이블을 나타낸다
    • 뷰에 포함된 데이터는 데이터베이스에 저장되지 않는다 → 가상 테이블이기 때문에
    • 쿼리 코드가 저장되는 것
    • 뷰 생성법
    • CREATE VIEW employee_hire_years AS SELECT id, name, year_hired FROM employees;
    • View 사용법
    • SELECT id,name FROM employee_hire_years;

Selecting Data

  • Count : 필드안에 있는 레코드의 수
SELECT COUNT(birthdate) AS count_birthdates # COUNT(field) 
FROM people ; 

SELECT COUNT(name) AS count_names, COUNT(birthdate) AS count_birthdates #multiple field
FROM people ; 

SELECT COUNT(*) AS total_records
FROM people;   # all fileds의 수 

SELECT COUNT(DISTINCT birthdate) AS count_distinct_birthdates 
FROM people;
  • order of execution : not processed in its written order
    • table 정하기 → select 문
    • LIMIT : result개수 정할 수 있다
  • Debugging SQL
    • Mispelling
    • Comma errors
    • Keyword errors
  • SQL formatting
    • Formatiing is not required
      • 한줄로 써도 실행된다
      • capitalization 안해도 된다
    • semicolon (PostgreSQL 필요없다)
      • Best practice
      • Easier to translate
      • Indicate the end of query
    • non-standard field names
      • release year - release_year
        • “release year” 사용하면 된다
        SELECT title, "release year", country
        FROM films
        LIMIT 3 ; 
        

Filtering Records

  • Where : 조건문
    • Comparison operators
    • Strings : single-quotes
    • Order of execution
      • written code : select - from - where - limit
      • order of execution : from - where - select - limit
  • SELECT title FROM films WHERE release_year > 1960; # WHERE release_year = 1960 # WHERE release_year <> 1960 (not equal)
  • Multiple criteria
    • OR, AND, BETWEEN
      • OR : at least one condition
      • AND : satisfy all criteria
      • AND, OR
      • SELECT title FROM films WHERE (release_year = 1994 OR release_year = 1995) AND (certification = 'PG' OR certification ='R') ;
      • BETWEEN, AND
    • SELECT * FROM coats WHERE color = 'yellow' OR length = 'short'; SELECT * FROM coats WHERE color = 'yellow' AND length = 'short'; SELECT * FROM coats WHERE buttons BETWEEN 1 AND 5;

Filtering text

  • Filter a pattern rather than text
    • LIKE : 필드에 pattern 찾기
      • % : zero, one or many characters
      • _ : a single character
    • NOT LIKE : 이 pattern 아닌 field
    • Wildcard position
      • ex) ‘%r’ : 끝에 r로 끝나는 것 / ‘_ _t%’ : 앞에 두개 글자 있고 다음이 t
  • WHERE , IN
  • SELECT title FROM films WHERE release_year IN (1920,1930,1940) ; # 1920,1930,1940 중에 하나

NULL values

  • missing values
    • Count(field_name) : 결측치 포함하지 않는다
    • count(*) : 결측치 포함
  • IS NULL
  • SELECT COUNT(*) AS FROM people where birthdate IS NULL ;
  • IS NOT NULL

Relational Databases

Database

: 데이터를 저장하는 공간

ex) patron, books and checkouts table → 포함하는 공간이 데이터베이스

  • Relational database

: 데이터베이스 안에서 테이블의 데이터 사이의 관계를 정의하는 것

ex) Which books did James check out during 2022?

→ James(patron) / card_num(90123) / card_num(checkouts) / id(checkouts) / id(books) / id(title)

  • Adavantages
    • 테이블이 엑셀과 구글시트와 같이 스프레드시트로 정리되어 있지만 데이터베으스는 이 스프레드시트보다 강력하다고 한다.
    → much more data + storage is more secure
    • 많은 사용자들이 쿼리를 사용해서 동시에 데이터로부터 인사이트를 모을 수 있다
    • 데이터베이스가 queried 되었을 때 데이터베이스 안에 저장된 데이터는 변하지 않는다
    • 데이터베이스 정보는 쿼리 방법에 따라 접근가능하고 제공된다

Tables

  • rows and columns 으로 구성되어 있다
    • row : records (row의 수가 unlimited)
      • row in a table
      • an individual observation
    • columns : fields (field는 데이터베이스 만들어졌을 때의 set에 limited)
      • one piece of information about all observation
      • ex) name field - lists all of the name
  • Table manners
    • Table naming
      • lowercase
      • space를 사용하면 안된다 + 대신에 underscore 사용
      • collective group(집단)을 나타낼 수 있는 것이 제일 좋지만 plural name(복수형 이름) 가능
    • field naming
      • lowercase
      • should not involve spaces
      • singular than plural
      • cannot have the same name
      • table 이름과 같으면 안된다
    • Key : unique identifier
      • 같은 테이블안에서 다른 record들을 구별하게 해주는 역할을 한다 → index느낌
    • table topic remain separate
      • a clearly marked subject > multiple subjects is combined→ duplicate information → less clearMaham has none checkout_id → 더이상 card_num unique하지 않다.
      • ex) lzzy two checkouts

Data

: 데이터 타입은 각 필드마다 명시가 되어있어야 한다. 데이터 타입은 수/ 텍스트 / 날짜에 따라 달라진다

cf) 데이터 타입 쓰는 이유

  1. 데이터 타입이 다른 데이터들은 다르게 저장되고 다른 저장공간을 차지하기 때문
  2. 특정한 데이터 타입에 따라 몇몇 계산이 그것에만 적용되기 때문에

ex) multiply a number by another number / text multiply (X)

  • String : 문자의 sequence (letter, punctuation)
    • string 데이터 타입에도 종류가 나누어진다
      • 250까지 문자를 가질 수 있는 타입 → 저장공간을 아낄 수 있다
      • more flexible and can store large strings / tens of thousands of characters
      • → VARCHAR
  • ex) Manham, James
  • Integers : whole number
    • 몇가지 종류로 나뉜다 (수의 크기에 따라)
      • INT (less than negative two billion to more than positive two billion
  • Floats : number (fractional part를 포함)
    • NUMERIC : 38 소수자리까지 저장할 수 있다
  • Schemas : blueprints of databases , 데이터베이스의 구조를 보여주고 데이터베이스에 어떤 테이블이 저장되어 있고 테이블 사이에 관계도 보여준다
    • 각 필드마다 가지고 있는 데이터의 타입을 알려준다
  • Storage
    • 데이터베이스 테이블은 서버의 하드 디스크에 저장되어 있는 것
    • 서버는 데이터 접근가능하게 하고 서버에 저장된 웹사이트나 파일에 접근하게 만든다

Querying

: 많은 조직에서는 SQL을 spreadsheet의 대체제로 사용한다

만약 데이터가 spreadsheet에 있고 다른 데이터와 연관이 없다면 단순히 가져다 쓰면 된다

BUT Diverse한 데이터는 데이터베이스 안에서 정리하는 것이 가장 best

Keywords

: 코드에서 수행할 작업을 하는데 사용되는 약속된 단어! (코드 함수 같은 것)

SELECT / FROM

  • SELECT : fields should be selected
  • FROM : 필드가 저장된 Table

cf) 퀴리가 완성되었을 때는 세미클론을 찍어줘야한다 (;)

예제1)

SELECT card_num, name # 여러 필드 가져오고 싶으면 (,) 사용 
FROM patrons;

SELECT name, card_num # 필드 순서 바꾸기 
FROM patrons;

SELECT * #모든 필드 다 가져오기 
FROM patrons ; 
  • Aliasing : rename columns
SELECT name AS first_name, year_hired # 필드(name) 이름 새로 변경(first_name)
FROM employees;
  • Distinct records : return a list of unique values
SELECT DISTINCT year_hired # 중복되는 record 제거 
FROM employees;

SELECT DISTINCT dept_id, year_hired # 두 필드 모두 고려한 중복 값 제거  
FROM employees;
  • Views : 저장된 SQL SELECT 문의 결과 테이블을 나타낸다
    • 뷰에 포함된 데이터는 데이터베이스에 저장되지 않는다 → 가상 테이블이기 때문에
    • 쿼리 코드가 저장되는 것
    • 뷰 생성법
    • CREATE VIEW employee_hire_years AS SELECT id, name, year_hired FROM employees;
    • View 사용법
    • SELECT id,name FROM employee_hire_years;

Selecting Data

  • Count : 필드안에 있는 레코드의 수
SELECT COUNT(birthdate) AS count_birthdates # COUNT(field) 
FROM people ; 

SELECT COUNT(name) AS count_names, COUNT(birthdate) AS count_birthdates #multiple field
FROM people ; 

SELECT COUNT(*) AS total_records
FROM people;   # all fileds의 수 

SELECT COUNT(DISTINCT birthdate) AS count_distinct_birthdates 
FROM people;
  • order of execution : not processed in its written order
    • table 정하기 → select 문
    • LIMIT : result개수 정할 수 있다
  • Debugging SQL
    • Mispelling
    • Comma errors
    • Keyword errors
  • SQL formatting
    • Formatiing is not required
      • 한줄로 써도 실행된다
      • capitalization 안해도 된다
    • semicolon (PostgreSQL 필요없다)
      • Best practice
      • Easier to translate
      • Indicate the end of query
    • non-standard field names
      • release year - release_year
        • “release year” 사용하면 된다
        SELECT title, "release year", country
        FROM films
        LIMIT 3 ; 
        

Filtering Records

  • Where : 조건문
    • Comparison operators
    • Strings : single-quotes
    • Order of execution
      • written code : select - from - where - limit
      • order of execution : from - where - select - limit
  • SELECT title FROM films WHERE release_year > 1960; # WHERE release_year = 1960 # WHERE release_year <> 1960 (not equal)
  • Multiple criteria
    • OR, AND, BETWEEN
      • OR : at least one condition
      • AND : satisfy all criteria
      • AND, OR
      • SELECT title FROM films WHERE (release_year = 1994 OR release_year = 1995) AND (certification = 'PG' OR certification ='R') ;
      • BETWEEN, AND
    • SELECT * FROM coats WHERE color = 'yellow' OR length = 'short'; SELECT * FROM coats WHERE color = 'yellow' AND length = 'short'; SELECT * FROM coats WHERE buttons BETWEEN 1 AND 5;

Filtering text

  • Filter a pattern rather than text
    • LIKE : 필드에 pattern 찾기
      • % : zero, one or many characters
      • _ : a single character
    • NOT LIKE : 이 pattern 아닌 field
    • Wildcard position
      • ex) ‘%r’ : 끝에 r로 끝나는 것 / ‘_ _t%’ : 앞에 두개 글자 있고 다음이 t
  • WHERE , IN
  • SELECT title FROM films WHERE release_year IN (1920,1930,1940) ; # 1920,1930,1940 중에 하나

NULL values

  • missing values
    • Count(field_name) : 결측치 포함하지 않는다
    • count(*) : 결측치 포함
  • IS NULL
  • SELECT COUNT(*) AS FROM people where birthdate IS NULL ;
  • IS NOT NULL

Relational Databases

Database

: 데이터를 저장하는 공간

ex) patron, books and checkouts table → 포함하는 공간이 데이터베이스

  • Relational database

: 데이터베이스 안에서 테이블의 데이터 사이의 관계를 정의하는 것

ex) Which books did James check out during 2022?

→ James(patron) / card_num(90123) / card_num(checkouts) / id(checkouts) / id(books) / id(title)

  • Adavantages
    • 테이블이 엑셀과 구글시트와 같이 스프레드시트로 정리되어 있지만 데이터베으스는 이 스프레드시트보다 강력하다고 한다.
    → much more data + storage is more secure
    • 많은 사용자들이 쿼리를 사용해서 동시에 데이터로부터 인사이트를 모을 수 있다
    • 데이터베이스가 queried 되었을 때 데이터베이스 안에 저장된 데이터는 변하지 않는다
    • 데이터베이스 정보는 쿼리 방법에 따라 접근가능하고 제공된다

Tables

  • rows and columns 으로 구성되어 있다
    • row : records (row의 수가 unlimited)
      • row in a table
      • an individual observation
    • columns : fields (field는 데이터베이스 만들어졌을 때의 set에 limited)
      • one piece of information about all observation
      • ex) name field - lists all of the name
  • Table manners
    • Table naming
      • lowercase
      • space를 사용하면 안된다 + 대신에 underscore 사용
      • collective group(집단)을 나타낼 수 있는 것이 제일 좋지만 plural name(복수형 이름) 가능
    • field naming
      • lowercase
      • should not involve spaces
      • singular than plural
      • cannot have the same name
      • table 이름과 같으면 안된다
    • Key : unique identifier
      • 같은 테이블안에서 다른 record들을 구별하게 해주는 역할을 한다 → index느낌
    • table topic remain separate
      • a clearly marked subject > multiple subjects is combined→ duplicate information → less clearMaham has none checkout_id → 더이상 card_num unique하지 않다.
      • ex) lzzy two checkouts

Data

: 데이터 타입은 각 필드마다 명시가 되어있어야 한다. 데이터 타입은 수/ 텍스트 / 날짜에 따라 달라진다

cf) 데이터 타입 쓰는 이유

  1. 데이터 타입이 다른 데이터들은 다르게 저장되고 다른 저장공간을 차지하기 때문
  2. 특정한 데이터 타입에 따라 몇몇 계산이 그것에만 적용되기 때문에

ex) multiply a number by another number / text multiply (X)

  • String : 문자의 sequence (letter, punctuation)
    • string 데이터 타입에도 종류가 나누어진다
      • 250까지 문자를 가질 수 있는 타입 → 저장공간을 아낄 수 있다
      • more flexible and can store large strings / tens of thousands of characters
      • → VARCHAR
  • ex) Manham, James
  • Integers : whole number
    • 몇가지 종류로 나뉜다 (수의 크기에 따라)
      • INT (less than negative two billion to more than positive two billion
  • Floats : number (fractional part를 포함)
    • NUMERIC : 38 소수자리까지 저장할 수 있다
  • Schemas : blueprints of databases , 데이터베이스의 구조를 보여주고 데이터베이스에 어떤 테이블이 저장되어 있고 테이블 사이에 관계도 보여준다
    • 각 필드마다 가지고 있는 데이터의 타입을 알려준다
  • Storage
    • 데이터베이스 테이블은 서버의 하드 디스크에 저장되어 있는 것
    • 서버는 데이터 접근가능하게 하고 서버에 저장된 웹사이트나 파일에 접근하게 만든다

Querying

: 많은 조직에서는 SQL을 spreadsheet의 대체제로 사용한다

만약 데이터가 spreadsheet에 있고 다른 데이터와 연관이 없다면 단순히 가져다 쓰면 된다

BUT Diverse한 데이터는 데이터베이스 안에서 정리하는 것이 가장 best

Keywords

: 코드에서 수행할 작업을 하는데 사용되는 약속된 단어! (코드 함수 같은 것)

SELECT / FROM

  • SELECT : fields should be selected
  • FROM : 필드가 저장된 Table

cf) 퀴리가 완성되었을 때는 세미클론을 찍어줘야한다 (;)

예제1)

SELECT card_num, name # 여러 필드 가져오고 싶으면 (,) 사용 
FROM patrons;

SELECT name, card_num # 필드 순서 바꾸기 
FROM patrons;

SELECT * #모든 필드 다 가져오기 
FROM patrons ; 
  • Aliasing : rename columns
SELECT name AS first_name, year_hired # 필드(name) 이름 새로 변경(first_name)
FROM employees;
  • Distinct records : return a list of unique values
SELECT DISTINCT year_hired # 중복되는 record 제거 
FROM employees;

SELECT DISTINCT dept_id, year_hired # 두 필드 모두 고려한 중복 값 제거  
FROM employees;
  • Views : 저장된 SQL SELECT 문의 결과 테이블을 나타낸다
    • 뷰에 포함된 데이터는 데이터베이스에 저장되지 않는다 → 가상 테이블이기 때문에
    • 쿼리 코드가 저장되는 것
    • 뷰 생성법
    • CREATE VIEW employee_hire_years AS SELECT id, name, year_hired FROM employees;
    • View 사용법
    • SELECT id,name FROM employee_hire_years;

Selecting Data

  • Count : 필드안에 있는 레코드의 수
SELECT COUNT(birthdate) AS count_birthdates # COUNT(field) 
FROM people ; 

SELECT COUNT(name) AS count_names, COUNT(birthdate) AS count_birthdates #multiple field
FROM people ; 

SELECT COUNT(*) AS total_records
FROM people;   # all fileds의 수 

SELECT COUNT(DISTINCT birthdate) AS count_distinct_birthdates 
FROM people;
  • order of execution : not processed in its written order
    • table 정하기 → select 문
    • LIMIT : result개수 정할 수 있다
  • Debugging SQL
    • Mispelling
    • Comma errors
    • Keyword errors
  • SQL formatting
    • Formatiing is not required
      • 한줄로 써도 실행된다
      • capitalization 안해도 된다
    • semicolon (PostgreSQL 필요없다)
      • Best practice
      • Easier to translate
      • Indicate the end of query
    • non-standard field names
      • release year - release_year
        • “release year” 사용하면 된다
        SELECT title, "release year", country
        FROM films
        LIMIT 3 ; 
        

Filtering Records

  • Where : 조건문
    • Comparison operators
    • Strings : single-quotes
    • Order of execution
      • written code : select - from - where - limit
      • order of execution : from - where - select - limit
  • SELECT title FROM films WHERE release_year > 1960; # WHERE release_year = 1960 # WHERE release_year <> 1960 (not equal)
  • Multiple criteria
    • OR, AND, BETWEEN
      • OR : at least one condition
      • AND : satisfy all criteria
      • AND, OR
      • SELECT title FROM films WHERE (release_year = 1994 OR release_year = 1995) AND (certification = 'PG' OR certification ='R') ;
      • BETWEEN, AND
    • SELECT * FROM coats WHERE color = 'yellow' OR length = 'short'; SELECT * FROM coats WHERE color = 'yellow' AND length = 'short'; SELECT * FROM coats WHERE buttons BETWEEN 1 AND 5;

Filtering text

  • Filter a pattern rather than text
    • LIKE : 필드에 pattern 찾기
      • % : zero, one or many characters
      • _ : a single character
    • NOT LIKE : 이 pattern 아닌 field
    • Wildcard position
      • ex) ‘%r’ : 끝에 r로 끝나는 것 / ‘_ _t%’ : 앞에 두개 글자 있고 다음이 t
  • WHERE , IN
  • SELECT title FROM films WHERE release_year IN (1920,1930,1940) ; # 1920,1930,1940 중에 하나

NULL values

  • missing values
    • Count(field_name) : 결측치 포함하지 않는다
    • count(*) : 결측치 포함
  • IS NULL
  • SELECT COUNT(*) AS FROM people where birthdate IS NULL ;
  • IS NOT NULL

Relational Databases

Database

: 데이터를 저장하는 공간

ex) patron, books and checkouts table → 포함하는 공간이 데이터베이스

  • Relational database

: 데이터베이스 안에서 테이블의 데이터 사이의 관계를 정의하는 것

ex) Which books did James check out during 2022?

→ James(patron) / card_num(90123) / card_num(checkouts) / id(checkouts) / id(books) / id(title)

  • Adavantages
    • 테이블이 엑셀과 구글시트와 같이 스프레드시트로 정리되어 있지만 데이터베으스는 이 스프레드시트보다 강력하다고 한다.
    → much more data + storage is more secure
    • 많은 사용자들이 쿼리를 사용해서 동시에 데이터로부터 인사이트를 모을 수 있다
    • 데이터베이스가 queried 되었을 때 데이터베이스 안에 저장된 데이터는 변하지 않는다
    • 데이터베이스 정보는 쿼리 방법에 따라 접근가능하고 제공된다

Tables

  • rows and columns 으로 구성되어 있다
    • row : records (row의 수가 unlimited)
      • row in a table
      • an individual observation
    • columns : fields (field는 데이터베이스 만들어졌을 때의 set에 limited)
      • one piece of information about all observation
      • ex) name field - lists all of the name
  • Table manners
    • Table naming
      • lowercase
      • space를 사용하면 안된다 + 대신에 underscore 사용
      • collective group(집단)을 나타낼 수 있는 것이 제일 좋지만 plural name(복수형 이름) 가능
    • field naming
      • lowercase
      • should not involve spaces
      • singular than plural
      • cannot have the same name
      • table 이름과 같으면 안된다
    • Key : unique identifier
      • 같은 테이블안에서 다른 record들을 구별하게 해주는 역할을 한다 → index느낌
    • table topic remain separate
      • a clearly marked subject > multiple subjects is combined→ duplicate information → less clearMaham has none checkout_id → 더이상 card_num unique하지 않다.
      • ex) lzzy two checkouts

Data

: 데이터 타입은 각 필드마다 명시가 되어있어야 한다. 데이터 타입은 수/ 텍스트 / 날짜에 따라 달라진다

cf) 데이터 타입 쓰는 이유

  1. 데이터 타입이 다른 데이터들은 다르게 저장되고 다른 저장공간을 차지하기 때문
  2. 특정한 데이터 타입에 따라 몇몇 계산이 그것에만 적용되기 때문에

ex) multiply a number by another number / text multiply (X)

  • String : 문자의 sequence (letter, punctuation)
    • string 데이터 타입에도 종류가 나누어진다
      • 250까지 문자를 가질 수 있는 타입 → 저장공간을 아낄 수 있다
      • more flexible and can store large strings / tens of thousands of characters
      • → VARCHAR
  • ex) Manham, James
  • Integers : whole number
    • 몇가지 종류로 나뉜다 (수의 크기에 따라)
      • INT (less than negative two billion to more than positive two billion
  • Floats : number (fractional part를 포함)
    • NUMERIC : 38 소수자리까지 저장할 수 있다
  • Schemas : blueprints of databases , 데이터베이스의 구조를 보여주고 데이터베이스에 어떤 테이블이 저장되어 있고 테이블 사이에 관계도 보여준다
    • 각 필드마다 가지고 있는 데이터의 타입을 알려준다
  • Storage
    • 데이터베이스 테이블은 서버의 하드 디스크에 저장되어 있는 것
    • 서버는 데이터 접근가능하게 하고 서버에 저장된 웹사이트나 파일에 접근하게 만든다

Querying

: 많은 조직에서는 SQL을 spreadsheet의 대체제로 사용한다

만약 데이터가 spreadsheet에 있고 다른 데이터와 연관이 없다면 단순히 가져다 쓰면 된다

BUT Diverse한 데이터는 데이터베이스 안에서 정리하는 것이 가장 best

Keywords

: 코드에서 수행할 작업을 하는데 사용되는 약속된 단어! (코드 함수 같은 것)

SELECT / FROM

  • SELECT : fields should be selected
  • FROM : 필드가 저장된 Table

cf) 퀴리가 완성되었을 때는 세미클론을 찍어줘야한다 (;)

예제1)

SELECT card_num, name # 여러 필드 가져오고 싶으면 (,) 사용 
FROM patrons;

SELECT name, card_num # 필드 순서 바꾸기 
FROM patrons;

SELECT * #모든 필드 다 가져오기 
FROM patrons ; 
  • Aliasing : rename columns
SELECT name AS first_name, year_hired # 필드(name) 이름 새로 변경(first_name)
FROM employees;
  • Distinct records : return a list of unique values
SELECT DISTINCT year_hired # 중복되는 record 제거 
FROM employees;

SELECT DISTINCT dept_id, year_hired # 두 필드 모두 고려한 중복 값 제거  
FROM employees;
  • Views : 저장된 SQL SELECT 문의 결과 테이블을 나타낸다
    • 뷰에 포함된 데이터는 데이터베이스에 저장되지 않는다 → 가상 테이블이기 때문에
    • 쿼리 코드가 저장되는 것
    • 뷰 생성법
    • CREATE VIEW employee_hire_years AS SELECT id, name, year_hired FROM employees;
    • View 사용법
    • SELECT id,name FROM employee_hire_years;

Selecting Data

  • Count : 필드안에 있는 레코드의 수
SELECT COUNT(birthdate) AS count_birthdates # COUNT(field) 
FROM people ; 

SELECT COUNT(name) AS count_names, COUNT(birthdate) AS count_birthdates #multiple field
FROM people ; 

SELECT COUNT(*) AS total_records
FROM people;   # all fileds의 수 

SELECT COUNT(DISTINCT birthdate) AS count_distinct_birthdates 
FROM people;
  • order of execution : not processed in its written order
    • table 정하기 → select 문
    • LIMIT : result개수 정할 수 있다
  • Debugging SQL
    • Mispelling
    • Comma errors
    • Keyword errors
  • SQL formatting
    • Formatiing is not required
      • 한줄로 써도 실행된다
      • capitalization 안해도 된다
    • semicolon (PostgreSQL 필요없다)
      • Best practice
      • Easier to translate
      • Indicate the end of query
    • non-standard field names
      • release year - release_year
        • “release year” 사용하면 된다
        SELECT title, "release year", country
        FROM films
        LIMIT 3 ; 
        

Filtering Records

  • Where : 조건문
    • Comparison operators
    • Strings : single-quotes
    • Order of execution
      • written code : select - from - where - limit
      • order of execution : from - where - select - limit
  • SELECT title FROM films WHERE release_year > 1960; # WHERE release_year = 1960 # WHERE release_year <> 1960 (not equal)
  • Multiple criteria
    • OR, AND, BETWEEN
      • OR : at least one condition
      • AND : satisfy all criteria
      • AND, OR
      • SELECT title FROM films WHERE (release_year = 1994 OR release_year = 1995) AND (certification = 'PG' OR certification ='R') ;
      • BETWEEN, AND
    • SELECT * FROM coats WHERE color = 'yellow' OR length = 'short'; SELECT * FROM coats WHERE color = 'yellow' AND length = 'short'; SELECT * FROM coats WHERE buttons BETWEEN 1 AND 5;

Filtering text

  • Filter a pattern rather than text
    • LIKE : 필드에 pattern 찾기
      • % : zero, one or many characters
      • _ : a single character
    • NOT LIKE : 이 pattern 아닌 field
    • Wildcard position
      • ex) ‘%r’ : 끝에 r로 끝나는 것 / ‘_ _t%’ : 앞에 두개 글자 있고 다음이 t
  • WHERE , IN
  • SELECT title FROM films WHERE release_year IN (1920,1930,1940) ; # 1920,1930,1940 중에 하나

NULL values

  • missing values
    • Count(field_name) : 결측치 포함하지 않는다
    • count(*) : 결측치 포함
  • IS NULL
  • SELECT COUNT(*) AS FROM people where birthdate IS NULL ;
  • IS NOT NULL

Relational Databases

Database

: 데이터를 저장하는 공간

ex) patron, books and checkouts table → 포함하는 공간이 데이터베이스

  • Relational database

: 데이터베이스 안에서 테이블의 데이터 사이의 관계를 정의하는 것

ex) Which books did James check out during 2022?

→ James(patron) / card_num(90123) / card_num(checkouts) / id(checkouts) / id(books) / id(title)

  • Adavantages
    • 테이블이 엑셀과 구글시트와 같이 스프레드시트로 정리되어 있지만 데이터베으스는 이 스프레드시트보다 강력하다고 한다.
    → much more data + storage is more secure
    • 많은 사용자들이 쿼리를 사용해서 동시에 데이터로부터 인사이트를 모을 수 있다
    • 데이터베이스가 queried 되었을 때 데이터베이스 안에 저장된 데이터는 변하지 않는다
    • 데이터베이스 정보는 쿼리 방법에 따라 접근가능하고 제공된다

Tables

  • rows and columns 으로 구성되어 있다
    • row : records (row의 수가 unlimited)
      • row in a table
      • an individual observation
    • columns : fields (field는 데이터베이스 만들어졌을 때의 set에 limited)
      • one piece of information about all observation
      • ex) name field - lists all of the name
  • Table manners
    • Table naming
      • lowercase
      • space를 사용하면 안된다 + 대신에 underscore 사용
      • collective group(집단)을 나타낼 수 있는 것이 제일 좋지만 plural name(복수형 이름) 가능
    • field naming
      • lowercase
      • should not involve spaces
      • singular than plural
      • cannot have the same name
      • table 이름과 같으면 안된다
    • Key : unique identifier
      • 같은 테이블안에서 다른 record들을 구별하게 해주는 역할을 한다 → index느낌
    • table topic remain separate
      • a clearly marked subject > multiple subjects is combined→ duplicate information → less clearMaham has none checkout_id → 더이상 card_num unique하지 않다.
      • ex) lzzy two checkouts

Data

: 데이터 타입은 각 필드마다 명시가 되어있어야 한다. 데이터 타입은 수/ 텍스트 / 날짜에 따라 달라진다

cf) 데이터 타입 쓰는 이유

  1. 데이터 타입이 다른 데이터들은 다르게 저장되고 다른 저장공간을 차지하기 때문
  2. 특정한 데이터 타입에 따라 몇몇 계산이 그것에만 적용되기 때문에

ex) multiply a number by another number / text multiply (X)

  • String : 문자의 sequence (letter, punctuation)
    • string 데이터 타입에도 종류가 나누어진다
      • 250까지 문자를 가질 수 있는 타입 → 저장공간을 아낄 수 있다
      • more flexible and can store large strings / tens of thousands of characters
      • → VARCHAR
  • ex) Manham, James
  • Integers : whole number
    • 몇가지 종류로 나뉜다 (수의 크기에 따라)
      • INT (less than negative two billion to more than positive two billion
  • Floats : number (fractional part를 포함)
    • NUMERIC : 38 소수자리까지 저장할 수 있다
  • Schemas : blueprints of databases , 데이터베이스의 구조를 보여주고 데이터베이스에 어떤 테이블이 저장되어 있고 테이블 사이에 관계도 보여준다
    • 각 필드마다 가지고 있는 데이터의 타입을 알려준다
  • Storage
    • 데이터베이스 테이블은 서버의 하드 디스크에 저장되어 있는 것
    • 서버는 데이터 접근가능하게 하고 서버에 저장된 웹사이트나 파일에 접근하게 만든다

Querying

: 많은 조직에서는 SQL을 spreadsheet의 대체제로 사용한다

만약 데이터가 spreadsheet에 있고 다른 데이터와 연관이 없다면 단순히 가져다 쓰면 된다

BUT Diverse한 데이터는 데이터베이스 안에서 정리하는 것이 가장 best

Keywords

: 코드에서 수행할 작업을 하는데 사용되는 약속된 단어! (코드 함수 같은 것)

SELECT / FROM

  • SELECT : fields should be selected
  • FROM : 필드가 저장된 Table

cf) 퀴리가 완성되었을 때는 세미클론을 찍어줘야한다 (;)

예제1)

SELECT card_num, name # 여러 필드 가져오고 싶으면 (,) 사용 
FROM patrons;

SELECT name, card_num # 필드 순서 바꾸기 
FROM patrons;

SELECT * #모든 필드 다 가져오기 
FROM patrons ; 
  • Aliasing : rename columns
SELECT name AS first_name, year_hired # 필드(name) 이름 새로 변경(first_name)
FROM employees;
  • Distinct records : return a list of unique values
SELECT DISTINCT year_hired # 중복되는 record 제거 
FROM employees;

SELECT DISTINCT dept_id, year_hired # 두 필드 모두 고려한 중복 값 제거  
FROM employees;
  • Views : 저장된 SQL SELECT 문의 결과 테이블을 나타낸다
    • 뷰에 포함된 데이터는 데이터베이스에 저장되지 않는다 → 가상 테이블이기 때문에
    • 쿼리 코드가 저장되는 것
    • 뷰 생성법
    • CREATE VIEW employee_hire_years AS SELECT id, name, year_hired FROM employees;
    • View 사용법
    • SELECT id,name FROM employee_hire_years;

Selecting Data

  • Count : 필드안에 있는 레코드의 수
SELECT COUNT(birthdate) AS count_birthdates # COUNT(field) 
FROM people ; 

SELECT COUNT(name) AS count_names, COUNT(birthdate) AS count_birthdates #multiple field
FROM people ; 

SELECT COUNT(*) AS total_records
FROM people;   # all fileds의 수 

SELECT COUNT(DISTINCT birthdate) AS count_distinct_birthdates 
FROM people;
  • order of execution : not processed in its written order
    • table 정하기 → select 문
    • LIMIT : result개수 정할 수 있다
  • Debugging SQL
    • Mispelling
    • Comma errors
    • Keyword errors
  • SQL formatting
    • Formatiing is not required
      • 한줄로 써도 실행된다
      • capitalization 안해도 된다
    • semicolon (PostgreSQL 필요없다)
      • Best practice
      • Easier to translate
      • Indicate the end of query
    • non-standard field names
      • release year - release_year
        • “release year” 사용하면 된다
        SELECT title, "release year", country
        FROM films
        LIMIT 3 ; 
        

Filtering Records

  • Where : 조건문
    • Comparison operators
    • Strings : single-quotes
    • Order of execution
      • written code : select - from - where - limit
      • order of execution : from - where - select - limit
  • SELECT title FROM films WHERE release_year > 1960; # WHERE release_year = 1960 # WHERE release_year <> 1960 (not equal)
  • Multiple criteria
    • OR, AND, BETWEEN
      • OR : at least one condition
      • AND : satisfy all criteria
      • AND, OR
      • SELECT title FROM films WHERE (release_year = 1994 OR release_year = 1995) AND (certification = 'PG' OR certification ='R') ;
      • BETWEEN, AND
    • SELECT * FROM coats WHERE color = 'yellow' OR length = 'short'; SELECT * FROM coats WHERE color = 'yellow' AND length = 'short'; SELECT * FROM coats WHERE buttons BETWEEN 1 AND 5;

Filtering text

  • Filter a pattern rather than text
    • LIKE : 필드에 pattern 찾기
      • % : zero, one or many characters
      • _ : a single character
    • NOT LIKE : 이 pattern 아닌 field
    • Wildcard position
      • ex) ‘%r’ : 끝에 r로 끝나는 것 / ‘_ _t%’ : 앞에 두개 글자 있고 다음이 t
  • WHERE , IN
  • SELECT title FROM films WHERE release_year IN (1920,1930,1940) ; # 1920,1930,1940 중에 하나

NULL values

  • missing values
    • Count(field_name) : 결측치 포함하지 않는다
    • count(*) : 결측치 포함
  • IS NULL
  • SELECT COUNT(*) AS FROM people where birthdate IS NULL ;
  • IS NOT NULL

Relational Databases

Database

: 데이터를 저장하는 공간

ex) patron, books and checkouts table → 포함하는 공간이 데이터베이스

  • Relational database

: 데이터베이스 안에서 테이블의 데이터 사이의 관계를 정의하는 것

ex) Which books did James check out during 2022?

→ James(patron) / card_num(90123) / card_num(checkouts) / id(checkouts) / id(books) / id(title)

  • Adavantages
    • 테이블이 엑셀과 구글시트와 같이 스프레드시트로 정리되어 있지만 데이터베으스는 이 스프레드시트보다 강력하다고 한다.
    → much more data + storage is more secure
    • 많은 사용자들이 쿼리를 사용해서 동시에 데이터로부터 인사이트를 모을 수 있다
    • 데이터베이스가 queried 되었을 때 데이터베이스 안에 저장된 데이터는 변하지 않는다
    • 데이터베이스 정보는 쿼리 방법에 따라 접근가능하고 제공된다

Tables

  • rows and columns 으로 구성되어 있다
    • row : records (row의 수가 unlimited)
      • row in a table
      • an individual observation
    • columns : fields (field는 데이터베이스 만들어졌을 때의 set에 limited)
      • one piece of information about all observation
      • ex) name field - lists all of the name
  • Table manners
    • Table naming
      • lowercase
      • space를 사용하면 안된다 + 대신에 underscore 사용
      • collective group(집단)을 나타낼 수 있는 것이 제일 좋지만 plural name(복수형 이름) 가능
    • field naming
      • lowercase
      • should not involve spaces
      • singular than plural
      • cannot have the same name
      • table 이름과 같으면 안된다
    • Key : unique identifier
      • 같은 테이블안에서 다른 record들을 구별하게 해주는 역할을 한다 → index느낌
    • table topic remain separate
      • a clearly marked subject > multiple subjects is combined→ duplicate information → less clearMaham has none checkout_id → 더이상 card_num unique하지 않다.
      • ex) lzzy two checkouts

Data

: 데이터 타입은 각 필드마다 명시가 되어있어야 한다. 데이터 타입은 수/ 텍스트 / 날짜에 따라 달라진다

cf) 데이터 타입 쓰는 이유

  1. 데이터 타입이 다른 데이터들은 다르게 저장되고 다른 저장공간을 차지하기 때문
  2. 특정한 데이터 타입에 따라 몇몇 계산이 그것에만 적용되기 때문에

ex) multiply a number by another number / text multiply (X)

  • String : 문자의 sequence (letter, punctuation)
    • string 데이터 타입에도 종류가 나누어진다
      • 250까지 문자를 가질 수 있는 타입 → 저장공간을 아낄 수 있다
      • more flexible and can store large strings / tens of thousands of characters
      • → VARCHAR
  • ex) Manham, James
  • Integers : whole number
    • 몇가지 종류로 나뉜다 (수의 크기에 따라)
      • INT (less than negative two billion to more than positive two billion
  • Floats : number (fractional part를 포함)
    • NUMERIC : 38 소수자리까지 저장할 수 있다
  • Schemas : blueprints of databases , 데이터베이스의 구조를 보여주고 데이터베이스에 어떤 테이블이 저장되어 있고 테이블 사이에 관계도 보여준다
    • 각 필드마다 가지고 있는 데이터의 타입을 알려준다
  • Storage
    • 데이터베이스 테이블은 서버의 하드 디스크에 저장되어 있는 것
    • 서버는 데이터 접근가능하게 하고 서버에 저장된 웹사이트나 파일에 접근하게 만든다

Querying

: 많은 조직에서는 SQL을 spreadsheet의 대체제로 사용한다

만약 데이터가 spreadsheet에 있고 다른 데이터와 연관이 없다면 단순히 가져다 쓰면 된다

BUT Diverse한 데이터는 데이터베이스 안에서 정리하는 것이 가장 best

Keywords

: 코드에서 수행할 작업을 하는데 사용되는 약속된 단어! (코드 함수 같은 것)

SELECT / FROM

  • SELECT : fields should be selected
  • FROM : 필드가 저장된 Table

cf) 퀴리가 완성되었을 때는 세미클론을 찍어줘야한다 (;)

예제1)

SELECT card_num, name # 여러 필드 가져오고 싶으면 (,) 사용 
FROM patrons;

SELECT name, card_num # 필드 순서 바꾸기 
FROM patrons;

SELECT * #모든 필드 다 가져오기 
FROM patrons ; 
  • Aliasing : rename columns
SELECT name AS first_name, year_hired # 필드(name) 이름 새로 변경(first_name)
FROM employees;
  • Distinct records : return a list of unique values
SELECT DISTINCT year_hired # 중복되는 record 제거 
FROM employees;

SELECT DISTINCT dept_id, year_hired # 두 필드 모두 고려한 중복 값 제거  
FROM employees;
  • Views : 저장된 SQL SELECT 문의 결과 테이블을 나타낸다
    • 뷰에 포함된 데이터는 데이터베이스에 저장되지 않는다 → 가상 테이블이기 때문에
    • 쿼리 코드가 저장되는 것
    • 뷰 생성법
    • CREATE VIEW employee_hire_years AS SELECT id, name, year_hired FROM employees;
    • View 사용법
    • SELECT id,name FROM employee_hire_years;

Selecting Data

  • Count : 필드안에 있는 레코드의 수
SELECT COUNT(birthdate) AS count_birthdates # COUNT(field) 
FROM people ; 

SELECT COUNT(name) AS count_names, COUNT(birthdate) AS count_birthdates #multiple field
FROM people ; 

SELECT COUNT(*) AS total_records
FROM people;   # all fileds의 수 

SELECT COUNT(DISTINCT birthdate) AS count_distinct_birthdates 
FROM people;
  • order of execution : not processed in its written order
    • table 정하기 → select 문
    • LIMIT : result개수 정할 수 있다
  • Debugging SQL
    • Mispelling
    • Comma errors
    • Keyword errors
  • SQL formatting
    • Formatiing is not required
      • 한줄로 써도 실행된다
      • capitalization 안해도 된다
    • semicolon (PostgreSQL 필요없다)
      • Best practice
      • Easier to translate
      • Indicate the end of query
    • non-standard field names
      • release year - release_year
        • “release year” 사용하면 된다
        SELECT title, "release year", country
        FROM films
        LIMIT 3 ; 
        

Filtering Records

  • Where : 조건문
    • Comparison operators
    • Strings : single-quotes
    • Order of execution
      • written code : select - from - where - limit
      • order of execution : from - where - select - limit
  • SELECT title FROM films WHERE release_year > 1960; # WHERE release_year = 1960 # WHERE release_year <> 1960 (not equal)
  • Multiple criteria
    • OR, AND, BETWEEN
      • OR : at least one condition
      • AND : satisfy all criteria
      • AND, OR
      • SELECT title FROM films WHERE (release_year = 1994 OR release_year = 1995) AND (certification = 'PG' OR certification ='R') ;
      • BETWEEN, AND
    • SELECT * FROM coats WHERE color = 'yellow' OR length = 'short'; SELECT * FROM coats WHERE color = 'yellow' AND length = 'short'; SELECT * FROM coats WHERE buttons BETWEEN 1 AND 5;

Filtering text

  • Filter a pattern rather than text
    • LIKE : 필드에 pattern 찾기
      • % : zero, one or many characters
      • _ : a single character
    • NOT LIKE : 이 pattern 아닌 field
    • Wildcard position
      • ex) ‘%r’ : 끝에 r로 끝나는 것 / ‘_ _t%’ : 앞에 두개 글자 있고 다음이 t
  • WHERE , IN
  • SELECT title FROM films WHERE release_year IN (1920,1930,1940) ; # 1920,1930,1940 중에 하나

NULL values

  • missing values
    • Count(field_name) : 결측치 포함하지 않는다
    • count(*) : 결측치 포함
  • IS NULL
  • SELECT COUNT(*) AS FROM people where birthdate IS NULL ;
  • IS NOT NULL