본문 바로가기
CLASS/DATABASE

#2-1 / MYSQL 기초문법

by hingu 2024. 6. 3.

최고사용자(root) / 일반사용자(guest) 

DB hosting - root안줌, 일반사용자

자체 DB Server - root 有 - 일반사용자 생성,권한 제공

 

DataBase Package

한 사이트 당 각각의 DB로 설정

일반 사용자를 각각 배치

1인 기준 사용자가 여러개의 database 권한을 가질 수 있음

1개의 datatbase에 여러명의 일반 사용자를 접근허용 할 수 있음(주로 협업시)

 

Version 

MYSQL 5.1 or 5.5 이상 / 서로다른 자료형 및 구조를 가지고 있음

∴ 한번 구축된 database는 버전 업그레이드가 매우매우 어려운 작업임

 

Database에 외부 접속시 접속 방식

SSH라는 Tool 이용 (key로 접속)

SQL Developer 이용(잘안씀 )

Telnet오픈 - 아주별로임,접속은 가능하나 지금은 사용x (보안 뚫리기 쉬움 , 기본 port사용하기 때문에)

 

Database의 구조 

⭐🔥  [ MySQL >  Database > Table > Column > Data ] 

=>  순자적으로 생성

프로젝트 start시 database 제일 먼저 설계 (ERD 설계)

 

Database 접속 port

3306

❗ (내부)Database 및  (외부)Database 끼리 연결시  port가 다를 경우 접속 불가

 

언어셋 세팅 필수

서로 다른 databse끼리 복구 안됨

 

👀

Mysql 최적화 할줄 알면 good


 

cmd

\status : Database 정보 확인(언어셋,셋팅방식,port,가동시간,version 등)

 

설치시 언어셋 세팅 필수

- uft8

255byte - 자료형(char) 로 세팅시

varchar로 세팅시 765byte로 인식

 

- utf8mb4

191byte까지 입력 가능 , 그 이상시 error발생 - 자료형(char) 로 세팅시

varchar로 세팅시 1020byte 인식가능

 

Server characterset : 서버에서 받을때 언어셋

Db characterset : db에서 받을때 언어셋

Client characterset : 외부 접속시 언어셋

Conn characterset : connection의 약자

 

 

ctrl + c : 빠져나가기

set names utf8mb4; => 전부다 utf8mb4로 언어셋 변경(임시 - 재접속시 기본세팅으로 원복됨)

\status

 

 

- my.ini or my.cnf : mysql 환경설정(메모리 증가/Buffer 백업,복구,데이터삽입/언어셋)

   -> 해당 파일에서 언어셋,buffer size등 변경 가능

 

 

 

show databases; => 현재 생성된 database list 출력

show tables; => 현재 database의 table list를 출력

create database database명; => 신규 데이터베이스를 생성 - 동일한 이름 생성 불가

drop database database명; => 해당 데이터베이스를 삭제

 

table과 column은 같이 생성해야 정상 작동

⭐ use database명; - database 이동

 

char(30) : 문자 기반 생성 / 15글자까지 받겟다- 한글자당 2byte / 특수문자 미적용 될 수 있음 / 범위 : char(1~255)

varchar(30) : byte문자 기반 / 15글자까지 받겟다- 한글자당 2byte / 특수문자및 암호화 적용 가능 / 범위 : char(1~255)

 

not null : 필수로 받겠다

null : 필수 아님(선택)

 

desc 테이블명; => 자료형 확인이 가능함

 

desc column명; => column 확인(colomn == field)

 

[insert 문법] - 데이터 삽입  

insert into 테이블명 (colomn명, colomn명, colomn명) values ('데이터값',' 데이터값 ',' 데이터값 ');

=> 데이터 저장 , 갯수 잘 맞춰야함 / null(선택사항)일 경우 '' or null로 삽입 가능

* 주의사항 : column명 갯수에 맞춰서 데이터 갯수가 입력되어야 함 

단, null일 경우 '' or null로 자바에서 핸들링 할 수 있음

 

[select 문법] - 검색,리스트 출력

select * from table명; => 해당 테이블의 데이터를 확인하는 명령어 (전체출력)

 

검색

select * from table명 where column명='찾을데이터'; => 테이블 안에 있는 데이터를 검색

 

 

select column명, column명  from table명; => 해당 컬럼에 관련한 데이터만 출력 

 

select user(); => 현재 접속한 사용자의 아이디를 출력

