SQL
SQL(Structured Query Language)
데이터베이스는 데이터를 저장하고 관리하는 매커니즘을 제공한다. -> Integrated collection of structured data
관련된 DBMSs(Database Management systems)
- MySQL, Oracle, SQLite, etc.
- Use SQL: Perform queries and manipulate data
DB는 데이터를 테이블에 저장한다. 그리고 그 테이블은 행과 열로 구성되어 있다.
- Primary key는 데이블에 있는 열(column)이다.
- 행은 일반적으로 unique within a table, 하지만 특정 값이 여러 행안에 중복될 수 도 있다.
- Common Errors
- Primary 키의 각 열에 값을 제공하지 않으면 Entity Integrity 규칙이 깨지고 DBMS에서 오류를 보고합니다.
- 여러 행에서 동일한 primary 키 값을 제공하면 DBMS에서 오류를 보고합니다.
- 다른 테이블에서 primary 키 값으로 나타나지 않는 외래 키 값을 제공하면 Referential Integrity 규칙이 깨지고 DBMS에서 오류를 보고합니다.
SQL은 데이터베이스 안에 있는 데이터를 저장하고, 검색하고, 업데이트하기 위한 표준 언어이다.
SQL Keywords
Keywords은 NOT case sentitive(대소문자 구분). but 테이블과 열 이름은 대소문자를 구분합니다.
SQLite Data Types
SQLite는 Boolean type을 제공하지 않는다. 대신에 불리언 값들은 integers 0(false) 과 1(true)로 저장된다.
SELECT
데이터베이스에서 하나 또는 하나 이상의 테이블로부터 정보를 선택한다. SQL Comments: 한 줄 코멘트는 start with --
여러줄의 코멘트는 start with /* and end with */
-- all the columns
SELECT * FROM tableName;
SELECT authorID, lastName FROM Authrs;
the SELECT DISTINCT statement는 오직 유일한 값을 리턴한다. 중복값을 제거
SELECT DISTINCT City FROM Customers;
WHERE
쿼리에 대한 선택 기준을 명시화 한다. 오직 명시화된 조건에 맞게 필터 or 추출한다.
- SELECT: columnName1, columnName2,..
- FROM: tableName
- WHERE: criteria;
SELECT title, copyright FROM Titles WHERE copyright > 1999;
Operator LIKE는 패턴 매칭을 위해 사용한다.
SELECT authorID, lastName, firstName FROM Authors WHERE lastName LIKE 'D&';
ORDER BY
결과를 위로 혹은 아래로 정렬한다.
-- ASC: Ascending order, DESC: descending order
SELECT columnName1, columnName2 FROM tableName ORDER BY column ASC;
SELECT columnName1, columnName2 FROM tableName ORDER BY column DESC;
SELECT authorID, firstName, lastName FROM Authors ORDER BY lastName ASC;
INSERT
데이터베이스에 data를 삽입한다.
INSERT INTO tableName(columnName1, ... , columnNameN) VALUES(value1, ... , valueN);
-- E.g inserts a row into the Authors table
INSERT INTO Authors(firstName, lastName) VALUES('Sue', 'Smith');
NULL
NULL은 필드는 있는데, 값이 할당되지 않은 상태이다. A field with a NULL value is a field with no value. 즉 NULL값은 empty value 이다.
NULL 값인지 아닌지 확인하는 코드
SELECT CustomerName, Address FROM Custmers WHERE Address IS NULL;
SELECT CustomerName, Address FROM Custmers WHERE Address IS NOT NULL;
UPDATE
테이블을 수정한다. 기본적인 구조는 다음과 같다.
UPDATE tableName SET columnName1 = value1, ... , columnNameN = valueN WHERE criteria;
UPDATE Authors SET lastName = 'Jones' WHERE lastName = 'Smith'AND firstName = 'Sue';
DELETE
테이블에서 데이터를 제거한다.
DELETE FROM tableName WHERE criteria;
DELETE FROM Authors WHERE lastName = 'Jones' AND fistName = 'sue';
Merging Data from Multiple tables
데이터베이스 관리자는 종종 데이터베이스를 정규화 한다 -> 관련된 데이터를 sepatate tables로 분리시켜서 데이터를 관리한다.
INNER JOIN
두개 이상의 테이블로부터 행들을 합친다. 기본적인 구조는 다음과 같다.
SELECT columnName1, columnName2 FROM table1 INNER JOIN table2
ON table1.columnName = table2.columnName;
SELECT firstName, lastName, isbn FROM Authors INNER JOIN AuthoISBN
ON Authors.authorID = AuthorISBN.authoID ORDER BY lastName, firstName