프로젝트를 진행하면서 필요한 내용들을 찾아가면서 공부해보고 있는데, HTML을 어느정도 마무리하고 java script를 공부하기 전에 먼저 이전에 배웠던 mysql의 명령어와 개념을 먼저 정리하고 넘어가고자 한다.
create databse DATABASENAME: 데이터 베이스 생성
use DATABASENAME: 데이터 베이스로 이동
create table TABLENAME(columnname type list): table 생성. 소괄호 안에 이름과 자료형을 차례로 쓰고 ','를 이용하여 서로 다른 column을 구분한다.
insert into TABLENAME Values(): 테이블에 새로운 value를 추가. 소괄호 안에 ','를 이용하여 구분.
show databases: 데이터 베이스 목록 확인
select * from TABLENAME: table 내부에 있는 모든(*) 요소를 조회
select * from DATABASENAME.TABLENAME: 외부 데이터 베이스의 table을 조회
select columnname from TABLENAME: table 내부의 columnname만 조회
selct * from TABLENAME where 조건문: 조건문에 해당하는 자료만을 찾아서 조회
select 에서의 정렬: asc, desc 를 이용하여 오름차순, 내림차순 정렬을 할 수 있다. 예를 들어 select * from univ_student order by gpa asc;
update student set english = 750 where name = "정채연"// student 테이블의 이름이 정채연인 english 칼럼의 값을 750으로 업데이트 하라
ALTER: 이미 생성되어 있는 테이블의 column을 편집할 때 사용. 기본적인 형식은 ALTER table TABLENAME 명령어 column COLUMNNAME 속성; 으로 구성되어 있으며 각 명령어마다 약간씩 속성이 다르기도 하다. 또한 ALTER는 column을 수정하는 명령어이기 때문에 column은 생략해도 상관이 없다.
ADD : 새로운 column을 추가할 때 사용하는 명령어. column의 이름과 Type은 필수 입력 대상이고 추가적으로 NULL값이나 Key, Default, Extra 에 대한 설정도 입력할 수 있다. 위치에 대한 default 값은 맨 뒤에 추가되는 것이며 AFTER, FIRST 등으로 추가되는 위치를 조정해줄 수 있다. 동일한 이름을 가진 column을 추가하는 것은 데이터 타입이 다르더라도 허용하지 않는다.
alter table Person ADD column age int; // Person 테이블에 weight column을 추가한다.
alter table Person ADD column height double AFTER age; // Person 테이블에 age 뒤에 height column을 추가한다.
alter table Person ADD column no int FIRST; //Person 테이블에 no column을 맨 앞에 추가한다.
alter table person add column weight double not null default 60; // Person 테이블에 null 값을 허용하지 않는 default가 60인 double 타입의 weight column을 추가한다.
alter table Person MODIFY column weight int; // Person의 weight column을 double에서 int로 변경한다.
alter table Person MODIFY column height double default 170.0 //Person의 height column을 double, default 170.0으로 설정한다. 처음에는 double을 쓰지않고 alter table person modify column height default 170.0 과 같이 입력해봤는데 error가 뜨길래 double을 넣어서 해봤더니 되더라. 이를 통해서 알수있었던 사실은 alter는 어떤 명령어든 column의 이름과 속성을 입력해줘야한다는 것을 알 수 있었다.
alter table Person CHANGE height height1 int; // Person의 height column의 이름을 height1으로, 속성을 int로 변경한다. 또한 NULL값이나 Default값에 대한 설정을 따로 해주지 않았기 때문에 이전에 있던 속성값은 사라지게 된다.
alter table Person CHANGE height1 height double NOT NULL default 170.0; //이와 같이 null 값을 허용하지 않거나 default를 설정하는 것도 가능하다.
alter table person drop column weight; //삭제함
delete from student where name='송중기'; //송중기라는 이름을 가진 사람을 student 테이블에서 삭제
drop TABLENAME; //tablename에 해당하는 테이블을 삭제
데이터의 무결성을 지키기 위해 제한된 조건을 의미한다. 중복을 허용하지 않거나, NULL 값을 허용하지 않거나 등의 데이터를 입력받는 것에 있어 실행되는 검사 규칙을 의미한다.
제약조건의 종류
PRIMARY KEY : 중복 X, NULL X.
UNIQUE KEY : 중복 x, NULL o,
FOREIGN KEY : 중복 o, 타 자료를 참조(references)하여 사용하는 key. 예를 들어 학생정보 테이블에 수강 정보가 같이 들어있다면 여러 과목을 수강할 때 학생정보를 기본키로 사용할 수 없다(학생 정보가 중복으로 들어가기 때문). 이럴 때는 수강 정보 테이블을 따로 두어 중복을 허용할 수 있다.)
NOT NULL : Null을 허용하지 않음
Default
CHECK
PRIMARY KEY(기본키)
중복과 Null값을 허용하지 않는 제약조건이다. 회원가입 아이디, 닉네임, 주민등록번호, 학번 등 다양한 곳에 이용된다.
다음과 같은 방법을 통해서 학번을 PRIMARY KEY 로 가지는 Student 테이블을 만들 수 있다.
create table Student(
ID int PRIMARY KEY,
Name varchar(10),
Major varchar(20),
Grade int);
중복을 허용하지 않기 때문에 만약 이미 존재하는 ID를 가진 자료를 입력하면 오류가 발생할 것이다.
Insert into Student(ID, Name, Major, Grade) Values(20180001, ‘Tom’, ‘Mathematics’, 3);
Insert into Student(ID, Name, Major, Grade) Values(20180001, ‘Jerry’, ‘English’, 3);
-> ERROR 1062 (23000): Duplicate entry '20180001' for key 'student.PRIMARY' //중복 비허용 에러
create table univ_camp(
CampName varchar(20),
CampID int,
FOREIGN KEY(CampID) references Student(ID),
Name varchar(20),
Major varchar(20),
Grade int);
외래키의 입력은 다음과 같이 사용할 수 있다.
Insert into univ_camp(CampName varchar(20), CampID, Name, Major, Grade) Values(‘IT취업 캠프’, 2018001, ‘Tom’, ‘Mathematics’, 3);
다만 외래키는 참조하는 대상인 기본키에 있는 대상만을 입력할 수 있다. 예를 들어
Insert into univ_camp(CampName, CampID, Name, Major, Grade)
Values('IT취업 캠프', 20180010, 'Tom', 'Mathematics', 3);
이런 입력을 했다면 에러가 발생한다.
그 이유는 20180010이라는 학번은 Student의 ID에 존재하지 않는 학번이기 때문이다.
또한 중복을 허용하기 때문에 같은 자료에 대한 정보를 여러번 입력할 수도 있다.
두개이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법.
조인의 종류
내부조인(Inner join) : 둘 다 포함되는 내용만 나옴
왼쪽 조인(Left Outer Join) : 왼쪽 테이블을 기준으로 왼쪽에 데이터가 있는데 오른쪽에 데이터가 없으면 NULL이 나온다.
오른쪽 조인(Right Outer Join) : 오른쪽 테이블을 기준으로 오른쪽에 데이터가 있는데 왼쪽에 데이터가 없으면 NULL이 나온다.
풀 조인(Full Join): 왼쪽과 오른쪽 둘다 나온다.
조인의 사용법
create table student1(name varchar(10), age int, height double);
Insert into student1(name, age, height) values('Jane', 20, 160.8);
Insert into student1(name, age, height) values('Tom', 23, 178.3);
Insert into student1(name, age, height) values('Julia', 21, 167.5);
Insert into student1(name, age, height) values('Hans', 21, 180.2);
create table patient(name varchar(10), age int, address varchar(50));
Insert into patient(name, age, address) values('Jane', 20, "대구광역시 동구");
Insert into patient(name, age, address) values('Tom', 23, "서울특별시 용산구");
Insert into patient(name, age, address) values('Tony', 22, "대전광역시 중구");
Insert into patient(name, age, address) values('Evan', 21, "부산광역시 해운대구");
select student1.name, student1.age, patient.address from student left outer join patient on student1.name = patient.name;
//아래 그림 1번
select student1.name, student1.age, patient.address from student1 right outer join patient on student1.name = patient.name;
//아래 그림 2번
select student1.name, student1.age, patient.address from student1, patient where student1.name = patient.name;
select student1.name, student1.age, patient.address from student1 inner join patient on student1.name = patient.name;