[MySQL]select 한 행을 모두 insert하기(선택행 복사)


1. 테이블이 존재하는 경우


예제코드

INSERT INTO table_name SELECT * FROM select_table_name;



2. 테이블이 존재 하지 않는 경우


예제코드

CREATE TABLE copy_table_name SELECT * FROM original_table_name;




3. 컬럼을 지정하는 경우


예제코드
INSERT INTO table_name (table_col_1, table_col_2, table_col_3) SELECT col1, col2, col3 FROM select_table_name;


4. 조건문을 포함하는 경우


예제코드
INSERT INTO table_name SELECT * FROM select_table_name WHERE grade = 'A' AND gender = 'female';


MS-SQL에서는 SELECT INTO를 사용하면 된다.

'DATABASE' 카테고리의 다른 글

[MySQL] String Replace  (0) 2017.12.20
[오라클] DATE 날짜 타입  (2) 2017.12.11
[MySQL]기본쿼리 (UPDATE)  (0) 2017.12.08
[ORACLE] 모든 테이블 이름 가져오는 쿼리  (0) 2017.12.05
[MySQL] 기본 쿼리 (SELECT)  (0) 2017.12.02

[MySQL]문자열 변환


데이터 베이스에 다음과 같은 문자열을 가지고 있는 필드가 있다고 생각하자


URL 

 http://www.blog.com/articles/update/1

  http://www.blog.com/articles/update/2

  http://www.blog.com/articles/update/345

  http://www.blog.com/articles/update/title-like-this



이 필드의 article을 다른 문자로 변환한다면 다음과 같은 스크립트를 이용할 수 있다.



예제코드

UPDATE POST_TABLE
SET URL= REPLACE(URL, '/articles/', '/pages/')
WHERE URL LIKE '%/articles/%'


그럼 문자열은 아래와 같이 변경 된다.


 URL( 변경전)

 URL(변경후)

 http://www.blog.com/articles/update/1

 http://www.blog.com/pages/update/1

 http://www.blog.com/articles/update/2

  http://www.blog.com/pages/update/2

 http://www.blog.com/articles/update/345

 http://www.blog.com/pages/update/345

 http://www.blog.com/articles/update/title-like-this

 http://www.blog.com/pages/update/title-like-this


MySQL의 REPLACE 함수는 다음과 같이 사용한다.



REPLACE(str, from_str, to_str)

str : 전체 문자열 또는 문자열이 있는 필드

from_str : 이전 문자열

to_str : 바꿀 문자열

mysql 페이지 참고





'DATABASE' 카테고리의 다른 글

[MySQL] Select Insert문  (0) 2017.12.26
[오라클] DATE 날짜 타입  (2) 2017.12.11
[MySQL]기본쿼리 (UPDATE)  (0) 2017.12.08
[ORACLE] 모든 테이블 이름 가져오는 쿼리  (0) 2017.12.05
[MySQL] 기본 쿼리 (SELECT)  (0) 2017.12.02

MySQL 기본쿼리 (UPDATE)


update 쿼리

update문은 테이블의 값을 수정할 때 사용한다.


다음과 같이 사용한다.


UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET assignment_list [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] value: {expr | DEFAULT} assignment: col_name = value assignment_list: assignment [, assignment] ...



참고 - mysql 홈페이지


update 쿼리 예제


UPDATE
    USER_TABLE
SET
    NAME='HONG',
    AGE=20,
    GENDER='male',
    BIRTHDAY=STR_TO_DATE('2017,12,25', '%Y, %m, %d')
WHERE
     IDX='idx00000101'


기본 업데이트 문 입니다.


update를 활용한 다중행 변경

UPDATE
    USER_TABLE
SET
    TYPE='ADULT'
WHERE
     AGE>18

AGE컬럼의 값이 18 이상인 행을 모두 TYPE을 Adult로 변경합니다. 

이런방법으로 여러개의 행을 같은 값으로 변경할 수 있습니다.

update를 이용한 조건 외 변경


UPDATE
    USER_TABLE
SET
    TYPE='CHILD'
WHERE
     TYPE<>'ADULT'

위 방법을 이용하여 type이 adult외의 컬럼의 값을 child로 변경 할 수 있습니다.
지정한 값 외의 다른 행의 값을 바꾸는데 쓰입니다.


주의


업데이트를 실행할 때는 한번에 커밋까지 이루어지는 일이 없도록 합시다.


꼭 WHERE절이 제대로 들어가 있는지 확인 합니다.


만약 위의 두 조건을 어기고 실행하면 실제 데이터가 훼손되어 롤백을 할 수도 없게 됩니다.


이 점을 꼭 주의 해야 합니다.

'DATABASE' 카테고리의 다른 글

[MySQL] Select Insert문  (0) 2017.12.26
[MySQL] String Replace  (0) 2017.12.20
[오라클] DATE 날짜 타입  (2) 2017.12.11
[ORACLE] 모든 테이블 이름 가져오는 쿼리  (0) 2017.12.05
[MySQL] 기본 쿼리 (SELECT)  (0) 2017.12.02

MySQL 기본 쿼리(SELECT)


select 쿼리

select문은 하나이상의 행을 테이블에서 검색하는데 사용하며 하위쿼리(subQuery)를 사용할 수 있다.
select문은 테이블을 참조하지 않고 계산용으로도 사용할 수 있다.

SELECT 

    [컬럼명] 

FROM 

    [테이블명] 

WHERE 

    [조건]

AND

    [조건] 

GROUP BY [컬럼명] 

ORDER BY [컬럼명] [ASC | DESC]

LIMIT [행 수] OFFSET [시작 행 수]


select 쿼리 예제


SELECT
    idx,
    name,
    type,
    age,
    gender,
    birthday
FROM USER_TABLE
WHERE type = 'A'
ORDER BY idx ASC
LIMIT 0, 10
-- 또는 LIMIT 10 OFFSET 0


테이블을 참조하지 않은 select 쿼리 


SELECT
    1+1 AS result
FROM dual;

SELECT
    NOW()
FROM dual;

위의 쿼리는 숫자를 계산한 값을 결과로 얻는것이고

두번째 쿼리는 현재 시스템 시간을 얻는 쿼리 이다.

주의


페이징을 사용할 때에는 꼭 인덱스가 잡혀있는 테이블로 order by를 해서 가지고 옵시다.
그렇게 하지 않으면 테이블 Full scan이 일어나 DB성능에 영향을 줍니다.


'DATABASE' 카테고리의 다른 글

[MySQL] Select Insert문  (0) 2017.12.26
[MySQL] String Replace  (0) 2017.12.20
[오라클] DATE 날짜 타입  (2) 2017.12.11
[MySQL]기본쿼리 (UPDATE)  (0) 2017.12.08
[ORACLE] 모든 테이블 이름 가져오는 쿼리  (0) 2017.12.05

+ Recent posts