주석
-- 또는 # : 한 줄 주석 (단축키 : Ctrl + /)
/**/ : 블록 주석
쿼리 실행

- 활성시트의 메뉴바
- 첫번째 번개 : 현재 활성시트에 있는 모든 명령어 실행 (Ctrl + shift + enter)
- 두번째 번개(I) : 현재 커서가 있는 명령어 실행 (Ctrl + enter)
기타 코드
select now(); : 현재 시간 출력
insert into student value ('s-001', md5('이름'), '010-0000-0000', not());
md5() : 암호화
insert into student value ('s-001', md5('이름'), '010-0000-0000');
비밀번호는 평문으로 두면 안된다. 불법임.
- auto_increment : 자동으로 1씩 증가
- insert로 값 넣을 때는 null로 넣으면 알아서 숫자 증가해서 값 들어가진다.
- ★auto_increment를 사용중인 경우 delete 명령문 사용시 숫자가 이빨빠지게 된다.
그래서 auto_increment를 초기화 해줘야 한다.
alter table classes auto_increment=1; : auto_increment 초기화
auto_increment값이 pk이라서 같은 숫자를 가지고 있을 수 없기 때문에 1로 설정해놔도 위에 쓰고 있는 숫자를 제외한 다른 번호를 알아서 갖게 된다.
delete명령문과 위 alter 명령문을 세트로 사용하는 것을 추천한다.
타입 / 옵션
- int(10) : 숫자 10자리 만큼 노출(저장도 10자리까지)
- int 자리수를 지정하지 않으면 -2147483648 ~ 2147483647 까지 사용할 수 있다.
만약 들어가는 자리수가 정해져있다면 지정해놓는 것이 좋다.
음수 자리가 필요없다면 int옆에 unsigned를 적어놓으면 된다.
mysql에서 auto_increment사용하면 알아서 unsigned 먹음.
- varchar(255) : 문자
- auto_increment : 자동으로 1씩 증가하는 숫자. (문자 안됨)
- datetime : 시간 날짜 입력. (많이 사용하진 않음)
값
값 삽입 (insert)
insert into 테이블명 values (값1, 값2, ...);
반드시 모든 컬럼을 삽입해야 하며, 값의 순서를 지켜야 한다.
insert into 테이블명 (컬럼명1, 컬럼명2, ...) values (값1, 값2, ...);
★반드시 명시한 컬럼명의 순서와 값의 순서를 지켜야 한다.
모든 컬럼의 값을 넣을 필요 없으며 내가 명시한 컬럼 값만 넣어주면 된다.
- insert한 거 지우지 말고 따로 보관해두기. 만약에 update나 delete를 where없이 써서 다 날아갔을 때를 위해.
값 수정 (update)
- ★주의 : where 없이 실행하면 싹 다 바뀜.
update 테이블명 set 컬럼명=값 where 컬럼명 = 값;
값 삭제 (delete)
- ★주의 : where 없이 실행하면 싹 다 삭제됨.
delete from 테이블명 where 컬럼명 = 값;
DB(스키마)
DB 생성
create database 데이터베이스이름;
- 같은 이름으로 만들면 에러나니까 이렇게 코드로 생성하지 않는 것을 권장.
DB 삭제
delete database 데이터베이스이름;
DB 조회
DB 사용
use 데이터베이스이름;
- 여러 스키마들 중에서 해당 스키마인 것을 사용할 것이다.
Table
테이블 조회
테이블 정보확인
테이블 생성
create table 테이블이름(
컬럼1 타입 [옵션],
컬럼2 타입 [옵션],
...
컬럼3 타입 [옵션]
);
create table classes(
c_seqno int(10) not null auto_increment, -- int(10) : 10자리 정수 / auto_increment : 자동으로 1씩 증가
c_title varchar(255) not null,
c_roomNo varchar(255) not null,
c_openDate varchar(255) not null,
c_closeDatclassesclassese varchar(255) not null,
PRIMARY KEY(c_seqno)
);

