자주 쓰이는 기본적인 MySQL 쿼리 문법을 정리해보겠다.
● 테이블 생성
1. 기본 테이블 생성
CREATE TABLE mytable(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(50) NOT NULL
);
→ NOT NULL : 반드시 입력해야 함. 비어있을 수 없음.
→ AUTO_INCREMENT : 자동으로 숫자가 증가하도록 함.
→ PRIMARY KEY : 기본키로 지정.
2. 테이블 생성하면서 외래키 추가하기
FOREIGN KEY (USER_IDX) REFERENCES MEMBER (USER_IDX) ON UPDATE CASCADE ON DELETE CASCADE
● DESCRIBE 조회
1. 테이블 필드와 관련된 정보 조회
DESCRIBE 테이블명
2. 데이터 조회
SELECT * FROM 테이블명
3. 원하는 필드만 조회
SELECT 필드명1, 필드명2 FROM 테이블명
● WHERE 조건 검색
SELECT * FROM 테이블명 WHERE 필드명 = ‘값’
1. OR, AND
- 논리연산자
SELECT * FROM 테이블명 WHERE (필드명 = ‘값’) OR (필드명 = ‘값);
SELECT * FROM 테이블명 (필드명 = ‘값’) AND (필드명 = ‘값’);
2. LIKE
- 특정 부분 일치하는 데이터 조회
- 예 : 홍으로 시작되는 값을 모두 찾을 경우
SELECT * FROM 테이블명 WHERE 필드명 LIKE ‘홍%’;
- 예 : 홍으로 시작되고 뒤에 2글자가 붙을 경우
SELECT * FROM 테이블명 WHERE 필드명 LIKE ‘홍__’;
● ORDER BY
1. 오름차순 (DEFAULT)
SELECT * FROM 테이블명 ORDER BY 필드명 ASC;
2. 내림차순
SELECT * FROM 테이블명 ORDER BY 필드명 DESC;
● LIMIT 선택 범위
1. 특정 위치에 있는 레코드까지 선택
SELECT * FROM 필드명 LIMIT 레코드번호;
2. 특정 위치에 있는 레코드 ~ 레코드까지 선택
예 : 2번째 레코드부터 4개까지 선택
SELECT * FROM 필드명 LIMIT 2,4;
● 테이블 수정하기
1. 특정 테이블의 특정 데이터와 그 타입 수정
ALTER TABLE INQUIRY CHANGE DATA DATE VARCHAR(8);
2. 특정 테이블에 외래키 추가하기
ALTER TABLE MEMBER ADD CONSTRAINT START_TIME FOREIGN KEY(START_TIME) REFERENCES RENT_DETAILS(SEQ) ON DELETE CASCADE ON UPDATE CASCADE;
● 명령어 조합
SELECT FROM WHERE ORDER BY LIMIT
예 : id(int 필드), name (varchar 필드), modelnumber(varchar 필드)
SELECT id, name modelnumber FROM 테이블명
WHERE (id < 7) AND (modelnumber LIKE ‘A%’)
ORDER BY name DESC
LIMIT 3;
● INSERT 데이터 삽입 (저장)
INSERT INTO 테이블명 (필드명, 필드명, 필드명) VALUES (‘값’, ‘값’, ‘값’);
● UPDATE 데이터 업데이트 (수정)
1. 데이터 하나 수정
UPDATE 테이블명 SET 수정하고싶은필드명 = ‘수정하고싶은값’ WHERE 기본(Primary Key)필드 = ‘값’;
2. 데이터 여러개 수정
UPDATE 테이블명 SET 수정하고싶은필드명 = ‘수정하고싶은값’, 수정하고싶은필드명 = ‘수정하고싶은값’, 수정하고싶은필드명 = ‘수정하고싶은값’ WHERE 기본(PrimaryKey)필드 = ‘값’;
3. DELETE 데이터 삭제
DELETE FROM 테이블명 WHERE 필드 = ‘값’;
● 추가 정보들
⓵ SELECT 사용하기
1. SELECT * FROM table_name WHERE abc_column = ‘a’ ORDER BY a_column DESC LIMIT 100;
order by a_column은 정렬, order by a_column desc는 역순정렬, limit 100은 100개까지
2. SELECT * FROM table_name WHERE a_column like ‘%aaa%’;
a_column에서 aaa를 포함하는 모든 레코드를 가져옴.
3. SELECT * FROM table_name WHERE a_column BETWEEN 10 AND 100;
a_column에서 10~100 사이의 값을 가진 레코드를 가져옴.
4. SELECT a_column FROM table_name GROUP BY a_column;
a_column의 같은 값끼리 그룹을 묶음.
5. SELECT count(*) FROM table_name;
테이블의 전체 레코드 개수를 가져옴.
⓶ UPDATE 사용하기
UPDATE table_a SET table_a, a_column = table_b, a_column FROM table_a, table_b
WHERE table_a, a_column = table_b, a_column;
두 개의 테이블에서 조건을 비교하여 업데이트
⓷ 문자 관련 함수
1. SELECT LEFT(a_column,, 2) FROM table_name;
a_컬럼에서 왼쪽부터 2자리를 잘라서 가져온다.
2. SELECT MID(a_column, 2, 4) FROM table_name;
a_컬럼 2자리부터 오른쪽으로 4자리만큼 가져온다.
3. SELECT RIGHT(a_column, 3) FROM table_name;
a_컬럼에서 오른쪽부터 3자리 잘라서 가져온다.
4. SELECT * FROM table_name WHERE LENGTH(a_column) = 10;
a_컬럼에서 길이가 10인 레코드만
5. UPDATE table_name SET a_column = REPLACE(a_column, ‘변경전글자’, ‘변경후글자’);
a_컬럼의 ‘변경전글자’라는 문자열을 ‘변경후글자’로 바꾸어 a_컬럼 수정
6. UPDATE table_name SET a_column = TRIM(a_column);
a_컬럼의의 왼쪽 오른쪽 공백을 모두 제거
7. SELECT AVG(a_column), MIN(a_column), MAX(a_column), SUM(a_column) FROM table_name;
AVG : 평균값, MIN : 최소값, MAX : 최대값, SUM : 합계
8. SELECT version(), user(), database();
MySQL 버전, 유저, 데이터베이스명 보기
⓸ 날짜 관련 함수
SELECT NOW();
⓹ JOIN
1. a_테이블과 b_테이블에서 a_컬럼의 값이 같은 레코드만 가져옴
SELECT a_table.a_column, b_table.a_column
FROM a_table, b_table
WHERE a_table.a_column = b_table.a_column;
2. INNER JOIN
SELECT b.column_b
FROM table_a as a
FROM table_a as a
inner join table_b as b on a.column_a = b.column_a
WHERE a.column=’000’
테이블 A와 테이블 B를 비교하여 테이블 A과 테이블 B의 컬럼a 값이 000인 것의 테이블 B 컬럼b 값을 가져오는 쿼리
⓺ UNION
a_테이블과 b_테이블에서 a_컬럼, b_컬럼 모든 값을 한꺼번에 가져옴
SELECT a_column FROM a_table
UNION
SELECT b_column FROM b_table;
'CS > Database' 카테고리의 다른 글
[Edwith] 9. Maven (0) | 2020.04.20 |
---|---|
[Edwith] 11. JDBC (0) | 2020.04.20 |
[Edwith] 8. DDL 알아보기 (0) | 2020.04.16 |
[Edwith] 7. DML - DELETE 알아보기 (0) | 2020.04.16 |
[Edwith] 6. DML - UPDATE 알아보기 (0) | 2020.04.16 |