MySql 기본

이재원·2021년 12월 14일
0

MySql 구조

데이터 베이스(스키마) 테이블이 있으며 데이터베이스 별로 묶을 수 있다.

서버 접속

  • mysql -uroot -p => 루트(관리자) 로그인 엔터
    1. -u*** 표시는 사용자 아이디 이며 예를 들어 -utester계정이 있으면 로그인 가능
  • 설치 시 설정한 비번 입력

데이터베이스(schema 스키마)

데이터베이스 생성

CREATE DATABASE userinfo;

데이터베이스 삭제

DROP DATABASE userinfo;

데이터베이스 보기

SHOW DATABASES;

데이터베이스 사용

 USE userinfo;

테이블

테이블 생성(CREATE TABLE)

CREATE TABLE user  => user 테이블 이름
(  
id INT(11) NOT NULL AUTO_INCREMENT,	<=1열 id
name VARCHAR(50) NOT NULL,		<=2열 name
address VARCHAR(50) NOT NULL,      	<=3열 address
created DATETIME NOT NULL,  	   	<=4열 created
description TEXT NULL,			<=5열 description
PRIMARY KEY(id)                 	<= 테이블당 하나만 가질 수 있는 고유 값 이며 꼭 있어야 함
);
  • MySQL에서 사용할 수 있는 제약조건
    - NOT NULL 공백을허용하지 않음
    - UNIQUE
    - PRIMARY KEY
    - FOREIGN KEY
    - DEFAULT
  • 속성
    - AUTO_INCREMENT 자동으로 숫자를 증가 시킴
  • MySQL: Data Types 참조 사이트

테이블 보기(SHOW TABLES)

SHOW TABLES;

테이블 구조보기(DESC)

DESC user;

추가(INSERT INTO)

  • INSERT INTO user => user는 테이블명
  • () 에는 Filed를 입력하고 입력한 순서대로 VALUES()에 값을 추가 한다.
INSERT INTO user (name,address,created,description) VALUES('김강남','서울',NOW(),'서울에 사는 김강남 입니다.');

조회(SELECT)

SELECT * FROM user; // user 테이블 filed 전체 표시
SELECT name,address FROM user;  // user 테이블 name,address filed만 표시
SELECT name from user WHERE address='서울' //user 테이블에서 address가 서울인 것만 찾아서 filed가 name만 표시
SELECT * from user WHERE address='서울' LIMIT 1;  // address가 서울인 것만 조회 하면서 개수는 1개만 표시
SELECT * from user ORDER BY id DESC; // id 값으로 내림 차순 정렬 

수정(UPDATE)

  • id가 1인 행의 address를 서울에서 서초로 변경
UPDATE user SET address='서초' WHERE id=1;

삭제(DELETE)

  • id가 8인 행을 삭제
DELETE FROM user WHERE id=8;

JOIN(테이블 들의 데이터 결합)

테이블 결합을 위한 테이블 생성

  • 3개의(user, new_user, address) 테이블이 있다.
  • user 테이블의 address filed의 내용은 중복 되는 값을 테이블로 만들어 JOIN을 이용하여 user 테이블 처럼 표현 할수 있다. user 테이블의 내용을 new_user, address로 분리 테이블을 만든다.
  • new_user의 address 필드를 address 테이블로 만든다.
  • new_user의 address 필드를 address 테이블의 id 값을 사용하도록 address_id 필드를 만들고 필드의 값을 address 테이블의 id를 참조하여 해당 주소에 맞게 id 값을 추가 한다. (new_user 테이블의 address_id 참조)

INNER JOIN

  • new_user.address_id=address.id; =>두 테이블을 조인할 id 값을 설정 한다. (연관성이 있어야 함.)
  • new_user테이블의 address_id 값에 4번 항목들이 존재 한다. address 테이블에는 4번 항목이 없다 INNER JOIN은 new_user의 4번 항목이 없는 값에 제외 후 address의 테이블의 서울,인천,수원 등을를 결합하여 표시 한다.
SELECT * FROM new_user INNER JOIN address ON new_user.address_id=address.id;

- new_user와 address 테이블의INNER JOIN을 이용하여 user 테이블 처럼 데이터를 결합한다.
SELECT new_user.id,name,address,created,description
FROM new_user INNER JOIN address ON new_user.address_id=address.id;

LEFT JOIN

  • new_user.address_id=address.id; =>두 테이블을 조인할 id 값을 설정 한다. (연관성이 있어야 함.)
  • new_user테이블의 address_id 값에 4번 항목들이 존재 한다. address 테이블에는 4번 항목이 없다 LEFT JOIN은 new_user의 4번 항목이 없는 값도 포함하여 address의 테이블의 표시되어 NULL 값을 가지게 된다.
SELECT * FROM new_user LEFT JOIN address ON new_user.address_id=address.id;


SELECT new_user.id,name,address,created,description
FROM new_user LEFT JOIN address ON new_user.address_id=address.id;

0개의 댓글