본문 바로가기
Back-End/DataBase [ MySQL]

[MySql] 테이블에 데이터 삽입하기 _ INSERT

by 개도필 2022. 6. 18.

데이터 삽입하기

  • 열 이름을 쓰는 순서가 중요하다.
  • 코드
INSERT INTO tablename(열이름,열이름) VALUES(값,값);

or 

INSERT INTO tablename(열이름,열이름) 
VALUES(값,값);
  • 예시
INSERT INTO cats(age, name)
VALUES(12, 'victoria');

→ 열 순서랑 상관없이, 내가 코드를 쓰는 순서만 지켜주면 된다.

 

⇒ 둘다 테이블에 오류 없이 잘들어감

INSERT INTO cats(name,age)
VALUES(12, 'HWI ');

=

INSERT INTO cats(age, name)
VALUES(17, 'HEE');

 

SELECT 초스피드 간단 소개

  • 데이터가 잘 들어갔는지 확인하는 방법 
SELECT * FROM tablename;

 

다중 INSERT

  • 콤마와 괄호를 이용하여 여러개를 집어넣을 수 있다.
  • 코드
INSERT INTO cats(name,age)
VALUES('P',2),
('B',4),
('J',7);

 

 

다중 INSERT 도전과제 (한번 해보세용! ) 

  • people테이블을 생성하고
    • first_name - 20글자
    • last_name - 20글자
    • age
  • 사람 삽입하기 1명삽입해보고, 3명(한꺼번에)삽입해보기 

풀이

CREATE TABLE people
  (
    first_name VARCHAR(20),
    last_name VARCHAR(20),
    age INT
  );

INSERT INTO people(first_name, last_name, age)
VALUES ('Tina', 'Belcher', 13);

INSERT INTO people(age, last_name, first_name)
VALUES (42, 'Belcher', 'Bob');

INSERT INTO people(first_name, last_name, age)
VALUES('Linda', 'Belcher', 45)
  ,('Phillip', 'Frond', 38)
  ,('Calvin', 'Fischoeder', 70);

 

Mysql경고문 내용 파악하기

  • 만약에 쿼리문을 날리고 아래와 같은 경고문이 나왔다면?

⇒ Query ok, 1 row affected, 1 warning

  • 아래와 같은 코드를 통해서 확인 가능
SHOW WARNINGS;
  • insert 할 때 warning에시
    • 타입이 안맞을 때,
    • 제한된 길이를 넘어선 길이를 table에 넣으려고 할 때

 

NULL 과 NOT_NULL

  • NULL
    • 기본적으로 값이 알려지지 않았다.
    • SQL의 방식으로 이것이 무엇인지 알지 못하거나, 지정된 값이 없다는 의미
    • 0을 의미하지 않는다.
    • 테이블상에서 NULL ⇒ YES의미
      • 알려지지 않은 값이 있어도 괜찮다.
  • 예시

NULL : 없어도 된다는 의미

  • name , age가 열로 있는 테이블에서 둘중 하나의 값만 테이블에 넣었을 경우
    • age값을 넣지 않음
INSERT INTO cats(name)
VALUES('Moon');

 

NULL값 들어오는 것을 방지하기 : NOT NULL

  • 빈상태를 허용하지 않겠다. (NULL값을 받지 않겠다.)
  • 만약에 insert할 때 NOT NULL값을 안채워서 보내면?
    • 기본값이 들어간다 (Default = 0)
    • warning메시지 나온다.
  • 코드
CREATE TABLES cats
(
	name VARCHAR(100) **NOT NULL,**
	age INT **NOT NULL**
);

 

기본값 설정하기

  • 테이블을 만들 때 기본값을 설정하여, NULL값이 들어온 경우 처리해준다.
  • 코드
CREATE TABLE cats3(
	name VARCHAR(20) DEFAULT 'no name provided',
	age INT DEFAULT 99
);
  • 실행코드

 

 

NOT NULL + DEFAULT (기본값 설정) 

  • NOT NULL : 무언가가 값을 가지고 있다고 요구하는 방식일 뿐만 아니라, NULL값을 허용하지 않는다고 명시적으로 말할 수 있다.
    • NOT NULL의 경우 수동으로 NULL을 삽입할 수 없다.
CREATE TABLE cats4
  ( 
     name VARCHAR(100) **NOT NULL DEFAULT 'unnamed',**
     age  INT NOT NULL DEFAULT 99
  );

 

 

기본키 입문

  • 키가 의미하는 것은 무엇일까?

 

동일한 데이터를 테이블에 삽입 할 경우, 이들을 구분할 값이 필요하다.

  • 모든 데이터가 고유하게 식별돼야한다.
  • ID 할당을 통해서 사용 가능
    • 예제
    • CREATE TABLE unique_cats ( cat_id INT NOT NULL, name VARCHAR(100), age INT, **PRIMARY KEY (cat_id)** );
  • ⇒ 좋은 방법 아님
  • insert
  • INSERT INTO unique_cats( **cat_id** , name, age) VALUES(2, "Louis",3);

 

좀 더 쉬운 방법으로 키 설정하기

AUTO_INCREMENT

  • 알아서 cat_id를 설정해준다.
CREATE TABLE unique_cats2 (
		cat_id INT NOT NULL **AUTO_INCREMENT**
		name VARCHAR(100),
		age INT,
		**PRIMARY KEY (cat_id)**
);

  • insert예시
    • 자동으로 id가 설정된다.
INSERT INTO unique_cats2(name,age) VALUES("skippy",4);
  • 자동으로 key값이 정의됨

댓글