티끌모아 태산

SQL 본문

CS 지식/인터넷프로그래밍

SQL

goldpig 2023. 6. 17. 13:49
728x90

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');

authorID는 auto-increment

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

728x90

'CS 지식 > 인터넷프로그래밍' 카테고리의 다른 글

Redux란  (0) 2023.07.22
JSON  (0) 2023.06.17
Introduction  (0) 2023.06.17