Linux/SQL

[DBMS] DML 명령어 정리 (데이터 생성/조회/수정/삭제)

GGkeeper 2021. 11. 28. 07:52

DATA 생성 1

테이블의 모든 컬럼에 데이터 입력할 경우

입력할 데이터는 반드시 컬럼의 순서와 개수가 일치해야 함

mysql> insert  into <테이블명> values (입력데이터 , …) ;

insert into kh_mem values('','test','qwer1234','테스터',25,now());

DATA 생성 2

특정 컬럼을 지정해서 데이터 입력할 경우

앞에 입력한 컬럼명과 입력데이터의 순서와 개수가 일치해야 함

mysql> insert  into <테이블명> (컬럼명 , …) values (입력데이터 , …) ; 

DATA 생성 3

특정 컬럼을 지정해서 데이터 입력할 경우

mysql> insert  into <테이블명> set <컬럼명> = <입력데이터> [ , ... ] ; 


DATA 조회 1

테이블 내 모든 데이터 조회

테이블에 저장된 컬럼 순서대로 조회

mysql> select  *  from <테이블 명>;

 

DATA 조회 2

특정 컬럼을 지정해서 조회

컬럼 순서는 테이블에 저장된 순서가 아닌 조회할 때 지정한 순서로 조회 됨

mysql> select  <컬럼명 [ , ... ] > from <테이블 명>;

 DATA 조회 3

조건을 지정해서 원하는 데이터만 조회

조건은 기본 연산자를 이용해 지정 가능

조건이 여러 개인 경우 논리연산자(and , or) 를 이용해 하나의 결과 값으로 만들어 줘야 함

mysql> select  <컬럼명 [ , ... ]> from <테이블 명>  where  <조건>;

 



DATA 수정

주의! where 로 조건을 지정하지 않으면 테이블 내 모든 레코드의 값이 변경됨

mysql> update <테이블명> set  <컬럼명> = <수정데이터> [ , ... ] [ where <조건> ] ;

아이디 test3의 패스워드를 1q2w3e4r 로 나이를 31살로 수정한다.


DATA 삭제

where 로 조건을 지정하지 않으면 테이블 내 모든 데이터가 삭제됨

mysql> delete  from <테이블명> [ where <조건> ] ;

2번 데이터를 삭제한다.


DATA 조회 - 데이터 자르기

테이블 내 조회된 데이터가 반환할 레코드 지정

mysql> select  *  from <테이블 명> limit [개수];

mysql> select  *  from <테이블 명> limit [개수] offset [위치];

mysql> select  *  from <테이블 명> limit [위치],[개수];

 

>>  limit 개수를 지정해주면, 해당 개수만큼 테이블에서 출력되며, 위치와 개수를 지정하면 해당 위치에서 다음 개수만큼 출력이 된다. 여기서 위치를 지정해 줄때 원하는 위치에서 -1 값을 주어야한다. 

5번째 위치에서 10개를 모든 내용을 출력하고자 한다면

select * from Table limit 4,10;  또는 select * from Table limit 10 offset 4; 


DATA 조회 - 정렬

테이블 내 조회된 데이터를 지정된 컬럼을 기준으로 정렬

mysql> select  *  from <테이블 명> order by [정렬 기준 컬럼] [DESC | ASC];

 

>> 테이블에서 번호 순서대로 정렬하고자 한다면

select * from Table order by no asc;

>> 테이블에서 번호 역순서로 정렬하고자 한다면

select * from Table order by no desc;

>> 테이블에서 사용자 이름 가나다 순으로 정렬하고자 한다면

select * from Table order by name asc;


DATA 조회 - DISTINCT

컬럼이나 레코드 조회 시 중복된 행 제거

주로 중복이 제거된(UNIQUE) 컬럼이나 레코드를 조회하는 경우 사용 됨

mysql> select distinct *  from <테이블 명>;

 

>> 해당 테이블에서 선택하는 컬럼이나 레코드가 중복되는 것 없이 출력된다.

테이블 데이터가 다음과 같을 때,

+-----------+
| name      |
+-----------+
| 홍길동    |
| 홍길동    |
| 홍길순    |
+-----------+

select distinct * from Table;

을 입력하면 출력되는 것은 "홍길동과 홍길순" 두 명 뿐이다.


DATA 조회 - 그룹핑

지정된 컬럼을 기준으로 데이터를 그룹핑

mysql> select  *  from <테이블 명> group by [컬럼명] ;

>> 내 예상으로는 함수를 이용하여 특정 데이터들의 평균치 값을 출력해주는 것 같다.