select database(); => 내가 지금 어느 database안에 들어와 있는지 확인

 

[delete 문법] - 바로 삭제됨 주의

delete from table명; => 해당 table 안에있는 모든 데이터 삭제

delete from table명 where column명 ='데이터값'; => 해당 데이터만 삭제

 

delete from notice where nidx in (2,5); // 이런식으로 해도 됨 (단, 좀 위험함 ㅋ.. )

 

[update 문법] - 수정

update table명 set colomn명 = '변경데이터' where column명='삽입할데이터';

=> 해당 데이터 colomn에 대한 값 변경

 

update table명 set colomn명 =' 삽입할데이터';

=> set작성하지 않을시 모든 colomn이 변경됨

 

 

[drop]

drop table 테이블명; => 해당 table을 삭제 (column은 delete, drop은 table 삭제시 사용)

 

 

primary key() : 중복되지 않은 데이터 선정 시 사용하는 key

-> 테이블 생성시 primay key(colomn명, colomn명) : 해당 컬럼명들은 중복 내용 방지됨 - error 발생

ex) 상품등록 시 상품번호 중복방지

중복 삽입 방지

 

❗ 주의 : 다중키로 primary key 설정시 auto_increment가 기준으로 잡히며 

             여러개의 다중키를 사용하더라도 단한개의 칼럼 데이터가 다를 경우 insert가 가능하다

❗ 주의 : not null 아닌 null (빈값 가능)로 받으려면 int 불가 - char or varchar로만 가능!!

 

[ mysql db ]

 

사용자 추가

=> mariaDB동일

/ root는 최고사용자이기 때문에 모든 database를 확인할 수 있지만 사용자 추가시 database를 따로 지정해줘야함

/ 사용자는 지정된 이름의 database만 삭제,생성 할 수 있음 (단 ,새로운 database는 생성할 수 없다 - root만 가능)

 

use mysql : mysql database로 이동

🔽

 

insert into user (host,user,password) values ('localhost','hong', password('a123456')); 해당 사용자에게 database주기

=> mysql v5.5 이하에서만 해당 방식으로 사용자 추가 가능

 

(or)

 

create user 'hong'@'localhost' identified by 'a123456';

=> mysql v5.5 이상

 

!!!!!!!!!!!!!!!!!!!

create시 % 때리면 insert 할때도 %  => insert into db values ('localhost','db명','사용자'....) 하면 안댐... 

%는 외부사용자 , localhost는 내부사용자

java에서 사용 시 %% 

두개 맞출것

!!!!!!!!!!!!!!!!!!!

 

🔽

해당 사용자에게 database 권한주기  : 

desc db; - db라는 table의 filed 확인 가능

insert into db values ('localhost','erp','hong','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y'); 

: ('localhost','생성한db','생성한 아이디','y'....)    => colomn 총 갯수만큼 작성,버전마다 다름

* mysql 에 user라는 database가 있음 거기에 db라는 table에 데이터 추가하는거임 (db - 접속 가능 user ...? )

 -> data가 22개이면 그에 맞춰 갯수를 맞춰서 넣어줘야함

 

select * from db where user='hong';  : 해당 database 확인

select * from user where user='hong';  : 해당 권한 확인

 

🔽

확인

C:\Program Files\MySQL\MySQL Server 8.4\bin>mysql -u hong -p 

비번 입력

show databases;

 

root에서 mysql restart 하면 해당 사용자에게 보여준 database 추가 확인 가능 ( show databases; )

restart ==> 서비스에서 리부트 or 다른창 cmd에서 C:\Program Files\MySQL\MySQL Server 8.4\bin>mysqladmin -u root -p reload

 

 

root
erp database 권한을 부여받은 사용자

 

 

해당 사용자에게 database 권한 삭제

root에서

delete from user where user='사용자아이디';  => mysql 접속 사용자 삭제

delete from db where user='사용자아이디';  => 해당 db에 사용자와 연결된 사항을 삭제

후 reload 

'CLASS > DATABASE' 카테고리의 다른 글

#3-2 / 외부 사용자 추가 방법  (0) 2024.06.04
#3-1 / unique, alter문법  (0) 2024.06.04
#2-3 / database table 설계  (0) 2024.06.03
#2-2 / 사용자에게 권한주기  (0) 2024.06.03
#1-1 / MYSQL start,setting  (0) 2024.05.30