괴발개발

[강의 정리] D-50 , DB : 전체 구조 (테이블 add , 칼럼insert delete... etc) 본문

BACK END/DB

[강의 정리] D-50 , DB : 전체 구조 (테이블 add , 칼럼insert delete... etc)

dinoelll 2023. 3. 20. 16:42

 

목차 

  1. .DB
  2.  table
    1.  테이블 생성  <데이터 타입>
      1.  문자타입
      2. 숫자타입
      3. 날짜 타입
    2.  테이블 구조확인, 삭제
      1. 테이블 구조 확인 : desc test_table;
      2. 테이블 삭제 : drop table test_table; , truncate table(?) - 테이블 내 데이터 모두 삭제? (테이블 자체를 삭제하는거임)
    3. 테이블 수정
      1. 컬럼명 변경 : rename
      2. 컬럼 추가 : add
      3. 컬럼 속성 변경 : modify
      4. 컬럼 삭제 : drop
  3. columns - 특정 컬럼 내용 수정 - dml(Data Manipulation Language)
    1. 데이터 삽입 : insert
    2. 데이터 수정 : update
    3. 데이터 삭제 : delete - 해당하는 줄 다 없어짐
    4. upsert -> 🔥key가 있어야 쓸 수 있음!!
    5. 특정 데이터 조회 + etc : select
      1. 데이터 조회
        1. 산술 표현  -> 숫자로 된 놈들은 계산 , 산술이 가능하다 ex)  salary/10000, salary*12
        2. as -> 별칭 가능
      2. 특정 조건 조회 : where
        1. *and -> 연산자 사용 안하고 이렇게 바로 가능!
        2. or
        3. between , and -> 부등호 쓰기 싫은 사람. * 숫자만 가능
      3. 중복 제거
      4. in :  여러 값을 or 하고 싶을 때 (or 대신에) -  [OR 조건이 1. 컬럼이 같고, 2. 만 다른 경우에 IN 이 유리!!]
      5. is null \ is not null
      6. like 검색 - %SC%
      7. order by - asc(오름차순), desc(내림차순)
      8. group by - sum, avg
      9. having : group by로 부터 얻어온 결과를 특정 조건으로 추출 하는 것
RUNCATE TABLE
TRUNCATE TABLE
TRUNCATE TABLE

 

 

 

 

 

    

 

 

 

 

[전체 구조]

1. DB

create mydb를 해서 위에 my db가 생성되었음

 

2. table

이런식으로 테이블을 추가할 수 있다.
새롭게 추가된 employees의 모습

3. 컬럼

 

4. 컬럼 세부 내용(select * from employees)

 

[table, calunm 추가]

/*테이블은 특정 데이터베이스 안에 존재 한다.*/
show databases; -- 현재 존재하는 데이터 베이스
create database mydb; -- mydb 라는 데이터베이스 생성
use mydb; -- mydb라는 데이터베이스를 사용 한다.

show tables; -- 현재 데이터 베이스 내 테이블 목록 보기

-- 1. 테이블 생성
-- CREATE TABLE [테이블 명](
-- [컬럼 명] [데이터 타입](사이즈),
-- ...
-- [컬럼 명] [데이터 타입](사이즈)
-- );

/*데이터타입 종류(자주 쓰는 일부)*/
-- 1) 문자 타입
-- 고정형 char(바이트 수) - 조심해야 함.(남( ) 하고 공백 나올 수도 있음)
-- 가변형 varchar(바이트 수) -속도가 조금 느릴 수도 있음(하지만 굉장히 편리해서 많이 사용함)
-- text : 65,535 byte
-- longtext : 4,294,967,295 byte

-- 2) 숫자 타입
-- int, bigint, float, double
-- 3) boolean

-- 3) 날짜 타입
-- date              <- 0000-00-00
-- datatime        <- 0000-00-00 00:00:00   
-- timestamp      <- datetime과 같지만 서버의 timezone 에 따라 시간이 변경 된다.

create table test_table ( -- 스테이크 , 데이터베이스 몇며 은 카멜이 안된다.!
	user_name varchar(50),
	age int(3), -- 자리수. 999 넘는 사람은 없겠지.
	mobile varchar(13),
	reg_date date default current_date -- 현재 날짜를 기본으로! , dafault는 누구라고??
);

-- 테이블 구조 확인
desc test_table;

-- 테이블 만들기
-- 테이블 명 : employees
-- emp_no      :숫자형 3자리
-- first_name : 문자형 8자
-- last_name  :문자형 2자
-- emai          : 문자형 50자
-- mobile       :문자형 13자
-- salary        :숫자형 8자
-- reg_date    : 날자형 (기본 입력)

