728x90
반응형
SMALL

목차:

  1. 데이터 검색
  2. 별명
  3. 모든 컬럼 가져오기
  4. null과 ' '
  5. 조건절
    1. 조건절 예시(로그인 쿼리)
  6. is
  7. like 연산자
  8. 정렬
    1. 조건절 + 정렬
  9. limit
    1. 정렬 + limit
  10. 집계함수
    1. count
    2. sum
    3. avg
    4. min
    5. max
  11. 그룹
    1. 그룹 + 그룹조건
    2. 조건절 + 그룹 + 그룹조건 + 정렬

 

# 1. 데이터 검색

기본구조:
                select 필드명1, 필드명2...  from 테이블명;

예시:
         select 100;
         select 100+50;



# 2. 별명

기본 구조:
                select 필드명 as 별명 from 테이블명;

예시:
                select 100 +50 as '덧셈';            #  -- ''를 사용하는 이유는 띄어쓰기가 있을 수 있어서 사용
                select 100 + 50 as '덧셈 연산'
                select 100 + 50 as 덧셈;            #  ''없어도 가능은 하다
                select 100 + 50 덧셈;                 #  as도 없이 사용가능은 함

일부 항목만 가져오기:
                                   use kdt;
                                   select userid, username, gender from member; # 필드나 로우는 불러오는순으로 보여줌
                                   select userid, gender, username from member; # 순서가 정해져있는게 x

응용:
         select userid as 아이디, username as 이름, hp as 휴대폰번호 from member;



# 3. 모든 컬럼 가져오기(사용 권장x)

# 개발할때는 연산량이 많아져서 느려짐
# 실제 개발시, 필요한 컬럼만 가져와서 사용함
# 실서버에서 사용시 모든연산이 이것만 처리해서 유저들화면에는 흰로딩창만 뜨게됌

select * from member;



# 4. null과 ' '

select null;            # 데이터가 없음, insert가 되지 않은것
select '';                # DB에서는 ''라는 데이터가 있는것

select 100+null;    # 결과: null, 연산할수 없음
select 100+'';        # 결과: 100, 연산가능



# 5. 조건절

기본 구조:
                select 필드명1, 필드명2 ... from 테이블명 where 조건절;
                조건에 맞는걸 먼저 필터링후 셀렉함

예시:
        select userid, username, hp, email from member where userid='apple';
        select userid, username from member where gender='남';
        select userid, username, point from member where point >= 300;


# 5 - 1 (로그인 쿼리)

ex)   id = apple      pw=1234
select userid, username, hp, email from member where userid = 'apple' and userpw = '1234';
# 맞을시 데이터가 반환되면 로그인 시켜주고

select userid, username, hp, email from member where userid = 'apple' and userpw = '1000'; 
# 반환된 데이터가 없으면 틀렸다고 출력하면 됌



# 6 is

사용예시:
              select userid, username, hp from member where address1 = 'null'; # 틀린 방법
              select userid, username, hp from member where address1 = null; # 틀린 방법2
              select userid, username, hp from member where address1 is null; # 정답
              select userid, username, hp from member where address1 is not null; # 정답2

응용:
        select userid, username, point from member where point between 300 and 600; # 이 두개가 같은 말이다
        select userid, username, point from member where point >= 300 and point <= 600; # 300이상 600이하



# 7 like 연산자

# 게시판에서 제목, 글내용 검색할때 자주 사용됌

select userid, username from member where userid like 'a%';           -- a로 시작하는 문자열을 찾아달라

select userid, username from member where userid like '%a';           -- a로 끝나는 문자열

select userid, username from member where userid like '%a%';        -- a가 들어가는 문자열

select userid, username from member where userid like '%app%';    -- app이 들어가는 문자열

select userid, username from member where userid like 'app__';      -- app으로 시작하는 총5글자인 문자열




# 8.정렬

기본 구조:
                # select 필드명1, 필드명2 ... from 테이블명 order by 정렬할필드명 [asc, desc];
                # 써도되고 안써도됌 [asc, desc]

예시:
        select userid, username, point from member order by userid asc; # 아이디로 오름차순
        select userid, username, point from member order by userid desc; # 아이디로 내림차순alter
        select userid, username, point from member order by userid; # 생략할시 오름차순

