SQL

오픈소스 비즈니스 컨설팅
둘러보기로 가기 검색하러 가기

SQL을 정리 합니다.

MySQL

Select

  • Select 문
select distinct ~
  from ~
  left join ~
    on ~
 inner join ~
    on ~
 where ~
   and date_start >= '2013-03-17 07:09:06'
   and date_start <= '2013-03-18 07:09:06'
   and ~ like '~%'
   and ~ in (~, ~, ~)   
 order by ~ asc/desc

Insert

  • Insert 문
insert into ~ (~)
       values (~);
  • Insert with select 문
insert into ~ (~)
select ~;
  • Insert/Update with select 문
insert into table1 (~)
select ~
    on duplicate key update table1.id = table1.id;

Update

  • Update 문
update ~
   set ~ = ~,
       execute_time='2013-03-17 06:58:00'
  • table2로 table1 update
update table1, table2
   set table1.val = table2.val
 where table1.id = table2.id;

Delete

  • Delete 문

Function

  • ltrim(~), rtrim(~)
  • ifnull($value, $default)
  • concat(~, ~)
  • function 생성
DROP FUNCTION IF EXISTS getTotals #
CREATE FUNCTION getTotals(d_id VARCHAR(50), start_date VARCHAR(30), end_date VARCHAR(30)) RETURNS INT(10)
BEGIN
    DECLARE totals INT(10);
    SET totals = (
        SELECT COUNT(*) AS total FROM device_info
        WHERE
        DATE_FORMAT(CONVERT_TZ(device_info.create_time, "UTC", "Asia/Seoul"), "%Y-%m-%d %H:%i:%S")>=start_date
        AND
        DATE_FORMAT(CONVERT_TZ(device_info.create_time, "UTC", "Asia/Seoul"), "%Y-%m-%d %H:%i:%S")<=end_date
        AND
        device_info.device_id = d_id
    );
    RETURN totals;
END #
 
SELECT getTotals("2012-11-26 00:00:00", "2012-12-26 23:00:00");
  • 참고 문헌

View

drop view CustInfo_V;
create view CustInfo_V as
select ~;

역공학

  • Table 목록 가져오기
SELECT table_name, table_rows, avg_row_length, table_collation 
  FROM information_schema.`TABLES` T
where table_schema = '테이블명';
  • Table 정보 가져오기
SELECT column_name, column_default, is_nullable, data_type, character_maximum_length,
      numeric_precision, numeric_scale, collation_name
 FROM information_schema.`COLUMNS` C
where table_schema = '스키마명'
  and table_name = '테이블명'
order by ordinal_position;
  • Procedure 정보 보기
#--- Procedure 목록
SHOW PROCEDURE STATUS where db = 'DB_명';
#--- Procedure 소스
SHOW CREATE PROCEDURE DB_명.Procedure_명;

참고 문헌