목록분류 전체보기 (130)
바닥코딩
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bwLg0E/btqATgNqu9N/aKwWPMcF2KigwRyMdpjHAk/img.jpg)
1. ON DUPLICATE KEY UPDATE = DB 에서 대량에 데이터를 등록할때 키값이 있어도 INSERT를 하는 과정에서 문제가 발생할 수 있다 따라서 키값이 있는 경우에는 INSERT를 해주는 방법도 있찌만 UPDATE를 해주는 방법을 통해 에러를 줄인다 ON DUPLICATE KEY UPDATE 구문은 UNIQUE 한 KEY 값이 기준이 되어야만 사용할 수 있다 1 2 3 4 5 6 7 8 9 10 CREATE TABLE USERS ( NAME VARCHAR(25), EMAIL VARCHAR(255) ); ALTER TABLE USERS ADD UINQUE (NAME); INSERT INTO USER (NAMEM, EMAIL) VALUES ('TEZ','TEZ.gmail.com') ON DU..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bMqbNs/btqARjde9vg/i5HtcbvUkOJId8eQb0AeG0/img.jpg)
1. CONVERT (데이터 형변환) = 표현하고자 하는 값을 해당 데이터 형식으로 바꾸는 것을 의미한다 ex) CONVERT 함수를 통해 문자열 데이터의 문자셋을 UTF-8 로 변환하는 문장 / 인수의 타입 변환 1 2 3 4 5 6 SELECT CONVERT("ABC" USING UTF-8) // 문자열을 UTF-8 로 인코딩 SELECT AVG(AMOUNT) AS 'SALES' CONVERT(AVG(AMOUNG), int) from buytbl // 해당 인수를 int type으로 형변환 2. AES_ENCRYPT / AES_DECRYPT (암호화 , 복호화 ) 암호화와 복호화를 하는 방식은 여러가지가 있는데 그중 AES를 사용하여 가정한다면 아래와 같다 AES_ENCRYPT (암호화 값 , 암호)..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bPdOGA/btqAOIkVq18/rKchHL6pYNMTJVPUO0T490/img.jpg)
1. SET 구문 = 프로시저에 변수나 파라미터에 값을 저장하려면 보통 2가지 방법이 있는데 SET을 이용하거나 SELECT 를 이용해 값을 넣는 방법이다 SET 을 이용하는 경우는 SET 변수 =100 ; 이러한 형식으로 값을 넣지만 SELECT 는 조건이 필요하다 SELECT로 값을 받아오려면 사용자 정의 변수를 사용해야하는데 3가지 조건이 필요하다 1. 변수 이름은 @ 로 시작한다 2. DECLARE는 해주지 않는다 3. = 이 아니라 := 를 사용한다 ex) SELECT @변수 1:=필드 FROM [테이블 명] 2. PREPARE /EXECUTE 구문 동적 SQL과 같은 경우 미리 쿼리문장을 준비한 후에 나중에 실핼하는 것을 의미하는데 이를 PREPARE와 EXECUTE로 구현할 수 있다. PRE..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bWdf9C/btqAOKbTcuc/EroJgM0aFkHB4K5T4P3yok/img.jpg)
절차형 SQL 에서는 일반 프로그래밍 언어와 같이 제어문/반복문 사용이 가능하다 1. 조건문 : 일반적으로 IF - THEN - ELESIF -ELSE 구조를 사용하거나 CASE ~ WHEN ~ THEN 구조를 사용한다 1 2 3 4 5 6 7 8 9 10 11 12 13 IF x = 1 THEN sequence_of_statements_1; ELSIF x = 2 THEN sequence_of_statements_2; ELSIF x = 3 THEN sequence_of_statements_3; ELSIF x = 4 THEN sequence_of_statements_4; ELSIF x = 5 THEN sequence_of_statements_5; ELSE sequence_of_statements_N; EN..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/yGIjR/btqCaR8r4Ck/Jn8wxLqeW6ydRvpkcak2X1/img.png)
1.PROCEDURE = 저장 프로시저는 미리 데이터베이스 서버에 일련의 SQL 문을 만들어 두고 프로시저들을 수행하여 SQL 문을 간단히 실행 할 수 있게 고안한 것이다 SQL 문만 뿐만아니라 실행부에서 IF 문 WHILE 문 과 같은 제어문/반복문을 사용할 수 있기 때문에 절차형 프로그램이 가능 하게 된다 2.TRIGGER = 트리거는 테이블에 삽입/변경/삭제 와 같은(일반적으로 DML)이 들어 왔을 때 트리거가 설정되어 있으면 트리거 안의 SQL 이 자동으로 수행이 된다 이러한 기능을 사용하여 CRUD 연산에서 발생하는 모순을 방지한다 PROCEDURE TRIGGER CREATE PROCEDURE 문법 사용 CREATE TRIGGER 문법사용 생성하면 소스코드와 실행코드가 생성 생성하면 소스코드와 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dpM718/btqAQ3O5DsE/H7ktHD5JIwl4J3KvIseymK/img.png)
일반적으로 RDBS 를 이루는 SQL 문장은 비절차적 문장이기 때문에 일반 개발 언어와 같이 절차 지향적인 프로그래밍이 가능하도록 DBMS 별로 각자의 절차형 SQL을 제공하고 있다 절차형 SQL 위와 같은 BLOCK 구조를 가진다
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Us5Vv/btqATg7yRah/p5McDE9DS9oMcfqWGUKB9k/img.png)
SQL 문장에서 JOIN을 작성할 때 ON/USING/WHERE 는 각각 아래와 같은 특징이 있다 1. ON : ON은 WHERE 와 다르게 칼럼명이 다르더라도 조인 저건을 사용 할 수 있으며 JOIN부를 명시하기 위해 주로 사 용한다 ON 은 JOIN 절보다 먼저 실행이 되기 떄문에 OUTER JOIN시 WHERE에 동등한 조건을 명시했을 때 결과가 다른 값이 추출 될 수 있다 2. USING : FROM 절에 하여 원하는 칼럼서 EQUI JOIN을 수행할 수 있다
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/WUr50/btqATfOlBSC/VxzK6OIkU7xOSpYQKv5Bc1/img.png)
4. CROSS JOIIN = PRODUCT의 개념과 같으며 테이블간 JOIN 이 없을 경우 생길 수 있는 모든 데이터의 조합을 말한다 1 2 3 SELECT ENAME, DNAME FROM EMP CROSS JOIN DEPT ORDER BY ENAME 만약 위의 쿼리 문에서 EMP 테이블과 DEPT 테이블이 각각 데이터를 N,M 개씩 가지고 있다고 가정을 한다면 CROSS JOIN 은 N*M 건의 데이터를 반환한다 5 OUTER JOIN(LEFT OUTER JOIN / RIGHT OUTER JOIN /FULL OUTER JOIN) = OUTER JOIN은 INNER JOIN 과 반대되는 개념으로 JOIN 조건에서 동일한 값이 없는 행만 반환할 떄 사용하는 JOIN 문장이다