MySQL_기본

song·2023년 10월 5일

MySQL

목록 보기
2/3

주석

-- 또는 # : 한 줄 주석 (단축키 : Ctrl + /)
/**/ : 블록 주석

쿼리 실행

  • 활성시트의 메뉴바
    • 첫번째 번개 : 현재 활성시트에 있는 모든 명령어 실행 (Ctrl + shift + enter)
    • 두번째 번개(I) : 현재 커서가 있는 명령어 실행 (Ctrl + enter)

기타 코드

  • select now(); : 현재 시간 출력
    insert into student value ('s-001', md5('이름'), '010-0000-0000', not());
  • md5() : 암호화
    insert into student value ('s-001', md5('이름'), '010-0000-0000');
    비밀번호는 평문으로 두면 안된다. 불법임.
  • auto_increment : 자동으로 1씩 증가
    • insert로 값 넣을 때는 null로 넣으면 알아서 숫자 증가해서 값 들어가진다.
    • ★auto_increment를 사용중인 경우 delete 명령문 사용시 숫자가 이빨빠지게 된다.
      그래서 auto_increment를 초기화 해줘야 한다.
      alter table classes auto_increment=1; : auto_increment 초기화
      auto_increment값이 pk이라서 같은 숫자를 가지고 있을 수 없기 때문에 1로 설정해놔도 위에 쓰고 있는 숫자를 제외한 다른 번호를 알아서 갖게 된다.
      delete명령문과 위 alter 명령문을 세트로 사용하는 것을 추천한다.

타입 / 옵션

  • int(10) : 숫자 10자리 만큼 노출(저장도 10자리까지)
    • int 자리수를 지정하지 않으면 -2147483648 ~ 2147483647 까지 사용할 수 있다.
      만약 들어가는 자리수가 정해져있다면 지정해놓는 것이 좋다.
      음수 자리가 필요없다면 int옆에 unsigned를 적어놓으면 된다.
      mysql에서 auto_increment사용하면 알아서 unsigned 먹음.
  • varchar(255) : 문자
  • auto_increment : 자동으로 1씩 증가하는 숫자. (문자 안됨)
  • datetime : 시간 날짜 입력. (많이 사용하진 않음)

값 삽입 (insert)

  • insert into 테이블명 values (값1, 값2, ...);
    반드시 모든 컬럼을 삽입해야 하며, 값의 순서를 지켜야 한다.
  • insert into 테이블명 (컬럼명1, 컬럼명2, ...) values (값1, 값2, ...);
    반드시 명시한 컬럼명의 순서와 값의 순서를 지켜야 한다.
    모든 컬럼의 값을 넣을 필요 없으며 내가 명시한 컬럼 값만 넣어주면 된다.
  • insert한 거 지우지 말고 따로 보관해두기. 만약에 update나 delete를 where없이 써서 다 날아갔을 때를 위해.

값 수정 (update)

  • ★주의 : where 없이 실행하면 싹 다 바뀜.
  • update 테이블명 set 컬럼명=값 where 컬럼명 = 값;

값 삭제 (delete)

  • ★주의 : where 없이 실행하면 싹 다 삭제됨.
  • delete from 테이블명 where 컬럼명 = 값;

DB(스키마)

DB 생성

  • create database 데이터베이스이름;
  • 같은 이름으로 만들면 에러나니까 이렇게 코드로 생성하지 않는 것을 권장.

DB 삭제

  • delete database 데이터베이스이름;

DB 조회

  • show databases;

DB 사용

  • use 데이터베이스이름;
  • 여러 스키마들 중에서 해당 스키마인 것을 사용할 것이다.

Table

테이블 조회

  • show table;

테이블 정보확인

  • desc 테이블이름;

테이블 생성

  •   create table 테이블이름(
        컬럼1 타입 [옵션],
        컬럼2 타입 [옵션],
        ...
        컬럼3 타입 [옵션]
      );
      
      create table classes(
        c_seqno int(10) not null auto_increment, -- int(10) : 10자리 정수 / auto_increment : 자동으로 1씩 증가
        c_title varchar(255) not null,
        c_roomNo varchar(255) not null,
        c_openDate varchar(255) not null,
        c_closeDatclassesclassese varchar(255) not null,
        PRIMARY KEY(c_seqno)
      );
  • 생성하고 바로 보이지 않는다면 저 새로고침버튼을 누르면 보인다.
  • foreign key 지정 : foreign key(컬럼명) references 참조할테이블(참조할컬럼명)
    • foreign key를 지정하는 것을 별로 추천하지 않는다.

