db
-
[PostgreSQL] Character Typesdb/PostgreSQL 2022. 9. 1. 11:06
char(n) // = character(n) varchar(n) // = character varying(n) //n은 양의 정수 //최대 n개의 문자(바이트x)저장 //n개의 문자 초과시 에러 text CHAR(n) (=CHARACTER(n)) 내부적으로 저장될 때는 space로 패딩되어 n바이트로 채워진다. n지정 안된 경우 -> n은1로 취급 마지막 문자 이후의 공백들은 모두 버려진다. CREATE TABLE char_test (id SERIAL PRIMARY KEY, col CHAR(4)); INSERT INTO char_test(col) VALUES('가나다라 '),('가나다라 '),('가나다라 '),('가나다라 '); SELECT id, col, LENGTH(col) AS '길이' FROM ..
-
[MySQL] EXISTS, NOTEXISTSdb/MySQL 2022. 8. 8. 17:27
SELECT문의 결과에 로우가 포함되어있는지 유무 확인 select exists (select * from 테이블) ; 서브 쿼리에 해당하는 로우가 존재하면 true(1), 존재하지 않으면 false(0) select not exists (select * from 테이블) ; 서브 쿼리에 해당하는 로우가 존재하지 않으면 true(1), 존재하면 false(0) CREATE TABLE exists_test (id INT); SELECT EXISTS(SELECT id FROM exists_test) AS '존재?' ; SELECT NOT EXISTS(SELECT id FROM exists_test) AS '미존재?'; INSERT INTO exists_test(id) VALUES(1); SELECT EXIS..
-
[MySQL] INSERTdb/MySQL 2022. 8. 8. 17:19
INSERT INTO 테이블명 (컬럼1,컬럼2...) VALUES (값1,값2...); //모든 컬럼을 타이핑 하기 힘든 경우 컬럼리스트 생략가능 INSERT INTO 테이블 VALUES (첫컬럼값, 값2, 값3 ...마지막 컬럼값); DEFAULT 키워드 테이블의 컬럼에 기본값이 설정되어 있다면 INSERT문 사용시 DEFAULT 키워드를 사용하여 기본값으로 INSERT가 가능 CREATE TABLE test(col1 INT DEFAULT 1); INSERT INTO test(col1) VALUES(DEFAULT); SELECT col1 FROM test; 기본값이 설정되어있지 않고 NOT NULL제약이 걸려있지 않은 컬럼은 INSERT시 컬럼을 생략하면 DEFAULT값이 없지만 NULL값으로 채워진다..
-
[MySQL] Stored Proceduredb/MySQL 2022. 8. 4. 10:24
Stored Procedure 생성 DELIMITER // CREATE PROCEDURE 프로시져명() BEGIN 수행문1; 수행문2; END // DELIMITER ; Stored Procedure 호출 CALL 프로시져(); //파라메터가 없는 경우 CALL 프로시져(파라메터...) //파라메터가 존재하는 경우 Stored Procedure 삭제 DROP PROCEDURE [IF EXISTS] 프로시져명; //삭제하기 위해서는 ALTER ROUTINE 권한이 필요하다 Stored Procedure 파라메터 종류 IN (default 모드), OUT, INOUT DELIMITER $$ CREATE PROCEDURE 프로시져명([IN|OUT|INOUT] 파라메터명 타입[길이]) BEGIN ... END ..
-
[MySQL] Triggerdb/MySQL 2022. 8. 3. 09:56
Trigger DML문이 수행되었을 때, 데이터베이스 내부에서 자동으로 동작하도록 작성된 프로그램 사용자가 직접 호출하는 것이 아니라, 데이터베이스에서 자동적으로 호출하는 것이 가장 큰 특징 SQL 표준으로 Row 레벨 트리거와, Statement 레벨 트리거가 존재 Row 레벨: Row의 insert, update, delete시에 발생 Statement 레벨: Row의 insert, update, delete개수와 발생과 관계없이 한 트랜잭션에 한번 호출 MySQL Trigger Row 레벨 트리거만 지원 한 DB에서 트리거의 이름은 Unique 특정 스키마에 존재하는 모든 트리거 확인 SHOW TRIGGERS; 트리거 삭제 DROP TRIGGER [IF EXISTS] [schema_name.]tri..
-
[MySQL] FOREIGN KEYdb/MySQL 2022. 6. 21. 11:11
FOREIGN KEY 제약 조건을 설정할 때 참조되는 테이블의 필드는 반드시 UNIQUE나 PRIMARY KEY 제약 조건이 설정되어 있어야 한다!!! ----------------------외래키 onupdate, ondelete--------------------- 외래키 생성시 onupdate, ondelete 설정하지 않을시 기본으로 둘다 RESTRICT 로 설정됨 1. CASCADE onupdate 부모 테이블의 값 업데이트시 -> 참조 테이블의 값이 업데이트된 값에 맞게 자동으로 변경됨 ondelete 부모 테이블의 값 삭제될시 -> 해당 참조 로우가 삭제됨 2. SET NULL onupdate 부모 테이블 값 업데이트시 -> 참조 테이블의 값이 null로 변경됨 ondelete 부모 테이블 ..