본문 바로가기
728x90
반응형

전체 글86

[MariaDB] 사용자 관리 사용자관리 신규 사용자 생성CREATE USER 'testuser'@'localhost' IDENTIFIED BY ‘testpw’;어떤 곳에서도 원격접속을 가능하도록 하려면 localhost대신 % 기호 사용사용자 목록 조회SELECT * FROM mysql.user;특정DB의 특정테이블에 특정권한 부여GRANT SELECT ON board.author TO ‘testuser'@'localhost';특정DB의 특정테이블에 특정권한 뺏기REVOKE SELECT ON board.author FROM ‘testuser'@'localhost';권한 변경사항 적용FLUSH PRIVILEGES;특정 사용자 권한 조회SHOW GRANTS FOR 'testuser'@'localhost';사용자 삭제DROP USER '.. 2023. 11. 24.
[MariaDB] INDEX INDEX인덱스(index)란?인덱스는 색인과 목차처럼 데이터 검색 속도를 향상시키는데 사용책의 목차에서 원하는 주제를 찾아 해당 페이지로 바로 이동하는 것처럼 DB는 해당 인덱스를 활용하여 테이블의 전체 레코드를 스캔하지 않고도 필요한 데이터를 빠르게 찾음기본적으로 DB는 데이터를 검색할 때 테이블 전체를 탐색해야 하나, 인덱스를 사용하면 테이블의 특정 컬럼 값과 그 레코드의 위치 정보를 보유하고 있어, 테이블 전체를 읽지 않아도 돼 성능 향상일반적으로 인덱스는 B-tree의 자료구조를 가지고, 이는 이진 트리를 확장한 형태로, 한 노드가 두 개 이상의 자식을 가질 수 있는 자료구조이진트리는 최대 2개의 자식 노드를 가지는 구조로. 모두 2개의 자식노드만을 가진 이진트리를 완전이진트리라 부른다.결론은,.. 2023. 11. 24.
[MariaDB] GROUP BY GROUP BY선택된 레코드의 집합을 특정 값으로 그룹화한 결과 집합SELECT 컬럼명 FROM 테이블명 GROUP BY 컬럼명;사용목적데이터의 값을 집계하기 위해주로 집계 함수와 같이 사용(total sum, average 등)아래 excel의 경우 Region을 group화 시켜 통계값 산출→ Region으로 묶을 경우 Items는 여러개지만 출력할 수 없음. 하나의 row로 출력하기 때문집계함수COUNT() : 행의 개수를 세어줌 - null 제외COUNT(*) - 전체 행의 갯수AVG() : 행 안에 있는 값의 평균을 내어줌SELECT round(avg(price), 0) from post; -- 소숫점 자릿수 0개 표시MIN() : 행 안에 있는 값의 최솟값을 반환해줌MAX() : 행 안에 있는.. 2023. 11. 24.
[MariaDB] JOIN JOIN(테이블을 가로로 합침)여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현크게는 INNER JOIN, OUTER JOIN으로 구분INNER JOIN(교집합)두 테이블 사이에 지정된 조건에 맞는 레코드만을 반환. 양쪽 테이블에 모두 해당 조건에 맞는 값이 있어야 결과에 포함tableA의 ID와 tableB의 a_id가 일치하는 ON 조건을 만족하는 데이터만 JOINSELECT * FROM tableA INNER JOIN tableB ON tableA.ID = tableB.A_IDSELECT * FROM tableA AS a INNER JOIN tableB AS b on a.ID = b.a_id; →AS 생략 가능출력결과TableA의 모든컬럼 + TableB의 모든컬럼그 중.. 2023. 11. 22.
[MariaDB] 동시성 이슈 트랜잭션정의트랜잭션이란 하나의 논리적인 작업 단위로 처리되어야 하는 하나 이상의 SQL 문의 집합예시1) 은행 계좌 간에 이체를 할 때, 금액을 한 계좌에서 빼고 다른 계좌에 더하는 두 가지 연산은 한 작업의 단위로 처리되어야 하는 트랜잭션→ A 고객의 계좌에서 10만원을 빼서 B고객의 계좌에 옮기는 경우, UPDATE 두가지가 필요→ 이때 A 고객 계좌에서 빼는건 성공, B고객의 계좌에 더하는건 실패한다면 문제가생김→ 따라서 이 두 UPDATE 쿼리 중 하나라도 에러가 발생하면 모두 취소시키기 위해 트랜잭션으로 묶어야 한다.예시2) 주문을 하고 order테이블에 주문을 생성하고, item테이블에서 재고까지 빼주는 작업이 한 단위로 처리되어야 하는 트랜잭션→ order INSERT, item UPDATE.. 2023. 11. 22.
[MariaDB] 흐름제어 흐름제어CASE valueWHEN [compare_value1] THEN result1WHEN [compare_value2] THEN result2…ELSE result3ENDCASE와 END로 이루어져있고, 원하는 조건내에 존재하지 않으면 ELSE문을 타고, ELSE문이 없을 경우 null을 return실습post 테이블에서 id, title, contents, 그리고 author_id의 경우 author_type이라는 이름으로 조회author_id가 만약 1이면 first_author, 2이면 second_author로 조회가 되도록 하고 3 이상 그외의 경우 etc_authors로 조회하도록 하여라.case when 사용하여 출력if문 사용하여 동일하게 출력post 테이블SELECT id, titl.. 2023. 11. 22.
[MariaDB] 제약조건 제약조건(constraint)데이터를 입력받을 때 실행되는 검사 규칙CREATE 문으로 테이블을 생성 또는 ALTER 문으로 필드를 추가할 때 설정NOT NULUNIQUEPRIMARY KEY → NOT NULL, UNIQUE, 한 테이블당 1개FOREIGN KEY 제약조건-NOT NULLdefalut값은 nullablenot null 제약조건이 설정된 필드는 무조건 데이터를 가지고 있어야 한다.CREATE TABLE author (id INT NOT NULL,name VARCHAR(30),…);ALTER문을 써서 post의 title을 not null 조건으로 바꿔보자이미 NULL인 데이터는 삭제기존 테이블 정보변경 후AUTO_INCREMENT새로운 레코드가 추가될 때마다 1씩 증가된 값을 저장 적용 후.. 2023. 11. 22.
[MariaDB] 연산자 비교 연산자=→ select *from post where id = 1;! =, (같지않음)→ select *from post where id != 1;→ select *from post where id 1;, > =→ select * from author where age > 3;IS NULL, IS NOT NULL (is 대신 =는 불가능)BETWEEN min AND max피연산자의 값이 min 값보다 크거나 max보다 작으면 참을 반환 (이상, 이하-min,max값 포함)IN(), NOT IN()→ select * from post where id not in(1,2,3); 논리 연산자AND&&도 가능SELECT * from author where name = ‘홍길동’ AND age=20;→ 이름.. 2023. 11. 22.
728x90
반응형