Programming Language/MySQL 9

[Database] MySQL. Primary Key, Foreign Key

1. Primary Key DB에서 테이블을 생성할 때 하나 이상의 항목을 Primary Key(기본키)로 설정해줘야한다. 기본키는 해당 테이블에서 가지는 기본적인 값이다. 행을 고유하게 구분해주는 정보라고 볼 수 있을 것이다. 예를 들자면 쇼핑몰의 DB에 회원 테이블에서 회원번호가 기본키가 될 수 있겠다. 기본키로 설정한 항목은 자동적으로 unique(중복 불가), not null 제약조건을 가지게된다. 백문이불여일용. 실사용을 해보자. 예시 활용을 위해 적당히 만들어본 테이블. course 테이블을 생성하는 쿼리에서 primary key(co_num) 구문을 통해 co_num 컬럼을 기본키로 설정해주었다. desc course로 테이블 정보를 확인해보면 not null 제약조건이 기본으로 붙은걸 확인..

[Database] MySQL. Procedure 기본 활용

SQL에서 procedure란 자바의 메소드와 여러모로 유사해보인다. 말하자면 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이다. 한번의 구문으로 여러 기능들을 처리할 수 있기에 시간이 단축되고 유지보수에 편리하다는 장점이 있지만 처리성능이 떨어지고 재사용성 면이 좋지않다는 단점도 있다. procedure를 생성하는 구문은 trigger와 비슷하나 매개변수가 있다는 것이 특징이다. delimiter // create procedure [프로시저 명](in_변수명, 리턴타입(in_mode) 1: 값이 있을 경우 | 0: 값이 없을 경우) begin 쿼리문 실행 end// delimiter ; 사용 시엔 call [프로시저 명](매개변수 값); 으로 호출한다. 바로 활용해보자. 전에 만들었던..

[Database] MySQL. Trigger 기본 활용

Trigger. 방아쇠라는 명사의 뜻도 있지만 촉발시키다는 동사의 뜻도 있다. SQL에서 Trigger란 정해진 이벤트에 연이어 곧바로 실행되는 구문을 말한다. 이벤트가 발생했을 때 데이터의 무결성을 지키기 위해 사용된다. 아래는 Trigger에 쓰이는 주요 문법이다. - 변수선언 declare 변수명 자료형 기본값; set 변수명 = 값; new: 이벤트가 발생한 행의 최신 데이터 old: 이벤트가 발생한 행의 이전 데이터 - 생성 전 if not exists [이름] : 이름이 기존에 존재하지 않을 때만 생성함 drop [table/trigger/procedure etc] if exists [이름]: 이름이 기존에 존재할 경우 삭제 delimiter: 문장의 끝을 다른 기호로 표시할 때 사용 - 생성..

[Database] MySQL. Join문 활용하기

SQL에서는 join문이 많이 활용되는 것 같다. Join은 데이터를 서치하기 위해 두 개 이상의 테이블을 연결할 때 쓴다. Join에도 Inner join, natural join, outer join 등 다양한 형태가 있는데, 본문에서는 기본적인 활용법을 알아본다. Join을 통한 데이터 서치의 기본문 구조는 다음과 같다; select [컬럼명] from [컬럼의 테이블] join [서치될 컬럼을 가진 테이블] on [foreign key로 연결된 컬럼명] = [foreign key로 다른 테이블에 연결된 컬럼명] where [조건]; 이렇게만 봐선 아리송할 수 있다. 실제 활용을 보자. 활용을 위해 우선 univ 데이터베이스와 그 안에 들어갈 여섯가지 테이블을 생성한 후 데이터까지 추가해줬다. 위의..

[Database] MySQL. SQL 내장함수

SQL 내에서는 마치 엑셀처럼 여러 함수를 사용할 수 있는데 실제 사용법도 엑셀과 유사하다. - 산술 산술연산 +-*/ mod(값1, 값2) = 값1을 값2로 나눈 나머지 round(값1, 값2) = 값2의 소수자리수까지만 표시. 음수의 경우 해당 자리에서 반올림 format(값, 소수자리수): 천단위 구분기호 사용 celling(값, 자리수): 올림 floor(값, 자리수): 버림 sqrt(값) / power(값1, 값2): 루트/제곱 rand(): 0~1 사이의 난수 발생 abs(값): 절대값 - 문자 concat(문자, 문자): 문자열 연결 length(숫자): 숫자의 길이 length(문자): 문자의 길이(한글은 한글자에 3, 영문 알파벳은 1. 한글길이에는 char_length 사용) repla..

