일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ai_캠프
- team_project
- chromeextention
- django
- 머신러닝
- seaborn
- streamlit
- 오블완
- pytorch
- pandas
- Github
- ai 캠프
- sLLM
- 파이썬
- EC2
- 로컬 런타임
- 티스토리챌린지
- aws
- lightsail
- 정치기 필기
- conda
- Jupyterlab
- mysql
- ML
- finpilot
- Python
- djangorestframework
- mifare
- ollama
- ai캠프
- Today
- Total
greatsangho의 이야기
캠프 9일차 - SQL 기본 본문
sql 쿼리(명령어)는 대소문자를 구분하지 않는다
가독성을 높이기 위해 구분하여 적을 수 있다
항상 마지막에 세미콜론(;)을 붙여준다
주석은 --로 표기한다
기본문법
Select ~ from 데이터 읽기
select * from exampletbl;
다음과 같이 select ~ from 구문을 사용한다
* 은 행 전체를 의미하고 DB안 table에서 가져온다는 의미이다
하나씩 가져오기 위해서는 * 대신 열 이름을 ,로 구분해서 적는다
https://dev.mysql.com/doc/refman/8.4/en/select.html
MySQL :: MySQL 8.4 Reference Manual :: 15.2.13 SELECT Statement
15.2.13 SELECT Statement SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_referenc
dev.mysql.com
select는 다음과 같은 규칙이 있으며
순서는
select
~ from
~ where
~ group by
~ having
~ order by
의 순서를 지켜서 사용해야 한다
특정 조건을 추가하기 위해 where 문이 붙는다
select * from bookstoretbl where bookname = 'SQLD';
다양한 연산자와 and or not을 이용할 수 있다
해당 값이 있는지 확인하기 위해 where ~ in ~을 사용할 수 있다.
like 연산자의 경우 문자열에 해당 단어가 있는지 확인할 수 있게 도와준다
select id, name from testtbl where name like '김%';
김% - 김으로 시작하는 단어
%김% - 김이 들어가는 단어
%김 - 김으로 끝나는 단어
뷰 - 가상의 테이블로 테이블을 링크해 놓아 실체가 없는 테이블이지만 실제 테이블과 같이 작동한다
데이터베이스 아래 탭에 Views 탭에 생성되고 기본 테이블을 이용하듯이 사용하면 된다
create view v_testtbl
as
select testname testaddr from testtbl;
과 같이 만들 수 있다
Use db사용
use exampleDB;
Show tables 테이블 이름 볼 때
show tables;
열 이름에 별칭을 붙일 때는 as를 사용한다
Create 만들 때
create table peopletbl
(
id int auto_increment not null primary key,
name varchar(3) not null,
height smallint,
birthInfo date null
);
auto_increment는 자동으로 db추가에 따라 숫자를 증가시켜준다
not null은 null 값이 저장될 수 없음을,
primary key는 중복되지 않는 key 값을 의미한다.
삭제에는 drop 구문을 사용한다
drop database if exists bookrental; -- db를 삭제할 때
drop table if exists testtbl; -- 테이블을 삭제할 때
if 문을 붙여 db가 있을 때에만 삭제할 수 있다
db는 여러 테이블 간 관계가 중요하다
개념적 모델링, 논리적 모델링, 물리적 모델링 순으로 db 모델링이 진행된다
고객이 방문하여 물건을 샀을 때 두 테이블을 연관 지으면
고객이 물건을 소유하기에 고객 테이블이 부모 테이블, 물건 테이블이 자식 테이블이 된다
이를 ERD(Entity Relationship Diagram)으로 나타낼 수 있다.
고객이 여러 종류의 물건으 살 수 있으므로 1:N 관계로 이어준다
ERD은 File 탭의 New Model에서 Add Diagram으로 만들 수 있다.
왼쪽에서 표 모양인 Place new table을 클릭해서 배치하고
table안에 열이름을 추가하면 된다.
PK는 primary key,
NN은 not null,
AI는 auto increment 이다.
서브쿼리
퀴리 안 쿼리
Order by ~ DESC/(ASC)
select ~ from ~ order by ~
구문으로 기본이 오름차순, DESC가 붙으면 내림차순이다.
Distinct
테이블 값 중 중복되는 것을 제거한다
select distinct ~ from ~
limit
출력 개수 제한
create table newtbl (select * from testtbl);
테이블 복사
group by <열이름>
데이터의 그룹화
집계 함수(Aggregaet function)
주로 group by와 함께 사용, 데이터를 집계한다
avg(), min(), max(), count(), count(distinct), stdev(), var_samp()
As ~
col 이름을 바꾸어 보여준다
Having <집계함수> <조건>
집계 함수를 사용할 때 조건은 where가 아닌 having을 group by 뒤에 적는다
with roll up
group by로 묶인 항목들에 대한 각각의 합계 및 총합 표시
SQL문의 분류
DML - 데이터 조작, select, insert, update, delete, 트랜잭션 발생
DDL - 개체를 변경, create, drop, alter, 트랜잭션 없이 바로 적용
DCL - 권한 부여, grant, revoke, deny
insert into <tableName> values ('a',10,...);
데이터 삽입
auto_increment
데이터 자동 증가
update <tableName>
set 열 = 값
where 조건;
데이터 수정
delete from <tableName> where 조건;
데이터 삭제
with 절
임시 테이블 만들어 활용, 만들어진 테이블은 쿼리 실행 후 사라짐
With <tableName>(열 이름1, ...)
as
(
<쿼리>
)
select <열이름> from <tableName>
with문을 여러개 작성할 경우 처음만 with문을 사용한다
'프로그래밍 > SK AI 캠프' 카테고리의 다른 글
캠프 13일차 ~ 14일차 - 1차 단위 프로젝트 진행 (0) | 2024.09.07 |
---|---|
SKN AI 캠프 2주차 (1) | 2024.09.02 |
캠프 8일차 - MySQL 설치 (3) | 2024.08.30 |
캠프 7일차 - 파이썬 총정리 (2) | 2024.08.30 |
캠프 6일차 - 파이썬 클래스의 추가적인 구문 (0) | 2024.08.27 |