1. MySQL의 확장자
MySQL의 확장자는 .sql 이다.
2. MySQL 코드 저장하기

3. MySQL 계정을 생성하고 DataBase 생성하고 접근권한 설정

user_dbclass 계정을 만들고 비밀번호 1234로 지정
데이터베이스 db.dbclass 생성
user.dbclass 계정에게 db_dbclass 데이터베이스 접근권한을 설정한다.

4. Table 생성
4 - 1 문법
create table [table 이름] (
컬럼명 컬럼타입,
컬럼명 컬럼타입,
.......
);
4 - 2 타입
1. varchar : 문자열
2. int : 정수 ( 자바 int와 매칭 )
3. bigint : 넓은 범위의 정수 ( 자바의 Long과 매칭 )
4. datatime : 날짜 및 시간
5. date : 날짜
5. Table 생성 예시
id | student_name | student_mobile | student_major |
1 | 학생1 | 010-1111-1111 | 컴퓨터공학 |
2 | 학생2 | 010-2222-2222 | 로봇과 |
이런 표를 데이터베이스에 저장한다고 한다면
create table student(
id bigint;
student_name varchar(5);
student_mobilevarchar(20);
student_major varchar(30);
);
insert into student(id, student_name, student_mobile, student_major)
values(1, '학생1', '010-1111-1111', '컴퓨터공학');
insert into student(id, student_name, student_mobile, student_major)
values(1, '학생2', '010-2222-2222', '로봇과');
-- 숫자의 의미는 Size(리소스)
데이터를 추가 할 때에는
insert into [테이블 명]( 컬럼 데이터 입력 )
values(컬럼 안 데이터 입력);


6. Table 조회
6 - 1 문법
Table 조회의 문법은 다음과 같다.
select [컬럼명]from [table명];
-- 컬럼명에 *을 쓰면 전체조회
6 - 2 Table 삭제


7. Table 응용
create table dept (
deptno int,
dname varchar(14),
loc varchar(13)
);
create table emp (
empno int,
ename varchar(10),
job varchar(9),
mgr int,
hiredate DATE,
sal int,
comm int,
deptno int
);
create table bonus (
ename varchar(10),
job varchar(9),
sal int,
comm int
);
create table salgrade (
grade int,
losal int,
hisal int
);
insert into dept values (10,'ACCOUNTING','NEW YORK');
insert into dept values (20,'RESEARCH','DALLAS');
insert into dept values (30,'SALES','CHICAGO');
insert into dept values (40,'OPERATIONS','BOSTON');
insert into emp values (7369,'SMITH','CLERK',7902, str_to_date('17-12-1980','%d-%m-%Y'),800,NULL,20);
insert into emp values (7499,'ALLEN','SALESMAN',7698,str_to_date('20-2-1981','%d-%m-%Y'),1600,300,30);
insert into emp values (7521,'WARD','SALESMAN',7698,str_to_date('22-2-1981','%d-%m-%Y'),1250,500,30);
insert into emp values (7566,'JONES','MANAGER',7839,str_to_date('2-4-1981','%d-%m-%Y'),2975,NULL,20);
insert into emp values (7654,'MARTIN','SALESMAN',7698,str_to_date('28-9-1981','%d-%m-%Y'),1250,1400,30);
insert into emp values (7698,'BLAKE','MANAGER',7839,str_to_date('1-5-1981','%d-%m-%Y'),2850,NULL,30);
insert into emp values (7782,'CLARK','MANAGER',7839,str_to_date('9-6-1981','%d-%m-%Y'),2450,NULL,10);
insert into emp values (7788,'SCOTT','ANALYST',7566,str_to_date('13-7-87','%d-%m-%Y'),3000,NULL,20);
insert into emp values (7839,'KING','PRESIDENT',NULL,str_to_date('17-11-1981','%d-%m-%Y'),5000,NULL,10);
insert into emp values (7844,'TURNER','SALESMAN',7698,str_to_date('8-9-1981','%d-%m-%Y'),1500,0,30);
insert into emp values (7876,'ADAMS','CLERK',7788,str_to_date('13-7-87','%d-%m-%Y'),1100,NULL,20);
insert into emp values (7900,'JAMES','CLERK',7698,str_to_date('3-12-1981','%d-%m-%Y'),950,NULL,30);
insert into emp values (7902,'FORD','ANALYST',7566,str_to_date('3-12-1981','%d-%m-%Y'),3000,NULL,20);
insert into emp values (7934,'MILLER','CLERK',7782,str_to_date('23-1-1982','%d-%m-%Y'),1300,NULL,10);
insert into salgrade values (1,700,1200);
insert into salgrade values (2,1201,1400);
insert into salgrade values (3,1401,2000);
insert into salgrade values (4,2001,3000);
insert into salgrade values (5,3001,9999);
Table에 각종 데이터를 입력했다.
전체 출력
select * from emp;

