SQL(6)
-
[DB] SubQuery
부속 질의 (subquery) SELECT sum(saleprice)FROM orderTableWHERE custid=(SELECT custid FROM customerTable WHERE name = '박지성')부속질의란 하나의 SQL 문 안에 다른 SQL 문이 중첩된 질의를 말함. 다른 테이블에서 가져온 데이터로 현재 테이블에 있는 정보를 찾거나 가공할 때 사용함. 보통 데이터가 대량일 때 데이터를 모두 합쳐서 연산하는 조인보다 데이터만 찾아서 공급해주는 부속질의가 성능이 더 좋음. Join과 Subquery의 성능 차이는 case by case다. 데이터베이스 최적화, 인덱스 사용 여부, 쿼리 작성 방법 등 주어진 상황에 따라 다르므로 특정 상황에서는 JOIN이 더 효율적일 수 있고, 다른 상황..
2024.06.23 -
[DB] INDEX
1. Index 데이터베이스(DB)의 인덱스란 데이터 검색 속도를 높이기 위해 사용하는 기술이다. 또한 특정 항목들에 대하여 중복이 발생하지 않도록 관리하기 위해서 사용되기도 한다. 하지만, 인덱스는 별도의 공간을 차지하고, 데이터가 변경될 때마다 추가적인 연산이 발생한다. 인덱스를 사용할지 말지 신중하게 따져봐야 한다. 2. Index의 종류 인덱스는 몇 가지 조건에 따라서 생성된다. PK 존재 PK 없음 Clustered index PK Unique + NOT NULL Secondary key Unique Unique show index from table_name; 테이블의 index를 조회할 수 있다. 가. Clustered index 클러스터형 인덱스 : 데이터들을 일정 기준으로 정렬하는 인덱스..
2024.04.15 -
[DB] Transaction
1. Transaction 데이터베이스의 상태를 변화시키는 일종의 작업 단위 트랙잭션 도구 설명 START TRANSACTION 트랜잭션을 시작하는 명령어 COMMIT 수정된 내용을 데이터베이스에 반영하는 명령어 ROLLBACK 트랜잭션에서 수행된 모든 변경을 원래대로 되돌리는 명령어 SAVEPOINT 롤백을 원하는 특정 시점을 지정하는 명령어 mysql은 기본적으로 autocommit으로 설정되어 있다. autocommit이면 실행과 동시에 데이터베이스에 변화를 반영한다. 끄면 commit 전까진 메모리 상에서만 데이터를 변경하고 실제 데이터베이스에선 변화하지 않는다. -- 확인 select @@autocommit; -- 1인 경우 autocommit -- 변경 set autocommit = 1; --..
2024.04.14 -
[DB] 내장함수
1. 내장함수 가. 숫자 함수 설명 ABS(x) x의 절대값을 반환 CEILING(x) x보다 크거나 같은 가장 작은 정수를 반환 (올림) FLOOR(x) x보다 작거나 같은 가장 큰 정수를 반환 (내림) ROUND(x, d) x를 d 소수점 자리에서 반올림 TRUNCATE(x, d) x를 소수점 자릿수 d 까지 버림. POW(x, y) x의 y 거듭제곱 값을 반환 MOD(x, y) x를 y로 나눈 나머지를 반환 GREATEST(x, y, z, ...) 인수 중 가장 큰 값을 반환 LEAST(x, y, z, ...) 인수 중 가장 작은 값을 반환 // 올림 : 크거나 같은 가장 작은 정수 select ceiling(12.2), ceiling(-12.2) from dual; // 13 -12 // 내림 :..
2024.04.14 -
[SQL] SQL 예시 정리
정처기 준비하면서 정리한 SQL문 예시다. 1. DML SELECT SELECT column1, column2 FROM table_name; SELECT 학면, 이름 FROM 학생 WHERE 학년 IN (3, 4); SELECT DISTINCT 학년 FROM R1; //출력의 중복 제거 SELECT * FROM 성적 ORDER BY 수학 DESC 과학 DESC; INSERT INSERT INTO table_name (column1, column2) VALUES (value1, value2); INSERT INTO 학생(학번, 성명, 과목명, 전화번호) VALUES('202101', '임꺽정', '프로그래밍', '010-3456-7890'); UPDATE UPDATE table_name SET column..
2023.08.29 -
2022-03-31 DataBase_2
강의는 MSSQL를 사용해서 진행했다. 아래 예시에서 사용할 릴레이션(테이블)은 아래와 같다. customerTable custid name address phone 1 박지성 영국 맨체스터 000-5000-0001 2 김연아 대한민국 서울 000-6000-0001 3 장미란 대한민국 강원도 000-7000-0001 4 추신수 미국 클리블랜드 000-8000-0001 5 박세리 대한민국 대전 NULL bookTable bookid bookname publisher price 1 축구의 역사 굿스포츠 7000 2 축구아는 여자 나무수 13000 3 축구의 이해 대한미디어 22000 4 골프 바이블 대한미디어 35000 5 피겨 교본 굿스포츠 8000 6 역도 단계별기술 굿스포츠 6000 7 야구의 추억 이..
2022.03.31