Linux/SQL 27

information_schema

######################## ## information_schema ## ######################## information_schema - DBMS(mariaDB)의 전체 정보를 가지고 있는 가상의 Database - 다시 말해서 시스템상의 DB가 위치하는 실제 파일시스템상(/var/lib/mysql)에는 존재하지 않고 메모리에 존재한다. - 리눅스에서 /proc 디렉터리라고 생각하면 된다. information_schema : DBMS의 전체 정보를 가지고 있는 가상의 데이터베이스 information_schema.TABLES : DBMS의 전체 테이블에 대한 정보를 가지고 있는 테이블 - TABLE_SCHEMA : DBMS의 전체 데이터베이스가 저장된 컬럼 - TABL..

Linux/SQL 2022.01.30

DBMS 포트 리슨 방법

실습> DBMS 포트 리슨 방법 1. 127.0.0.1 포트로 여는 방법 -- /etc/my.cnf -- [mysqld] bind-address = 127.0.0.1 # systemctl restart mariadb # netstat -nltp | grep 3306 tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 6222/mysqld 외부에서 접속할 경우 - 터널링 기법을 이용해서 접속하는 경우 (안전하다. 단 단점은 서버의 계정의 부여해야 한다.) - 웹 인터페이스로 접속하는 경우 (보안상 취약하다. 이유는 아무곳에서나 접속이 가능하므로 , 단 접근제어가 설정되어 있다면 보안의 취약성은 제거할 수 있다.) 2. 모든 네트워크로 여는 방법 -- /etc/my.cnf -- [mysq..

Linux/SQL 2021.12.08

트리거 실습 (회원 탈퇴 테이블을 이용한 트리거 생성)

트리거는 어떤 이벤트가 발생하면 자동적으로 방아쇠가 당겨져 총알이 발사되듯이 특정 테이블이 변경되면 이를 이벤트로 다른 테이블이 자동으로 변경되도록 하기 위해서 사용된다. 형식 : DELIMITER // CREATE TRIGGER ON FOR EACH ROW BEGIN 실행문 ; : :(생략) END // DELIMITER ; 활성화 시간 - 트리거 실행 시점 - BEFORE : 이벤트 발생 전에 실행 - AFTER : 이벤트 발생 후에 실행 이벤트 - 트리거가 실행 될 이벤트 ( INSERT / UPDATE / DELETE ) member 테이블 있는 디비에~!!(naver_db) use naver_db; create table trig_test ( event_time char(16) , count i..

Linux/SQL 2021.12.08

[DBMS] 저장 함수 실습

# 저장 프로시저와의 다른점은 반환값이 있는 것이다. # 함수 실행 시 CALL 명령어로 실행하지 않고 SELECT 명령어로 실행한다. -- 저장 함수 생성 delimiter // create function myfunction (no int) returns int begin return no + 10; end // delimiter ; -- 저장 함수 목록 확인 show function status; -- 저장 함수 설정 확인 show create function myfunction; -- 저장 함수 실행 select myfunction(1); -- 저장 함수 삭제 drop function myfunction; DELIMITER // CREATE FUNCTION func_test(num1 int, nu..

Linux/SQL 2021.12.08

[DBMS] 저장 프로시저 실습

# 스토어드 프로시저는 반환값이 없으므로 RETURN 명령어를 사용할 수 없다. # 저장 프로시저 실행 시 CALL 명령어로 실행한다. # 스토어드 프로시저 4가지 장점 # 1. DB의 성능을 향상시킬 수 있다. # 2. 유지 관리가 간편하다. # 3. 모듈식 프로그래밍이 가능하다. # 4. 보안을 강화시킬 수 있다. 실습> 명령어의 끝 변경하기 명령어의 끝은 ; 으로 끝난다. MariaDB [naver_db]> select user(); +----------------+ | user() | +----------------+ | root@localhost | +----------------+ 1 row in set (0.00 sec) 명령어의 끝을 // 로 변경한다. MariaDB [naver_db]> ..

Linux/SQL 2021.12.08

[DBMS] 트리거 (Trigger)

• 트리거(Trigger) 테이블에 대한 특정 이벤트에 반응해 자동으로 실행되는 작업 이벤트 : INSERT, UPDATE, DELETE 트리거 실행 시점을 이벤트 전(BEFORE)이나 이벤트 후(AFTER)로 지정하여 설정 = 활성화 시간 INSERT 전/후, UPDATE 전/후, DELETE 전/후 MySQL은 5.0.2버전부터 표준 트리거가 지원됨 데이터 상태의 관리를 자동화하는 데 사용 데이터 작업 제한, 작업 기록, 변경 작업 감사 등 • 제약사항 하나의 스키마에서 트리거의 이름은 중복 될 수 없음 하나의 테이블에는 동일한 활성화 시간 및 이벤트를 갖는 두 개의 트리거를 가질 수 없음 ex) INSERT 이벤트 전(BEFORE) 트리거 두 개 생성 불가능 • 트리거 종류 행 트리거 테이블 안의 ..

Linux/SQL 2021.12.08

[DBMS] 저장 함수 (Stored Function)

• 저장 함수(Stored Function) 저장 프로시저와 거의 비슷하나 실행 후 결과 값을 반환 한다는 점이 다름 사용자 정의 함수 라고도 부름 MySQL은 5.0버전부터 사용 가능 • 저장 함수 생성 mysql> DELIMITER // mysql> CREATE FUNCTION ( [ ARGUMENT , ... ] ) RETURNS BEGIN 실행문 ; 실행문 ; .... RETURN ; END // mysql> DELIMITER ; RETURNS 함수 실행 후 반환할 데이터의 타입 RETURN 함수를 종료하고 값을 반환 • 저장 함수 확인 mysql> SHOW FUNCTION STATUS; mysql> SHOW CREATE FUNCTION ; • 저장 함수 삭제 mysql> DROP FUNCTION ;

Linux/SQL 2021.12.08

[DBMS] 저장 프로시저 (Stored Procedure)

• 저장 프로시저(Stored Procedure) 일련의 작업 절차를 정리해서 저장한 것 여러 SQL문을 묶어서 미리 정의해 두고 하나의 요청으로 실행할 수 있음 자주 사용되는 복잡한 작업들을 간단하게 실행 할 수 있음 Application 에서 직접 모든 작업을 요청하지 않아도 되기 때문에 부하가 줄어들고 보안이 향상됨 단, 검증되지 않은 저장 프로시저를 실행하는 것은 매우 위험함 MySQL은 5.0버전부터 사용 가능 • 저장 프로시저 생성 mysql> DELIMITER // mysql> CREATE PROCEDURE ( [ ARGUMENT , ... ] ) BEGIN 실행문 ; 실행문 ; .... END // mysql> DELIMITER ; - DELIMITER 저장 프로시저 안에 여러 SQL문이 ..

Linux/SQL 2021.12.08

[DBMS] 변수 실습

실습> 변수 use naver_db MariaDB [naver_db]> select no, name, age from member; +----+-----------+------+ | no | name | age | +----+-----------+------+ | 1 | 황영주 | 35 | | 2 | 설기형 | 33 | | 3 | 박철호 | 34 | | 4 | 이상훈 | 32 | | 5 | 장영숙 | 24 | | 6 | 배용진 | 30 | | 7 | 박혜빈 | 22 | | 8 | 김문수 | 63 | | 9 | 차범길 | 49 | | 10 | 김길수 | 54 | | 11 | 김수련 | 23 | | 12 | 이성현 | 36 | | 13 | 정한나 | 58 | | 14 | 이명연 | 33 | | 15 | 김영..

Linux/SQL 2021.12.08