728x90
반응형
DML - INSERT
- 테이블에 새로운 레코드를 추가
- INSERT INTO 테이블이름(필드이름1, 필드이름2, 필드이름3, ...) VALUES (데이터값1, 데이터값2, 데이터값3, ...)
- 예제
- insert author(id, name, email) values(1. 'kim', 'abc@naver.com');
- MariaDB에서 문자열은 쌍따옴표가 아닌, 따옴표(')로 감싼다.
- MariaDB에서 명령문은 대소문자를 구분X 그러나 대문자가 관례
- 테이블명, 컬럼명은 소문자가 관례
- 테이블명은 대소문자를 구분
DML -UPDATE
- 테이블 레코드의 내용을 수정
- UPDATE 테이블이름 SET 필드이름1=데이터값1, 필드이름2=데이터값2, ... WHERE 필드이름=데이터값
- 만약 WHERE 절을 생략하면, 해당 테이블의 모든 레코드값이 위 설정대로 수정되므로 유의
- ex) update author set email='abc2@test.com' where id=1;
- 여기서 =의 쓰임새는 2가지
- where문 뒤에 나오는 비교문은 java 기준으로 ==로
- 어떤 값을 set할때도 =을 사용하여 대입 (java =과 동일)
DML - DELETE
- DELETE FROM 테이블이름 WHERE 필드이름=데이터값
- WHERE 절을 생략하면, 해당 테이블에 저장된 모든 데이터가 삭제
- ex) DELETE FROM author WHERE author_id=5;
DELETE, TRUNCATE, DROP 차이
- DROP은 테이블 구조까지 전체 삭제
- DELETE와 truncate의 차이
- delete는 storage까지 삭제하지는 않아 복구가 가능
- delete는 log를 남기
- delete의 삭제속도는 truncate보다 느림
DML - SELECT
SELECT 속성이름 FROM 테이블이름 [WHERE 조건];
- 모든 필드 선택
- select * from member;
SELECT * FROM author WHERE id = 1;
select name, email from author where id=1;
select *from author where id > 1;
select * from author id > 1 AND name = “kim”;
- 프로그래머스 SQL 문제 풀이 (SELECT, WHERE - 어린동물찾기)
- 정렬은 무시해도 좋음, select의 기본이 id로 오름차순 정렬이므로
https://school.programmers.co.kr/learn/courses/30/lessons/59037
INTAKE_CONDITION이 Aged가 아닌 동물을 찾는것.
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION != 'Aged';
- 프로그래머스 sql 문제 풀이 (SELECT, WHERE - 아픈 동물 찾기)
INTAKE_CONDITION이 Sick인 동물을 찾는 것
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = 'Sick';
SELCT 시 중복되는 값제거
- SELECT DISTINCT name from author;
선택한 결과의 정렬
- SELCT 문으로 선택한 결과를 ORDER BY 절을 사용하여 정렬
- 기본설정은 오름차순(ASC)이며, 내림차순 시 DESC
- 여러 필드의 데이터를 쉼표(,)를 사용하여 여러기준으로 정렬할 수도 있음
- order by 생략시 pk를 기준으로 오름차순 정렬하여 결과값 반환
- SELECT *FROM AUTHOR LIMIT number; 반환할 행의 최대 수를 지정
→ select *from author order by id desc limit 2; 로 실무에서 많이 사용
별칭(alias)를 이용하여 처리
- 테이블과 필드에 임시로 별칭을 부여하고, 해당 별칭을 SELECT 문에서 사용
- SELECT 필드이름 AS 별칭 FROM 테이블이름;
- SELECT 필드이름 FROM 테이블이름 AS 별칭;
→ 테이블에 별칭을 지정하는 경우는 두 테이블을 사용할 때 서로 같은 속성이 있는 경우 a.name, b.name 식으로 구분하기 위해 사용
- 프로그래머스 SQL 문제 풀이 (SELECT, ORDER BY - 역순 정렬하기)
SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC;
- 프로그래머스 SQL 문제 풀이 (SELECT, ORDER BY - 여러 기준 정렬하기)
SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME, DATETIME DESC;
- 프로그래머스 SQL 문제 풀이 (SELECT, ORDER BY, LIMIT - 상위 n개 레코드)
SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1;
DML 실습
- 전체 쿼리 작성 후 한번에 실행
- 게시판 회원은 총 5명이 되도록하고, 게시판에 실명으로 글이 쓰여진 게시글은 총 3건, 익명으로 글이 쓰여진 글은 총 2건이 있도록 데이터 insert
USE board;
INSERT INTO author(id, name) VALUES (1, '배');
INSERT INTO author(id, name) VALUES (2, '김');
INSERT INTO author(id, name) VALUES (3, '송');
INSERT INTO author(id, name) VALUES (4, '이');
INSERT INTO author(id, name) VALUES (5, '신');
INSERT INTO post(id, title, contents, author_id) VALUES (1, '가', '하하', 1);
INSERT INTO post(id, title, contents, author_id) VALUES (2, '나', '마마', 3);
INSERT INTO post(id, title, contents, author_id) VALUES (3, '다', '라라', 5);
INSERT INTO post(id, title, contents) VALUES (4, '라', '노노' );
INSERT INTO post(id, title, contents) VALUES (5, '바', '비비');
- 게시판의 회원을 모두 delete하되, 기존에 posting된 글은 삭제되지 않고 남아있또록 하여라. → where author_id ! = null
DELETE 한번에 할 경우 환경설정 필요 → Edit - Preferences - SQL Editor - Other에 Safe Updates 체크 해제
update post set author_id = null where author_id is not null;
delete from author;
- post의 글을 3개만 조회하되, title을 기준으로 오름차순하고 만약 제목이 같은 경우 contents로 내림차순이 되도록 조회
select * from post order by title asc, contents desc limit 3;
Uploaded by N2T
728x90
반응형
'Database' 카테고리의 다른 글
[MariaDB] 제약조건 (0) | 2023.11.22 |
---|---|
[MariaDB] 연산자 (1) | 2023.11.22 |
[MariaDB] 데이터타입 (0) | 2023.11.22 |
[MariaDB] DDL (1) | 2023.11.22 |
[MariaDB] 설치, MariaDB란 (1) | 2023.11.22 |