- 생성하고 바로 보이지 않는다면 저 새로고침버튼을 누르면 보인다.
- foreign key 지정 :
foreign key(컬럼명) references 참조할테이블(참조할컬럼명)
- foreign key를 지정하는 것을 별로 추천하지 않는다.
테이블 삭제
테이블 초기화
truncate 테이블이름;
- 값만 없애는 것.
테이블 명 변경
rename table 기존이름 to 새이름;
- ex)
rename table classes to classes22;
- 명 변경을 하려면 그냥 drop하고 다시 만드는 것이 좋다.
이미 데이터를 많이 넣어놨으면 해당 방법으로 명을 변경하자.
레코드
삽입 (insert)
insert into 테이블명 values (값1, 값2, ...);
반드시 모든 컬럼을 삽입해야 하며, 값의 순서를 지켜야 한다.
insert into 테이블명 (컬럼명1, 컬럼명2, ...) values (값1, 값2, ...);
★반드시 명시한 컬럼명의 순서와 값의 순서를 지켜야 한다.
모든 컬럼의 값을 넣을 필요 없으며 내가 명시한 컬럼 값만 넣어주면 된다.
- insert한 거 지우지 말고 따로 보관해두기. 만약에 update나 delete를 where없이 써서 다 날아갔을 때를 위해.
조회 (select)
- 전체 컬럼 조회 :
select * from 테이블이름;
- 일부 컬럼 조회 :
select 컬럼A, 컬럼B, ... from 테이블이름; (컬럼 = 필드)
- 특정 조건으로 조회 :
select * from 테이블이름 where 컬럼명=값;
- 중복 제외하고 조회 :
select distinct 컬럼명 from 테이블이름;
- 조회할 때 다른 컬럼도 넣으면 조회될 row수가 다르기 때문에 에러가 난다.
- 사이값 :
select * from 테이블이름 where 컬럼명 between '값1' and '값2';
- 검색 :
select * from 테이블이름 where 컬럼명 like '%값%';
- ★limit : 최대 row 개수 지정
select * from 테이블이름 limit 3; : 전체 데이터중에서 3개만 나옴.
- as : 별칭
변경(update)
- ★주의 : where 없이 실행하면 싹 다 바뀜.
update 테이블명 set 컬럼명=값 where 컬럼명 = 값;
삭제 (delete)
- ★주의 : where 없이 실행하면 싹 다 삭제됨.
delete from 테이블명 where 컬럼명 = 값;
기존 테이블(컬럼) 변경
추가
alter table 테이블명 add 컬럼명 타입 [옵션];
- ex)
alter table student add s_gender varchar(10) not null;
수정
- 컬럼 수정
alter table 테이블명 modify 컬럼명 타입 [옵션];
ex) alter table student modify s_gender char(50) not null;
- 컬럼명 수정
alter table 테이블명 change 기존컬럼명 새컬럼명 타입 [옵션];
ex) alter table student change s_gender2 s_gender int(10) not null;
- 컬럼명 수정(change)로 컬럼 수정(modify) 대체 가능.
- 해당 컬럼이 not null인 경우 값이 있어야 적용이 됨.
삭제
alter table 테이블명 drop 컬럼명;
- ex)
alter table student drop s_gender;
join
inner join(교집합)
select * from 테이블명A join 테이블명B on 조건;
- inner join은 on절과 함께 사용되며, on절의 조건을 만족하는 데이터만 가져온다.
- inner join을 가장 많이 사용한다.
left join
select * from 테이블명A left join 테이블명B on 조건;
- 첫번째 테이블을 기준으로 두번째 테이블을 조합하는 join 방식
- inner join과 결과값이 많은 차이가 없다.
- on절의 조건을 만족하는 데이터가 없으면 첫번째 테이블의 결과값이 다 나온다.
나머지 부분(두번째 테이블 select)은 null로 표시된다.
right join
select * from 테이블명A right join 테이블명B on 조건;
- left join과는 반대로 두번째 테이블을 기준으로 첫번째 테이블을 조합하는 join 방식
- on절의 조건을 만족하는 데이터가 없으면 두번째 테이블의 결과값이 다 나온다.
나머지 부분(첫번째 테이블 select)은 null로 표시된다.
연습 사이트
https://www.w3schools.com/
여기서 SQL가서 연습하고 공부하면 좋다.
https://www.mockaroo.com/
데이터를 만들 수 있는 사이트.
임의의 데이터를 만들어 준다.