select * from bonus;
insert into로 bonus Table에 데이터를 입력하지 않았기에 출력되지 않는다.
select * from salgrade;

salgrade의 모든것을 select했기 때문에 salgrade의 전체가 출력된다
select * from dept;

dept의 모든것을 select했기 때문에 dept의 전체가 출력된다
-- emp 테이블의 전체 조회
select * from emp;
-- emp 테이블 empno and ename 컬럼만 조회
select empno,ename from emp;
-- emp 테이블의 job 컬럼만 조회
select job from emp;



같은 컬럼을 보고 싶다면 , 을 사용한다
중복 값 제거 정렬
만약 job의 중복값을 제외하고 싶다면
-- 중복값 제외
select distinct job from emp;

오름차 순 , 내림차 순 정렬
-- 사원 이름 조회(오름차순)
select ename from emp order by ename asc;
select * from emp order by ename asc;

-- 사원 이름 조회(내림차순)
select ename from emp order by ename desc;
select * from emp order by ename desc;

즉 , 오름차 순 정렬을 하고 싶다면 order by ~ asc ( 오름차순의 약자 ) 문법을 사용하고
내림차 순 정렬을 하고 싶다면 order by ~ desc ( 내림차순의 약자 ) 문법을 사용한다.
-- 급여(sal) 기준으로 오름차순 , 내림차순 정렬
select * from emp order by sal asc;
select * from emp order by sal desc;


-- 입사일(hiredate) 기준으로 오름차순 , 내림차순 정렬
select * from emp order by hiredate asc;
select * from emp order by hiredate desc;


정렬 기준을 2개 줄 경우
-- 1차기준 급여 , 급여가 같다면 이름순으로 오름차순 정렬
select * from emp order by sal asc, ename asc;

where 절 : 조건을 사용할 때 사용
-- 직급이 salesman인 사원만 조회
select * from emp where job='salesman';

-- 직급이 manager인 사원만 조회
select * from emp where job='manager';

-- 부서번호(deptno)가 10인 사원만 조회
select * from emp where deptno='10';
or
select * from emp where deptno=10;
-- 숫자는 ''생략해도 상관없다.

-- 이름이 james라는 사원의 정보 조회
select * from emp where ename='james';

-- 사번이 7654인 사원의 정보 조회
select * from emp where empno='7654';
or
select * from emp where empno=7654;
-- 숫자는 ''생략해도 상관없다.

조건을 2가지 줄 경우 - and
-- 직급이 manager이고 부서번호가 20인 사원 조회
select * from emp where job = 'manager' and deptno = '20';

조건을 2가지 줄 경우 - or
-- 직급이 salesman 이거나 부서번호가 10인 사원 조회
select * from emp where job = 'salesman' or deptno = '10';

-- 급여가 3000 이상인 사원 조회
select * from emp where sal >=3000;

-- 급여가 2000 이상 3000 이하 사원 조회
select * from emp where 2000 <= sal <= 3000; -- X
select * from emp where sal >= 2000 and sal <= 3000;
select * from emp where sal between 2000 and 3000;

-- 급여가 2000 이상 3000 이하 밖의 사원들을 내림차순 정렬
select * from emp where sal not between 2000 and 3000 order by sal desc;

