본문 바로가기

mysql

(7)
Trigger Trigger - DB에서 어떤 이벤트가 발생했을 때 자동적으로 실행되는 프로시저 - 데이터에 변경이 생겼을 때, 즉 DB에 insert, update, delete가 발생했을 때 이것이 계기가 되어 자동적으로 실행되는 프로시저를 의미한다. 사용자의 닉네임 변경 이력을 저정하는 트리거 table => users(id, nickname) / users_log(id, nickname, until) delimiter $$ CREATE TRIGGER log_user_nickname_trigger BEFORE UPDATE ON users FOR EACH ROW BEGIN ㅤㅤinsert into users_log values(OLD.id, OLD.nickname, now()); END $$ delimiter ; ..
Stored Function Stored Function 사용자가 정의한 함수 DBMS에 저장되고 사용되는 함수 SQL의 SELECT, INSERT, UPDATE, DELETE statement에서 사용할 수 있다. ⬇️ 임직원의 ID를 열 자리 정수로 랜덤하게 발급하고 싶다면 (맨 앞자리는 1로 고정) delimiter $$ CREATE FUNCTION id_generator() RETURNS int NO SQL BEGIN ㅤㅤㅤㅤRETURN (10000000000 + floor(rand() * 10000000000)); END $$ delimiter ; - BEGIN 구문의 세미콜론에서 CREATE function이 끝났다고 해석될 수 있기 때문에 delimiter를 잠시 다른 것으로 변경해준다. ⬇️ 부서의 ID를 파라미터로 ..
Join JOIN 두 개 이상의 table들에 있는 데이터를 한 번에 조회하는 것. implicit join & explicit join implicit join : WHERE 절에 join condition을 명시하는 방식. old한 방식이며 가독성이 떨어진다. SELECT D.name FROM employee AS E, department AS D WHERE E.id = 1 and E.dept_id = D.id; explicit join : from 절에 JOIN 키워드와 함꼐 joined table들을 명시하는 방식. SELECT D.name FROM employee AS E (INNER) JOIN department AS D ON E.dept_id = D.id WHERE E.id = 1; inner joi..
14일차 - DB index - CHAR : 속도 빠름, 용량 많이 차지 => 검색에 용이하다. - VARCHAR : 속도 느림, 용량 적게 차지 - DELETE : 데이터만 삭제된다. - TRUNCATE : 데이터 및 인덱스 데이터도 같이 삭제된다. LENGTH() SELECT LENGTH('홍길동'); # 9 UUID() - 고유값을 랜덤으로 생성한다. INSERT INTO ~ SELECT ~ INSERT INTO 테이블 (a, b, c) SELECT NOW(), UUID(), `hi` FROM 테이블; - 테이블의 row 개수만큼 데이터가 추가된다. a 칼럼에 NOW(), b 칼럼에 UUID(), c 칼럼에 'hi'가 들어감 SQL_NO_CACHE SELECT SQL_NO_CACHE * FROM 테이블; - 캐시를 쓰지 않는다..
13일차 - DB 쿼리(2) 그룹 함수 https://yurison.tistory.com/24?category=1077673 DML - 데이터 조작하기 SELECT - 데이터 조회하기 SELECT(DISTINCT) {column_name}(ALIAS) FROM {table_name} [WHERE {attribute} = {value}]; SELECT CONCAT({column_name}, '-', {column_name}) FROM {table_name}; DISTINCT : 중복행을 제거한다. ALIAS : 컬럼의 별칭을 지 yurison.tistory.com COUNT SELECT COUNT(컬럼_이름) FROM 테이블_이름; # NULL이 아닌 row의 개수 출력 SELECT COUNT(*) FROM 테이블_이름; # NULL..
12일차 - DB 쿼리(1) 시작 전 할 일 xampp start > SQLyog 접속 온라인 MySQL 실습 환경 https://app.codingrooms.com/compiler?language=mysql Coding Rooms app.codingrooms.com DB 쿼리 CRUD : create, read, update, delete DDL : 테이블과 DB 조작 DML : 데이터(row) 조작 데이터베이스 목록 확인 SHOW DATABASES; 사용할 데이터베이스 선택 USE DB_이름; 선택한 데이터베이스의 테이블 목록 확인 SHOW TABLES; 테이블의 구조 확인 DESCRIBE 테이블_이름; DESC 테이블_이름; - user 처럼 소문자로 타이핑했지만 대문자로 변경되는 경우(기존 키워드인 경우) 백틱으로 감싸준다...
DDL - Table 생성하기, 목록 및 구조 확인 * MySQL에서는 DATABASE와 SCHEMA가 같은 뜻을 의미한다. Table 생성 CREATE TABLE {table_name}(); * 제약 조건 키워드 (CONSTRAINTS) PRIMARY KEY AUTO_INCREMENT NOT NULL UNIQUE : 중복된 값을 저장할 수 없다. DEFAULT : 디폴드값을 설정할 수 있다. CHECK : 입력할 수 있는 값의 범위 등을 제한한다. TRUE or FALSE로 평가할 수 있는 논리식을 지정한다. FOREIGN KEY : CASCADE / SET NULL / RESTRICT [/ NO ACTION / SET DEFAULT] CREATE TABLE {table_name}( ㅤㅤ{field_name} {type} [NULL | NOT NULL]..