테이블 삭제

  • drop table 테이블이름;

테이블 초기화

  • truncate 테이블이름;
  • 값만 없애는 것.

테이블 명 변경

  • rename table 기존이름 to 새이름;
  • ex) rename table classes to classes22;
  • 명 변경을 하려면 그냥 drop하고 다시 만드는 것이 좋다.
    이미 데이터를 많이 넣어놨으면 해당 방법으로 명을 변경하자.

레코드

  • 테이블 row라고도 함.

삽입 (insert)

  • insert into 테이블명 values (값1, 값2, ...);
    반드시 모든 컬럼을 삽입해야 하며, 값의 순서를 지켜야 한다.
  • insert into 테이블명 (컬럼명1, 컬럼명2, ...) values (값1, 값2, ...);
    반드시 명시한 컬럼명의 순서와 값의 순서를 지켜야 한다.
    모든 컬럼의 값을 넣을 필요 없으며 내가 명시한 컬럼 값만 넣어주면 된다.
  • insert한 거 지우지 말고 따로 보관해두기. 만약에 update나 delete를 where없이 써서 다 날아갔을 때를 위해.

조회 (select)

  • 전체 컬럼 조회 : select * from 테이블이름;
  • 일부 컬럼 조회 : select 컬럼A, 컬럼B, ... from 테이블이름; (컬럼 = 필드)
  • 특정 조건으로 조회 : select * from 테이블이름 where 컬럼명=값;
  • 중복 제외하고 조회 : select distinct 컬럼명 from 테이블이름;
    • 조회할 때 다른 컬럼도 넣으면 조회될 row수가 다르기 때문에 에러가 난다.
  • 사이값 : select * from 테이블이름 where 컬럼명 between '값1' and '값2';
  • 검색 : select * from 테이블이름 where 컬럼명 like '%값%';
  • ★limit : 최대 row 개수 지정
    select * from 테이블이름 limit 3; : 전체 데이터중에서 3개만 나옴.
  • as : 별칭

변경(update)

  • ★주의 : where 없이 실행하면 싹 다 바뀜.
  • update 테이블명 set 컬럼명=값 where 컬럼명 = 값;

삭제 (delete)

  • ★주의 : where 없이 실행하면 싹 다 삭제됨.
  • delete from 테이블명 where 컬럼명 = 값;

기존 테이블(컬럼) 변경

추가

  • alter table 테이블명 add 컬럼명 타입 [옵션];
  • ex) alter table student add s_gender varchar(10) not null;

수정

  • 컬럼 수정
    alter table 테이블명 modify 컬럼명 타입 [옵션];
    ex) alter table student modify s_gender char(50) not null;
  • 컬럼명 수정
    alter table 테이블명 change 기존컬럼명 새컬럼명 타입 [옵션];
    ex) alter table student change s_gender2 s_gender int(10) not null;
  • 컬럼명 수정(change)로 컬럼 수정(modify) 대체 가능.
  • 해당 컬럼이 not null인 경우 값이 있어야 적용이 됨.

삭제

  • alter table 테이블명 drop 컬럼명;
  • ex) alter table student drop s_gender;

join

inner join(교집합)

  • select * from 테이블명A join 테이블명B on 조건;
  • inner join은 on절과 함께 사용되며, on절의 조건을 만족하는 데이터만 가져온다.
  • inner join을 가장 많이 사용한다.

left join

  • select * from 테이블명A left join 테이블명B on 조건;
  • 첫번째 테이블을 기준으로 두번째 테이블을 조합하는 join 방식
  • inner join과 결과값이 많은 차이가 없다.
  • on절의 조건을 만족하는 데이터가 없으면 첫번째 테이블의 결과값이 다 나온다.
    나머지 부분(두번째 테이블 select)은 null로 표시된다.

right join

  • select * from 테이블명A right join 테이블명B on 조건;
  • left join과는 반대로 두번째 테이블을 기준으로 첫번째 테이블을 조합하는 join 방식
  • on절의 조건을 만족하는 데이터가 없으면 두번째 테이블의 결과값이 다 나온다.
    나머지 부분(첫번째 테이블 select)은 null로 표시된다.

연습 사이트

https://www.w3schools.com/
여기서 SQL가서 연습하고 공부하면 좋다.

https://www.mockaroo.com/
데이터를 만들 수 있는 사이트.
임의의 데이터를 만들어 준다.

profile
계속 나아가기

0개의 댓글