tmi
기호의 이름
& = 엠퍼센트
* = 아스테리스크
' = 싱글쿼터
" = 더블쿼터
` = 백틱
'MySQL > MySQL icia 25일차' 카테고리의 다른 글
MySQL from dual , sysdate() , now()란? (0) | 2023.03.28 |
---|---|
MySQL 연산자와 예제 등 (0) | 2023.03.28 |
1. MySQL의 확장자
MySQL의 확장자는 .sql 이다.
2. MySQL 코드 저장하기

3. MySQL 계정을 생성하고 DataBase 생성하고 접근권한 설정

user_dbclass 계정을 만들고 비밀번호 1234로 지정
데이터베이스 db.dbclass 생성
user.dbclass 계정에게 db_dbclass 데이터베이스 접근권한을 설정한다.

4. Table 생성
4 - 1 문법
create table [table 이름] (
컬럼명 컬럼타입,
컬럼명 컬럼타입,
.......
);
4 - 2 타입
1. varchar : 문자열
2. int : 정수 ( 자바 int와 매칭 )
3. bigint : 넓은 범위의 정수 ( 자바의 Long과 매칭 )
4. datatime : 날짜 및 시간
5. date : 날짜
5. Table 생성 예시
id | student_name | student_mobile | student_major |
1 | 학생1 | 010-1111-1111 | 컴퓨터공학 |
2 | 학생2 | 010-2222-2222 | 로봇과 |
이런 표를 데이터베이스에 저장한다고 한다면
create table student(
id bigint;
student_name varchar(5);
student_mobilevarchar(20);
student_major varchar(30);
);
insert into student(id, student_name, student_mobile, student_major)
values(1, '학생1', '010-1111-1111', '컴퓨터공학');
insert into student(id, student_name, student_mobile, student_major)
values(1, '학생2', '010-2222-2222', '로봇과');
-- 숫자의 의미는 Size(리소스)
데이터를 추가 할 때에는
insert into [테이블 명]( 컬럼 데이터 입력 )
values(컬럼 안 데이터 입력);


6. Table 조회
6 - 1 문법
Table 조회의 문법은 다음과 같다.
select [컬럼명]from [table명];
-- 컬럼명에 *을 쓰면 전체조회
6 - 2 Table 삭제


7. Table 응용
create table dept (
deptno int,
dname varchar(14),
loc varchar(13)
);
create table emp (
empno int,
ename varchar(10),
job varchar(9),
mgr int,
hiredate DATE,
sal int,
comm int,
deptno int
);
create table bonus (
ename varchar(10),
job varchar(9),
sal int,
comm int
);
create table salgrade (
grade int,
losal int,
hisal int
);
insert into dept values (10,'ACCOUNTING','NEW YORK');
insert into dept values (20,'RESEARCH','DALLAS');
insert into dept values (30,'SALES','CHICAGO');
insert into dept values (40,'OPERATIONS','BOSTON');
insert into emp values (7369,'SMITH','CLERK',7902, str_to_date('17-12-1980','%d-%m-%Y'),800,NULL,20);
insert into emp values (7499,'ALLEN','SALESMAN',7698,str_to_date('20-2-1981','%d-%m-%Y'),1600,300,30);
insert into emp values (7521,'WARD','SALESMAN',7698,str_to_date('22-2-1981','%d-%m-%Y'),1250,500,30);
insert into emp values (7566,'JONES','MANAGER',7839,str_to_date('2-4-1981','%d-%m-%Y'),2975,NULL,20);
insert into emp values (7654,'MARTIN','SALESMAN',7698,str_to_date('28-9-1981','%d-%m-%Y'),1250,1400,30);
insert into emp values (7698,'BLAKE','MANAGER',7839,str_to_date('1-5-1981','%d-%m-%Y'),2850,NULL,30);
insert into emp values (7782,'CLARK','MANAGER',7839,str_to_date('9-6-1981','%d-%m-%Y'),2450,NULL,10);
insert into emp values (7788,'SCOTT','ANALYST',7566,str_to_date('13-7-87','%d-%m-%Y'),3000,NULL,20);
insert into emp values (7839,'KING','PRESIDENT',NULL,str_to_date('17-11-1981','%d-%m-%Y'),5000,NULL,10);
insert into emp values (7844,'TURNER','SALESMAN',7698,str_to_date('8-9-1981','%d-%m-%Y'),1500,0,30);
insert into emp values (7876,'ADAMS','CLERK',7788,str_to_date('13-7-87','%d-%m-%Y'),1100,NULL,20);
insert into emp values (7900,'JAMES','CLERK',7698,str_to_date('3-12-1981','%d-%m-%Y'),950,NULL,30);
insert into emp values (7902,'FORD','ANALYST',7566,str_to_date('3-12-1981','%d-%m-%Y'),3000,NULL,20);
insert into emp values (7934,'MILLER','CLERK',7782,str_to_date('23-1-1982','%d-%m-%Y'),1300,NULL,10);
insert into salgrade values (1,700,1200);
insert into salgrade values (2,1201,1400);
insert into salgrade values (3,1401,2000);
insert into salgrade values (4,2001,3000);
insert into salgrade values (5,3001,9999);
Table에 각종 데이터를 입력했다.
전체 출력
select * from emp;

select * from bonus;
insert into로 bonus Table에 데이터를 입력하지 않았기에 출력되지 않는다.
select * from salgrade;

salgrade의 모든것을 select했기 때문에 salgrade의 전체가 출력된다
select * from dept;

dept의 모든것을 select했기 때문에 dept의 전체가 출력된다
-- emp 테이블의 전체 조회
select * from emp;
-- emp 테이블 empno and ename 컬럼만 조회
select empno,ename from emp;
-- emp 테이블의 job 컬럼만 조회
select job from emp;



같은 컬럼을 보고 싶다면 , 을 사용한다
중복 값 제거 정렬
만약 job의 중복값을 제외하고 싶다면
-- 중복값 제외
select distinct job from emp;

오름차 순 , 내림차 순 정렬
-- 사원 이름 조회(오름차순)
select ename from emp order by ename asc;
select * from emp order by ename asc;

-- 사원 이름 조회(내림차순)
select ename from emp order by ename desc;
select * from emp order by ename desc;

즉 , 오름차 순 정렬을 하고 싶다면 order by ~ asc ( 오름차순의 약자 ) 문법을 사용하고
내림차 순 정렬을 하고 싶다면 order by ~ desc ( 내림차순의 약자 ) 문법을 사용한다.
-- 급여(sal) 기준으로 오름차순 , 내림차순 정렬
select * from emp order by sal asc;
select * from emp order by sal desc;


-- 입사일(hiredate) 기준으로 오름차순 , 내림차순 정렬
select * from emp order by hiredate asc;
select * from emp order by hiredate desc;


정렬 기준을 2개 줄 경우
-- 1차기준 급여 , 급여가 같다면 이름순으로 오름차순 정렬
select * from emp order by sal asc, ename asc;

where 절 : 조건을 사용할 때 사용
-- 직급이 salesman인 사원만 조회
select * from emp where job='salesman';

-- 직급이 manager인 사원만 조회
select * from emp where job='manager';

-- 부서번호(deptno)가 10인 사원만 조회
select * from emp where deptno='10';
or
select * from emp where deptno=10;
-- 숫자는 ''생략해도 상관없다.

-- 이름이 james라는 사원의 정보 조회
select * from emp where ename='james';

-- 사번이 7654인 사원의 정보 조회
select * from emp where empno='7654';
or
select * from emp where empno=7654;
-- 숫자는 ''생략해도 상관없다.

조건을 2가지 줄 경우 - and
-- 직급이 manager이고 부서번호가 20인 사원 조회
select * from emp where job = 'manager' and deptno = '20';

조건을 2가지 줄 경우 - or
-- 직급이 salesman 이거나 부서번호가 10인 사원 조회
select * from emp where job = 'salesman' or deptno = '10';

-- 급여가 3000 이상인 사원 조회
select * from emp where sal >=3000;

-- 급여가 2000 이상 3000 이하 사원 조회
select * from emp where 2000 <= sal <= 3000; -- X
select * from emp where sal >= 2000 and sal <= 3000;
select * from emp where sal between 2000 and 3000;

-- 급여가 2000 이상 3000 이하 밖의 사원들을 내림차순 정렬
select * from emp where sal not between 2000 and 3000 order by sal desc;

tmi
기호의 이름
& = 엠퍼센트
* = 아스테리스크
' = 싱글쿼터
" = 더블쿼터
` = 백틱
'MySQL > MySQL icia 25일차' 카테고리의 다른 글
MySQL from dual , sysdate() , now()란? (0) | 2023.03.28 |
---|---|
MySQL 연산자와 예제 등 (0) | 2023.03.28 |