본문 바로가기

IT프로그래밍

MySQL 기본 문법 part 2

MySQL Workbench를 이용해서 소스와 결과를 출력하는 식으로 설명하겠습니다.

DB생성부터 시작하여 where절을 사용하여 조건에 맞는 데이터를 출력하려고 합니다.


1. DB생성

create database manniz; 


create database DB명; 입니다

이렇게 하면 DB명으로 DB가 생성됩니다.



2. Table 생성

create table student(

id_num int not null auto_increment,

name varchar(30) not null,

        math int,

        kor int,

        eng int,

        primary key (id_num)

); 


student라는 이름을 갖는 테이블을 생성하였습니다.

테이블은

id_num, name, math, kor, eng 라는 값을 갖고있습니다.

id_num은 Primary Key로 설정했구요.


Primary key는 기본키로 데이터가 중복되는 것을 허용하지 않겠다는 것입니다.(이하 PK로 지칭하겠습니다)

예를 들면 대학교에서 학번이나 우리나라 사람들이 모두 갖고 있는 주민등록 번호와 같이

다른사람과 중복되지 않아 구분할 수 있는 값을 의미합니다. 이름이나 주소(가족의 경우)와 같이 중복이 가능한 경우에는 PK로 설정하면안됩니다. 설정 방법은 소스와 같습니다. PK는 꼭 1개가 아니어도 상관없습니다. 여러개일 경우 primary key(id_num, my_num) 처럼 ,로 구분해야 합니다.


int, varchar(30)는 자료형입니다. varchar(30)은 문자열 자료형이며 (30)은 문자의 길이를 의미합니다.


자료형 옆의 not null은 말 그대로 null값이면 안된다는 겁니다. 즉 비어있으면 안된다는 말이예요.

밑에서 하겠지만 insert into를 통해 테이블에 자료를 넣을텐데요. 그때 not null로 설정되어 있는 곳은 반드시 값이 들어가야 합니다.

자세한건 밑에서 다시 설명할께요

아 ! 그리고 PK값에는 자동으로 Not Null이 설정됩니다.


auto_increment는 자동 증가인데요. 초기값이 1이고 값이 들어오면 하나씩 증가합니다. 이것도 밑에서 다시한번 설명할께요

쿼리를 실행시키면 이렇게 테이블이 생성됩니다.


3. 데이터 등록

insert into student (id_num,name, math, kor, eng )values(1, '원빈', 90, 80, 70); 


insert into 테이블명(변수명, 변수명...) values(값, 값...);

테이블 생성 후, 데이터를 등록할때는 insert into를 사용합니다.

위의 소스에서는 값을 하나하나 넣었는데요.


insert into (2, '장동건', 100, 60, 55); 으로 변수명을 일일이 호출하지 않더라도 자료형과 Not null인 값에 NULL을 입력하지 않는다면 또 PK값을 위반하지 않는다면 데이터가 등록됩니다.


PK값을 위반했다는 것은 위와 같은 데이터에

insert into (2, '현빈', 80, 70, 80); 이렇게 입력을 하게되면 id_num이 장동건이랑 겹치게 되어 에러가 발생하고 데이터를 입력할 수 없

게 됩니다.


또한 위에서 말한 auto_increment는 

insert into student (name, math, kor, eng )values('현빈', 50, 50, 50);으로 확인 할 수가 있습니다.

소스를 자세히 보면 변수 id_num을 직접입력하지 않았습니다. 공백을 허용하지 않는 Not Null제약이 있지만 Auto_increment가 있어서 자동으로 2에서 1이 증가된 3의 값을 갖게 된 경우입니다.



4. 데이터 보기

select * from student; 


위에서 보여지는 모든 캡처화면은 이 쿼리를 사용하여 나타난 화면입니다.

*은 컴퓨터에서 ALL을 의미하는 문자로 정식명칭은 아스테리스크(Asterisk)입니다.

student의 모든(*)것을 select하겠다.


select * 이외에

나는 이름만 보고 싶다 하면

select name from student;


이름과 수학성적을 보고 싶다 하시면

select name, math from student;



이렇게 활용이 가능합니다. 이건 나중에 자세하게 다시 한번 써야겠네요


5. 조건에 맞게 출력하기

select * from student where math > 80;



위의 값은 수학(math)점수가 80점 이상인 사람들의 데이터 출력입니다.

조건을 거는 where절은 c나 Java의 if절과 같습니다. 숫자뿐만 아니라


select * from student where name = '장동건';


이렇게도 가능합니다.

이것도 활용범위가 너무 넓어서 다음에 자세하게 다시 써야겠네요.

그럼 안녕 ~