※ Mysql 은 저번시간에 배워본 오라클 sql 이랑 문법은 비슷한 개념이 많을 것이다.
그래도 복습차원에서 다시 한번 mysql의 내용을 살펴보겠습니다.
1. db(스키마) 관련
1) db 생성
create database 데이터베이스이름;
2) db 삭제
delete database 데이터베이스이름;
3) db 조회
show databases; -> (이 mysql내에 있는 모든 db들을 알려준다.)
4) db 사용
use 데이터베이스이름; -> (여러 db들이 있을 경우 이렇게 use를 사용하여 해당 db 안에 있는 내용들을 불러오겠다는 개념이다)
2. 테이블
1) 테이블 조회
show tables;
2) 테이블 정보확인
desc 테이블이름;
3) 테이블 생성
create table 테이블이름 (
칼럼 1 타입 [옵션],
칼럼 2 타입 [옵션],
칼럼 3 타입 [옵션]
);
@ 테이블 생성 예제
create table classes (
c_seqno int(10) not null auto_increment,
c_title varchar(255) not null,
c_roomNo varchar(255) not null,
c_openDate varchar(255) not null,
c_closeDate varchar(255) not null,
PRIMARY KEY(c_seqno)
-- 외래키 예)foreign key(컬럼명) references 테이블이름(컬럼명),
);
int(10) => 숫자 10자리만큼 노출(저장도 10자리)
varchar(255) => 문자
auto_increment => 자동으로 1씩 증가하는 숫자
datetime => 시간 날짜 입력
4) 테이블 삭제 -> 테이블 이예 삭제하는 거
drop table 테이블명;
5) 테이블 내용 초기화 idx= 0
truncate 테이블명;
3. 레코드
1) 추가(삽입) - insert
방법 1) insert into 테이블명 values (값 1, 값 2,....)
값을 모든 칼럼 순서에 맞춰서 다 넣어줘야 한다.
방법 2) insert into 테이블명 (칼럼명 1, 칼럼명 2,....) values (값 1, 값 2,....)
*반드시 명시한 칼럼명의 순서와 값의 순서를 지켜야 한다.
모든 칼럼의 값을 넣을 필요 없음. 내가 명시한 컬럼꺼만 넣어주면 됨
@ insert 예제
INSERT INTO classes VALUES (null, '자바', 'D강의장', '2023-07-27','2023-12-27');
INSERT INTO classes VALUES (null, 'C', '501', '2023-07-27','2023-12-27');
INSERT INTO classes VALUES (null, '파이썬', '302', '2023-07-27','2023-12-27');
INSERT INTO classes VALUES (null, '코틀린', '604', '2023-07-27','2023-12-27');
INSERT INTO classes VALUES (null, '자바', 'c강의장', '2023-07-27','2023-12-27');
INSERT INTO classes VALUES (null, 'C', 'c강의장', '2023-07-27','2023-12-27');
INSERT INTO classes VALUES (null, '파이썬', 'c강의장', '2023-07-27','2023-12-27');
INSERT INTO classes VALUES (null, '코틀린', 'c강의장', '2023-07-27','2023-12-27');
/* c_seqno int(10) not null auto_increment; 이렇게 null값이 있는 컬럼명이 c_seqno인데 여기에보면
제약조건에 auto_increment 라고되있는데 이건 자동으로 순서대로 숫자가 기입되는것이다.
그래서 null값으로 해놔도 자동으로 값이 insert 될시 1부터 순서대로 숫자가 매겨지게될것이다.
한데, 문제가있는데 이렇게 자동으로 값이 매겨지는것을
delete from classes; 이렇게 클래스의 내용을 삭제하고 다시 추가할시 삭제한 idx 번호는 남아있어서
만약에 8개를 delete삭제했다고했고 다시 추가할시 c_seqno 번호는 9번부터 시작하게될것이다 이걸 초기화
하기위해서는
alter table classes auto_increment=1; 이렇게 alter이용해 제약조건 auto_increment 의 값을 1로 초기화
시켜야지 다시 추가할시 1부터 시작할것이다.
또다른 방법으로는 delete로 삭제하지말고 truncate 테이블이름; 으로 테이블 내용초기화시 idx번호도
같이 초기화가 되서 다시 추가할시 1부터 시작할것이다.
*/
2) 조회 - select
- 전체 컬럼 조회: select * from 테이블명;
- 일부 컬럼 조회: select 필드 A, 필드 B,... from 테이블명;
- 특정 조건에 조회: select * from 테이블명 where 필드명=값;
- 중복제거: select distinct 필드명 from 테이블명;
해당 필드의 중복이 있으면 하나로 압축해 준다.
- 사이값: select * from 테이블명 where 필드명 between '값 1' and '값 2';
- 검색: select * from 테이블명 where 필드명 like '% 값%'
@ select 예제(기본방식은 오라클 sql방식이랑 같다)
select * from classes where c_openDate between '2022-01-01' and '2022-12-12';
select * from classes where '2022-01-01' <= c_openDate and c_openDate <= '2022-12-12';
select * from classes where c_roomNo like '%강의장%' limit 3;
* limit: 최대 row 개수 지정
select * from classes limit 3; -- 전체 반 중에서 상위 3개만 나옴
3) 변경 - update
update 테이블명 set 칼럼명=값
*주의: where 없이 실행하면 싹 다 바뀜
4) 삭제 - delete -> delete 할시 인덱스 값 남아있음 그래서 삭제한 컬럼 인덱스번호 뛰고 다음 인덱스번호로 생성가능
auto_increment=1 이렇게 초기화해줘야 된다 인덱스 초기화하려면
delete from 테이블명 where 칼럼명=값;
*주의: where 없이 실행하면 싹 다 바뀜
* auto_increment를 사용중인경우 delete 명령문 사용시 숫자가 이빨빠지게 된다.
그래서 auto_increment 를 초기화해줘야 한다.
alter table 테이블명 auto_increment=1;
4. 기존 테이블(칼럼) 변경
1) 추가 - alter table 테이블명 add 칼럼명 타입 [옵션]
ex) alter table classes add s_gender varchar(10) not null;
2) 삭제 - alter table 테이블명 drop
ex) alter table classes drop s_gender;
3) 컬럼 수정 - alter table 테이블명 modify 컬럼명 타입 [옵션]
ex) alter table students modify s_gender2 char(50) not null;
4) 컬럼명 수정 - alter table 테이블명 change 기존칼럼명 새 칼럼명 칼럼타입
ex) alter table students change s_gender2 s_gender int(10) not null;
*4번으로 3번꺼 가능
*해당 칼럼이 not null 인 경우 값이 뭐라도 들어있어야 3,4번 칼럼타입 적용됨
@ alter 예제
alter table students add s_gender2 varchar(10) not null; -- s_gender 필드 추가
select * from students;
alter table students drop s_gender; -- s_gender 필드 삭제
alter table students modify s_gender2 int(10) not null;
alter table students change s_gender2 s_gender int(10) not null;
5) 테이블명 변경
rename table 기존이름 to 새 이름;
ex) rename table classes to classes22;
5. join
1) inner join (교집합)
- inner join 은 ON 절과 함께 사용되며, ON 절의 조건을 만족하는 데이터만 가져온다.
2) left join
- 첫 번째 테이블을 기준으로 두 번째 테이블을 조합하는 join 방식
ON절이 만족하지 않으면 왼쪽(첫 번째 테이블)거는 다 가져온다.
나머지 부분은 null로 표시된다.
3) right join
- left join 과는 반대로 두 번째 테이블이 기준으로 첫번째 테이블을 조합하는 방식
ON절이 만족하지 않으면 두번째 테이블 꺼는 다 가져온다.
나머지(첫 번째 테이블 파트)는 null로 표시된다.
@join예제
-- 조인 join
select c.*, ct.code, ct.name, ct.region
from city C
right join country CT
ON C.countrycode = CT.code;
'국비교육' 카테고리의 다른 글
국비지원 50일차 (JAVA 단축키 및 문법) (1) | 2023.10.08 |
---|---|
국비지원 49일차 (JAVA - 설치방법) (1) | 2023.10.08 |
국비지원 47일차(SQL- join , 서브쿼리) (1) | 2023.10.08 |
국비지원 46일차(SQL- DML 문법) (2) | 2023.10.08 |
국비지원 45일차 (SQL 개념 - DDL) (0) | 2023.10.07 |