분류 전체보기 19

13. DB - (LIMIT)

LIMIT은 SQL에서 결과 행(Row)의 개수를 제한하는 데 사용한다.-- 0부터 5개select * from employees limit 5;select * from employees limit 0, 5;select * from employees limit 5 offset 0;-- 다음 5개는 어떻게?select * from employees limit 5, 5;select * from employees limit 5 offset 5;-- 데이터 정렬 후 -> 내용을 가져오면 조금 더 수월select e.emp_no , e.first_name , e.family_name , e.emailfrom(select * from employees order by emp_no) e limit 5 offset 5..

개발/DB(MariaDB) 2025.03.18

12. DB - (auto_increment)

AUTO_INCREMENTauto_increment 는 자동 증가하는 속성이다.중복되지 않는 컬럼에 사용되며 키 설정이 되어있어야 사용 가능하기에 PK에 자주 사용된다. -- 생성법 1 : 테이블 생성시 -- 생성법 1 : 테이블 생성시create table auto_inc( no int(10) primary key auto_increment , name varchar(50) not null);select * from auto_inc;insert into auto_inc (name) values ('kim');insert into auto_inc (name) values ('lee');insert into auto_inc (name) values ('park'); -- 생성법 2 : 이미 생성된 테이블에..

개발/DB(MariaDB) 2025.03.18

11. DB - (VIEW)

VIEW뷰는 여러 테이블을 모아서 만든 가상의 테이블이다.복잡한 조인이나 서브쿼리를 이용해 한번 만들어 두면, 이후 사용자들은 편리하게 사용할 수 있다.뷰는 자신만의 인덱스를 가질 수 없다. 1) 뷰 생성 문법-- CREATE [OR REPLACE] VIEW [view name] AS [sub query] -- or replace : 중복되는 이름이 있을 경우 뷰를 덮어 쓴다 -- 서브쿼리 내용을 변경하고 싶을 때 주로 사용create view vw_emp as select e.ename, d.deptname from emp e, dept d where e.deptno = d.deptno; -- 이제 복잡한 서브쿼리 없이 데이터를 확인할 수 있다select * from vw_emp; 2) 뷰에서 보..

개발/DB(MariaDB) 2025.03.17

10. DB - (INDEX)

INDEXindex는 DB 에서 검색속도를 빠르게 하기 위해 사용한다.인덱스는 테이블의 열에 대한 정보를 미리 정리해서 저장하여, 쿼리 실행 시 데이터 검색을 더 빠르게 만들어준다. index 의 특징1. 검색 속도가 빨라진다.2. 인덱스 생성에 시간과 공간 필요.3. 삽입/갱신/삭제가 빈번히 일어날 경우 성능 저하. index 가 필요한 경우: 데이터가 많을 경우,  join 이 많이 사용된 경우index 가 필요하지 않은 경우 : 데이터가 적을 경우, 삽입/갱신/삭제 가 빈번히 일어나는 경우 index 의 종류1. 고유(unique) 인덱스2. 비고유(none-unique) 인덱스3. 결합(combination) 인덱스   1) 고유(unique) 인덱스-- 중복되지 않는 데이터를 대상으로 걸 수 있..

개발/DB(MariaDB) 2025.03.17

9. DB - (EXISTS, ANY, ALL)

EXISTSexists 는 서브쿼리에 결과 중에서 만족하는 값이 하나라도 있으면 true(1), 아니면 false(0) 를 반환한다.exists 는 데이터 확보후 작업하므로 속도에 이점을 가진다.exists 는 in 과 비슷한데, in은 IN : 동일 컬럼의 OR 조건을 수행할 때 사용, = 비교만 가능(크다 작다 안됨) 서브쿼리가 먼저 실행되고 이후 메인쿼리가 실행되는 구조-- or 사용select ename, job from emp where deptno = 2 or deptno = 4;-- in 사용select ename, job from emp where deptno in (2, 4);-- 회사의 위치가 LA 또는 BOSTON 인 곳에서 근무하는 사원의 이름과 직책select ename, job ..

개발/DB(MariaDB) 2025.03.17

8. DB - (JOIN)

