[sql] mysql (데이터 조작하기)

이유은·2023년 11월 20일

[Sql]

목록 보기
4/5

mysql 설치 및 작동!

  • 나는 마리아 디비로 할그야..
  • 마리아디비 깔렸더니 홈브루로 마이에스큐엘 설치가 안되네.. 왜냐
  • 스키마 !! 라고도 하고 하나하나하의 데이터베이스라고도 하는데

  • 테이블이 모인 단위가 하나의 스키마 임

  • 로컬호스트로 연결 생성하고

  • 설정했던 비밀번호로 root 계정 접속

  • 데이터베이스생성
    CREATE SCHEMA mydatabase DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci ;

  • character set - 글자

  • collate - order by 등 정렬할 때 어떤방식으로 할지? 제너럴 ci

  • -- 데이터베이스 삭제 명령어
    DROP DATABASE mydatabase;

  • 사용하는 프로그램이 워크벤치 / gui
  • 아이디,비밀번호 설정 하자 ~ root, password

테이블 생성, 데이터 입력

  • create table : 테이블 만들기
CREATE TABLE people (
  person_id INT,  //숫자 자료형
  person_name VARCHAR(10), //문자 자료형
  age TINYINT, // 작은 숫자 단위
  birthday DATE
);
  • alter table : 테이블 변경
-- 테이블명 변경
ALTER TABLE people RENAME TO  friends,
-- 컬럼 자료형 변경
CHANGE COLUMN person_id person_id TINYINT,
-- 컬럼명 변경
CHANGE COLUMN person_name person_nickname VARCHAR(10), 
-- 컬럼 삭제
DROP COLUMN birthday,
-- 컬럼 추가
ADD COLUMN is_married TINYINT AFTER age;
  • drop table : 테이블 삭제
    DROP TABLE friends;

  • insert into : 데이터 삽입
    INSERT INTO people
    (person_id, person_name, age, birthday)
    VALUES (1, '홍길동', 21, '2000-01-31');

-- 모든 컬럼에 값 넣을 때는 컬럼명들 생략 가능
INSERT INTO people
VALUES (2, '전우치', 18, '2003-05-12');

-- 일부 컬럼에만 값 넣기 가능 (NOT NULL은 생략 불가)
INSERT INTO people
(person_id, person_name, birthday)
VALUES (3, '임꺽정', '1995-11-04');

-- 자료형에 맞지 않는 값은 오류 발생
INSERT INTO people
(person_id, person_name, age, birthday)
VALUES (1, '임꺽정', '스물여섯', '1995-11-04');

-- 여러 행을 한 번에 입력 가능
INSERT INTO people
(person_id, person_name, age, birthday)
VALUES
(4, '존 스미스', 30, '1991-03-01'),
(5, '루피 D. 몽키', 15, '2006-12-07'),
(6, '황비홍', 24, '1997-10-30');

  • 테이블 생성시 제약 넣기!! **
CREATE TABLE people (
  person_id INT AUTO_INCREMENT PRIMARY KEY,
  person_name VARCHAR(10) NOT NULL,
  nickname VARCHAR(10) UNIQUE NOT NULL,
  age TINYINT UNSIGNED,
  is_married TINYINT DEFAULT 0
);
  • 특정 제약 주거나, 자동실행되는 것 만들기
  • auto_increment primary key : 새행 생성시 자동으로 1씩 증가
  • primary key : 중복 입력 불가, 널 값 불가
  • unique : 중복 입력 불가
  • not null : null 값 입력 불가
  • unsigned : 양수만 가능(숫자일시)
  • default : 값 입력이 없을 시 기본 값

** primary key(기본 키)

  • 테이블마다 하나만 생성 가능
  • 기본적으로 인덱스 생성(기본키 행 기준으로 빠른 검색 가능)
  • 보통 auto_increment와 함께 사용
  • 각 행을 고유하게 식별 가능 - 테이블마다 하나씩 둘 것

자료형

  • 컴퓨터가 모든데이터를 0과 1로 인식함.
  • 때문에 우리가 그 데이터가 글자인지 숫자인지 뭔지 명시해줘야해!
  • 그게 자료형

1. 숫자 자료형

  • 정수 !!
  • 작은 숫자를 넣는다고해도 그 컬럼의 크기가 작아지진 않음
  • 나한테 맞는걸 쓰면 되는데
  • 작은건 타이니 큰건 인트 그냥 보통 이렇게 씀

  • 실수 !!
  • 좁은 범위의 수, 정확한 값

  • 넓은 범위의 수 표현, 정확하지 않은 값

2. 문자 자료형

  • char, varchar() 괄호안에는 몇글자 쓸지!!
  • 바차, 가변사이즈 / 차 - 고정 사이즈 남는 글자 스페이스로 채움
  • 그러면 바차가 좋은가? 내용없으면 1바이트만 차지 / 바차가 경제적
  • 다 채웠을 때는 차는 추가정보 필요없이 4바이트만 차지, 바차는 - 정보까지 추가해서 @@어쩌고

3. 시간 자료형

  • 데이트 타임은 어디에서 읽든 동일한 값
  • 타임스탬프는 시차나 뭐 등등에 따라 다르게 읽힘(?) 숫자 값으로 저장돼서, 각 국가의 시간대로 다르게 읽힐 수 있음

얄코 강의 참고
https://www.yalco.kr/@sql/3-3/


데이터 변경, 삭제

  • delete : 주어진 조건의 행 삭제하기 // 인서트하면 삭제된 다음행 부터 들어감
    DELETE FROM businesses
    WHERE status = 'CLS';

  • truncate : 테이블 초기화 // 삭제 , 1부터 다시 들어감
    TRUNCATE businesses;

  • update : 주어진 조건의 행 수정하기
    UPDATE menus
    SET menu_name = '삼선짜장'
    WHERE menu_id = 12;

profile
우당탕코딩

0개의 댓글