
2021년 8월 26일에 작성된 문서 2번 입니다.
데이터 베이스 배운 내용을 정리했습니다.
CREATE DATABASE 데이터베이스_이름;
// 데이터베이스를 생성
데이터베이스를 이용해 테이블을 만들거나 수정하거나 삭제하는 등의 작업을 하려면, 먼저 데이터베이스를 사용하겠다는 명령을 전달해야 한다.
USE 데이터베이스_이름;
//데이터베이스를 사용
USE 를 이용해 데이터베이스를 선택했다면, 이제 테이블을 만들 수 있다. 다음은 user라는 테이블을 만드는 예제입니다. 테이블은 필드(표의 열)와 함께 만들어야 합니다. 다음과 같은 필드 조건이 있다고 가정합니다.
| 필드 이름 | 필드 타입 | 그 외의 속성 |
|---|---|---|
| id | 숫자 | Primary key이면서 자동 증가되도록 설정 |
| name | 문자열 (최대 255개의 문자) | |
| 문자열 (최대 255개의 문자) |
CREATE TABLE user (
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(255),
email varchar(255)
);
//user 테이블을 생성
DESCRIBE user;
//user 테이블의 정보를 확인
다음과 같이 user 테이블의 정보를 확인할 수 있습니다.
//user 테이블의 정보
mysql> describe user;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| email | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
SELECT : 데이터셋에 포함될 특성을 특정 SELECT 'hello world'
//일반 문자열
SELECT 2
//숫자
SELECT 15 + 3
//간단한 연산
FROM 뒤에는 결과를 도출해낼 데이터베이스 테이블을 명시한다. SELECT 특성_1 // 특정한 특성을 테이블에서 사용
FROM 테이블_이름
SELECT 특성_1, 특성_2 //몇 가지의 특성을 테이블에서 사용
FROM 테이블_이름
SELECT * //테이블의 모든 특성을 선택
FROM 테이블_이름
*는 와일드카드 (wildcard) 로 전부 선택할 때에 사용됩니다.
WHERE은 선택적으로 사용할 수 있다. SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_1 = "특정 값" //특정 값과 동일한 데이터 찾기
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 <> "특정 값" //특정 값을 제외한 값 찾기
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_1 > "특정 값"
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_1 <= "특정 값"
<, >**<=, >= SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 LIKE "%특정 문자열%"
LIKE와 \% 혹은 \* 를 사용. SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 IN ("특정값_1", "특정값_2")
IN 을 사용 SELECT *
FROM 테이블_이름
WHERE 특성_1 IS NULL
NULL 을 찾을 때에는 IS 와 같이 사용 SELECT *
FROM 테이블_이름
WHERE 특성_1 IS NOT NULL
NOT 을 추가해 이용. SELECT *
FROM 테이블_이름
ORDER BY 특성_1 //기본 정렬은 오름차순
SELECT *
FROM 테이블_이름
ORDER BY 특성_1 DESC //내림차순으로도 정렬할 수 있다
LIMIT은 선택적으로 사용할 수 있다. SELECT *
FROM 테이블_이름
LIMIT 200 //데이터 결과를 200개만 출력
SELECT DISTINCT 를 사용. SELECT DISTINCT 특성_1 //특성_1을 기준으로 유니크한 값들만 선택
FROM 테이블_이름
SELECT
DISTINCT //특성_1, 특성_2, 특성_3의 유니크한 '조합' 값들을 선택
특성_1
,특성_2
,특성_3
FROM 테이블_이름
INNER JOIN 이나 JOIN 으로 실행할 수 있다. SELECT *
FROM 테이블_1
JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
//둘 이상의 테이블을 서로 공통된 부분을 기준으로 연결
Outer JOIN 은 다양한 선택지가 있다. SELECT *
FROM 테이블_1
LEFT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
// 'LEFT OUTER JOIN'으로 LEFT INCLUSIVE을 실행
SELECT *
FROM 테이블_1
RIGHT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
//'RIGHT OUTER JOIN'으로 RIGHT INCLUSIVE을 실행
다음은 Brazil에서 온 고객을 도시별로 묶은 뒤에, 각 도시 수에 따라 내름차순 정렬합니다. 그리고 CustomerId에 따라 오름차순으로 정렬한 3개의 결과만 요청하는 예시입니다.
같은 결과를 출력하는 서로 다른 쿼리문이 있을 수 있습니다. 같은 결과를 다른 방법으로 표현할 수 있습니다.
//여러 쿼리문을 한 번에 써보기
SELECT c.CustomerId, c.FirstName, count(c.City) as 'City Count'
FROM customers AS c
JOIN employees AS e ON c.SupportRepId = e.EmployeeId
WHERE c.Country = 'Brazil'
GROUP BY c.City
ORDER BY 3 DESC, c.CustomerId ASC
LIMIT 3
Written with StackEdit.