본문 바로가기
프로그래밍/MySql

<데이터 베이스 기초>

by 소소로드 2018. 4. 8.

<데이터 베이스 기초>



★DB 


<DB 생성>

create database 데이터베이스명 default character set utf8;


<DB 삭제>

drop database 데이터베이스명


==================================================



★테이블 


<테이블 생성>

create table student (

학년 int,

반 int,

나이 int NOT NULL PRIMARY KEY,

이름 varchar(20);

); engine=InnoDB default character set = utf8;


NOT NULL : 필수 값, 즉 null이어서는 안된다.

PRIMARY KEY : 주요키 칼럼

engine=InnoDB : 테이블을 InnoDB라는 저장 엔진을 사용해서 생성

                (트랜잭션 관련 내용)



<테이블 삭제>

drop table 테이블명;




<테이블 관리>


student 테이블

--------------------------------

grade   class  age name

--------------------------------

2 3 12살

3 5 14살

6 2 13살 쓰리

1 3 11살

---------------------------------



<내용 가져오기로 많이 쓰이는 쿼리>


- student 테이블의 모든 내용 가져오기

  select * from student;


- student 테이블의 grade, class 내용 가져오기

  select grade, class from student;


- student 테이블의 grade, class 중에서 2개의 칼럼만 가져오기

  select grade, class from student limit 2;


- student 테이블의 grade, class중에서 grade를 오름차순으로 가져오기

  select grade, class from student order by grade;


- 테이블에 칼럼 추가하기

  insert into student values('3', '5', '14', '홍길동');


===========================================================



★데이터 관리 


<삽입 - insert>


- 일부 칼럼에 삽입할 경우

  insert into student (grade, class, age)

  values ('값', '값', '값');


- 칼럼 전체 목록을 표시하지 않으면 전체에 값 지정

  insert into student values('값', '값', '값', '값');




<조회 - select>


- 전체 조회

  select * from student;



* 특정 조건에 대한 조회 - where 


ex1)  name 칼럼의 값이 율원이라는 조건/이 있는 student 테이블 전체 (where)

      select * from student where name = '';


ex2) name 칼럼의 값이 율원인 동시에 클래스는 5인 조건/의 student 테이블 전체 (and)

      select * from student where name = '' and class = '5';


ex3) name 칼럼의 값이 율원이거나 클래스는 5인 조건/의 student 테이블 전체 (or)

      select * from student where name = '' or class = '5';


ex4) name 칼럼의 값이 널/널이 아닌 조건/의 학생 테이블 전체 (is null, is not null)

      select * from student where name is null

      select * from student where name is not null


ex5) class 칼럼의 값의 범위가 10과 같거나 크고 동시에 5와 같거나 작은 조건/의 student 테이블 전체

      select * from student where class >= 10 and class <= 5




* 데이터 정렬 - where [조건] order by desc 혹은 asc(asc가 기본값)

   desc : 내림차순, asc : 오름차순


ex) name 칼럼을 오름차순, class 칼럼을 오름차순으로 정렬한 student 테이블 전체

    select * from student order by name asc, class asc;

    (* 주의 : name 칼럼부터 오름차순으로 정렬한 뒤에 name칼럼이 같은 값을 갖는것에만 한정해서 class를 

       오름차순으로 정렬. 즉, name-class가 원- 5, 원-6 같은 칼럼 두개이상일때만 class가 정렬된다.)




* 데이터 집합 - 총합 sum(), 최대 max(), 최소 min(), 개수 count()등


ex1) 전체 레코드의 개수

    select count(*) from student;


ex2) 김으로 시작하는 name 칼럼 조건/의 student 테이블의 전체 수

    select count(*) from student where name like '김%'; 




<변경 - update>


ex) name칼럼을 파이브로 세팅하여 student테이블을 업데이트

    update student set name= '파이브';



<삭제 - delete>


ex1) student 테이블 삭제

     delete from student;


ex2) name칼럼이 투라는 조건/의 student테이블 삭제

     delete from student where name = '투';





============================================================


- Limit (제한)


ex1) 처음 두개의 레코드만 가져온다

     select * from student limit 2;


ex2) 칼럼 name이 "원"이라는 조건에서 처음 두개 레코드만 가져온다

     select * from student where name="원" limit 2:


ex3) 두번째 레코드에서 다섯번째 레코드까지 가져온다

     select * from student limit 2,5;