일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- JavaScript
- 자바스크립트
- 인스턴스
- 이클립스
- jsp
- 배열
- 자바
- SQL_용어정리
- MySQL
- 다이어그램
- DML
- github
- 인덱스
- Linux
- CSS
- Linux_명령어정리
- json
- SQL
- HTML
- Git_정리
- Git_명령어정리
- java
- 아파치톰캣
- asp.net
- spring
- Spring_에러정리
- Spring_오류정리
- vb.net
- git
- workbench
- Today
- Total
데브마우스
[SQL] SQL 1차 요점 정리: DML, DCL, JOIN 본문
SQL의 DML(Data Manipulation Language)
CRUD | 해당 SQL문 |
CREATE | INSERT |
READ | SELECT |
UPDATE | UPDATE |
DELETE | DELETE |
INSERT
데이터를 삽입할 때 사용합니다.
-- 테이블을 생성합니다.
CREATE TABLE member1 (mem_id INT, mem_name CHAR(4), age INT);
-- INSERT를 사용하는 방법입니다.
INSERT INTO member1 VALUES(1, '우리', 25); -- 모든 컬럼에 INSERT하는 방법입니다.
INSERT INTO member1 (mem_id, mem_name) VALUES(2, '버디'); -- 특정 컬럼에만 INSERT하는 방법입니다.
INSERT INTO member1 (mem_name, age, mem_id) VALUES('제시', 20, 3); -- 컬럼의 순서를 원하는대로 지정한 후 INSERT하는 방법입니다.
-- 한 줄에 여러 데이터를 입력하는 방법입니다.
INSERT INTO member1 VALUES (NULL, '토마스', 20), (NULL, '제임스', 23), (NULL, '고든', 25);
AUTO_INCREMENT
CREATE TABLE asterik_test(
first INT AUTO_INCREMENT,
second varchar(10)
);
AUTO_INCREMENT 선언 시 해당 컬럼은 PK가 됩니다.
LAST_INSERT_ID() 함수
SELECT LAST_INSERT_ID(); -- AUTO_INCREMENT로 입력된 마지막 값을 보여줍니다.
SELECT
데이터를 조회할 때 사용합니다.
기본 형식은 SELECT 컬럼_이름_1, 컬럼_이름_2 ... FROM 테이블_이름; 입니다.
-- SELECT의 구조
SELECT select_expr(열 이름)
[FROM table_references(테이블 이름)]
[WHERE where_condition(조건식)]
[GROUP BY {col_name | expr | position}(열 이름)]
[HAVING where_condition(조건식)]
[ORDER BY {col_name | expr | position}(열 이름)]
[LIMIT {[offset, ] row_count | row_count OFFSET offset}(숫자)]
UPDATE
데이터를 수정할 때 사용합니다.
이때 WHERE 절 해당하는 모든 데이터가 변경되므로 조심해서 사용해야합니다.
예시로, WHERE뒤에 컬럼이름만 있을 경우, 컬럼에 해당되는 모든 행 데이터가 SET으로 변경할 값으로 변경됩니다.
UPDATE 테이블_이름 SET 컬럼_이름 = 변경할_값 WHERE 컬럼_이름 = 변경전_원래_값;
UPDATE 테이블_이름 SET 컬럼_이름 = 변경할_값 WHERE 컬럼_이름; -- 이렇게 사용하면 안됩니다.
DELETE
데이터를 삭제할 때 사용합니다.
DELETE FROM 테이블_이름 WHERE 컬럼_이름 = 삭제할_데이터;
DML의 LIKE
WHERE 조건절 뒤에 LIKE를 사용하여 원하는 규칙의 데이터를 선택할 수 잇습니다.
아래의 테이블이 있다고 가정하겠습니다.
c | name_column | prod_name |
NULL | NULL | asdf |
NULL | NULL | asdf |
NULL | NULL | asdf |
NULL | NULL | as1 |
NULL | NULL | as2 |
NULL | NULL | bs1 |
NULL | NULL | bs2 |
DML의 LIKE의 퍼센트(%)
DML의 퍼센트(%)는 0개 이상의 모든 문자를 나타냅니다.
select * from new_c where prod_name LIKE "as%";
위 코드 실행 시 결과는 아래와 같습니다.
c | name_column | prod_name |
NULL | NULL | asdf |
NULL | NULL | asdf |
NULL | NULL | asdf |
NULL | NULL | as1 |
NULL | NULL | as2 |
DML의 LIKE의 언더바(_)
DML의 언더바(_)는 1개의 모든 문자를 나타냅니다.
select * from new_c where prod_name LIKE "as_";
위 코드 실행 시 결과는 아래와 같습니다.
c | name_column | prod_name |
NULL | NULL | as1 |
NULL | NULL | as2 |
DLM의 별칭(alias)
별칭(alais)를 지정하면 원래 컬럼 이름 대신 지정한 별칭이 컬럼 칸에 출력됩니다.
SELECT age AS "나이" from member;
DML의 연산
DML의 관계 연산자를 활용한 WHERE 절
WHERE 뒤에 >, >=, <=, =를 이용하여 초과, 미만, 이상, 이하, 같음의 해당하는 값을 조건식으로 표현할 수 있습니다.
DML의 논리 연산자를 활용한 WHERE 절
WHERE 뒤에 AND를 이용하여 AND 연산을 수행할 수 있습니다.
WHERE 뒤에 OR를 이용하여 OR 연산을 수행할 수 있습니다.
DML의 BETWEEN ~ AND를 활용한 WHERE 절
BETWEEN A AND B로 A 이상 B이하를 더 쉽게 표현할 수 있습니다.
SELECT mem_name, height FROM member WHERE age >= 20 AND height <=25;
SELECT mem_name, height FROM member WHERE age BETWEEN 20 AND 25;
DML의 IN()
조인(Join)
조인(Join)이란 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 의미합니다.
내부 조인
SELECT <열 목록>
FROM <첫 번째 테이블>
[INNER] JOIN <두 번째 테이블> --INNER JOIN 대신 JOIN만 작성해도 INNER JOIN으로 인식합니다.
ON <조인될 조건>
[WHERE 검색 조건]
외부 조인
외부 조인(Outer Join)은 내부조인과 달리 한 쪽에만 데이터가 있어도 조인을 할 수 있습니다.
외부 조인의 코드 형식은 아래와 같습니다.
SELECT <열 목록>
FROM <첫 번째 테이블 (LEFT 테이블)>
<LEFT | RIGHT | FULL> OUTER JOIN < 두 번째 테이블(RIGHT 테이블) >
ON <조인될 조건>
[WHERE 검색 조건];
LEFT OUTER JOIN문의 의미는, '왼쪽 테이블의 내용은 모두 출력되어야 한다'로 해석하시면 됩니다.
RIGHT OUTER JOIN에서 LEFT OUTER JOIN과 동일한 결과를 출력 하기 위해서, 첫 번째 테이블과 두 번째 테이블의 위치를 변경하시면 됩니다.
FULL OUTER JOIN은 LEFT OUTER JOIN과 RIGHT OUTER JOIN이 합쳐진 것입니다.
상호 조인
상호 조인(Cross Join)은 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능을 말합니다.
그렇게 하면 데이터가 늘어나게 되며 테스트 용도로 대용량의 데이터를 생성할 때 사용합니다.
SELECT *
FROM <첫 번째 테이블>
CROSS JOIn <두 번째 테이블>;
자체 조인
자체 조인이란 테이블을 자기 자신과 조인 하는 것을 의미합니다.
SELECT <열 목록>
FROM <테이블_이름> 별칭A
INNER JOIN <테이블> 별칭B
ON <조인될 조건>
[WHERE 검색 조건]
SQL의 DDL(Date Definition Language)
DCL문 | 설명 |
CREATE | 데이터베이스, 테이블, 뷰, 인덱스, 프로시저를 생성합니다. |
ALTER | 데이터베이스, 테이블, 뷰, 인덱스, 프로시저를 수정합니다. |
TRUNCATE | 테이블을 비웁니다. |
DROP | 데이터베이스, 테이블을 삭제합니다. |
CREATE
데이터베이스, 테이블, 뷰, 인덱스, 프로시저를 생성합니다.
CREATE - DATABASE
-- 데이터베이스 생성 코드
-- COLLATE는 데이터베이스의 정렬을 지정합니다.
CREATE DATABASE 데이터베이스_이름 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
CREATE - TABLE
CREATE TABLE 테이블_이름(
컬럼_이름_1 데이터_형식 PRIMARY KEY,
컬럼_이름_2 데이터_형식,
FOREIGN KEY (컬럼_이름) REFERENCES 테이블_이름(컬럼_이름)
);
ALTER
데이터베이스, 테이블, 뷰, 인덱스, 프로시저를 수정합니다.
ALTER - RENAME
테이블의 이름을 변경합니다.
ALTER TABLE 테이블_이름 RENAME TO 바꿀_테이블_이름;
테이블의 컬럼의 이름을 변경합니다.
ALTER TABLE 테이블_이름 RENAME COLUMN 원래_컬럼_이름 TO 변경할_컬럼_이름;
ALTER - ADD
테이블에 컬럼을 추가합니다.
ALTER TABLE 테이블_이름 ADD 컬럼_이름 데이터_타입;
ALTER - MODIFY
테이블의 컬럼의 데이터 타입을 수정합니다.
ALTER TABLE 테이블_이름 MODIFY 컬럼_이름 데이터타입;
ALTER - DROP
테이블의 컬럼을 삭제합니다.
ALTER TABLE 테이블_이름 DROP 컬럼_이름;
ALTER - COLUMN
컬럼의 제약조건을 수정합니다.
ALTER TABLE 테이블_이름 ALTER COLUMN 컬럼_이름 SET DEFAULT 기본값;
TRUNACTE
테이블의 데이터를 삭제합니다 하지만 테이블은 남아있습니다.
TRUNCATE TABLE 테이블_이름;
DROP
테이블을 삭제합니다. 테이블과 데이터 모두 남지 않습니다.
DROP TABLE 테이블_이름;
'데이터베이스 > SQL: 정리' 카테고리의 다른 글
[SQL] 뷰에서 별칭 사용 시 주의사항 정리 (0) | 2024.01.14 |
---|---|
[SQL] 트리거와 NEW와 OLD 테이블 정리 (0) | 2024.01.05 |
[MySQL] 스토어드 함수와 커서 정리 (0) | 2024.01.05 |
[MySQL] 스토어드 프로시저 사용법 정리 (0) | 2024.01.05 |
[SQL] 인덱스의 사용 방법 정리 (0) | 2024.01.05 |