DB/SQL 60

파이썬 SQL연동

파이썬과 mysql연동 파이썬과 mysql을 연동해서 파이썬에서 데이터베이스에 접근하고 쿼리문등을 실행해 본다. 코드 1. 필요 라이브러리 다운 from sqlalchemy import create_engine import pymysql pymysql.install_as_MySQLdb() 2. 파라미터 설정 # DB이름 설정 db_name = '' # mysql 아이디 db_id = '개인id' # mysql db ip (로컬이면 localhost) db_ip = 'localhost' # mysql db 패스워드 db_passwd = 'pw' # db port db_port = '3306' * DB이름? * 개인 id? mysql command line을 실행하고 터미널에서 아래와 같이 입력하면 user..

DB/SQL 2021.02.10

[SQL] DDL (create drop alter)

CREATE 1. 테이블 생성 creat table (테이블이름) ( (컬럼이름) (타입)(글자수) (옵션) ); create table dept( deptno varchar2(4) primary key, deptname varchar2(20); ); create table emp ( empno number(10), ename varchar2(20), sal number(10,2) default 0, --소수점 2째자리, 기본값은 0 constraint emppk primary key(empno), --empno를 기본키로 constraint deptfk foreign key (deptno) --deptno를 외래키로 references dept(deptno), on delete cascade --dep..

DB/SQL 2020.07.11

[SQL] 내장함수

1. 문자형 함수 함수 설명 acsii(문자) 문자,숫자를 acsii 코드값으로 char(acsii 코드값) acsii 코드값을 문자로 substr(문자열,m,n) 문자열 m부터 n개 자르기 concat(문자열1,문자열2) 문자열1||문자열2 문자열 합치기 lower(문자열) 소문자로 upper(문자열) 대문자로 length(문자열) or len(문자열) 문자열 길이 ltrim(문자열,지정문자) 왼쪽에 (반복되는)지정문자 삭제, or 왼쪽 공백삭제 rtrim(문자열,지정문자) 오른쪽에 (반복되는)지정문자 삭제, or 오른쪽 공백삭제 trim 양쪽에 반복되는 지정문자 삭제 or 양쪽공백삭제 2. 날짜형 함수 함수 설명 sysdate 오늘의 날짜를 날짜 타입으로 extact('year' or 'month' ..

DB/SQL 2020.07.11

[SQL] JOIN(조인)

* 열은(칼럼은) SELECT에서 구한다. 여기서 말하는 모든 JOIN은 행을 말한다! 1. 등가(EQUI) 조인 ​ (1) 등가 조인(INNER JOIN) --EMP와 DEPT 테이블을 DEPTNO칼럼으로 SELECT * FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO; --EMP와 DEPT 테이블을 INNER JOING, 같은게 여러개있다면 여러 조합으로 JOIN SELECT * FROM EMP INNER JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO; - inner join할때 select* 하면, on에 쓰인 조건 열 2개가 모두 출력된다. - 겹치는것이 여러개 있다면 각 조합별로 모두 출력한다. 예를들어 emp.dptno에 1이 2개, dept..

DB/SQL 2020.07.11

[SQL] DCL

권한부여 GRANT (권한리스트) ON (테이블) TO (사용자) (WITH GRATN OPTION) GRANT SELECT, INSERT, DELETE ON R TO KIM WITH GRANT OPTION; -- limbest 사용자에게 emp테이블에 대해서 다음과 같은 권한을 부여한다. grant select, insert, update, delete on emp to limbest; with grant option --권한을 부여할 수 있는 권한을 부여 취소 REVOKE (GRANT OPTION FOR) (권한리스트) ON (개체) FROM 사용자 (CASCADE) *GRANT OPTION FOR : 옵션을 붙이면 부여할수있는 권한만 삭제. 안붙이면 권한&부여권한 모두 삭제 REVOKE GRANT ..

DB/SQL 2020.07.11

[SQL]계층형 쿼리(START WITH, CONNECT BY)

SELECT LPAD(' ',2*(LEVEL-1)) || item_name item_names, item_id, parent_id FROM bom START WITH parent_id is null connect by prior item_id = parent_id; 1. LPAD 공백을 만들어주기 위한 함수. 빈칸(' ')을 LEVEL만큼 왼쪽에 넣어줌으로서 들여쓰기시켜줌 2. start with (조건) 루트노드를 지정하는것. 조건을 만족하는 모든 행이 루트 노드가 된다. 3. connect by (조건) prior (자식노드) = (부모노드) 로서 계층을 만들어 주는것

DB/SQL 2020.07.11

[SQL]having조건의 사용

1. having의 이용 (where과 차이) having은 group by와 함께 사용된다. having조건과 where조건의 차이는 아래와 같다 having - where group by 절 뒤에 기술 - from 뒤에 기술 group by 그룹함수를 포함해야함 그룹함수 그룹함수가 포함된 조건은 에러가 발생 에러발생 ( * 단 group by에 기술된 칼럼에 대한 일반조건은 가능하지만 보통 쓰지않음) 일반조건 일반조건가능 2. 문제 이름이 두번이상 쓰인 이름과 그 횟수를 표현 하라 (1) 코드 group by로 묶인 name의 count를 해야하므로 having을 쓴다 SELECT NAME,COUNT(NAME) FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME)>=..

DB/SQL 2020.07.07

[SQL]LEFT JOIN, RIGHT JOIN #LEFT JOIN #RIGHT JOIN

설명 1. 기본테이블 demo_people(왼), demo_property(오) 2. left join 쿼리문 select name, phone, selling from demo_people left join eomo_property on demo_people.pid = demo_property.pid 3. 결과 예제 1. 문제 위와같은 테이블에서 ANIMAL_OUTS에는 있지만, ANIMAL_INS 에는 없는 ANIMAL의 아이디를 출력하라. 2. 풀이 FROM ANIMAL_INS AS INS RIGHT JOIN ANIMAL_OUTS AS OUTS ON INS.ANIMAL_ID=OUTS.ANIMAL_ID 을 통해 ANIMAL_OUTS에 있는 모든 개체를 출력한다. 이때 OUTS에는 있지만, INS에는 ..

DB/SQL 2020.07.07