응용:
        #포인트를 기준으로 내림차순 하고 같은 점수인경우 아이디로 내림차순
        select userid, username, point from member order by point desc, userid desc;
        # 이미 포인트가 기준이었기 때문에 , 뒤에 정렬할것만 붙여주기하면 됌


# 8 - 1. 조건절 + 정렬

기본 구조:
                # select 필드명1, 필드명2... from 테이블명 where 조건절 order by 정렬할필드명 [asc, desc];

응용:
        # 성별이 여성인 회원을 point가 많은순으로 정렬(단, 포인트가 같을경우 먼저 가입한 순으로 정렬)
        select userid, username, gender, regdate, point from member where gender='여' order by point desc, regdate asc;



#  9. limit

기본 구조:
              # select 필드명1, 필드명2 from 테이블명 limit 가져올 행의 갯수
              # select 필드명1, 필드명2 from 테이블명 limit 시작행, 가져올 행의 갯수

예시:
        select userid, username, gender from member limit 3;        # 처음부터 3개의 행을 가져옴
        select userid, username, gender from member limit 3, 2;    # index 3행부터 2개의 행을 가져온다는뜻


# 9-1 정렬 + limit

기본 구조:
             # select 필드명1, 필드명2 from 테이블명 order by 정렬할필드명 [asc, desc] limit 가져올 행의 갯수;

예시:
        select userid, username, gender, point from member order by point desc limit 3;




# 10. 집계함수(행을 통틀어서 계산해주는함수)


# 10 - 1. count: 행의 갯수를 세줌

# 전체인원을 알고싶다!:                  primary key가 적용되어 null이 포함될수 없음
                                                        select count(userid) as 전체인원 from member;

# 주소를 입력한 인원을 알고싶다!: null이 있으면 주소를 입력하지 않았음
                                                        select count(zipcode) as 우편번호 from member; # null을 제외하고 갯수를 셈

# 10 - 2. sum: 행의 값을 더함

기본 구조:
                select sum(point) as 포인트총합 from member;

오류:
                select userid, sum(point) as 포인트합 from member;
                # Error Code: 1140. In aggregated query without GROUP BY, expression #1 of SELECT
                   list contains nonaggregated column 'kdt.member.userid';
                   this is incompatible with sql_mode=only_full_group_by
                # 앞에 무언갈 적어주고싶으면 그룹을 적어야함


# 10 - 3. avg: 행 값의 평균을 구함

기본 구조:
                select avg(point) as 평균 from member;

  
# 10 - 4. min: 행의 최솟값을 구함

기본 구조:
                select min(point) as 최솟값 from member;


# 10 - 5. max: 행의 최댓값을 구함

기본 구조:
                select max(point) as 최댓값 from member;



# 11. 그룹

기본 구조:
             # select 그룹을 맺은 컬럼 또는 집계함수 from 테이블명 group by 그룹을맺을필드명;

예시:
       select gender from member group by gender; 
       select gender, sum(point) from member group by gender;
       select gender, avg(point) from member group by gender;
       select gender, count(userid) as 총원 from member group by gender; # 이런식으로 활용가능


# 11 - 1. 그룹 + 그룹조건

기본 구조:
             # select 그룹을맺은 컬럼 또는 집계함수 from 테이블명 group by 그룹을 맺을 필드명 having 조건절;

예시:
         select gender from member group by gender having gender = '여';


# 11 - 2. 조건절 + 그룹 + 그룹조건 + 정렬

기본 구조:
             # select 그룹을맺은 컬럼 또는 집계함수 from 테이블명 where 조건절 group by 그룹을 맺을 필드명 having 조건절 order by 정렬할필드명 [asc,desc];

응용:
        # 포인트가 0이 아닌 회원들중에 남, 여로 그룹을 나눠 포인트의 평균을 구하고 포인트가 100 이상인 성별을 검색하여 내림차순으로 정렬
         select gender, avg(point) from member where point > 0 group by gender having avg(point) >= 100 order by gender desc; # 별명 x
         select gender, avg(point) as avg from member where point > 0 group by gender having avg >= 100 order by gender desc; # 별명 o
728x90
반응형
LIST

'DBMS > MySQL' 카테고리의 다른 글

MySQL- View  (0) 2023.03.21
MySQL- 사용자 추가하기  (0) 2023.03.21
MySQL- 연산자  (0) 2023.03.16
MySQL - table  (0) 2023.03.15
RDBMS - MySQL 정리  (0) 2023.03.15

+ Recent posts