데이터베이스와 대화하기 위해 디자인된 언어 (구조화된 query 언어)
데이터베이스에 query를 보내 원하는 데이터를 추출할 수 있음
데이터의 구조가 엄격함
데이터베이스는 우리가 데이터를 저장하는 곳
어플리케이션에서 사용할 데이터들을 체계적으로 디스크에 담도록 만들어진 데이터 저장 전용 프로그램
스프레드시트와 매우 비슷하게 생김
관계형 데이터베이스의 종류
SQL은 테이블이 있으며, 행(row)과 열(column)로 이루어짐
관계형 데이터베이스는 sql이라는 언어로, 데이터베이스 파일안에 구조를 만들고, 자료를 출력함
데이터베이스는 왜 필요한가?
어떻게 작동하는가?
SELECT*FROM employee WHERE gender = 'M'
과 같은 '쿼리문'을 database에 보냄: 데이터베이스에서 데이터가 구성되는 방식과 서로 다른 entity(테이블로 표현되는 정의의 단위) 간 의 관계에 대한 설명
데이터를 정의하는 방법에 필요한 내용 (데이터가 어떻게 보여질 것인지)
데이터베이스의 청사진
fields 들은 행과 열로 표현하면 "열"에 해당하는 것들
1 : N (일대다의 관계)
SQL보다 훨씬 크고 각자 다른 종류로 이루어짐
데이터의 구조가 자유로움
3가지 카테고리
SELECT CustomerName, City FROM Customers;
// 부분
SELECT column1, column2, ...
FROM table_name;
// 전체
SELECT * FROM table_name;
SELECT * FROM Customers WHERE Country='Mexico';
SELECT column1, column2, ...
FROM table_name
WHERE condition;
SELECT * FROM Customers WHERE Country = "Germany" AND City = "Berlin"
SELECT * FROM Customers WHERE Country='Germany' AND (City='Berlin' OR City='München');
SELECT * FROM Customers WHERE NOT Country='Germany' AND NOT Country='USA';
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;
--
SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;
--
SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;
SELECT * FROM Customers ORDER BY Country, CustomerName;
: 기본적으로 Country에 따라 정렬한 후, 각 나라 안에서 CustomerName 오름차순으로 정렬SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
null
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
ZERO VALUES
와는 따름// IS NULL - null값을 찾기 위해 사용한다 (null이 있는지 여부 파악)
SELECT column_names
FROM table_name
WHERE column_name IS NULL;
// IS NOT NULL - 비어있지 않은 값을 확인하기 위해 사용한다
SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;
UPDATE Customers SET ContactName = 'Alfred Schmidt', City= 'Frankfurt' WHERE CustomerID = 1;
: 하나씩 수정UPDATE Customers SET ContactName='Juan' WHERE Country='Mexico';
: 여러개 수정UPDATE Customers SET ContactName='Juan';
: WHERE을 생략하면, 전체를 대상으로 수정UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';
: 조건삭제DELETE FROM table_name;
: 전체삭제DELETE FROM table_name WHERE condition;
COUNT
: 지정된 기준과 일치하는 행 수를 반환AVG
: 숫자 열의 평균 값을 반환SUM
: 숫자 열의 총합을 반환SELECT COUNT/AVG/SUM(column_name)
FROM table_name
WHERE condition;
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
LIKE
연산자와 함께 사용// Alias Column syntax
SELECT column_name AS alias_name
FROM table_name;
// Alias Table syntax
SELECT column_name(s)
FROM table_name AS alias_name;
// 여러개도 가능
SELECT CustomerID AS ID, CustomerName AS Customer
FROM Customers
// 별칭에 공백이 포함된 경우, 큰 따옴표 or 대괄호가 필요함
SELECT CustomerName AS Customer, ContactName AS [Contact Person]
FROM Customers;
// 여러 개의 열을 결합해서, 새로운 별칭(Adress)을 만듦
SELECT CustomerName, Address + ', ' + PostalCode + ' ' + City + ', ' + Country AS Address
FROM Customers;
// etc... 여러가지가 있음