MYSQL / / 2022. 9. 16. 10:10

MYSQL - 1 조건문 , 패턴매칭 ,예약어

그냥 따라 하기 

 

!! 마지막 명령줄에는 ;(세미콜론)을 붙인다. 

< 예약어 목록 > 

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
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유