-- 한글은 2바이트 영어는 1바이트로! 계싼

create table employees (
	
	emp_no int(3),
	first_name varchar(16),
	last_name varchar(4),
	email varchar(50),
	mobile varchar(13),
	salary int(8),
	reg_date date default current_date
);

show tables;

-- 테이블 삭제 (완전히 삭제)
-- DROP TABLE [테이블 이름]
drop table test_table;

-- 테이블 내 데이터를 모두 삭제(완전히 삭제)
-- 테이블 자체를 삭제 -> 재생성
-- TRUNCATE TABLE[데이블 명]
 
-- 3. 테이블 수정
    -- 1) 컬럼명 변경(기존 데이터가 삭제되니 주의!!)
    -- 2) 컬럼 추가(그나마 안전.)
    -- 3) 컬럼 속성 변경
    -- 4) 컬럼 삭제

*그래서 컬럼명 변경하려면 , 하나 더 복제해서 그걸 이름을 바꾸고 원래 꺼 삭제하면 됨. 

-- 1) 컬럼명 변경(기존 데이터가 삭제되니 주의!!)
--  ALTER TABLE [테이블 명] RENAME COLUMN [기존이름] TO [새이름]
alter table employees rename column last_name to family_name;
desc employees;

-- 2) 컬럼 추가
-- ALTER TABLE [테이블 명] ADD([컬럼명][데이터타입](사이즈))
alter table employees add(depart_no varchar(10));
alter table employees add(commission varchar(10));
alter table employees add(etc varchar(10));
desc employees;

-- 3) 컬럼 속성 변경 : 컬럼속성 변경은 컬럼이 비어있어야 한다.(지워놓기전에 깔끔하게 비워놔야 함.)
-- ALTER TABLE [테이블 명] MODIFY COLUMN [컬럼명] [데이터타입](사이즈)
-- float(전체자리, 그 중 소수점 자리) -> 00.00 일 경우 (4,2)
alter table employees modify column commission float(4,2);
desc employees;

**concat(truncate(salary/10000,0),'만원') as salary  이런식으로 응용도 가능

-- 4) 컬럼 삭제
-- ALTER TABLE [테이블 명] DROP COLUMN [컬럼명] ddl(만드는거), dcl, 어쩌구가 많네
alter table employees drop column etc;
desc employees;

 

[칼럼 수정]

use mydb;
show tables;
desc employees;
-- 1. 데이터 삽입(INSERT)
-- INSER INTO [테이블명]([컬럼명,... 컬럼명,...])VALUES([값, 값,...])
-- (항목과 짝이 맞아야 한다. ),(문자열은 '' 이걸로!)
insert into employees(emp_no, first_name, family_name, email, mobile, salary, depart_no, commission) 
	values(111, '지훈' , '김' , 'zer0box@naver.com','01020343054','99999999','dev_001',90);
insert into employees(emp_no, first_name, family_name, email, mobile, salary)
	values(112, '태근' , '김' , 'email@naver.com','01020343054',99999999);

insert into employees(emp_no, family_name, email, mobile, salary)
	values(112, '김' , 'email@naver.com','01020343054',99999999);

select * from employees;

-- 2. 데이터 수정 (UPDATE)
-- UPDATE [테이블명] SET [컬럼] = [이름] WHERE [조건]
update employees set depart_no = 'dev002' where depart_no is null;

-- commission 이 null이면 10을 바꿔주자

update employees set commission = '10' where commission is null;

-- 3. 데이터 삭제(DELETE)
-- DELETE FROM [테이블 명] WHERE [조건]
delete from employees where first_name is null;

select*from employees;

-- 4. 값이 없으면 INSERT, 있으면 UPDATE 하기
-- UPSERT 라고 부른다.(명령어 아님)
-- 다만 제약조건이 있어야 하므로 제약 조건 이후에다시 다룰 예정

 

*** 데이터 삭제(delete)는 

그 해당하는 데이터 줄 다 삭제해버림

(ㅠㅠㅠ  이걸로 데이터 다 삭제해버리면 어떡함 .ㅠㅠㅠㅠㅠ)

delete from employees where depart_no is null;

null인거 다 삭제함.

 

q. 그 딱 해당하는 데이터만 없애고 null만 만드는건 없나?

 

<테이블 삭제>

drop랑

drop table 

 

<컬럼 삭제>

 

 

alter table text_table drop column user_name; 

 

 

<데이터 삭제>

delete

delete from emplyees where depart_no is null;

 

 

+<전체 데이터 삭제>

-- TRUNCATE TABLE[데이블 명]

Comments