선생님을 위한 프로그래밍 수업

변경

토픽 선생님을 위한 프로그래밍 수업 > 웹 애플리케이션 만들기 > MySQL

UPDATE

데이터를 수정

문법

UPDATE 테이블명 SET 컬럼1=컬럼1의 값, 컬럼2=컬럼2의 값 WHERE 대상이 될 컬럼명=컬럼의 값

예제

DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` tinyint(4) NOT NULL,
  `name` char(4) NOT NULL,
  `sex` enum('남자','여자') NOT NULL,
  `address` varchar(50) NOT NULL,
  `birthday` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `student` VALUES (1, '이숙경', '여자', '청주', '1982-11-16 00:00:00'); 
INSERT INTO `student` VALUES (2, '박재숙', '남자', '서울', '1985-10-26 00:00:00');
INSERT INTO `student` VALUES (3, '백태호', '남자', '경주', '1989-2-10 00:00:00');
INSERT INTO `student` VALUES (4, '김경훈', '남자', '제천', '1979-11-4 00:00:00');
INSERT INTO `student` VALUES (8, '김정인', '남자', '대전', '1990-10-1 00:00:00');
INSERT INTO `student` VALUES (6, '김경진', '여자', '제주', '1985-1-1 00:00:00');
INSERT INTO `student` VALUES (7, '박경호', '남자', '영동', '1981-2-3 00:00:00');
UPDATE `student` SET address='서울';
UPDATE `student` SET name='이진경' WHERE id=1;
UPDATE `student` SET name='이고잉', birthday='2001-4-1' WHERE id=3;

ALTER

테이블 스키마를 변경

참고 : http://sunkyu.tistory.com/71541

댓글

댓글 본문
  1. 반바지
    아마 MySQL 로 하시는 분들은 애로사항이 있을 겁니다.

    set sql_safe_updates=0;

    이거 코드를 맨 위에 추가하시면 해결됩니다.
  2. ggyuker
    22.01.10 수강완료
  3. 최장군
    마지막 부분이 ALTER TABLE 관련 참고링크 같은데 해당글은 비공개이거나 삭제되어서 보이지 않습니다.
  4. 카라멜팝콘
    +1
    아니면 스키마 변경에 대해서 여기 참조하셔도 좋을듯 합니다!
    http://wego21.com......d=2
    대화보기
    • 곰ㅇ빠
      너무 잘 듣고 있습니다.
    • 다시시작
      완료
    • 강상모
      참고 url 에 내용이 없어요 ^^
    • Chang-Han Yoon
      정말 감사합니다.
    • NamJin Kim
      테이블 스키마 변경은 출처가 없어졋어용
    • NamJin Kim
      참쉽죠 감사합니당
    • 신혜선
      인쇄해서 저장해두려고 했는데 ㅠㅠ 인쇄하니 파란색 글짜 부분이 안나오네요...훔...
    • 감사합니다!
    • JustStudy
      고맙습니다
    • 폭풍감자
      참고에 alter 관련 블로그가 접근이 되지 않고 있습니다.
      다른 블로그나 링크를 걸어야 할 것 같습니다.
    • 이주환
      2016. 04. 12
      정독했습니다.
    • SK Kim
      ALTER = ALTER TABLE
    • Wonil Shim
      강의 잘 듣고 있습니다. phpMyAdmin에서도 Update 구문처럼 여러 개의 데이터를 동시에 바꾸는 방법은 없겠죠??
    • 참빛바다
      http://baljuhee.tistory.com/292
      여기에 남아 있네요
      대화보기
      • 키에엨
        ALTER에 관한 내용에 걸려있는 링크가 잘 작동하지 않네요!
        삭제된 게시물이라고 뜹니다.
      • Sukjae Lee
        감사합니다 ^ ^
        대화보기
        • 자바몬
          1. 대소문자 구별없이 명령어는 입력가능 하나 대소문자로 구별해서 명령문과 데이터를 구별해 주시는 거에염..

          2. 가상머신으로 돌릴때 클립보드 공유가 안되서 그래염.
          그 서버실행되면 그 화면에서 메뉴-장치-클립보드 공유-양방향
          으루 하시면 되구여 드로그앤드롭도 양방향 공유로 설정하면
          가상머신으로 복사 붙여넣기도 되구 그냥 끌어다 놔두 복사가 되여
          대화보기
          • Sukjae Lee
            안녕하세요. 두가지 여쭈어 보고 싶은게 있습니다.
            1. sample code를 보면 모두 대문자로 작성이 되어있는데요, 리눅스 터미널에 쳐보면 소문자도 되더라구요. 혹 대문자로 작성하신 이유가 있나요?

            2. 윈도우로 리눅스 vm돌릴때 복사 붙혀 넣기를 어떻게 하나요...? 리눅스 강좌를 다 들었는데 그 부분을 놓친거같네요...ㅠㅠ

            항상 감사합니다.
          • WayneKing
            으악~~~~~~~~~~~~~~~~~~~~~~~~~
          • 풍운
            '테이블 스키마를 변경'에서 참고 URL이 존재 하지 않네요..

            강의 잘 보고 갑니다.
          • 생코매니아
            데이터베이스의 컬럼중에 integer를 저장하는 값이 있을경우 이 값을 기존값에서 하나 증가시키는 방법은 어떻게 해야 하나요?
          • 나무마루
            ALTER에 나와 있는 주소는 이제 사용할 수 없는 것 같습니다. 변경이 필요합니다.
          • 샤핀
            윈도우 cmd 창으로 따라가시는 분들을 위한 한글깨짐 해결 링크
            mysql> set character set euckr; <---- ※ mysql상에서 설정을 바꿔 주시면 됩니다. 그런데..cmd 창을 새로 켤때? 마다 항상 다시 명령어를 처서 세팅해줘야 하는 번거로움이 있네요. 흐음..

            http://batmask.net......465

            cmd 창은 한글 입력을 euckr로 해주기 때문에 utf8 인코딩과 달라서 문제가 생기나 봅니다.
            그래서 cmd 창을 클라이언트로 쓰는 경우라면 mysql 클라이언트 설정에 euckr로 변경해 주는 것이 포스팅의 골자 입니다.

            잘 넘기지 못하는 타입이라.. 구글링하다 보니... 생활코딩 유저가 정리한 좋은 글이 발견되었습니다.
            이런 egoing님이 알면 흐뭇할 일은 알려야겠기에 ㅋㅋ.
            확인해 보니 한글이 깨지지 않습니다. ^^
            대화보기
            • egoing
              좋은 전략 입니다!
              대화보기
              • 샤핀
                전 그냥 윈도우 cmd 창에서 실행하면서 따라가고 있는데, 이름이나 주소의 한글이 공백처럼 나와서 아무것도 안보이네요. 흠..일단 한글 상의 문제라고 생각하고 넘겨야겠네요.
              • NCmasan
                프롬프트창에서 select * from student; 치고 실행할 때 name의 데이터들이 두글자로 짤려서 나옵니다
                name
                이숙
                박재
                백태
                ...
                이렇게요
                세글자로 제대로 보이게 하려면 어떻게 해야하나요??
              • jager
                [1] 명령프롬프트에서 한글이 깨지게 보여질 때.

                명령프롬프트에 set names euckr; 입력 해주세요.

                [2] 명령프롬프트에서 입력한 데이터가 phpmyadmin에서 한글이 깨지게 보여질때

                1. 가장 먼저 확인할 것은, 데이터 베이스를 생성할 때 utf8로 만들었는가 하는 것이에요
                기본 값이 라틴이거든요

                2. phpmyadmin으로 한글을 입력하면 잘 표시되요
                그런데 php에서 값을 가져오면 깨저요

                3. mysql 명령프롬프트 실행해서 한글로 저장된 값과 데이터 베이스의 캐릭터 셋을 확인해보면

                use 데이터베이스이름;

                select * from 테이블이름;
                status;

                한글이 깨지고 캐릭터 셋이 라틴으로 되어있어요
                다음과 같이 입력하고


                set character_set_client=utf8;
                set character_set_results=utf8;
                set character_set_connection=utf8;
                set character_set_server=utf8;
                alter database 데이터베이스이름 default character set utf8;
                commit;

                4. php 소스에서

                mysql_select_db('데이터베이스이름',$db_conn);
                mysql_query("SET NAMES utf8");

                이렇게 하고 페이지를 출력해보면 한글이 잘 나와요
              • Starmomo
                [데이타 변경] UDATE ... SET ... WHERE ... 를 사용하며, 컬럼은 ,(콤마)를 사용하여 복수의 컬럼 데이타를 변경할 수 있다.
                UPDATE `table name` SET clumum_name1=`value`, clumum_name2=`value`, clumum_name=`value`, WHERE primary_key=`value`
              • Egoing
                예 맞습니다. 근데 만약 테이블명으로 create와 같은 예약어를 쓰거 싶은 경우 필요하구요. update등을 대문자로 사용하는 것은 그렇게 하면 데이터와 sql을 쉽게 구분할 수 있기 때문입니다
                대화보기
                • Lee. Seong Gwan
                  table name에 ` <- 이 부호를 사용 안해도 명령이 제대로 실행되는 것 같습니다.안써도 되나요?, 그리고 UPDATE, SET 등 대문자 명령어을 소문자로 써도, 실행 되는것 같네요