JOINjoin 이란 테이블 두개를 하나 이상의 공통 컬럼을 이용해서 합치는 것.주로 부모-자식 관계에서 많이 일어나지만, 공통 컬럼만 있다면 부모자식이 아니어도 상관 없다. JOIN 의 종류cross join크로스 조인은 두 테이블에 대해 카테시안 곱을 수행한다.카테시안 곱이란 두개 이상의 테이블을 조인할 때, 모든 행을 서로 곱하는 것이다.따라서 emp테이블(10) * dept테이블(4) = 40 이 나오게 된다.크로스 조인은 cross join 이라는 명령어를 생략해도 된다.select * from emp e cross join dept d;-- cross join 은 생략 가능select * from emp e, dept d; 크로스 조인은 정제되지 않은 형태이므로 일반적으로 많이 쓰이지는 않는다..

개발/DB(MariaDB) 2025.03.17

7. DB - (서브쿼리)

서브쿼리서브쿼리란 쿼리 안에 쿼리가 들어가 있는 형태이다.주로 where, select, from 절에서 사용된다.서브쿼리의 특징으로는내부에 또 다른 SELECT문을 포함 → (SELECT ... FROM ... WHERE ...)메인 쿼리의 일부 데이터를 제공 (보조 역할)단일 값 또는 다중 행 반환 가능독립적으로 실행될 수 있음 (단, 상관 서브쿼리는 예외)-- 각 부서명과 그 부서의 인원이 몇 명인가?select deptname , (select count(deptno) from emp where deptno = d.deptno) as cntfrom dept d; 테이블 뒤에 붙는 d 는 별칭이다. 이 쿼리문에서는 emp 테이블에도 deptno가 있고,dept 테이블에도 deptno가 있기 때문에,..

개발/DB(MariaDB) 2025.03.17

6. DB - (key)

key데이터베이스에서 키(Key) 는 테이블에서 각 행(레코드)을 고유하게 식별하는 역할을 한다.키의 종류는 기본키, 후보키, 대체키, 왜래키, 복합키, 슈퍼키가 있다. 기본키(Primary Key, PK)기본키는 중복되지 않고, NOT NULL 이다.한 테이블에 하나만 설정 가능하다.또한 테이블에 종속적이다(키 하나 만들면 하나의 테이블에서만 사용해야한다)여러 컬럼을 엮어서 만들 수도 있다.-- 1. 테이블 생성시 생성create table pk_test( first_col int(3) , second_col varchar(4) , primary key (first_col););-- 2. 테이블 생성후 생성-- ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건 타입] (적용 ..

개발/DB(MariaDB) 2025.03.17

5. DB - (트랜잭션)

트랜잭션트랜잭션이란 DB에 상태를 변경시키는 작업 단위이다.즉, 한꺼번에 실행되어야 할 연산들의 모음이다.트랜잭션은 하나 이상의 쿼리를 포함해야 한다.트랜잭션에서는 commit과 rollback 이 있다.commit : 모든 작업들을 정상 처리하겠다고 확정하는 명령어. 처리 과정을 DB 에 저장.rollback : 작업 중 실수를 했을 경우, 변경사항을 취소하고 이전으로 돌아가는 명령어. 트랜잭션 전역 설정기본적으로 mysql이나 mariadb는 디폴트값으로 autocommit이 켜져 있다.즉, 쿼리문을 하나 실행할 때마다 자동으로 commit이 된다는 것이다.이러한 autocommit을 확인하는 명령어는select @@autocommit; 이렇게 입력하고 실행했을 때, 1이 나온다면 autocommit..

개발/DB(MariaDB) 2025.03.17

4. DB - (DML-2, ORDER BY, GROUP BY, HAVING)

중복 제거 DISTINCT-- SELECT DISTINCT [출력할 컬럼, ...] FROM [테이블명];-- DISTINCT 이후의 컬럼에 대한 중복을 제거select salary, family_name from employees;select distinct family_name from employees;-- 중복 제거의 경우 하나의 컬럼만을 대상으로 하는 것이 가장 효과적이다.select distinct family_name, salary from employees order by family_name, salary; IN (OR 조건을 대신하여 사용)-- OR 조건에 사용되는 컬럼들이 전부 동일해야 함-- SELECT [컬럼, ...] FROM [테이블명] WHERE [컬럼] IN (값, ...)..

개발/DB(MariaDB) 2025.03.17