[Database] MySQL. 데이터 수정하기

데이터 수정 뿐만 아니라 테이블의 틀도 수정해본다. 1. 데이터 수정 성실한 학생인 박군이 싱가포르로 이민을 간다. 주소를 바꿔주자. 명령문 쪼개기; update = 데이터를 업데이트한다 student = student 테이블에 있는 데이터 중 set addr = 'Singapore' = addr을 싱가포르로 where name = 'Park' = name 값으로 'Park'을 갖는 항목의 같은 방법으로 응용도 가능하다. 영어과목에서 학생들의 단체 컨닝이 파악되었다. 재시험에 앞서 모두를 0점 처리하여 강한 선례를 만들어보자. 정의의 철퇴가 내려진걸 확인할 수 있다. 2. 테이블 수정 이제 테이블을 수정해보자. 2-1) 테이블 필드 추가 테이블에 생년월일 필드를 추가로 넣어본다. alter table [..

[Database] MySQL. 데이터 찾기

student 테이블에 한땀한땀 데이터를 넣었으니 이제 조건을 주고 꺼내보자. 먼저, 점수가 90 이상인 우등생들을 찾아보면 어떨까. 명령문을 뜯어보자면, select = 선택한다 * = 모든 정보를 from student = student 테이블에서 where score>=90 = score가 90이상인 값을 갖는 항목을. 이 때 *를 써서 모든 정보를 뽑아냈지만, 일부만 조회하는 것도 가능하다. num, name, score만 나오도록 입력했다. 재밌는건 명령문에 마치 엑셀 함수처럼 count, avg, round, if, max, min, and, or 등을 사용할 수 있다는 점이다. 이름에 특정 캐릭터가 들어가는 친구들을 찾고 싶다면 like문과 %를 사용하면 된다. 예시는 e의 앞뒤로 %를 뒀기..

[Database] MySQL. 기본 DB 생성, 연습용 데이터 넣어보기

MySQL 인스톨을 마치고 MySQL Command Line Client를 실행한 후 인스톨 시 설정한 패스워드를 입력하면 커멘드라인 사용이 가능하다. show databases; 를 입력하면 저장된 데이터베이스들을 확인 가능하다. 캡쳐된 이미지의 db들은 인스톨 패키지에 들어있는 기본 db들이다. 학습을 위해 dbPractice라는 db를 생성하였다. show databases로도 확인 가능하다. use dbpractice;를 입력하여 경로를 잡고, student라는 테이블을 생성해줬다. 필드는 학번, 이름, 과목, 주소, 점수이다. 학번은 1에서부터 자동증가, 이름과 점수는 null일 수 없음, 기본키는 학번으로 설정해줬다. 설정사항은 desc student; 명령어로 확인 가능하다. DB도, 테이블..

[Database] MySQL. DB를 다룰 때의 기본 상식

드디어 DB를 다뤄본다. DBMS로는 MySql 커뮤니티 에디션을 인스톨하여 사용했다. 이런 편리한 워크벤치도 있지만 나중에 다뤄보려고한다. 우선 cmd를 사용해서 해보기로. 워크벤치 캡쳐화면에서도 확인 가능한 필드의 제약조건들은 다음과 같다; NN(not null): 데이터 값으로 null이 되지 않도록 막아줌 UQ(unique): 값이 중복될 수 없음. 예를 들어 주민등록번호, 학번, 온라인 계정의 아이디 등 고유의 값을 가져야하는 것에 적용 AI(auto increment): 자동증가 PK(primary key): 기본키. 중복이 되지 않으며 null값도 허용이 안된다. B(binary): 2진수 UN(unsigned): 항상 값이 0과 같거나 크게 만듦 ZF(zero fill): 숫자 앞을 0으로..