괴발개발
[강의 정리] D-50 , DB : 전체 구조 (테이블 add , 칼럼insert delete... etc) 본문
BACK END/DB
[강의 정리] D-50 , DB : 전체 구조 (테이블 add , 칼럼insert delete... etc)
dinoelll 2023. 3. 20. 16:42
목차
- .DB
- table
- 테이블 생성 <데이터 타입>
- 문자타입
- 숫자타입
- 날짜 타입
- 테이블 구조확인, 삭제
- 테이블 구조 확인 : desc test_table;
- 테이블 삭제 : drop table test_table; , truncate table(?) - 테이블 내 데이터 모두 삭제? (테이블 자체를 삭제하는거임)
- 테이블 수정
- 컬럼명 변경 : rename
- 컬럼 추가 : add
- 컬럼 속성 변경 : modify
- 컬럼 삭제 : drop
- 테이블 생성 <데이터 타입>
- columns - 특정 컬럼 내용 수정 - dml(Data Manipulation Language)
- 데이터 삽입 : insert
- 데이터 수정 : update
- 데이터 삭제 : delete - 해당하는 줄 다 없어짐
- upsert -> 🔥key가 있어야 쓸 수 있음!!
- 특정 데이터 조회 + etc : select
- 데이터 조회
- 산술 표현 -> 숫자로 된 놈들은 계산 , 산술이 가능하다 ex) salary/10000, salary*12
- as -> 별칭 가능
- 특정 조건 조회 : where
- *and -> 연산자 사용 안하고 이렇게 바로 가능!
- or
- between , and -> 부등호 쓰기 싫은 사람. * 숫자만 가능
- 중복 제거
- in : 여러 값을 or 하고 싶을 때 (or 대신에) - [OR 조건이 1. 컬럼이 같고, 2. 값만 다른 경우에 IN 이 유리!!]
- is null \ is not null
- like 검색 - %SC%
- order by - asc(오름차순), desc(내림차순)
- group by - sum, avg
- having : group by로 부터 얻어온 결과를 특정 조건으로 추출 하는 것
- 데이터 조회
RUNCATE TABLE
TRUNCATE TABLE
TRUNCATE TABLE
[전체 구조]
1. DB
create mydb를 해서 위에 my db가 생성되었음
2. table
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[데이블 명]
'BACK END > DB' 카테고리의 다른 글
[강의 정리]D-52 DB#3 (join) (0) | 2023.03.22 |
---|---|
[퀴즈 정리]D-51 DB - contraint (0) | 2023.03.22 |
[강의 정리]D-51 DB(contraint - 제약 조건) (0) | 2023.03.21 |
[강의 정리]D-51 pk,fk (연계 참조 무결성 제약 조건) (0) | 2023.03.21 |
[강의 정리]D-50 DB - select 활용 (0) | 2023.03.20 |
Comments