CRUD_DB

miin·2021년 4월 20일
0

DataBase

목록 보기
1/10
  • INT: 정수형

  • DOUBLE: 실수형

  • VARCHAR: 문자형

  • NOT NULL: 빈값일 수 없음

  • AUTO_INCREMENT: 숫자가 자동으로 증가

  • PRIMARY KEY:고정키

  • DESCRIBE 테이블명: 생성된 테이블 상세정보 확인

  • flush privileges: 새로고침

DDL
(CREATE/ALTER/DROP)
DML
(INSERT/SELECT/UPDATE/DELETE)-CRCD
DCL
(GRANT/REVOKE)

열(세로) column
행(가로) row
표 table
테이블 생성 create
테이블 삭제 drop
테이블 수정 alter
데이터 입력 insert
데이터 삭제 delete
데이터 수정 update
검색/확인 select
** 모든 컬럼 불러오기
특정 컬럼명만 출력하고 싶다면 컬럼명 위치에다 출력 하고자 하는 컬럼명을 ,로 연결

컬럼=필드=속성 모두 같은말

고정길이 문자 n개 char2(n)
핸드폰번호,생일 등
가변길이 문자 n개 nvarchar2(n)
저장할 데이터에 알파벳과 숫자만 들어가는 경우 VARCHAR2 권장
저장할 데이터에 한글이 포함되는 경우 NVARCHAR2 권장
가변길이가 들쑬날쑥한 문자열은 varchar2()를 쓰는게 공간효율적이다 (전부 이걸로 쓰면 느릴수 있음)

length 문자의 갯수를 알려줌
lengthb 문자의 바이트를 알려줌
한글은 한글자당 3바이트
한글같은경우는 nchar()을 쓰는것이 효율적이다
clob 대용량텍스트 데이터타입 최대 4gbyte

명령어 : 소/대문자 상관없음
값 : 소/대문자 상관있음

+-38자리 정수와 실수 number
n자리 정수 number(n)
총m자리인데 소수점이 n자리인 실수 number(m,n)
날짜를 저장('YYYYMMDDHH24MISS') date 현재시간:sysdate
시간데이터 변경 to_date
to_date('1992:04:22 14:05:23', 'yyyy.mm.dd hh24:mi:ss')
저장할 데이터가 없을때 null
문자는 따옴표''사용
작업 취소 rollback;
작업 적용 commit;
현재 데이터베이스에 있는 테이블정보 출력 select * from tab
human 테이블 상세내용 출력 desc human;

  • 현재 로그인된 계정: show user
  • 전체 유저: select * from all_users;
  • 전체 테이블: select * from tables;

1.테이블 생성(create)

  • 예약어로 테이블명을 만들고 싶다면 따옴표붙임 ""
    create table 테이블명(
    컬럼명 자료형, (같은 테이블에는 같은 자료형을 사용할 수 없다)
    컬럼명 자료형
    );
mysql> CREATE TABLE 테이블명 (
    -> id int NOT NULL auto_increment primary key,
    -> name VARCHAR(15) NOT NULL,
    -> phone VARCHAR(15) NOT NULL
    -> );
  • 원래 있던 테이블과 동일한 테이블을 만들때
    create table 새로만들 테이블 as select * from 원래있던 테이블;

특정 table 이나 view의 구조를 확인할때
desc 테이블명

2. 데이터입력(insert)

insert into 테이블명(컬럼명) values(들어갈값)
ex)
insert into human(name,age,height,birthday) values
('홍길동', 30,152.1, to_date('2000:02:28 00:00:00','yyyy.mm.dd hh24:mi:ss));
insert into human values
('홍길남', 31,156.1, to_date('2001:02:02 00:00:00','yyyy.mm.dd hh24:mi:ss));

모든입력/작업이 끝나면 반드시 commit을 기술해 줘야한다
저장개념. 필수

데이터 삽입시 원하는 컬럼만 넣고싶을때
insert into 테이블명(컬럼1,컬럼2) values('값1','값2');

원하는 컬럼에 데이터를 저장하기
insert into 새로운테이블 select * from 원래테이블 where 컬럼 = '데이터';

3. 데이터 검색, 조회(select)

  • SELECT 컬럼명1, 컬럼명2, .. FROM 테이블명;
  • 테이블 전제 값 조회: SELECT * FROM 테이블명;
  • 특정 값 조회: SELECT name FROM 테이블명;
  • ASC: 오름차순
  • DESC: 내림차순
  • ORDER BY: 정렬 조건 입력
    SELECT * FROM 테이블명 ORDER BY id DESC;
    select 컬럼명 from 테이블명; 테이블명에 컬러명 데이터를 출력한다
    컬럼선택에는 검색하고 싶은 컬럼명을 , 로 구분하여 작성
    원하는 데이터만 출력하고 싶다면 where절을 사용
    홍길남만 출력하고 싶을때 select from human where name ='홍길남';
    나이가 25보다 큰 사람들의 정보를 출력하고 싶다면 select
    from human where age>25;
    키가 150보다 작은사람의 이름과 생일을 출력해보자
    select name,birthday from human where height<150;
    중복없이 출력할때 distinct
    (ex 같은부서가 여러개일때 간추려서 있는 부서만을 원할때)

4.데이터변경(update)

update 테이블명 set 컬럼명 = 변경값;
update 다음에 변경할 테이블명을 기술하고 set다음에 변경할 컬럼과 내용을 기술한다.
human 테이블의 age를 100으로 변경해보자
update human set age=100; human테이블의 모든 데이터가 100으로 변경됨
select * from human;를 실행시키면 변경된 모든 데이터를 확인 할 수 있다. 하지만, 실제 데이터를 변경할 때는 특정 데이터만 변경하지 모든 데이터를 변경하는 일은 없다.
특정 데이터만 변경하기
update human set age='100' where id = '특정컬럼';
commit후 rollback은 적용안됨

5.컬럼 추가 (alter)

이게 FM이지만 요즘은 편집도구를 이용해 변경한다

컬럼추가(add)

alter table 테이블명 add 컬럼명 varchar(00) after 컬럼명;

  • age 뒤에 name(varchar(15) not null)을 추가함
    ALTER TABLE test add name VARCHAR(15) NOT NULL after age;

컬럼변경 (modify)

alter table 테이블명 modify column 컬럼명 varchar(00) null;

컬럼 이름까지 변경 (change)

alter table 테이블명 change column 컬럼1 컬럼2 varchar(00) null;

컬럼삭제(drop)

alter table 테이블명 drop column 컬럼;

테이블 이름변경(rename)

alter table 테이블명 rename 변경할테이블명;

6.삭제 (delete)

원하는행을 삭제한다
delete from 테이블명 where 삭제할 조건;

delete from testTable where name='홍길순';

delete 다음에 from은 생략가능하고 삭제하고 싶은 테이블명을 입력하면 됨
human테이블에 모든 데이터를 삭제해보자
delete human; select * from human;
ex)나이가 30보다 큰 사람의 데이터 삭제
delete human where age>30;
테이블 삭제
drop table 테이블명; 데이터베이스에서 해당 테이블을 삭제한다
drop table human;

  • AND : 조건 값이 모두 TRUE를 반환
DELETE FROM A 
WHERE no = :no AND feature = :feature`;
  • a 테이블에 받은 feature_no와 member_no인 no의 row 삭제
DELETE FROM a WHERE no IN (
SELECT no FROM a WHERE member_no = :memberNo AND feature_no = :feature_no)

0개의 댓글