[SQL]안 까먹으려고 쓰는 SQL 기본✨

김보나·2021년 10월 27일
1

DB

목록 보기
1/3

SQL이란?

  • 관계형 데이터베이스의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어

기본 규칙

  1. 명령어 끝에는 꼭 ;붙여주기
    ->;이 없으면 명령어가 끝나지 않은걸로 간주해서 실행이 안됨.
    => 세미콜론을 붙이 전까지는 엔터나 공백을 아무리 줘도 상관 없음!(가독성을 챙기자)
  2. 문자열을 사용할 때는 '' 사용하기
    -> 잘 알겠지만,''안에서 '을 사용할 때는 \'으로 사용해주면 된다.
  3. * : 모든 데이터를 뜻하는 와일드 카드 문자

조회 명령어

  1. DESC : 테이블의 컬럼과 구조를 조회하는 명령어 (내림차순 아님 주의)
desc 테이블이름;
desc employees;

=> 필드(컬럼 이름), 타입, null 여부, 키, default, extra등의 자료가 조회됨.
2. SELECT : print와 같은 조회하는 명령어

SELECT 컬럼 FROM 테이블;
SELECT * FROM member;
select name, birth_day from member;
  1. DISTINT : 결과의 중복을 제거함.
  • 중복된 값이 있으면 하나만 출력함.
  • 두 개 이상의 컬럼을 적으면 중복된 값이 있어도 컬럼이 다르면 다른것으로 취급함.
SELECT DISTINCT 검색할컬럼 FROM 테이블;
SELECT DISTINCT name, birth_day FROM member;
select distinct name from member;

조건 명령어

  1. WHERE : 검색하고자 하는 데이터의 조건을 설정할 수 있는 명령
  • if문과 비슷한 역할
SELECT DISTINCT 검색할컬럼 FROM 테이블;
SELECT DISTINCT title, author FROM book;
select distinct emp_no from salaries;
  1. 비교연산자 사용
  • 단, 같다를 ==가 아닌 =로 사용함.
SELECT * FROM score WHERE korean = 90;
  1. 복합조건 연산자
  • AND , &&
  • OR, ||
  • NOT, !
select * from member where age >19 and height>=160;
select * from member where first_name="Park" and gender ='F';

--이름이 Park이거나 Kim이므로 ()를통해 우선순위를 지정해준뒤 and로 명령을 이어준다.
select * from employees where (first_name='Park' or first_name= 'Kim')
and gender = 'F' and birth_day != '1997-06-26';
  1. 기타 연산자
  • BETWEEN
    age BETWEEN 17 AND 22
    -> age가 17,18,19,20,21,22인 데이터들.
    -> 기준이 되는 값도 포함이되는 것을 확인 할 수 있다.
  • IN
    name IN ('sieun','sumin','isa')
    ->시은, 수민, 아이사가 name에 포함되어있는 값
  • NOT IN
    name NOT IN ('sieun','sumin','isa')
    ->시은,수민, 아이사가 name에 포함되어 있지 않은 값.
select * from score where (age between 20 and 23) 
and (height between 150 and 165)  ;

select * from member where birth_day
between '1999-01-01'and '2000-12-31';

select * from member where name 
in )'sieun','sumin','isa') ;

데이터 조작어(DML)다루기

유사한 값 찾기

  • LIKE : 특정 문자가 포함된 문자열을 찾고 싶을 때 사용하는 명령어
  • %와 같은 와일드 카드 문자가 함께 사용된다.
SELECT 컬럼 FROM 테이블 WHERE 컬럼 LIKE '검색어';
select * from member where name like '시은';

--은로 끝나는 멤버 검색하기
select * from member where name like '%은';

--시로 시작하는 책 검색하기
select * from member where name like '시%';

--sa가 포함되는 곡 검색
select * from song where title like '%sa%';

select * from member where birthday_date like '1997-07-07';

--생일 날짜에 7이 들어가는 사람 찾기
select * from employees where birthday_date like '%7%';

데이터 정렬하기

  • ORDER BY : 정렬조건을 입력하는 명령어
SELECT 컬럼 FROM 테이블  ORDER BY 정렬 조건

--오름차순(낮은 값부터) 숫자말고 문자도 가능함.
select * from member order by age ASC;
--내림차순(큰 값 부터)
select * from member order by age DESC;

데이터 삽입하기

  • INSERT : 테이블에 값을 저장하는 명령어
INSERT INTO 테이블 (컬럼) VALUES(추가할 데이터들);

insert into songs (song_no,title,singer) 
values (10001,'ASAP','STAYC');

데이터 수정하기

  • UPDATE : 테이블에서 이미 저장된 데이터를 수정하는 명령어
UPDATE 테이블 SET 변경할 값 WHERE 조건;

update songs set title ='색안경' where id =10001;

데이터 삭제하기

  • DELETE : 테이블에서 저장된 데이터를 삭제하는 명령어(전체 행을 다 삭제함.)
DELETE FROM 테이블 WHERE 조건;

delete from product where name = 'tea';
delete from product where product_no = 10005;

SQL과 함수

  • 행함수 : 데이터 값을 계산하거나 조작함.
  • 그룹 함수 : 행의 그룹을 계산하거나 요약함.

COUNT

  • 검색한 결과의 데이터의 개수를 가져오는 내장함수
  • NULL인 데이터는 제외됨
--검색한 컬럼의 개수만 알아냄
SELECT COUNT(검색할컬럼) FROM 테이블;
--모든 컬럼의 데이터 개수
SELECT COUNT(*) FROM 테이블;

select count(*) from member;

LIMIT

  • 데이터의 일부만 출력하는 명령어
  • 테이블에서 출력하고자 하는 데이터의 개수를 제한하는 명령
SELECT 컬럼 FROM 테이블 LIMIT 숫자 ;

--5개의 데이터 출력하기
SELECT * FROM songs LIMIT 5;

--두번째 데이터부터 5개의 데이터 출력하기
SELECT * FROM songs LIMIT 1,5;

SUM&AVG

  • 컬럼을 기준으로 데이터를 불러오면 select 뒤, 조건에서 사용하는 함수면 where뒤에 옴.
  • sum
    • 지정한 컬럼들의 값을 모두 더하여 총합을 구해주는 내장 함수.
    SELECT SUM(컬럼) FROM 테이블 ;
    select sum(age) from members;
  • avg
    • 지정한 컬럼들의 평균 값을 구해주는 내장함수
    SELECT AVG(컬럼) FROM 테이블;
    select avg(age),avg(height) from grade;

MAX&MIN

  • 숫자 뿐만 아니라 문자형도 가능함(내림차순 및 오름차순으로 됨.)
  • max
    • 가장 큰 값을 구해주는 내장함수
    SELECT MAX(컬럼) FROM 테이블;
    select max(age) from members;
  • min
    • 가장 작은 값을 구해주는 내장함수
    SELECT MIN(컬럼) FROM 테이블;
    select min(age) from member;

Elice AI Track을 수강하며 작성된 포스팅입니다.

profile
우주최강 개발자가 될 때까지😈

0개의 댓글