MySQL 기초

JoQuri(조규리)·2023년 12월 28일
0

MySQL

목록 보기
1/5
  • MySQL Installer
    root account - 최상위 관리자 계정(비번:m*****l)

(Router: 서버에 명령을 내림)

  • 실행방법1> 터미널 = commend = 명령창
    (터미널: mysql -u root -p)
    윈도우의 경우, 환경변수에 Path 등록
    (바로 MYSQL Commend Line Client)

    • ' ; '(즉시 실행/세미콜론을 만날때까지 실행X)
  • 실행방법2> MySQL Workbench(UI)

Database / DBMS

Database 데이터의 집합체
여러사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합체(json, excel..)

  • 관계형 데이터베이스란?(RDB: relational database) :서로간의 관계가 있는 데이터 테이블들을 모아둔 데이터 저장공간(예:MySQL)으로 저장되는 데이터 사이에 관계가 있어, 관계를 통해 관련된 데이터검색후 추출 가능, 삭제 가능
  • 비관계형? 데이터간의 관계X, 어떤 데이터셋을 무한정 누적시켜 저장만 함

DBMS(database management system) -> SW로, 서비스 제공(예:MySQL)
: 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해주는 소프트웨어

SQL이란?

: 데이터베이스(특히 DBMS를 통한 DB를 접근할때)에서 데이터를 쿼리하고 조작하기 위해 사용하는 프로그래밍 언어
(SQL 표준이 있고 DBMS마다 살짝 다르게 추가기능이있음)

