mysql에 대해서 공부한 내용을 정리해 봅니다.
SQL 구문 순서
SQL 구문의 순서는 먼저 다음과 같습니다.
작성 순서 -------------------------------------- (실행 순서)
SELECT 컬럼명 --------------------- (5)
FROM 테이블명 ------------------- (1)
WHERE 테이블 조건 --------------- (2)
GROUP BY 컬럼명 -------------------- (3)
HAVING 그룹 조건 ----------------- (4)
ORDER BY 컬럼명 -------------------- (6)
1. FROM : SQL은 구문이 들어오면 테이블을 가장 먼저 확인합니다.
2. WHERE : 테이블명을 확인했으니, 테이블에서 주어진 조건에 맞는 데이터들을 추출해줍니다.
3. GROUP BY : 조건에 맞는 데이터가 추출되었으니, 공통적인 데이터들끼리 묶어 그룹을 만들어줍니다.
4. HAVING : 공통적인 데이터들이 묶여진 그룹 중, 주어진 주건에 맞는 그룹들을 추출해줍니다.
5. SELECT : 최종적으로 추출된 데이터들을 조회합니다.
6. ORDER BY : 추출된 데이터들을 정렬해줍니다.
* SELECT 다음으로 오는 구문은 ORDER BY 뿐이므로, SELECT 에서 만들어진 Alias 는 ORDER BY 구문에서만 사용 가능합니다.
Set 명령어
set에 대한 다양한 사용 방법이 있지만 일단 2가지 방법에 대해서 알아보도록 하겠습니다.
1. auto_increment 3씩 증가
set @@auto_increment_increment=3;
create table hongong3 (
toy_id int auto_increment primary key,
toy_name char(4),
age int);
alter table hongong3 auto_increment=1000;
set @@auto_increment_increment=3;
2. data 수정
update ~ set ~ where
update city_popul
set city_name = "뉴욕", population=0
where city_name = "new york";
3. 변수 선언
set @txt = '가수 이름==> ';
set @height = 166;
select @txt , mem_name from member where height > @height;
-> 결과
3-1 주의 : 변수는 limit 문에서는 사용할 수 없다.
set @txt = '가수 이름==> ';
set @height = 166;
set @count = 1;
select @txt , mem_name from member where height > @height limit @count;
아래와 같이 에러 발생
PREPARE + EXECUTE를 사용해서 해결할 수 있다.
PREPARE, EXECUTE
PREPARE : SQL문만 준비해놓고 실행하지는 않음
EXECUTE : 준비된 SQL문을 실행
테이블 구조(type) 확인
desc [데이터베이스명].[테이블명]
desc world.city;
데이터 삽입
데이터 삽입에는 두가지 방법이 있습니다.
1. 값을 직접 할당하는 방법
2. 기존에 존재하는 db에서 값을 받아와서 할당하는 방법
두가지 방법 모두 알아보도록 하겠습니다.
1. 값을 직접 할당
insert into [테이블 명] values(값...)
insert into hongong2 values (null, '렉스', 21);
2. 기존에 존재하는 db에서 값을 받아와서 할당
insert into [테이블 명] select 문
insert into city_popul
select name, population from world.city;
기타 등등
별칭은 큰따옴표
insert 등에서 문자를 입력할 때 큰따옴표
char : 고정길이 문자형, 자릿수가 고정되어 있음, MySQL 성능적인 부분(속도)에서 이점이 있음
varchar : 가변길이 문자형, 들어오는 글자수 만큼만 사용
'공부방 > JAVA' 카테고리의 다른 글
디자인 패턴 - strategy pattern (0) | 2022.07.11 |
---|---|
mysql - 2일차 (0) | 2022.07.08 |
Map, Hash table (0) | 2022.06.19 |
일급 컬렉션 (0) | 2021.08.15 |
예외처리 (0) | 2021.07.14 |