zero-base 취업스쿨/스터디노트/6주차/ SQL #17

Sea Yoon·2023년 10월 16일

SQL

목록 보기
2/7
post-thumbnail

1. 데이터삽입(insert into ~ value)

  • 데이터를 삽입할 table 환경을 만들어보자

    create table person
    (id int, name varchar(16), age int, sex char);
  • 데이터에 정보를 삽입

    insert into person(id,name,age,sex)
    values(1,'이효리',43,'F')
  • 데이터에 정보를 삽입
    (컬럼의 모든 데이터가 들어갈경우 컬럼명 생략가능!)

    create table person
    values(2,'이상순',48,'M')
  • 삽입한 데이터 정보 확인
    select * from person

2. 데이터조회(select ~ from)

  • 위에서 살펴본 것 처럼 생성한 모든 테이블의 정보를 조회할때는 아래와 같이 select 후 '*'을 써준다.

    select * from person
  • 일부 정보만 조회하고 싶을때는 select 컬럼명을 써준다

    select name, age from person

  • 조건절(where)을 넣어 조건에 맞는 데이터를 조회 할 수 있다.
    select * from person
    where sex = 'F'

3. 데이터변경(update ~ set ~ where)

  • 조건절(where)을 넣어 조건에 맞는 데이터를 조회 할 수 있다.

    update person set age=23 where name='이효리';
  • 변경된 데이터 확인

    select * from person where name='이효리';

4. 데이터삭제(delete from ~ where)

  • where조건절에 해당하는 데이터를 삭제해보자.

    delete from person where name='이상순';
  • 변경된 데이터 확인

    select * from person 

5. ORDER BY

  • celeb 테이블을 만들어보자
    create table celeb 
    ( 
        id int not null auto_increment primary key, 
        name varchar(32) not null default '',
        birthday date, 
        age int,
        sex char(1),
        job_title varchar(32),
        agency varchar(32)
    );

  • celeb 테이블에 테이터를 추가하자
    insert into celeb values(1,'아이유','1993-05-16',29,'F','가수, 탤런트','EDAM엔터테이먼트');
    .
    .
    .

  • 나이순으로 내림차순해보자(DESC: 내림차순)
    select age, name
    from celeb
    order by age desc 

  • 나이순으로 내림차순해보자(ASC: 오름차순, 생략가능)
    select age, name
    from celeb
    order by age 

6. 비교연산자(Comparison Operators)

  • 비교연산자는 where절 안에서 사용 가능

  • 나이가 29인 celeb 조회
    select name, age from celeb where age = 29;

  • 나이가 29보다 큰 celeb을 age가 오름차순으로 조회
    select name, age from celeb where age > 29 order by age;

7. 논리연산자(Logical Operators)

7-1. AND

  • 조건을 '모두' 만족하는 경우 True

  • 나이가 29세이고 성별이 여성인 데이터 검색

    select * from celeb where age=29 and sex='F';

7-2. OR

  • 하나의 조건이라도 만족하는 경우 True

  • 나이가 25세보다 작거나 30세보다 큰 데이터 검색

    select * from celeb where age < 25 or age >30 order by age;

  • 나이가 29세보다 작고 여자이거나, 나이가 30세 보다 크고 남자인
    데이터를 나이와 성별 순으로 정렬하여 검색
    select * from celeb 
    where (sex='F' and age < 29) or (sex='M' and age>30) 
    order by age, sex;

  • YG엔터테이먼트 소속이거나 나무엑터스 소속인 연예인중, 나이가 30세 보다 작은 데이터를 검색
select * from celeb 
where (agency='YG엔터테이먼트' or agency='나무엑터스') and age <30;
  • 논리연산자 and와 or 중에 우선순위는 and 이므로 우선순위를 지정할때는 ()괄호를 넣어주어 먼저 처리한다.

7-3. NOT

  • 조건을 만족하지 못하는 경우 True

  • 소속사가 YG엔터테이먼트이면서 남자가 아니거나, 직업이 가수이면서 소속사가 YG엔터테이먼트가 아닌 데이터 검색

select * from celeb 
where (agency ='YG엔터테이먼트' and not sex ='M') or (job_title ='가수' and not agency ='YG엔터테이먼트');

7-4. BETWEEN(~AND)

  • 조건값이 범위 사이에 있으면 True

  • 나이가 20세에서 40세 사이의 데이터 검색

select * from celeb 
where age between 20 and 40;

  • 생년월일이 1980년에서 1995년 사이가 아니면서 여자이거나, 소속사가 YG엔터테이먼트이면서 나이가 20세에서 45세 사이가 아닌 데이터 검색
select * from celeb 
where (not birthday between 19800101 and 19951231 and sex ='F') or
(agency ='YG엔터테이먼트' and not age between 20 and 45);

7-5. IN

  • 목록 안에 조건이 존재하는 경우 True

  • 나이가 28세, 48세 중 하나인 데이터 검색

select * from celeb 
where age in (28, 48);

  • celeb 테이블에서 아이유,이미주,유재석,송강 중에 소속사가 '나무엑터스'인 데이터를 조회
select * from celeb 
where name in ('아이유','이미주','유재석','송강') and agency = '나무엑터스';

7-6. LIKE

  • 조건값이 패턴에 맞으면 True
Select column1
From tablename
Where column LIKE pattern
  • 소속사 이름이 'YG'로 시작하는 데이터 검색
select * from celeb 
where agency like 'YG%';

  • 직업명에 가수가 포함된 데이터 검색
select * from celeb
where agency like '%가수%';

  • 직업이 하나 이상인 연예인 중 영화배우 혹은 탤런트가 아닌 연예인 검색
- select * from celeb
where job_title like '%,%' 
and not (job_title like '%영화배우%' or job_title like '%탤런트%');

profile
우직한 거북이

0개의 댓글