<SQL 구성요소>

  • 데이터 정의 언어(DDL) -> CREATE, ALTER, DPOP등의 명령어(테이블or데이터베이스를 생성하거나 변경,삭제
  • 데이터 "조작" 언어(DML) -> INSERT, UPDATE, DELETE, "SELECT"등의 명령어
    (테이블or데이터베이스를 통해 정의된 데이터 구조에다가 실제 데이터를 넣거나, 변경, 삭제, 조회해서 가져오는 명령)
    데이터사이언스 직업상 중요! 실무에서는 회사에서 잘 구축된 DBMS보유되어있으니 데이터사이언스는 그 DBMS를 통해 데이터분석을 위한 자료를 가져와 사용해야 되기에
  • 데이터 제어 언어(DCL) -> GRANT, REVOKE, COMMIT, ROLLBACK 등의 명령어
    (계정별 권한 설정, 실행단위를 묶어 실패할 경우 back 등의 제어하는 명령)

'MySQL' -> 관계형 데이터베이스 관리 시스템(RDBMS) 중 하나


Datebase > Table > column(& row)

데이터 베이스 관리를 먼저!

  • show databases; DB 목록 확인

  • create database 이름 ; DB 생성
    + default character set utf8mb4;
    ( 데이터형 형태: tf8(다국어)mb4(이모지 문자도 사용))

    • show create database 이름; 으로 확인
  • use 이름; 사용을 위한 DB 접속

  • drop database 이름; DB 삭제


user 정보 관리

- MySQL
기본적으로 관리를 위해 mysql시스템 데이터베이스를 가지고 있음
그리고 그  mysql시스템 데이터베이스에서 user정보 관리
- user 종류
	1. 현재 PC에서만 접속가능한 사용자 localhost 
    2. 외부에서 접속가능한 사용자 %
    (호스트 정보가 다르면 유저 네임이 같아도 됨)
  • use mysql; mySQL DB에서 관리
    (기본적으로 시스템 유저들과 root유저(계정) 확인 가능)

  • select host, user from user; 조회 select(user테이블에서 가져와라)

  • 유저 생성(비번과함께)
    create user 'test'@'localhost' identified by '1234';
    create user 'test'@'%' identified by '5678';

  • 유저 삭제
    drop user 'test'@'localhost'
    drop user 'test'@'%'

user 권한 관리

:특정 데이터베이스에 대해서 특정user에게 사용권한 부여 가능

  • 유저 권한 확인 (특정 유저에게 부여된 모든 권한 목록 확인)
    show grants for 'username'@'localhost';
    (기본권한이 디폴트로되어있음)

  • grant all on 특정DB.* to 'username'@'localhost'; 특정DB의 모든 권한 부여

  • revoke all on 특정DB.* from 'username'@'localhost'; 특정DB의 모든 권한 삭제

  • (필요시) flush privileges; 사용자 권한 새로고침


Table 테이블

: DB 안에서 실제 데이터가 저장되는 형태로, 여러 테이블이 관계를 맺고 저장되어 있음.
열(row)과 행(column)으로 구성.

간단하게 비유하자면:
SQL의 테이블 ↔ Pandas의 데이터프레임
SQL의 열 (또는 필드) ↔ Pandas의 시리즈
데이터프레임은 테이블과 유사한 구조, 시리즈는 데이터프레임의 각 열.

  • use 데이터베이스; 사용하고자 하는 DB 명시 후
  • show tables; 테이블 목록 확인
  • 테이블 생성
    create table 테이블이름
    (컬럼명1 데이터타입,
    컬럼명2 데이터타입);

-> 데이터타입 명시
int, double(실수), varcher(16)/(32) ->판다스에서object(str)
char : 1글자로 이루어진 데이터타입 (예: 여성f 남성m) (CHAR(1)), date : 날짜

  • desc 테이블이름; 테이블 정보 확인
    (상세정보:Null(비어있어도 괜찮?) )

  • 테이블 정보 변경(alter)
    alter table 테이블이름 - rename 새이름;
    .....................................................add column 컬럼명 타입;
    .....................................................modify column 컬럼명 타입; 컬럼수정(데이터 타입 재정의)
    .....................................................change column 원래컬럼 새컬럼명 타입; 컬럼수정(이름,타입)
    .....................................................drop column 이름; 컬럼삭제

  • drop table 테이블이름; 테이블 삭제

- 컬럼(Field)의 속성값

create table celeb
    -> (
    ->     id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    # Null : 필드에 Null 값 허용
    # key  : 이 데이터를 구분하는 id같은 유니크한 값 primary로 구분
    # Extra(auto_increment : 깜박하고 value값을 안 적을시 자동으로 +1값 해서 넣어줌)
    ->     NAME varchar(32) NOT NULL DEFAULT '',
    # Default 값으로 ''
    ->     BRITHDAY date,
    ->     AGE int,
    ->     SEX CHAR,
    ->     JOB_TITLE varchar(32),
    ->     AGENCY varchar(32)
    -> );

===========================================================
PRIMARY KEY(기본키)
• 테이블의 각 레코드를 식별(중복되지 않은 고유값, Not Null)
• 테이블당 하나의 기본키를 가짐
• 기본키는 컬럼 하나로 지정하거나 여러 개의 컬럼(합쳐서)으로 하나의 기본키로 지정 가능

# 처음 만들때 설정(또는 바로 위처럼 컬럼 설정 바로 뒤)
create table 테이블명(컬럼들 설정 후
->     constratint 프라이머리 키 이름 (생략가능-생략시 자동설정)
->     primary key (컬럼명, ...) );    

# 이미 만들어진 테이블에 설정
alter table 테이블이름 add primary key (컬럼명);

# 삭제
alter table 이름 drop primary key;

Foreign key(외래키)
• 한 테이블을 다른 테이블과 연결해주는 역할이며, 참조되는 테이블의 항목은 그 테이블의 기본키 (혹은 단일값)
• 참조하는 컬럼이기에 연결된 다른 테이블의 컬럼과 연결 references가 있어야됨
• 폴린키가 지정되어있는 테이블에서 조인을 할 때 폴린키 이용
• 외래키는 기본키와 달리 여러 개일 수가 있어서 삭제할때 자동 생성된 constraint확인 필요
-> show create table 테이블명;

삭제시 desc에서 변화 X show create table에는 키속성만 남아잇을뿐 reference관계는 깨져있는것이 확인됨

# 처음 만들때 설정(또는 바로 위처럼 컬럼 설정 바로 뒤)
create table 테이블명(컬럼들 설정 후
->     constratint 폴린 키 이름 (생략가능-생략시 자동설정)
->     foreign key (컬럼명, ...) references 또다른테이블명(컬럼명,..)
->);

# 이미 만들어진 테이블에 설정
alter table 테이블명 add foreign key (컬럼명,...) references 또다른테이블명(컬럼명,..)

#삭제
alter table 이름 drop foreign key 키이름;

Values 데이터(레코드)

  • use 데이터베이스; 사용하고자 하는 DB 명시 후
  • select *(컬럼명1,2, ..) from 테이블명; 테이블 value 확인
  • select *(컬럼명1,2, ..) from 테이블명 where 조건(=);
  • select문에서 데이터를 특정 컬럼을 기준으로 "오름ASC(디폴트),내림차순DESC 정렬"
    : select 컬럼명 from 테이블명 (where조건) order by 컬럼명1 (+ ,2,3..) ASC | DESC;
    - (1차->2차 정렬->...)
    - order by 컬럼명1 DESC, 컬럼명2 ASC; 도 가능

==========================================================

  • insert into 테이블명 (컬럼명2, 1, 3, ..) values (값2, 1, 3, ..); 데이터추가

    - "모든" 컬럼값을 추가할 경우 컬럼명 "생략가능" (BUT 순서 일치 주의!!)
    insert into 테이블명
    values(값1, 2, 3, ..);
    cf. 대용량으로 데이터 추가시 파일로 작성해서 파일실행

  • 데이터수정
    update 테이블명 set 컬럼명1=val1, 컬럼명2=val2 where 조건;
    (where 조건이 없다면 모두 바뀜)
  • 데이터삭제
    dalete from 테이블명 where 조건;
    (where 조건이 없다면 모두 삭제)

0개의 댓글