SQL
-
관계형 데이터베이스, SQL, 인덱스, 정규화, Normalization, 이상현상, 카디널리티(Cardinality), 역정규화, 반정규화SQL/데이터베이스 2023. 8. 3. 20:40
인덱스 데이터 검색속도 향상을 위해 키값, 주소 쌍으로 구성된 별도의 데이터 객체 b- tree 구조를 이용하여 인덱스의 데이터 구조를 생성 카디널리티 (Cardinality) 테이블을 구성하는 요소 중 얼마나 중복성이 낮은지에 대한 성질 카디널리티가 높을수록 중복성이 낮다. Clustered Index vs Non-Clustered Index Clustered Index 인덱스에 해당하는 물리적 데이터가 함께 정렬되는 인덱스 테이블에 오로지 한개의 Clustered Index 만 존재 가능 복합 인덱스는 불가능하고 단일 인덱스로만 생성 가능 primary key를 생성하면 해당 컬럼이 clustered Index가 됨 장/단점 장점: 테이블에서 카디널리티가 가장 높은 컬럼으로 선택하므로 속도가 빠르다 ..
-
관계형 데이터베이스 용어, SQL 문법SQL/데이터베이스 2023. 8. 2. 16:45
데이터베이스/스키마 : MySQL에서 데이터베이스와 스키마는 동일한 의미 SHOW DATABASE; 테이블 : 컬럼(Column)과 행(Row)의 조합으로 구성 컬럼 - 열, 또는 필드(Field)라고도 한다. 로우 (Row) - 행 : 테이블에서 단일한 구조의 데이터 항목. 레코드, 또는 튜플(Tuple)이라고 하기도 한다. 인덱스 (Index) 무결성 (제약조건) 개체 무결성 기본키를 반드시 소유 ex) Primary Key, Not Null 참조 무결성 외래키로 참조 불가능한 값은 소유할 수 없음 ex) Foreign Key 속성 무결성 컬럼에 지정한 타입을 반드시 만족시켜야 함 ex) int, varchar, text, tinyint 사용자 정의 무결성 Custom한 업무 규칙을 준수할 수 있도록..
-
MySQL - 데이터베이스, DBMS, 관계형 DB, NoSQL, 관계형 데이터베이스SQL/데이터베이스 2023. 8. 1. 20:53
트랜젝션, ACID 개념 https://medium.com/zigbang/%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-acid-%ED%8A%B9%EC%84%B1%EA%B3%BC-isolation-level-2e918ac1b376 트랜잭션 ACID 특성과 Isolation Level 안녕하세요! BE 직방부동산팀에서 근무중인 Jeff 입니다. 이번 포스팅에서는 기술면접의 단골 질문인 트랜잭션의 ACID 특성과 격리 수준 (Isolation Level)에 대해 알아보려 합니다. 그럼 시작해 볼까요 medium.com 1. 데이터베이스 RAM : 전원이 꺼지면 내용이 모두 날라간다, 휘발성 2.HDD / SSD 다수의 트랜잭션이 발생하면 직렬성을 보장하는지, 참조할 수 있도록 정형화되고 ..
-
MySQL 1SQL/데이터베이스 2023. 6. 26. 17:58
데이터베이스 : 데이터의 집합. DMBS : 데이터베이스를 관리하는 소프트웨어. (Database Management system) 데이터베이스 매니지먼트 시스템. DMBS의 조건으로는, 1. 대용량 데이터를 관리할수 있어야 한다. 2. 다른 사람들과 공유할 수 있어야 한다. (동시작업 가능) 대표적인 DBMS로써는, MySQL, 오라클, SQL서버, MariaDB 등이 있다. MySQL이 가장 많이 쓰인다. SQL은 데이터베이스를 구축, 관리하고 활용하기 위해 사용되는 언어이다.
-
SQL 기본SQL 2023. 5. 16. 12:14
데이터베이스 - 여러 사람들이 같이 사용할 목적으로 데이터를 담는 통 - 모든 데이터베이스는 CRUD 기능을 지원한다. C(Create): 데이터의 생성 R(Read): 저장된 데이터를 읽어오기 U(Update): 저장된 데이터를 변경 D(Delete): 저장된 데이터를 삭제하기 SQL - Structured Query Language의 약자로, 데이터베이스에 요청(Query)을 해 원하는 데이터를 가져오는 것을 도와주는 언어 쿼리(Query) - 데이터베이스에 명령을 내리는 것 Select 쿼리문 - 데이터를 선택하여 가져오는 것 show tables - 모든 테이블 불러오기 select * from (table명) - 지정한 테이블의 데이터 가져오기 select (field명) from (table명..
-
SQL 4주차(2)SQL 2023. 5. 8. 17:57
https://teamsparta.notion.site/SQL-4-e8025c63b6bd4e6bb27ae43da874350d Subquery 연습문제 [연습] 1. 전체 유저의 포인트의 평균보다 큰 유저들의 데이터 추출하기 (point_users 테이블을 이용해서 avg를 구하고, 다시 point_users와 조인) [연습] 2. 이씨 성을 가진 유저의 포인트의 평균보다 큰 유저들의 데이터 추출하기 서브쿼리 내에서 users와 inner join 1. point_users 테이블에서 point가 평균보다 높은 select값을 다시 구해 빈칸에 넣음 괄호에 넣으면 아래와 같음. 2. 두개를 inner join ▼ 최종적으로는 아래와 같음. select * from point_users pu where po..
-
SQL 4주차(1)SQL 2023. 5. 8. 15:16
https://teamsparta.notion.site/SQL-4-e8025c63b6bd4e6bb27ae43da874350d#539b3f2554d74fea918e80f3738102fb Subquery 서브쿼리 kakaopay로 결제한 유저들의 정보 보기 (user id, email, name) 테이블 = orders, users 1. 첫번째 방법 select u.user_id, u.name, u.email from orders o inner join users u on o.user_id = u.user_id where o.payment_method = 'kakaopay' 2. subquery를 이용한 두번째 방법 (두개의 select를 하고, 괄호 안에 구해야 하는 정보가 있는 select 넣음) 서브쿼..
-
SQL 3주차SQL 2023. 5. 7. 13:10
Join Join을 사용해서 Key값으로 두 테이블 연결해보기 select * from point_users left join users on point_users.user_id = users.user_id Left Join 여기서 A와 B는 각각의 테이블을 의미합니다. 둘 사이의 겹치는 부분은, 테이블 A와 B의 key 값이 연결되는 부분이에요. 👉 어떤 데이터는 모든 필드가 채워져있지만, 어떤 데이터는 비어있는 필드가 있습니다. 꽉찬 데이터: 해당 데이터의 user_id 필드값이 point_users 테이블에 존재해서 연결한 경우 비어있는 데이터: 해당 데이터의 user_id 필드값이 point_users 테이블에 존재하지 않는 경우 비어있는 데이터의 경우, 회원이지만 수강을 등록/시작하지 않아 포인..