sql 정리

강한친구·2022년 3월 15일
0

데이터베이스

목록 보기
14/14
post-custom-banner

도움이 되는 사이트

sql을 안만진지 좀 오래된거같아서 (3개월쯤 된거같다)
100번째 글 기념 정리를 좀 해보려고 한다.

DB 는 linux에 설치되어있는 mysql을 사용하도록 하겠다.

database 만들기

데이터베이스를 만들고 그 안에 테이블을 넣는 형식이다.
데이터베이스는

create database <dbname>;

다 만들고나면

show databases

명령으로 볼 수 있다.

보면 알겠지만, database를 하면 오류가 난다. databases이다.

use name_list

를하면 name_list db를 사용하게 된다.

CRUD의 C

create, 즉 테이블을 만드는 역할이다. create table은 기본적으로

create table <table_name> {
column1 datatype constraint, 
column2 datatype constraint, 
};

의 형태로 이루어져 있다. 데이터 타입은

데이터타입

CHAR, VARCHAR, VARCHAR2(mysql 기반은 지원안함), INT(number), DECIMAL, DATE를 사용한다.

이 밖에도 Auto_Increment (자동으로 숫자 넣어줌)이 있다.

제약조건

  • NOT NULL = NULL을 사용하지 않음, 값이 꼭 필요함
  • UNIQUE = 해당 컬럼이 중복값을 허락하지 않음
  • PRIMARY KEY = 기본키 지정
  • FOREIGN KEY = 외래키를 지정할 때 사용
  • CHECK 특정 조건에 맞는 데이터만 받음
  • DAFAULT 입력값이 없으면 디폴트값을 넣음
  • INDEX 인덱스를 지정할 때 사용
create table employee {
	ID int not null,
    name varchar(20) not null, 
    age int not null, 
    grade varchar(20) not null,
    wage int not null
};

만들고나면 이렇게 나온다

수정이나 삭제도 가능하지만, 실제로 pk fk를 주고 테이블끼리 얽히다보면 삭제 및 수정이 쉽지가 않다. 그러니깐 한번에 잘 만드는게 제일 좋다.

CRUD의 R

read의 r이다.

read는 정말 무궁무진한 가능성을 가지고 있다. group by 같은 함수들을 조합해서 쓸 수 있기 때문이다.

일단 기본형은 다음과 같다.

SELECT [ALL|DISTINCT] 열_리스트
FROM 테이블_리스트
WHERE 조건
GROUP BY 열_리스트
HAVING 조건
ORDER BY 열_리스트[ASC|DESC]

select name, age from employee

select 뒤에 있는 것들을 from 뒤에 있는 테이블로부터 가지고온다는 뜻이다.

실제로 어떤식으로 쓰이는지는 여러상황에서 써봐야 익숙해지는것같다.

CRUD의 U

Update를 의미한다.

update <table name>
set field name = data value, field name2 = data value2
where fieldname = data value;

where절 조건이 충족하는 데이터의 set 내용을 바꾼다는 의밍다.

where절이 업사면 전부 바뀐다.

CRUD의 Delete

delete from <table name>
where field name = data value 

where문 조건에 맞는 데이터 삭제

delete from <table name>

테이블 내용 전체 삭제 (테이블은 남아있음)

drop table

테이블 삭제

다만 pk fk등으로 엮여있는 경우 delete가 마음대로 작동하지 않는 경우가 많다. 따라서 설계를 잘 하던가 잘 지우던가 해야한다.

예전에 소규모 sns를 운영하시는분과 이야기를 잠깐 나눈적이 있는데 그분은 pk fk를 안쓰신다고 하셨다.

연습이 생명

sql은 연습이 생명인데 문제는 방대한 데이터를 담은 테이블이 없으면 연습하기가 쉽지 않다. 책이라도 한권 사서 꾸준히 연습해야 될 것 같다.

post-custom-banner

0개의 댓글