본문 바로가기

분류 전체보기146

트랜잭션, 뷰, Date 뷰 (VIEW) 쿼리를 저장하여 결과를 여러번 반복해서 확인하는 방법. 흔히, 가상 테이블이라 한다. 실제로 동작하는 것은 내부적으로 서브 쿼리를 호출한다. 뷰의 유용성 테이블 구조가 변경되어도 뷰를 계속 사용 할 수 있다. 애플리케이션 코드에 복잡한 쿼리가 존재하지 않게 할 수 있다. 쿼리가 애플리케이션에 노출 되지 않는다. CREATE VIEW girl_group_song AS SELECT gg._id, gg.name, s.title FROM girl_group AS gg JOIN song AS s ON s._id = gg.hit_song_id; SELECT * FROM girl_group_song; 트랜잭션(TRANSACTION) 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위 ACID.. 2024. 2. 7.
사용자 권한 주기 (GRANT) root 사용자 암호 설정 SET PASSWORD FOR 'root'@'localhost' = password_option; # root 계정에서 SET PASSWORD = password_option; # 현재 사용자 DBMS에서 제공하는 보안 허가받지 않은 사용자, 즉 권한이 없는 사용자로부터 데이터의 접근을 사전에 차단 데이터베이스에서의 사용 권한 사용자가 데이터베이스 내의 특정 객체에 대해 특정 연산을 실행할 수 있는 권리 특정 객체 : 테이블, 필드, 뷰, 저장 프로시저 등 데이터베이스의 구성 요소 권한 제어가 가능한 연산의 종류 데이터 접근 관련 연산 (DML) SQL의 select, insert, delete, update 등 스키마 관련 연산 (DDL) create table, alter .. 2024. 2. 7.
유니온(UNION), 서브 쿼리 UNION 여러 쿼리문들을 합쳐서 하나의 쿼리문으로 만들어주는 방법이다. 중복된 값을 제거하고 보여준다. 중복된 값을 제거하는 연산이 추가로 수행되기 때문에 UNION ALL보다 속도가 느리다. UNION ALL UNION과 동일하게 여러 쿼리문들을 합쳐서 하나의 쿼리문으로 만들어주는 방법이다. 중복된 값을 모두 보여준다. SELECT A AS one, B AS two FROM TABLE_A UNION (또는 UNION ALL) SELECT C AS one, D AS two FROM TABLE_B; JOIN 과의 차이점 JOIN : 새로운 열로 결합한다. (수평결합) UNION : 새로운 행으로 결합한다. (수직결합) JOIN이 속도면으로는 더 좋지만 결과를 SELECT만 가능하다. 서브쿼리는 SELEC.. 2024. 2. 6.
AOP(Aspect Oriented Programming) AOP(Aspect Oriented Programming) 관점 지향 프로그래밍 특정한 함수 호출 전이나 후에 공통적인 처리가 필요 할 때 사용 로깅 트랜잭션 인증 OOP(객체 지향 프로그래밍)로 처리하기에는 다소 까다로운 부분을 AOP라는 처리 방식을 도입하여 손쉽게 공통 기능을 추가/수정/삭제 할 수 있게 한다. AOP의 기본 개념들 Aspect 여러 클래스나 기능에 걸쳐서 있는 관심사, 그리고 그것들을 모듈화한 것 AOP 중에서 가장 많이 활용되는 부분은 @Transactional (트랜잭션 관리) 기능 Advice AOP에서 실제로 적용하는 기능(로깅, 트랜잭션, 인증 등)을 의미한다. Join point 모듈화된 특정 기능이 실행될 수 있는 연결 포인트(Aspect를 넣을 수 있는 지점) Poi.. 2024. 2. 6.
조인 : JOIN (INNER, OUTER, CROSS, SELF) JOIN 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것 기본키와 외래키 관계로 맺어져야하고, 일대다 관계를 형성해야한다. song 테이블 girl_group 테이블 INNER JOIN(내부 조인) 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다. SELECT FROM INNER JOIN ON [WHERE 검색 조건] #INNER JOIN을 JOIN이라고만 써도 INNER JOIN으로 인식합니다. SELECT gg._id, gg.name, s.title FROM girl_group AS gg JOIN song AS s ON s._id = gg.hit_song_id; # ON은 WHERE을 대신 사용해도 된다. girl_group 테이블에 없는 데이터는 나오지 않는.. 2024. 2. 5.
외래 키 설정하기, 1NF (테이블 쪼개기) 제약조건 참조키 설정, 테이블 연산으로 값 채우기 제약조건 참조키(Foreign Key) 설정 CREATE TABLE department( _id INT PRIMARY KEY AUTO_INCREMENT, department_code CHAR(5) NOT NULL ); INSERT INTO department(department_code) SELECT belong FROM student ORDER BY belong; INSERT INTO 테이블(컬럼명) + 넣을 데이터 위의 결과에서 중복된 데이터 제거 DELETE FROM department; INSERT INTO department(department_code) SELECT DISTINCT(belong) FROM student ORDER BY belon.. 2024. 2. 4.
정규화(Normalization) 정규화(Normalization) 데이터를 중복으로 젖아하면 일관되지 않은 데이터, 비정상적인 삽입 갱신 삭제 처리, 디스크 공간 낭비 등 많은 문제를 일으킨다. 중복 데이터를 저장하면서 일으키는 문제점을 없애기 위해서 정보를 주제별로 분할하는 프로그램 테이블 간에 중복된 데이터를 허용하지 않는다. 무결성을 유지 할 수 있다. 데이터를 보호하고, 항상 정상인 데이터를 유지하는 것 DB 저장 용량을 줄일 수 있다. 정규화 단계 1NF (제 1 정규화) 테이블의 컬럼이 원자값(하나의 값)을 갖도록 테이블을 분해하는 것 한 컬럼에는 하나의 값만 들어갈 수 있게 하는 것 2NF(제 2정규화) 제 1정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것 완전 함수 종속 기본키의 부분집합이.. 2024. 2. 4.
키(Primary Key, Foreign Key)의 종류와 함수적 종속 키의 종류 (Primary Key, Foreign Key) 후보키(Candidate Key) 테이블을 구성하는 열 중에서 유일하게 식별 할 수 있는 열 기본키(Primary Key) 테이블에서 유일하게 식별하기 위해 사용하는 키 대체키(Alternate Key) 후보키 중 기본키를 제외한 나머지 후보키 외래키(Foreign Key) 테이블 내의 열 중 다른 테이블의 기본키를 참조하는 열 Parent Key 외래키가 참조하는 테이블의 기본키 Parent Table Parent Key를 가진 테이블 외래키를 사용하는 이유 외래키로 설정을 하면 데이터를 삭제할 때, 해당 테이블을 참조하는 테이블에서 관련 데이터를 삭제 할 수 있다. 참조 무결성 외래키는 참조하는 테이블에 실제로 있는 값만 사용 할 수 있다. .. 2024. 2. 4.