My SQL 2

다원·2022년 12월 17일
0

DATABASE

목록 보기
12/13

항목명 추가

ALTER TABLE xyz_tbl -> add address varchar(20) after city;
: xyz_tbl 테이블에 address varchar(20)을 추가하는데, city 열 뒤에 추가가하라는 의미

  • 필드 데이터의 update를 사용하여 추가할 수 있음


열과 행의 삭제

행: delete from 테이블명 조건
조건절에 열명in(,): ()로 묶인 것을 동시에 삭제 할 수 있음
열: alter table 테이블명
drop 열

테이블 생성 후 텍스트 파일을 이용하여 값 입력

백업 데이터 외부 호스트로 전송






mysqldump:
limit: 오라클에서의 rownum > 행의 숫자를 보여줌, 자동으로 지정되는 값

백업

  • 바이너리 백업

    : -u(백업할 곳의 사용자) -p(해당 사용자의 패스워드)
    : mysqljotcopy:
    mysqljotcopy -u=() -p=() DB명

  • TXT 백업
    : mysqldump -u() -p() DB명 > 파일 저장된 곳

My SQL 파일의 확장자


  • frm: 테이블 구조가 저장되어져 있는 파일
  • MYD: 실제 데이터가 저장되어져 있는 파일
  • MYI: 인덱스 정보가 저장되어져 있는 파일

Truncate (테이블명)

: table의 내용을 지울 수 있음
레코드를 삭제할 때 사용하게 됨

사용자 권한

select, insert, create, drop, refrences, alter, creat view

  • 권한 부여: grant to

    localhost의 경우 내부에서 %의 경우 원격 접속
  • 권한 회수: revoke from

사용자 생성 및 My SQL 사용자

사용자_명 및 Password 변경

사용자명을 변경 한 후 기존 사용자에 대해서 변화를 줄 경우 아래와 같이 user table에 사용자가 없음을 확인 할 수 있음

사용자 삭제

테이블 복원

콘솔에서 데이터베이스 정지

service mysql stop

myisamchk *.MYI

MYI 파일에 대한 확인을 할 수 있음

MyISSMA

:MySQL 데이터베이스 저장엔진
오류가 발생하면 오류를 수정할 수 있음

사용자 PASSWORD 확인

원격 접속


권한 허용, 외부에서 접속할 수 있도록 허용해줌

error 발생 시

bind-address:
어떤 주소의 요청을 허용할 것 인지 설정,
0.0.0.0/0 설정하면 모든 트래픽에 대해서 요청을 허용, 원격 커넥션이 이루어짐
127.0.0.1 바인딩하는것과 인스턴스의 IP 바인딩 하는 것 차이
: NIC에는 하나의 MAC주소와 IP주소가 할당, 소켓 생성 시 LOCALHOST 요청
소켓 파일(파일 디스크립터, Local IP, Local port, remote ip, remote port 등)
127.0.0.1을 할당하면 127.0.0.1을 통해 생성된 소켓 파일을 통해서 온 요청만 서버에 허용하는 의미이기에, private-ip 요청을 보내도 커넥션 되지 않음

concat

CONCAT(): 둘 이상의 문자열 or 둘 이상의 컬럼 값을 순서대로 합쳐서 반환
반환되는 값에 null 포함되면, 반한되는 값도 null 반환

CONCAT_WS():둘 이상의 문자열 둘 이상의 컬럼 값을 반복되는 구분자를 넣고 순서대로 합쳐주는 반환해주는 함수 > 둘 이상의 문자열이 있는 경우에 문자열 사이에 설정 구분자가 필요

join 없이 테이블 불러오기

Cross JOIN

양쪽에 중복되는 값을 JOIN

group by only_full_group error

5.7 Version에서는 sql_mode 항목이 생겼으며 그 옵션 안에 only_full_group_by 내용이 존재함에 따라 error가 발생됨

A.group by 진행하니 only_full_group 이라는 error 발생

B.select @@ sql_mode 확인하여 보니 only_full_group인 것이 확인됨

C. 일시적으로 현재 SESSION에서 SQL_MODE에서 only_full_group을 제외하여 mode 설정

SET SESSION sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

D. 현재 세션의 mode를 확인해보면 only_full_group mode가 제외됨을 확인 할 수 있음

E. A에서 시도한 group by를 시도해보면 group by 로 생성이 가능함

default

테이블 설정 시 default로 설정할 수 있음
alter table ()
atler (열 명) set default 문
: alter가 2번 들어가는 것이 특이함

index

데이터 쿼리를 빠르게 수행시키는데 쿼리할 데이터가 전체의 10% 넘지 않을 때만 효과가 있고, 넘으면 인덱싱하느라 시간 소요가 커, 효율에 좋지 않음

person2 table에 lname을 index로 idx_lname 생성

두 개의 항목에 걸 수 있음ta

삭제 역시 alter table > drop index >

View

서브쿼리를 이용해서 특정 조건에 해당되는 뷰 테이블을 생성, 여러 테이블에서 필요한 항목들을 JOIN해서 미리 뷰 테이블 작성하여 바로 VIEW로 만들어진 테이블에서 쿼리를 수행하게 해서 편리
create view () as select from () where (조건)

where 절 이후 select 문은 서브쿼리 -> 서브쿼리로 조건에 맞는 것을 추려서
prodname, price를 갖은 view를 생성
create view () as () select from ()
where price > (서브쿼리 조건)

create or repalce view ()
as select from as
inner join on

테이블 타입으로 테이블 확인할 때

show full tables where table_type LIKE 'view';

SQL 문법

  • 3항 연산자
    if ~ select, where
    : select if(조건, true, false) as 별칭 from dual
    (오라클과 유사하게 dual 이라는 임시 테이블을 사용, 생략 가능)

where in (,)
between A and B

My SQL GUI

=> GUI로 처리하는 도구 phpMyAdmin 와 My SQL WorkBench 도구

  • phpMyAdmin 사용
    A. 도구 사용 시 APM(Apache+PHP+MySQL) 필요, windows APMsetup.exe 도구 사용하듯이
    XAMPP라는 도구를 사용해서 한번에 실행
    DB 설계 도구 ER-WIN, 튜닝

    nano -c /opt/lampp/phpmyadmin/config.inc.php

$i = 0;

cfg[Servers][cfg['Servers'][i]['password'] = ''; << cfg[Servers][cfg['Servers'][i]['password'] = 'rootoor'; 이렇게바꿔줌

(위에꺼 두 칸 밑에 있는 servers에서)
//cfg[Servers][cfg['Servers'][i]['host'] = 'localhost'; << 주석 지우고 localhost를 ip로 바꿔줌. cfg[Servers][cfg['Servers'][i]['host'] = '192.168.100.129';

또 두 칸 밑에 있는 true를
cfg[Servers][cfg['Servers'][i]['AllowNoPassword'] = true; << cfg[Servers][cfg['Servers'][i]['AllowNoPassword'] = false; 로 바꿈E. nopassword를 false로 해줘야 패스워드를 사용한다는 뜻이 된다.

profile
공부일지,

0개의 댓글