DB/명령프롬프트 - mysql 27

[MySQL] 프로시저 procedure (함수)

프로시저 procedure : 쿼리의 집합 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합 메서드와 동일한 역할 어떠한 동작을 절차적 일괄처리 작업하는데 사용 장점 처리시간의 단축 : 한번에 SQL 구문 처리가 가능 유지 보수에 적합 프로시저 procedure 삭제 drop pricedure if exists 프로시저명 ; 프로시저 procedure 매개변수 in 외부에서 가져와 내부에서만 사용하는 매개변수 프로시저에 값을 전달, 프로시저 내부에서 값 수정 가능 in 매개변수는 복사본만을 사용 가장 많이 사용 out 내부에서 생성되어 외부로 리턴하는 매개변수 프로시저의 값을 호출자에게 다시 전달 ( = 리턴) 프로시저가 반환되는 경우, 새로운 값이 호출자에게 리턴 초기값 = 프로시저 내부에..

[MySQL] table 생성, 데이터 입력 create, insert

table생성 및 데이터 삽입 create 삽입할 칼럼명과 칼럼속성을 나열 마지막에 기본키, 연결키를 지정 (추후 add로 지정가능) 단, auto_increment를 사용하는 경우 기본키 설정 필수! create table 테이블명 ( 칼럼명1 칼럼속성1, 칼럼명2 칼럼속성2, ... primary key(칼럼명) foreign key(연결칼럼명1) references 연결테이블명1(연결테이블의 연결키1) foreign key(연결칼럼명2) references 연결테이블명2(연결테이블의 연결키2) ... ) ; -- 생성 후 키 지정시 alter table attend add primary key(기본키) ; alter table attend add foreign key(연결키) references 타..

[MySQL] 트리거 trigger 생성, 삭제

트리거 trigger : 연쇄반응(작용) 이벤트에 반응하여 자동으로 실행되는 구문 이벤트가 발생하는 경우 데이터의 무결성(일관성)을 지켜야 하는 경우 사용 예) 재고량과 판매량을 동일하게 업데이트 해야하는 경우 이벤트 Insert : old = null / new = 입력값 (after) Delete : old = 변경전 값 / new = null (before) Update : old = 변경전 값 / new = 변경후 값 (old=before, new=after) 트리거 trigger 특징 특정 테이블에 INSERT, DELETE, UPDATE 같은 "DML"문이 수행될 때, 데이터베이스에서 자동으로 실행 사용자호출 필요없음, 자동으로 실행됨 한번 생성이 되면 중복 생성X = 삭제 후 재생성 필요 트..

[MySQL] 뷰 view 생성, 수정, 삭제

뷰 view : 데이터베이스에 존재하는 일종의 가상 테이블 - 가상테이블 실체가 없고(실제 데이터를 저장하고 있지 않음), 필요한 내용만 꺼내서 보는 테이블 물리적으로 존재하지 않음 = 보여주기만 가능 view는 한번 생성하면 변경이 안됨 (update, delete 등 X) => 새로운 뷰로 대체(replace) 해야함! index를 가질 수 없음 뷰 view 생성 여러필드에서 가져오는 경우) 중복제거 distinct는 하는 것이 좋음 중복제거를 하지 않는 경우 조건에 맞는 값이 칼럼별로 나와 여러번 출력 1. 하나의 필드에서 가져와 생성 create view 뷰이름 as select 칼럼명 from 테이블명 where 조건 ; 2. 여러 필드에서 가져와 생성 create view 뷰이름 as sele..

[MySQL] 인덱스(색인) index 생성, 추가, 삭제

인덱스(색인) index : 테이블의 조회 속도를 높여주는 자료구조 추가/삭제/변경이 없어 거의 변동이 없는 칼럼에 이용 단점 : update, insert, delete 사용시 조회 속도 저하 인덱스 index 특징 primary키 = 자동 인덱스 설정 MYSQL INDEX(MYI) 파일에 저장된다 인덱스는 하나 또는 여러개의 칼럼에 대해 설정이 가능 (여러칼럼을 묶어 하나의 인덱스로도 설정이 가능) where 절 뒤에 사용될 경우, order by, group by에 사용되는 경우 -> index도 영향을 미침 인덱스 index를 사용할 수 없는 경우 복수의 키에 대해 order by하는 경우 연속하지 않는 칼럼에 대해 order by하는 경우 group by 칼럼, order by 칼럼이 다를 경우..

[MySQL] foreign key가 설정되어 있는 값의 설정변경

1. 외래키 테이블 락 걸기 lock table 참조테이블명 write, 내테이블명 write; //foreign key가 걸려있는 내테이블과 참조테이블에 lock lock table course write, attend write; 2. 외래키 지우기 alter table 내테이블명 drop foreign key 내테이블명_ibfk_2; //내테이블에서 참조데이블을 끊기! alter table attend drop foreign key attend_ibfk_2; 3. 속성 넣기 alter table course modify co_num int not null auto_increment; //참조테이블의 속성 설정 다시하기 alter table 참조테이블명 modify 칼럼명 int not null au..

[MySQL] auto_increment 초기화방법

alter table 테이블명 auto_increment = 1; set @count = 0; //변수만들기 update 테이블명 set 변경할칼럼명 =@count:=@count+1; mysql> alter table guide auto_increment = 1; mysql> set @count = 0; mysql> update guide set gu_num=@count:=@count+1; mysql> select * from guide; +--------+---------+------------+------------+ | gu_num | gu_year | gu_pr_num | gu_st_num | +--------+---------+------------+------------+ | 1 | 2020 ..

[MySQL] ERD 생성

ERD : Entity Relationship Diagram 개체-관계 모델. 테이블간의 관계를 설명해주는 다이어그램 ( 개체- 관계 모델: 개체타입과 이들 간의 관계 타입을 현실세계를 개념적으로 표현 ) 기호 네모 □: 개체 타입 다이아몬드 ◇ : 관계 타입 동그라미 ○ : 속성 동그라미의 밑줄 : 기본키 속성 연결 선 : 개체와 속성을 연결 ERD 무료 생성 프로그램 https://www.erdcloud.com/ ERDCloud Draw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool. www.erdcloud.com 예) 수강관리 프로그램 ERD 만들어보기 https:..

[MySQL] SQL 내장함수 : 논리함수 ( if , case ~ when ~then )

if 문 if문 : if(조건식, 참, 거짓); 다중 if문 : if(조건식, true, if(조건식, true, false)); 예시 ) at_repetition에 ( at_score =F 이거나 at_attend update attend set at_repetition = -> if(at_score = 'F' or at_attend where at_term = 1; 예시) at_score가 'A' 또는 'B'일 경우 'p'아니면 'f'를 넣으세요 mysql> update attend set at_pass = -> if(at_score = 'A' or at_score = 'B', 'p' , 'f' ); case ~ when ~then 문 case when 조건1 then 값1 when 조건2 then ..