* MySQL 문법 기준
DML ( Data Manipulation Lanugage)
* insert
* update
* delete
* select
DDL(Data Definition Language)
* create
* alter
* drop
* truncate
* rename
DCL(Data Control Language)
* grant
* revoke
TCL(Transaction Control Language)
* commit
* rollback
* savepoint
Create
* 테이블 생성
create table student (
칼럼명 타입 조건(not null 등),
칼럼명 타입 조건(not null 등),
칼럼명 타입 조건(not null 등),
PRIMARY KEY ~~);
Insert
* 테이블에 데이터 삽입
insert into student values(테이블에 맞는 데이터 형식);
Update
* 데이터 내용 수정
update 테이블 set zkffja = '값' where 조건;
Delete
* 데이터 삭제
delete from 테이블 where 조건;
Select
* 모든 칼럼 조회
select * from student;
* 필요한 컬럼 조회
select age, name from student;
select 문법 순서
1. select
2, from
3. where
4. group by
5. having
6. order by
* 쿼리의 실행 순서는 from -> where -> group by -> having -> select -> order by
Where
- 컬럼 조회의 조건
select * from student where id = 1;
- and, or 조건
select * from student where sex = '남자' and(or) address = '서울';
- like 조건
%로 표현
select * from student where name = '김%';
Limit
- 조회 결과 행의 수 제한
select * from student limit 1;
Group By
- 특정 칼럼 기준의 데이터 그룹핑
select age from student group by age;
Order by
- 특정 칼럼 기준으로 정렬
- ASC : 오름차순 1 2 3 4 5
- DESC : 내림차순 5 4 3 2 1
select * from student order by age desc;
Distinct
- 중복행을 제거
select distinct name from student;
Alias
- 칼럼에 별칭을 주고 조회
select age '나이' from student where id = 3;
연산자
- 산술 연산자 : + - / *
- 비교 연산자: > < >= <= = != ^= <>
- 논리 연산자: and, or, not
- 비교 연산자2 : between and, in, is null, like
함수
문자 조작 함수
- UPPER(str) : 대문자 변환
- LOWER(str) : 소문자 변환
- INITCAP(str) : 첫 글자만 대문자로 변환
- CONCAT(str, tmp) : 두 문자 값 결합
- SUBSTR (str, a, b) : 문자 추출 a = 시작 위치, b = 개수
- LENGTH(str) : 문자열 길이 반환
- L/RPAD (대상, 총길이, 채울문자열) : 대상 문자열에 채울 문자열을 총길이만큼 채워서 반환
ex) LPAD('001', 7, '0') => 0000001
- LTRIM, RTRIM (대상, 제거할 문자열) : 대상 문자열에서 제거할 문자열을 없앤 뒤 반환
ex) select LTRIM('00010', '00) => 010
- REPLACE(대상 문자열, 바꾸고 싶은 대상, 바꾸고 싶은 내용) : 대상 문자열에서 바꾸고 싶은 대상을 바꾸고 싶은 내용으로 수정한 뒤 반환 ex) REPLACE('ABCDEFG', 'DEF', 'XXX') => ABCXXXG
계산 함수
- max
- min
- count
- avg
- sum
select 계산함수 (칼럼) from 테이블; 로 사용
JOIN
INNER JOIN
일반적인 JOIN, A와 B 테이블의 JOIN에서 A와 B 테이블 모두에 있는 레코드만 조회한다.
SELECT A.a, A.b, B.c
FROM A
JOIN B
ON B.a = A.c;
ON 대신 WHERE를 사용할 수 있다.
LEFT OUTER JOIN
A와 B 테이블의 JOIN 상황에서 A 테이블 기준으로 B테이블에 A테이블의 칼럼과 일치하는
조건이 없으면 B 테이블의 칼럼은 NULL로 조회된다.
SELECT A.a, A.b, B.c
FROM A
LEFT OUTER JOIN B
ON B.a = A.c;
outer를 생략할 수 있다.
CROSS JOIN(Cartesian JOIN)
집합의 곱 개념으로
A = {a, b, c, d} , B = {1, 2, 3} 일 때
A CROSS JOIN B는
(a, 1), (a, 2), (a, 3), (b, 1), (b, 2), (b, 3), (c, 1), (c, 2), (c, 3), (d, 1), (d, 2), (d, 3)의 결과가 된다.
결과의 개수는 n(A) * n(B)이다.
SELECT A.a A.b B.c
FROM A
CROSS JOIN B;
// 위아래 쿼리의 결과는 같다.
SELECT A.a, A.b, B.c
FROM A, B;
'Be Smart > SQL' 카테고리의 다른 글
데이터베이스 프로그래밍 (0) | 2021.09.14 |
---|---|
SQL 고급 (0) | 2021.09.13 |
SQL 기초 1 (0) | 2021.09.10 |
SQL 기본 쿼리문 정리-2 (0) | 2021.08.03 |
SQL 기본 쿼리문 정리 (0) | 2021.08.03 |
댓글