데이터베이스/MySQL 12

[MySQL] 뷰(VIEW)의 생성, 조회, 삭제, 수정

뷰 (VIEW) 뷰는 데이터가 데이터베이스에 물리적으로 저장되지 않기 때문에 가상테이블 또는 원천데이터를 조회할 수 있는 저장된 쿼리 라고 합니다. 복잡하고 긴 쿼리문을 뷰로 정의하면 접근을 단순화시킬 수 있고, 보안에 유리합니다. 사용자마다 특정 객체만 조회할 수 있도록 권한을 부여를 할 수 있기에 동일한 테이블을 접근하는 사용자마다에 따라 서로 다르게 보도록 여러 개의 뷰를 정의해 놓고 특정 사용자만이 해당 뷰에 접근할 수 있도록 합니다. ▶ 뷰의 장점 뷰 장점 내용 논리적 독립성 제공 뷰는 논리 테이블임 (테이블의 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 됨) 사용자 데이터 관리 용이 복수 테이블에 존재하는 여러 종류의 데이터에 대해 단순한 질의어 사용이 가능 데이터 보안 용..

[MySQL] 인덱스(INDEX)의 생성, 삭제, 조회, 수정

인덱스(INDEX) 인덱스는 데이터를 빠르게 찾을 수 있는 수단으로써, 테이블에 대한 조회 속도를 높여 주는 자료구조입니다. 인덱스는 다음 그림과 같이 테이블의 특정 레코드 위치를 알려 주는 용도로 사용하는데, 이러한 인덱스는 자동으로 생성되지 않습니다. PK 컬럼은 PK를 생성할 때 자동으로 인덱스가 생성됩니다. 테이블에서 일련번호를 기본키(Primary Key)로 하는 경우, 일련번호에 대한 인덱스는 자동으로 생성되나, 생년월일이나 이름을 기준으로 하는 인덱스는 자동으로 생성되지 않습니다. select * from table_great_men where 이름 = ‘이순신’; 조건문 where 절에서 '이름'을 비교하고 있습니다. 이 경우 해당 테이블의 '이름' 컬럼에 인덱스가 없는 경우, 테이블의 전..

[MySQL] 데이터 사전(Data Dictionary)

데이터 사전(Data Dictionary) - 대부분 읽기 전용으로 제공되는 테이블 및 뷰들의 집합으로 데이터베이스의 전반에 대한 정보를 제공합니다. - 데이터베이스에 저장되어 있는 모든 데이터 개체들에 대한 정보를 유지 · 관리 하는 시스템으로, 시스템 카탈로그라고도 합니다. - 데이터 사전의 내용을 변경하는 권한은 시스템이 가지며, 사용자에게는 읽기전용 테이블 형태로 제공되므로 단순 조회만 가능합니다. - '데이터에 관한 데이터(Data About Data)'가 저장되어 있다고 하여 데이터 사전을 메타데이터(Meta data)라고도 합니다. ▶ 데이터 사전 내용 데이터 사전 안에 존재하는 메타데이터의 유형은 다음과 같습니다. • 사용자 정보 (아이디, 패스워드, 권한 등) • 데이터베이스 스키마 객체..

[MySQL] DCL 활용(2) - 트랜잭션 COMMIT, ROLLBACK

