그냥 따라 하기
!! 마지막 명령줄에는 ;(세미콜론)을 붙인다.
< 예약어 목록 >
1) use 데이터베이스 이름; < 데이터베이스를 지정해준다.
ex) use sample; 샘플 데이터베이스를 사용한다.
2) select * from 테이블명 < < 테이블을 가져온다.
ex) select * from sample21;
3) SQL에서 주석 처리는 '--' 사용한다.
ex) --주석입니다.
4) 또는, /* 주석처리 */ 를 사용한다 .
5) show table status;
6) desc sample21; < sample을 구조 보기
- Type을 보면 옆에숫자는 최대 자릿수를 알려준다.
딱 그 자릿수 만큼 들어가야 한다.
7) show tables; < 테이블의 목록을 보여준다.
8) NULL 의미는 '아무것도 없다'라는 뜻이다.
--------------------------------------------------------------------------
< 자료형 >
integer = 정수값 저장
char = 고정길이 캐릭터(문자열) 데이터 타입
varchar = 가변형 캐릭터(문자열) 데이터 타입
date = 날짜값 저장 연/월/일만 저장 가능
time = 시/분/초만 저장 가능
--------------------------------------------------------------------------
< 조건 검색 하는 방법 ! >
# no 열과 name열만 가져온다. (순서 다르게도 가능하다.)
-- > select no, name from sample21;
-- > select name,no from sample21;
# 행을 선택 하는 방법 select 행 from 테이블 where 조건문
만약 no가 2인 행만 추출 하고 싶다면,
-- > select * from sample21 where no = 2;
no가 2가 아닌행만 추출하고 싶다면 <> 를 사용한다.
--> select * from sample21 where no<>2;
조건문을 이용해서 이름이 '박준용'인 사람 추출 하기
select * from sample21 where name ='박준용';
조건문을 이용해서 생일이 1976-10-18인 사람 추출 하기
1) select * from sample21 where birthday = '1976-10-18';
2) select * from sample21 where birthday = '19761018';
* 하이픈을 사용하지 않아도 추출이 가능하다.
--------------------------------------------------------------------------
< 결측치 검색 >
NULL값을 검색할 때는 = 연산자가 아닌 'IS NULL'을 사용 한다.
ex) 샘플 21 birthday 열이 NULL인 행만 추출 하기
select * from sample21 where birthday is null;
ex)샘플21 birthday 열이 NULL이 아닌 행 만 추출하기
select * from sample21 where birthday is not null;
--------------------------------------------------------------------------
< 조건 조합 >
모든 조건을 만족하는 경우 조건식은 참이된다고 할때
* AND 연산자로 조건식을 조합하기
ex) sample24의 a열과 b열이 모두 0이 아닌 행을 검색
--> select * from sample24 where a<>0 and b<>0;
* OR 연산자 이용 어느 쪽이든 조건을 만족하면 결과는 참
ex) sample24의 a열이 0이 아니거나 b열이 0이 아닌 행을 검색
--> select * from sample24 where a<>0 or b<>0;
ex2) sample24의 a열이 1또는 2이고, b열이 1또는 2인행 검색
--> select * from sample24 where (a=1 or a=2) and (b=1 or b=2);
## or을 먼저 실행되게 하려면 괄호로 묶어야 한다.
# 만약 ,select * from sample24 where a=1 or 2 and b=1 or 2; 이렇게 했다면
불리언 타입으로 모두 출력이 된다.
*NOT 연산자는 오른쪽에 지정한 조건식의 반대값을 반환
ex) sample24의 a열이 0이 아니거나 b열이 0이 아닌 행을 제외한
나머지 행을 검색 !
--> select *from sample24 where not (a<>0 or b<>0);
-----[패턴 매칭]-------------------------------------------------------------------
- 열이름 LIKE '패턴'
- 패턴을 정의 할 때 사용할 수 있는 메타문자로는 %와 _ 가 있다.
- %는 임의의 문자열을 의미하며 _는 임의의 문자 하나를 의미한다.
- 패턴을 정의할 때는 메타문자를 여러 개 사용 가능하다.
- 와일드카드로 자주 쓰이는 *는 LIKE에서 사용불가
실습[1]. sample 25의 text열 데이터가 'SQL'~로 시작하는 행 검색.
-- > select * from sample25 where text LIKE 'SQL%';
실습[2] sample 25의 text열 데이터 중간이 'SQL'로 시작 하는 행 검색.
-- > select * from sample25 where text LIKE '%SQL%';
실습[3] sample 25의 text열 데이터 중간이 'SQL'로 끝나는 행 검색.
-- > select * from sample25 where text LIKE '%SQL';
실습[4] sample25의 text열에서 '%' 찾기
--> select * from sample25 where text LIKE '%\%%'; 역슬래시 \를 사용 하면 escape 코드가 된다.
실습[5] sample25의 text 열에서 '_' 찾기
--> select * from sample25 where text LIKE '%\_%';
--------------------------------------------------------------------------
[정렬]
-검색 결과의 행 순서 변경
1. ORDER BY로 검색결과 정렬하기
-select 열이름 from 테이블명 (where 조건식) order by 열이름
-검색 조건 필요 없는 경우 where 생략
-지정한 열의 값에 따라 행의 순서가 바뀜.
[실습1] sample31의 행을나이에 따라 정렬, 주소에 따라 정렬
-- > select * from sample31 order by age,address;
2. ORDER BY DESC로 내림차순 정렬하기
- 오름차순 정렬: SELECT 열이름 FROM 테이블명 (WHERE 조건식) ORDER BY 열이름 ASC
- 내림차순 정렬: SELECT 열이름 FROM 테이블명 (WHERE 조건식) ORDER BY 열이름 DESC
[실습2] sample31의 나이가 많은 순으로 내림차순 정렬
-- > select * from sample31 order by age DESC;
--------------------------------------------------------------------------
[대소 관계]
1 < 2 < 10 < 100
1999년 < ... < 2013년 < 2014년
가방 < 가족 < 나비
[실습1] sample311의 a열에 맞추어 정렬 후 결과 확인
--> select * from sample311 order by a; # 첫째자리가 1로 시작 , 그다음 0 ,1 그다음 첫째자리 2로 넘어간다.
DESC sample311; 을 하면 , a필드의 타입이 문자열로 되어있다.
[실습2] sample311의 b열에 맞추어 정렬 후 결과 확인
--> select * from sample311 order by b;
[실습3] sample311 확인
--> select * from sample311; # 표는 바뀌지 않는다
--------------------------------------------------------------------------
[여러 열 정렬]
select 열이름 from 테이블명 where 조건식 order by 열이름1, 열이름2
[실습] sample32의 a,b열 정렬,
-- > select * from sample32 order by a,b; --> a에 맞춰서 b열이 정렬된다.
[실습2] sample32의 b,a열 정렬
-- > select * from sample32 order by b,a; --> b에 맞춰서 a열이 정렬된다.
--------------------------------------------------------------------------
[정렬방법 지정]
select 열이름 from 테이블명 where 조건식 order by 열이름1 [ASC|DESC], 열이름2[ASC|DESC]...
[실습] sample32의 a열(오름차순), b열(내림차순) 정렬
--> select * from sample32 order by a ASC, b DESC;
--------------------------------------------------------------------------
[NULL값 정렬 순서]
-order by로 지정한 열에서 NULL 값을 가지는 행은 가장 먼저 표시되거나 가장 나중에 표시
-NULL에 대한 대소비교 방법은 표준 SQL에도 규정되어 있지 않아 데이터베이스 제품에 따라
기준이 다름
-MYSQL의 경우에는 NULL값을 가장 작은 값으로 취급하여 ASC(오름차순)에서는 가장 먼저,
DESC(내림차순)에선 가장 나중에 표시한다.
'MYSQL' 카테고리의 다른 글
MYSQL -4 스키마, 인덱스 (1) | 2022.09.19 |
---|---|
MYSQL - 기초3 (GROUP BY, 서브쿼리) (1) | 2022.09.19 |
MYSQL 데이터 다운로드 오류 (0) | 2022.09.19 |
MYSQL - 2 LIMIT , 문자열 연산 (0) | 2022.09.17 |
MYSQL 8.0 설치 방법 (0) | 2022.09.16 |