1. 함수
1) comment 확인
use information_schema;
SELECT
table_name, column_name, column_comment
FROM
information_schema.columns
WHERE
table_schema = 'db_name' AND table_name = 'table_name';
2) 테이블 구조 확인
- DESC table_name;
3) 문자열 자르기
- RIGHT(string,size)
- LEFT(string,size)
- SUBSTR(string, start, size)
4) 소수점 처리
- ROUND(num,0~9..)
- 지정한 숫자에서 반올림
- FLOOR()
- 그냥 떨굼
- CEIL()
- 무조건 올림
5) AVG
- null값을 0으로 볼지 혹은 null로 볼지 생각을 해야 한다.
- ex) null이 2개, record는 10개 라면,
- if null==0
- SELECT SUM(num) / COUNT(*) FROM table;
- : xxx/10
- if null==null (아무 값도 아님.)
- SELECT AVG(num) FROM table;
- : xxx/8
- 즉, default는 null값을 숫자로 보지 않는다.*
6) GROUP BY
- 그 그룹에 해당하는 값들을 모아 넣는 기법*
- 무조건 집계 함수 (SUM(), AVG(), COUNT(), MAX(), MIN() 등)의 함수들과 같이 써야 한다.*
- 집계 함수와 같이 사용을 하지 않는다면, group 별로 모이면서 값은 정확하게 뜨지 않는다.
- 조금만 생각해보면 당연하다. id=1, price=10, id=1 price=20, group by id : id=1, price=? 그냥 처음 꺼 하나만 나온다. 이 price를 어떻게 모아서 처리할 건지를 명시해줘야 한다*
- 당연히 row는 유니크하지 않아도 된다.
- 하지만 column은 유니크해야만 한다.
- 예를 들어, table1 : name, address , table2 : name, phone
- 이 있는데 name으로 그룹핑을 하고 싶다면, GROUP t1.name, t1.address 이렇게 두 개를 적어줘서 유니크하게 만들어서 값을 리턴해줘야 grouping이 정확하게 된다.*
7) Join
- 조인을 할 때 ON 이후에 내가 구하고자 하는 값들을 어떻게 가지고 올지 조건을 주고 그 조건에 맞게 값들이 어떻게 오겠다는 것을 이해하고 있어야 한다.*
- inner join
- 합집합.
- left join
- 실무에선 right join은 정말 아예 안 쓴다. 헷갈리므로
- left Join으로 null 데이터도 같이 보고 싶을 때 사용
- full outer join 도 실무에서 거의 사용하지 않는다.
- Self Join
- 자기 자신을 Join
- inner Join or left Join 다 사용 가능.
- 이때, 하나의 테이블을 두 번 써서 1,2로 표현.
- 가만히 잘 생각해보면 생각보다 쉽다.
- ex) employee table에 있는 managerId와 매칭 시키고 싶을 때, 테이블 이름을
- FROM employee INNER JOIN employee AS manager ON employee.managerid = manager.id
- 라고만 써줘도 알아보기가 아주 편안하다.
- 즉, 조인을 할 대상(목적)에 따라 AS를 지정해주면 이해하기가 편하다.**
8) Datetime type
- datetime type 끼리 연산 가능하다*
- ‘-‘, ‘+’ 연산 사용 가능*
- integer 값으로 리턴이 된다.*
9) subquery
- From 절 서브 쿼리
- 특정 값들에 대한 table을 FROM으로 가져와서 원하는 데이터를 뽑아내는 방법.
- 특히 그룹과 잘 쓰인다.(최적화하기 좋다)
- WHERE 절 서브 쿼리
- 보통 MAX, MIN 같은 1개만 리턴하는 값은 = 을 사용.
- 복수개를 리턴하면 IN을 사용.
10) window functions
- https://medium.com/better-programming/4-ways-to-calculate-a-running-total-with-sql-986d0019185c
- 누적합을 구하는 4가지 방법
11) INSERT IGNORE
- 중복 키 에러가 발생했을 때 신규로 입력되는 레코드를 무시하는 단순한 방법이다.
- 이때 내가 insert 하고자 하는 벨루가 중복이 되었을 때.. 신규로 입력되는 레코드를 무시한다.
- ex) name=‘dex’ , insert into table (name) values (‘dex’) - 저장 안 됨.
- AUTO_INCREMENT의 값이 변경되지 않는다.
- http://jason-heo.github.io/mysql/2014/03/05/manage-dup-key2.html
12) ON DUPLICATE UPDATE
- 장점은 중복 키 오류 발생 시 사용자가 원하는 값을 직접 설정할 수 있다.
- 새롭게 저장되는 값을 업데이트시켜준다.
2. 특징
- where 절에는 AS에 쓴 내용을 못쓴다.
- but HAVING 절에는 AS 쓸수 있다.
'Database > MySQL' 카테고리의 다른 글
데이터베이스 반정규화(Denormalization) (0) | 2022.05.23 |
---|---|
데이터베이스 정규화(Normalization) (0) | 2022.05.23 |
트랜잭션 특징 (0) | 2022.05.07 |
PK, FK 특징 (0) | 2022.05.07 |
mysql settings (0) | 2022.01.30 |