▶ DCL(Data Control Language) - 데이터 제어어 데이터베이스에 접근하거나 객체에 권한을 주는 등의 역할을 하는 언어입니다. 종류 역할 GRANT 특정 데이터베이스 사용자에게 특정 작업에 대한 사용권한 부여 한다. REVOKE 특정 데이터베이스 사용자에게 특정 작업에 대한 사용권한을 취소 한다. COMMIT 명령어에 의해 수행된 결과를 실제 물리적 디스크로 저장하고, 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려준다. ROLLBACK 트랜잭션의 조작작업이 비정상적으로 종료되었을 때 원래의 상태로 복구한다. 먼저, notice 테이블을 생성 후 트랜잭션을 시작해 보겠습니다. ▶ 테이블 생성 create table notice ( idx int auto_increment..

[MySQL] DCL 활용(1) - 사용자 권한부여(GRANT), 권한취소(REVOKE)

DCL(Data Control Language) - 데이터 제어어 데이터베이스에 접근하거나 객체에 권한을 주는 등의 역할을 하는 언어를 입니다. 종류 역할 GRANT 특정 데이터베이스 사용자에게 특정 작업에 대한 사용권한 부여 한다. REVOKE 특정 데이터베이스 사용자에게 특정 작업에 대한 사용권한을 취소 한다. COMMIT 명령어에 의해 수행된 결과를 실제 물리적 디스크로 저장하고, 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려준다. ROLLBACK 트랜잭션의 조작작업이 비정상적으로 종료되었을 때 원래의 상태로 복구한다. 먼저, 새로운 사용자 계정을 추가하고 권한부여, 권한취소를 실행해 보겠습니다. ▶ 사용자 조회 use mysql; mysql> select user, host fr..

[MySQL] DML 활용 - 테이블에 데이터(튜플) 추가, 수정, 삭제하기

▶ DML(Data Manipulation Language) - 데이터 조작어 정의된 데이터베이스에 입력된 레코드를 조회하거나 수정하거나 삭제하는 등의 역할을 하는 언어를 말합니다. 즉, 테이블에 있는 행과 열을 조회, 수정, 삭제하는 언어입니다. 종류 역할 SELECT 테이블에서 조건에 맞는 튜플을 검색한다. INSERT 테이블에 새로운 튜플을 삽입한다.. UPDATE 테이블에서 조건에 맞는 튜플의 내용을 변경한다. DELETE 테이블에서 조건에 맞는 튜플을 삭제한다. 먼저, DDL의 CREATE 로 테이블은 생성시켜 놓고 DML를 활용해보겠습니다. -- 'notice' 라는 이름의 테이블 정의 create table notice ( idx int auto_increment primary key, ti..

[MySQL] SQL 제약조건 종류

제약조건 내용 PRIMARY KEY 테이블의 기본키를 정의함. 기본으로 NOT NULL, UNIQUE 제약이 포함됨. FOREIGN KEY 외래키를 정의함. 참조 대상을 테이블이름(열이름)으로 명시해야 함. FOREIGN KEY 제약 조건을 설정할 때 참조되는 테이블의 필드는 반드시 UNIQUE나 PRIMARY KEY 제약 조건이 설정되어 있어야 함. * 참조 무결성 위배 상황 발생 시 처리 방법으로 옵션 지정 가능 - NO ACTION, SET DEFAULT, SET NULL, CASCADE UNIQUE 테이블 내에서 해당 필드는 유일한 값을 가져야 함. (중복된 값 지정 불가) NOT NULL 테이블 내에서 해당 필드의 값은 NULL일 수 없음. (필수 입력 항목) CHECK 개발자가 정의하는 제약 ..

[MySQL] SQL 데이터타입 자료형 종류

1. 숫자 타입 타입 저장공간 (byte) 값 숫자형 정수형 BOOL 0은 false, 0이 아닌 값은 true 로 간주하는 논리형 데이터 ENUM(Y,N) 또는 TINYINT(1) 로 대체하여 사용하는 것을 권장 TINYINT(M) 1 부호 있는 수는 -128 ~ 127 부호 없는 수는 0 ~ 225 까지 표현 SMALLINT(M) 2 부호 있는 수는 -32768 ~ 32767 부호 없는 수는 0 ~ 65535 까지 표현 MEDIUMINT(M) 3 부호 있는 수는 -8388608 ~ 8388607 부호 없는 수는 0 ~ 16777215 까지 표현 INT(M) INTEGER(M) 4 부호 있는 수는 -2147483648 ~ 2147483647 부호 없는 수는 0 ~ 4294967295 까지 표현 BIGI..

[MySQL] DDL 활용 - 테이블 생성, 수정, 삭제하기

▶ DDL(Data Definition Language) - 데이터 정의어 데이터베이스를 정의하는 언어이며, 데이터를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 하는 언어입니다. 종류 역할 CREATE SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하고 생성하는 역할을 합니다. ALTER TABLE에 대한 정의를 수정하는 역할을 합니다. DROP SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 삭제하는 역할을 합니다. TRUNCATE 테이블을 초기화 시키는 역할을 합니다. 1. CREATE : 테이블 생성하기 CREATE TABLE 테이블명 ( 속성명 데이터타입](길이) 제약조건, 속성명 데이터타입](길이) 제약조건, 속성명 데이터타입](길이..

[MySQL] 사용자 계정 조회, 생성, 삭제, 권한 부여하기

1. 사용자 조회 use mysql; mysql> select user, host from user; 2. 사용자 계정 생성 CREATE USER ‘사용자ID’@’host’ IDENTIFIED BY '패스워드'; -- 아이디 'tester', 비밀번호 'test1234' 사용자 계정 생성 mysql> create user 'tester'@'localhost' identified by 'test1234'; 3. 사용자 계정 정보 확인 SHOW GRANTS FOR '사용자ID'@'host'; -- 'tester' 사용자 계정의 권한 조회 SHOW GRANTS FOR tester@localhost; 4. 새로운 사용자 로그인 mysql -u [사용자ID] -p[비밀번호]; mysql -u tester -pte..